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. 147 green packages (40.8%) have dropped support for Python 3.9;
  2. 213 uncolored packages (59.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 ✗ packaging ✗ setuptools ✓ urllib3 ✗ certifi ✗ charset-normalizer ✗ typing-extensions ✗ requests ✗ idna ✗ botocore ✗ cryptography ✗ python-dateutil ✗ aiobotocore ✗ six ✓ numpy ✓ cffi ✗ pyyaml ✗ grpcio-status ✗ pycparser ✓ pydantic ✗ pluggy ✗ s3transfer ✗ pygments ✗ click ✓ attrs ✗ protobuf ✓ pydantic-core ✗ fsspec ✓ anyio ✗ pandas ✓ h11 ✗ pytest ✓ markupsafe ✓ platformdirs ✓ iniconfig ✓ annotated-types ✗ wheel ✗ pip ✗ s3fs ✓ jinja2 ✓ pyjwt ✗ importlib-metadata ✓ pathspec ✗ python-dotenv ✓ httpx ✗ typing-inspection ✗ jmespath ✗ httpcore ✗ filelock ✓ zipp ✓ pytz ✗ uvicorn ✓ rich ✗ awscli ✗ pyasn1 ✗ jsonschema ✓ yarl ✓ multidict ✗ aiohttp ✗ google-auth ✗ markdown-it-py ✓ tqdm ✗ starlette ✓ trove-classifiers ✓ tzdata ✓ google-api-core ✗ mdurl ✗ googleapis-common-protos ✗ tomli ✓ fastapi ✓ virtualenv ✗ pillow ✓ colorama ✗ frozenlist ✗ propcache ✗ rpds-py ✓ referencing ✓ aiosignal ✓ annotated-doc ✗ greenlet ✓ scipy ✓ pyasn1-modules ✗ sqlalchemy ✗ wrapt ✗ jsonschema-specifications ✗ requests-oauthlib ✗ pyarrow ✓ pyparsing ✗ opentelemetry-api ✗ hatchling ✓ aiohappyeyeballs ✗ grpcio ✗ tenacity ✓ regex ✓ cachetools ✓ soupsieve ✗ rsa ✗ psutil ✓ opentelemetry-semantic-conventions ✗ oauthlib ✗ websockets ✓ sniffio ✓ typer ✓ exceptiongroup ✓ more-itertools ✗ shellingham ✗ docutils ✗ opentelemetry-sdk ✗ beautifulsoup4 ✓ lxml ✗ tomlkit ✗ requests-toolbelt ✗ networkx ✓ openpyxl ✗ et-xmlfile ✗ pydantic-settings ✓ distlib ✗ python-multipart ✓ dnspython ✓ websocket-client ✗

Top 120 - 240

grpcio-tools ✓ google-genai ✓ coverage ✓ proto-plus ✗ langchain ✓ pyopenssl ✗ werkzeug ✓ opentelemetry-proto ✗ mypy-extensions ✗ openai ✗ msgpack ✓ tabulate ✓ keyring ✓ google-cloud-storage ✓ smmap ✗ distro ✗ huggingface-hub ✗ flask ✓ psycopg2-binary ✗ sentry-sdk ✗ jaraco-classes ✓ pynacl ✗ watchfiles ✗ secretstorage ✓ jeepney ✓ sortedcontainers ✓ wcwidth ✗ scikit-learn ✓ fonttools ✓ jaraco-context ✓ decorator ✗ matplotlib ✓ joblib ✗ opentelemetry-exporter-otlp-proto-http ✗ isodate ✗ redis ✓ jaraco-functools ✓ jiter ✗ sse-starlette ✓ kiwisolver ✓ mcp ✓ azure-core ✗ opentelemetry-exporter-otlp-proto-grpc ✗ opentelemetry-exporter-otlp-proto-common ✗ pexpect ✓ email-validator ✗ bcrypt ✗ python-discovery ✗ ptyprocess ✓ sympy ✗ ruff ✗ gitpython ✗ editables ✗ poetry-core ✓ itsdangerous ✓ zstandard ✗ alembic ✓ threadpoolctl ✗ mpmath ✗ pytest-cov ✗ google-cloud-core ✗ msal ✗ async-timeout ✓ ruamel-yaml ✗ azure-identity ✗ orjson ✓ pytest-asyncio ✓ docstring-parser ✗ snowflake-connector-python ✗ contourpy ✓ types-requests ✓ prompt-toolkit ✗ opentelemetry-instrumentation ✗ docker ✗ gitdb ✗ cycler ✗ defusedxml ✗ google-crc32c ✓ blinker ✓ tzlocal ✗ deprecated ✗ rapidfuzz ✓ google-resumable-media ✗ chardet ✓ transformers ✓ google-api-python-client ✗ tokenizers ✗ zarr ✓ dill ✗ hf-xet ✗ pyproject-hooks ✓ kubernetes ✗ asn1crypto ✗ mako ✗ build ✗ setuptools-scm ✗ paramiko ✗ backoff ✗ google-cloud-aiplatform ✗ fastjsonschema ✗ prometheus-client ✗ google-auth-oauthlib ✗ marshmallow ✓ uritemplate ✓ google-auth-httplib2 ✗ authlib ✗ uv ✗ google-cloud-bigquery ✗ sqlparse ✗ toml ✗ httplib2 ✓ uvloop ✗ textual ✗ opentelemetry-exporter-otlp ✗ cython ✗ mypy ✗ nodeenv ✗ tiktoken ✓ ipython ✓ jsonpointer ✓

Top 240 - 360

msal-extensions ✗ babel ✗ multiprocess ✗ azure-storage-blob ✗ databricks-sdk ✗ cloudpickle ✗ httptools ✓ tornado ✗ gunicorn ✓ asgiref ✗ yandexcloud ✗ xmltodict ✗ pre-commit ✓ httpx-sse ✗ identify ✓ black ✓ flatbuffers ✓ aiofiles ✗ parso ✗ jsonschema-path ✓ traitlets ✓ opentelemetry-instrumentation-requests ✗ executing ✗ importlib-resources ✓ opentelemetry-util-http ✗ cfgv ✓ jedi ✗ pytest-xdist ✗ cachecontrol ✓ google-cloud-secret-manager ✗ asttokens ✗ py4j ✗ pathable ✓ python-json-logger ✗ matplotlib-inline ✗ xxhash ✗ execnet ✗ grpc-google-iam-v1 ✗ pyperclip ✗ markdown ✓ durationpy ✓ langchain-core ✓ stack-data ✗ webencodings ✓ pure-eval ✗ onnxruntime ✓ h2 ✗ pymupdf ✓ hyperframe ✗ hpack ✗ nest-asyncio ✗ litellm ✗ termcolor ✓ typing-inspect ✗ dbt-core ✓ jsonpatch ✗ dulwich ✓ watchdog ✗ pytest-mock ✗ beartype ✓ pkginfo ✗ jsonref ✓ cyclopts ✓ google-cloud-batch ✗ pymongo ✗ fastmcp ✓ torch ✓ isort ✓ google-analytics-admin ✗ debugpy ✗ rich-rst ✗ poetry ✓ aioitertools ✓ anthropic ✗ dbt-adapters ✓ grpcio-health-checking ✗ jsonpath-ng ✓ awswrangler ✓ tree-sitter ✓ pymysql ✓ cleo ✗ installer ✓ slack-sdk ✗ crashtest ✗ py-key-value-aio ✓ pycryptodome ✗ pyzmq ✗ mccabe ✗ lz4 ✗ gcsfs ✓ ruamel-yaml-clib ✗ dataclasses-json ✗ safetensors ✗ msrest ✗ dbt-common ✓ langsmith ✓ pydantic-ai-slim ✓ datasets ✓ deepdiff ✗ cattrs ✓ wsproto ✓ backports-tarfile ✓ rfc3339-validator ✓ pandas-stubs ✓ pygithub ✗ tinycss2 ✓ uncalled-for ✓ xlsxwriter ✗ pytest-json-ctrf ✓ smart-open ✓ arrow ✗ pycodestyle ✓ faker ✓ pendulum ✗ simplejson ✗ future ✗ librt ✗ narwhals ✗ loguru ✗ typedload ✓

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.