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. 103 green packages (28.6%) have dropped support for Python 3.9;
  2. 257 uncolored packages (71.4%) 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 ✗ botocore ✗ typing-extensions ✗ requests ✗ certifi ✗ idna ✗ charset-normalizer ✗ setuptools ✓ grpcio-status ✗ packaging ✗ aiobotocore ✗ python-dateutil ✗ numpy ✓ s3transfer ✗ six ✓ cryptography ✗ pydantic ✗ cffi ✗ pyyaml ✗ pandas ✗ fsspec ✓ click ✓ s3fs ✓ pycparser ✗ pydantic-core ✗ pip ✗ attrs ✗ protobuf ✗ pygments ✗ anyio ✗ awscli ✗ markupsafe ✓ h11 ✗ platformdirs ✓ pluggy ✗ rsa ✗ annotated-types ✗ jmespath ✗ jinja2 ✓ pytz ✗ pyasn1 ✗ importlib-metadata ✓ cachetools ✗ typing-inspection ✗ google-auth ✗ pytest ✓ tzdata ✓ wheel ✗ filelock ✓ zipp ✓ httpx ✗ httpcore ✗ google-api-core ✗ iniconfig ✓ pyjwt ✗ pyasn1-modules ✗ yandexcloud ✗ colorama ✗ aiohttp ✗ rich ✗ jsonschema ✗ virtualenv ✗ python-dotenv ✗ grpcio-tools ✓ yarl ✗ pyarrow ✓ multidict ✗ markdown-it-py ✓ tomli ✓ scipy ✓ tqdm ✗ googleapis-common-protos ✗ mdurl ✗ opentelemetry-proto ✗ frozenlist ✗ rpds-py ✓ opentelemetry-sdk ✗ referencing ✓ requests-oauthlib ✗ aiosignal ✓ wrapt ✗ pillow ✓ propcache ✗ google-genai ✓ sqlalchemy ✗ pathspec ✗ sniffio ✓ jsonschema-specifications ✗ greenlet ✗ starlette ✓ psutil ✓ grpcio ✗ uvicorn ✗ opentelemetry-exporter-otlp-proto-http ✗ trove-classifiers ✓ opentelemetry-exporter-otlp-proto-grpc ✗ aiohappyeyeballs ✗ pyparsing ✗ openpyxl ✗ et-xmlfile ✗ fastapi ✗ oauthlib ✗ lxml ✗ beautifulsoup4 ✓ tomlkit ✗ docutils ✗ opentelemetry-exporter-otlp ✗ soupsieve ✗ exceptiongroup ✓ distlib ✗ opentelemetry-exporter-otlp-proto-common ✗ pyopenssl ✗ flask ✓ requests-toolbelt ✗ isodate ✗ werkzeug ✓ tenacity ✗ more-itertools ✗ pynacl ✗

Top 120 - 240

snowflake-connector-python ✗ google-cloud-storage ✗ pexpect ✓ regex ✗ hatchling ✓ ptyprocess ✓ opentelemetry-api ✗ proto-plus ✗ websocket-client ✗ shellingham ✗ psycopg2-binary ✗ msgpack ✓ scikit-learn ✓ opentelemetry-semantic-conventions ✗ mypy-extensions ✗ huggingface-hub ✗ python-multipart ✗ decorator ✗ azure-identity ✗ coverage ✓ azure-core ✗ networkx ✓ sortedcontainers ✓ async-timeout ✓ msal ✗ wcwidth ✗ websockets ✗ bcrypt ✗ transformers ✗ annotated-doc ✗ asn1crypto ✗ gitpython ✗ threadpoolctl ✗ dnspython ✓ matplotlib ✓ google-cloud-core ✗ smmap ✗ joblib ✗ openai ✗ gitdb ✗ fonttools ✓ paramiko ✗ keyring ✓ tabulate ✗ deprecated ✗ chardet ✗ setuptools-scm ✗ distro ✗ itsdangerous ✓ prompt-toolkit ✗ google-cloud-bigquery ✗ google-resumable-media ✗ google-cloud-batch ✗ ruamel-yaml ✗ poetry-core ✗ google-crc32c ✗ pydantic-settings ✓ kiwisolver ✓ secretstorage ✓ google-api-python-client ✗ alembic ✓ langsmith ✓ jaraco-classes ✓ google-auth-oauthlib ✗ dill ✗ aliyun-python-sdk-core ✗ redis ✓ blinker ✓ google-cloud-secret-manager ✗ backoff ✗ pyproject-hooks ✓ google-analytics-admin ✗ jeepney ✓ grpcio-health-checking ✗ fastjsonschema ✗ cycler ✗ msal-extensions ✗ cloudpickle ✗ jiter ✗ typer ✗ tzlocal ✗ contourpy ✓ zstandard ✗ uritemplate ✓ azure-storage-blob ✗ google-auth-httplib2 ✗ rapidfuzz ✓ tokenizers ✗ ruff ✗ defusedxml ✗ jaraco-functools ✓ py4j ✗ build ✗ orjson ✗ langchain ✓ httplib2 ✓ pytest-cov ✗ tritonclient ✓ sqlparse ✗ jaraco-context ✓ ruamel-yaml-clib ✗ argcomplete ✗ marshmallow ✓ typedload ✓ prometheus-client ✗ ipython ✓ xmltodict ✗ docker ✗ importlib-resources ✓ kubernetes ✗ email-validator ✗ hf-xet ✗ aiofiles ✗ cython ✗ pyzmq ✗ mako ✗ traitlets ✓ pytest-asyncio ✓ jedi ✗ snowflake-sqlalchemy ✗

Top 240 - 360

jsonpointer ✗ awswrangler ✗ nest-asyncio ✗ sympy ✗ parso ✗ black ✗ tornado ✗ editables ✗ babel ✗ opentelemetry-instrumentation ✗ types-requests ✓ uv ✗ matplotlib-inline ✗ sphinx ✓ docstring-parser ✗ executing ✗ asttokens ✗ mpmath ✗ nodeenv ✗ pymysql ✓ toml ✗ pre-commit ✓ ply ✓ grpc-google-iam-v1 ✗ cfgv ✓ mypy ✗ termcolor ✓ identify ✓ webencodings ✓ langchain-core ✓ pymupdf ✓ stack-data ✗ pure-eval ✗ sentry-sdk ✗ torch ✓ google-cloud-vision ✗ google-cloud-kms ✗ markdown ✓ pymongo ✗ tiktoken ✓ aioitertools ✓ dbt-core ✗ google-cloud-tasks ✗ cachecontrol ✓ google-cloud-speech ✗ google-cloud-dlp ✗ gunicorn ✗ google-cloud-monitoring ✗ watchfiles ✗ mcp ✓ google-cloud-compute ✗ google-cloud-workflows ✗ textual ✗ pytest-xdist ✗ databricks-sdk ✗ google-cloud-language ✗ pkginfo ✗ httpx-sse ✗ google-cloud-dataform ✗ execnet ✗ typing-inspect ✗ asgiref ✗ jsonpatch ✗ pypandoc-binary ✗ pycryptodome ✗ google-cloud-videointelligence ✗ debugpy ✗ google-cloud-os-login ✗ opentelemetry-util-http ✗ python-json-logger ✗ msrest ✗ dbt-common ✓ dbt-adapters ✓ mccabe ✗ isort ✓ uvloop ✗ google-cloud-redis ✗ jsonpath-ng ✗ shapely ✓ pycodestyle ✓ pendulum ✗ scramp ✗ rfc3339-validator ✓ multiprocess ✗ databricks-sql-connector ✗ azure-common ✗ google-cloud-memcache ✗ userpath ✗ smart-open ✗ ray ✗ google-cloud-bigtable ✗ dulwich ✗ future ✗ opensearch-py ✓ httptools ✓ notebook ✗ invoke ✗ jupyter-core ✓ datadog ✗ backports-tarfile ✓ durationpy ✓ cattrs ✗ opentelemetry-instrumentation-requests ✗ poetry ✗ safetensors ✗ slack-sdk ✗ opentelemetry-exporter-prometheus ✗ google-cloud-logging ✗ watchdog ✗ deepdiff ✗ lz4 ✗ ipykernel ✓ tinycss2 ✓ authlib ✗ crashtest ✗ requests-file ✓ snowflake-snowpark-python ✗ installer ✓ cleo ✗ redshift-connector ✗

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.