Python 3.9 Readiness

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

What is this about?

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

  1. 93 green packages (25.8%) have dropped support for Python 3.9;
  2. 267 uncolored packages (74.2%) still support Python 3.9.

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

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

  • 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.9 support.

How do you identify Python 3.9 support?

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

Top 120

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

Top 120 - 240

ptyprocess ✓ websocket-client ✗ opentelemetry-proto ✗ google-cloud-storage ✗ psycopg2-binary ✗ pynacl ✗ opentelemetry-api ✗ tenacity ✗ scikit-learn ✓ mypy-extensions ✗ decorator ✗ huggingface-hub ✗ sortedcontainers ✓ azure-core ✗ msal ✗ openai ✗ azure-identity ✗ coverage ✓ bcrypt ✗ python-multipart ✗ async-timeout ✓ opentelemetry-exporter-otlp-proto-http ✗ networkx ✓ transformers ✗ gitpython ✗ wcwidth ✗ asn1crypto ✗ websockets ✗ threadpoolctl ✗ cloudpickle ✗ joblib ✗ opentelemetry-exporter-otlp-proto-grpc ✗ google-cloud-core ✗ google-cloud-bigquery ✗ matplotlib ✓ deprecated ✗ smmap ✗ dnspython ✓ gitdb ✗ opentelemetry-exporter-otlp-proto-common ✗ annotated-doc ✗ langsmith ✓ tabulate ✗ zstandard ✗ fonttools ✗ paramiko ✗ google-api-python-client ✗ chardet ✗ keyring ✓ pyzmq ✗ distro ✗ itsdangerous ✓ google-resumable-media ✗ poetry-core ✗ ruamel-yaml ✗ hatchling ✗ prompt-toolkit ✗ google-auth-oauthlib ✗ google-crc32c ✗ jaraco-classes ✓ dill ✗ redis ✗ kiwisolver ✓ secretstorage ✓ blinker ✓ fastjsonschema ✗ jeepney ✓ backoff ✗ typer ✗ opentelemetry-exporter-otlp ✗ build ✗ opentelemetry-instrumentation ✗ rapidfuzz ✓ pyproject-hooks ✓ defusedxml ✗ alembic ✓ uritemplate ✓ msal-extensions ✗ cycler ✗ langchain ✓ google-auth-httplib2 ✗ tzlocal ✗ httplib2 ✓ jiter ✗ setuptools-scm ✗ py4j ✗ contourpy ✓ orjson ✗ importlib-resources ✓ jaraco-functools ✓ prometheus-client ✗ google-cloud-secret-manager ✗ marshmallow ✓ pytest-cov ✗ xmltodict ✗ azure-storage-blob ✗ tokenizers ✗ ruamel-yaml-clib ✗ sqlparse ✗ ipython ✓ docker ✗ jaraco-context ✓ ruff ✗ snowflake-sqlalchemy ✗ pydantic-settings ✗ awswrangler ✗ cython ✗ opentelemetry-util-http ✗ grpcio-health-checking ✗ google-cloud-batch ✗ babel ✗ nest-asyncio ✗ traitlets ✓ types-requests ✓ jsonpointer ✗ jedi ✗ mako ✗ parso ✗ kubernetes ✗ black ✗

Top 240 - 360

google-analytics-admin ✗ tornado ✗ langchain-core ✓ sympy ✗ sentry-sdk ✗ matplotlib-inline ✗ executing ✗ toml ✗ email-validator ✗ aiofiles ✗ opentelemetry-instrumentation-requests ✗ hf-xet ✗ grpc-google-iam-v1 ✗ ply ✓ pymysql ✓ webencodings ✓ aliyun-python-sdk-core ✗ termcolor ✓ cachecontrol ✗ pkginfo ✗ torch ✓ asttokens ✗ markdown ✓ editables ✗ gunicorn ✗ mypy ✗ argcomplete ✗ dbt-common ✓ mpmath ✗ uv ✗ stack-data ✗ uvloop ✗ watchfiles ✗ pure-eval ✗ sphinx ✓ dbt-core ✗ shapely ✓ pytest-asyncio ✗ typing-inspect ✗ asgiref ✗ pendulum ✗ python-json-logger ✗ mccabe ✗ pymongo ✗ docstring-parser ✗ aioitertools ✓ nodeenv ✗ pycodestyle ✓ pytest-xdist ✗ dulwich ✗ jsonpatch ✗ future ✗ pycryptodome ✗ poetry ✗ isort ✓ debugpy ✗ datadog ✗ msrest ✗ tiktoken ✓ jsonpath-ng ✗ installer ✓ watchdog ✗ notebook ✗ httptools ✓ execnet ✗ databricks-sdk ✗ dbt-adapters ✓ bashlex ✓ multiprocess ✗ crashtest ✗ cleo ✗ pre-commit ✓ lz4 ✗ identify ✓ smart-open ✗ google-cloud-monitoring ✗ google-cloud-vision ✗ swe-rex ✓ azure-common ✗ google-cloud-kms ✗ arrow ✗ google-cloud-compute ✗ cfgv ✓ slack-sdk ✗ jupyter-core ✓ ipykernel ✓ requests-file ✓ google-cloud-dlp ✗ databricks-sql-connector ✗ google-cloud-speech ✗ scramp ✗ google-cloud-tasks ✗ pymupdf ✓ cattrs ✗ dataclasses-json ✗ rfc3339-validator ✓ google-cloud-aiplatform ✗ backports-tarfile ✓ tinycss2 ✗ google-cloud-workflows ✗ google-cloud-language ✗ typedload ✓ redshift-connector ✗ jupyter-client ✓ pygithub ✗ opensearch-py ✗ poetry-plugin-export ✗ pytest-mock ✗ litellm ✗ semver ✗ google-cloud-dataform ✗ google-cloud-videointelligence ✗ nvidia-nccl-cu12 ✗ deepdiff ✗ mistune ✗ comm ✓ py ✗ requests-aws4auth ✗ google-cloud-os-login ✗ httpx-sse ✗

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.