Python 3.7 Readiness

Python 3.7 support graph for the 360 most popular Python packages!

What is this about?

Python 3.7 is a version of Python that is past its End Of Life. This site shows Python 3.7 support for the 360 most downloaded packages on PyPI:

  1. 256 green packages (71.1%) have dropped support for Python 3.7;
  2. 104 uncolored packages (28.9%) still support Python 3.7.

Package 'x' is uncolored. What can I do?

There can be many reasons a package is still supporting Python 3.7:

  • If you are package maintainer, it's time to start dropping support (if you haven't already). Here is an in-depth guide to Dropping support for older Python versions. If you are not able to give the time needed, please seek for help from the community.

  • If you are user of the package, send a friendly note to the package maintainer. Or fork it, and send a pull request to help move the project towards dropping Python 3.7 support.

How do you identify Python 3.7 support?

We look for the Programming Language :: Python :: 3.7 classifier on the latest release of the project, via PyPI's JSON API.

Top 120

boto3 ✓ urllib3 ✓ botocore ✓ aiobotocore ✓ requests ✓ certifi ✗ setuptools ✓ charset-normalizer ✗ idna ✗ typing-extensions ✓ s3fs ✓ python-dateutil ✗ grpcio-status ✓ packaging ✓ s3transfer ✓ six ✓ numpy ✓ fsspec ✓ pyyaml ✓ pydantic ✓ cryptography ✗ google-api-core ✗ protobuf ✓ pandas ✓ cffi ✓ pip ✓ importlib-metadata ✓ attrs ✓ pycparser ✓ rsa ✗ jinja2 ✓ pytz ✗ aiohttp ✓ pyasn1 ✓ jmespath ✗ markupsafe ✓ platformdirs ✓ wheel ✓ click ✓ pydantic-core ✓ awscli ✓ zipp ✓ googleapis-common-protos ✗ grpcio-tools ✓ colorama ✗ filelock ✓ cachetools ✗ pyasn1-modules ✓ pyjwt ✓ tzdata ✓ virtualenv ✓ google-auth ✗ pluggy ✓ psutil ✓ wrapt ✓ annotated-types ✓ jsonschema ✓ yarl ✓ sniffio ✓ anyio ✓ h11 ✗ pygments ✓ pyarrow ✓ multidict ✓ pytest ✓ tomli ✓ rich ✓ httpx ✓ httpcore ✓ requests-oauthlib ✗ grpcio ✓ docutils ✓ sqlalchemy ✗ frozenlist ✓ requests-toolbelt ✗ iniconfig ✓ aiosignal ✓ tomlkit ✓ google-cloud-storage ✗ beautifulsoup4 ✓ propcache ✓ tqdm ✗ pyparsing ✓ greenlet ✓ pillow ✓ oauthlib ✗ soupsieve ✓ scipy ✓ pathspec ✓ exceptiongroup ✓ distlib ✗ pyopenssl ✗ werkzeug ✓ openpyxl ✗ et-xmlfile ✓ isodate ✗ rpds-py ✓ more-itertools ✓ deprecated ✗ jsonschema-specifications ✓ python-dotenv ✓ cloudpickle ✓ referencing ✓ trove-classifiers ✓ aiohappyeyeballs ✓ lxml ✗ async-timeout ✓ proto-plus ✗ typing-inspection ✓ decorator ✓ google-api-python-client ✗ azure-identity ✓ snowflake-connector-python ✓ tenacity ✓ google-cloud-core ✗ msal ✗ websocket-client ✓ markdown-it-py ✓ msgpack ✓ flask ✓

Top 120 - 240

coverage ✓ grpcio-health-checking ✓ azure-core ✓ mypy-extensions ✗ pynacl ✗ pyzmq ✓ sortedcontainers ✗ gitpython ✗ mdurl ✗ poetry-core ✓ langsmith ✓ opentelemetry-api ✓ shellingham ✗ asn1crypto ✗ psycopg2-binary ✓ dill ✓ scikit-learn ✓ aliyun-python-sdk-core ✗ regex ✓ opentelemetry-sdk ✓ google-resumable-media ✗ itsdangerous ✓ keyring ✓ smmap ✗ gitdb ✗ wcwidth ✗ opentelemetry-semantic-conventions ✓ pexpect ✓ networkx ✓ ptyprocess ✓ starlette ✓ google-crc32c ✓ bcrypt ✓ fastapi ✓ jaraco-classes ✓ tabulate ✗ rapidfuzz ✓ threadpoolctl ✓ matplotlib ✓ huggingface-hub ✓ jeepney ✓ fastjsonschema ✗ blinker ✓ secretstorage ✗ chardet ✗ dnspython ✓ google-cloud-bigquery ✓ paramiko ✗ importlib-resources ✓ py4j ✓ joblib ✓ types-requests ✓ build ✓ prompt-toolkit ✓ sphinx ✓ pyproject-hooks ✓ yandexcloud ✓ sqlparse ✓ fonttools ✓ backoff ✗ alembic ✓ ruamel-yaml ✓ uvicorn ✓ kiwisolver ✓ pkginfo ✓ typedload ✓ langchain ✓ asgiref ✓ azure-storage-blob ✓ ipython ✓ msal-extensions ✗ xmltodict ✗ google-auth-oauthlib ✗ cycler ✓ httplib2 ✗ defusedxml ✗ docker ✓ transformers ✓ marshmallow ✓ grpc-google-iam-v1 ✗ google-auth-httplib2 ✗ poetry-plugin-export ✓ redis ✓ awswrangler ✓ uritemplate ✗ cachecontrol ✓ openai ✓ jaraco-functools ✓ tzlocal ✓ pytest-cov ✓ gunicorn ✗ babel ✓ opensearch-py ✓ traitlets ✓ distro ✗ nest-asyncio ✗ zstandard ✓ opentelemetry-proto ✓ termcolor ✓ jedi ✗ jaraco-context ✓ contourpy ✓ parso ✗ poetry ✓ hatchling ✓ pymysql ✗ cython ✗ opentelemetry-exporter-otlp-proto-common ✓ typer ✗ matplotlib-inline ✓ kubernetes ✗ opentelemetry-exporter-otlp-proto-http ✓ dulwich ✓ black ✓ thriftpy2 ✗ markdown ✓ setuptools-scm ✓ toml ✗ ruamel-yaml-clib ✓ gym-notices ✓

Top 240 - 360

jsonpointer ✗ types-python-dateutil ✓ crashtest ✗ websockets ✓ multiprocess ✓ opentelemetry-exporter-otlp-proto-grpc ✓ cleo ✗ tornado ✓ isort ✓ langchain-core ✓ snowflake-sqlalchemy ✓ rich-toolkit ✓ installer ✓ sentry-sdk ✗ pendulum ✓ requests-aws4auth ✗ typing-inspect ✗ tokenizers ✓ mako ✓ prometheus-client ✓ sympy ✓ asttokens ✓ executing ✓ webencodings ✓ uv ✓ pycodestyle ✓ torch ✓ smart-open ✗ ply ✓ weaviate-client ✓ py ✗ stack-data ✗ pure-eval ✗ mccabe ✗ orjson ✓ watchdog ✓ mpmath ✗ pycryptodome ✗ python-json-logger ✓ lz4 ✓ pyrsistent ✓ argcomplete ✓ pymongo ✓ scramp ✓ shapely ✓ pytest-xdist ✓ opentelemetry-exporter-otlp ✓ mypy ✓ ruff ✗ aioitertools ✓ arrow ✓ python-slugify ✗ aiofiles ✓ pyspark ✓ snowflake-snowpark-python ✓ google-cloud-pubsub ✗ debugpy ✓ jsonpatch ✗ backports-tarfile ✓ datadog ✗ email-validator ✓ nodeenv ✗ opentelemetry-instrumentation ✓ future ✗ jsonpath-ng ✓ pygithub ✓ msrest ✗ jupyterlab ✓ jupyter-client ✓ jupyter-core ✓ pycryptodomex ✗ jiter ✓ redshift-connector ✗ ipykernel ✓ requests-file ✓ gcsfs ✓ execnet ✓ setproctitle ✓ slack-sdk ✗ semver ✗ azure-common ✗ mysql-connector-python ✓ identify ✓ azure-storage-file-datalake ✓ google-cloud-secret-manager ✗ pre-commit ✓ typeguard ✓ pytest-asyncio ✓ tinycss2 ✓ editables ✗ bleach ✓ cfgv ✓ rfc3339-validator ✗ comm ✓ mistune ✓ nbformat ✓ colorlog ✗ text-unidecode ✗ nbclient ✓ nbconvert ✓ opentelemetry-util-http ✓ notebook ✓ apache-airflow-providers-common-sql ✓ croniter ✗ tableauserverclient ✓ tiktoken ✓ dataclasses-json ✗ pyflakes ✓ sqlalchemy-bigquery ✓ elasticsearch ✓ oss2 ✗ google-cloud-resource-manager ✗ nltk ✓ safetensors ✗ pytest-mock ✓ datasets ✓ pytzdata ✗ xlsxwriter ✓ google-cloud-aiplatform ✓ time-machine ✓

Thanks

This is derivative work from py3readiness.org, a site that previously tracked general compatibility with Python 3, which in turn was a derivative of pythonwheels.com, a site that tracks which Python distributions ship the wheel distribution.