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

Top 120 - 240

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

Top 240 - 360

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

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.