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

Top 120 - 240

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

Top 240 - 360

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

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.