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. 235 green packages (65.3%) have dropped support for Python 3.9;
  2. 125 uncolored packages (34.7%) 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 ✗ typing-extensions ✗ idna ✗ urllib3 ✓ certifi ✗ requests ✓ charset-normalizer ✗ cryptography ✗ cffi ✓ pygments ✗ pycparser ✓ pyyaml ✗ python-dateutil ✗ six ✓ pydantic ✓ pluggy ✗ setuptools ✓ pydantic-core ✓ click ✓ numpy ✓ iniconfig ✓ anyio ✓ botocore ✓ pytest ✓ annotated-types ✓ typing-inspection ✓ h11 ✗ attrs ✗ markupsafe ✓ httpx ✗ httpcore ✗ s3transfer ✓ pyjwt ✗ python-dotenv ✓ pillow ✓ protobuf ✓ aiobotocore ✓ jinja2 ✓ pandas ✓ platformdirs ✓ fsspec ✓ opentelemetry-api ✓ starlette ✓ uvicorn ✓ pathspec ✗ rpds-py ✓ filelock ✓ jsonschema ✓ jmespath ✗ referencing ✓ jsonschema-specifications ✗ rich ✗ markdown-it-py ✓ multidict ✓ aiohttp ✓ tomlkit ✗ yarl ✓ mdurl ✗ annotated-doc ✗ propcache ✓ fastapi ✓ tzdata ✓ websockets ✓ pytz ✗ googleapis-common-protos ✓ tqdm ✗ frozenlist ✗ pyasn1 ✗ aiosignal ✓ aiohappyeyeballs ✓ sniffio ✓ pip ✓ pydantic-settings ✓ wrapt ✗ pyarrow ✓ python-multipart ✓ google-auth ✓ trove-classifiers ✓ lxml ✗ zipp ✓ tenacity ✓ importlib-metadata ✓ pyasn1-modules ✗ sqlalchemy ✓ greenlet ✓ hatchling ✓ ruff ✗ wheel ✗ jiter ✓ pyparsing ✗ regex ✓ grpcio-status ✓ watchfiles ✓ openai ✓ grpcio ✓ google-api-core ✓ s3fs ✓ psutil ✓ openpyxl ✗ scipy ✓ et-xmlfile ✗ opentelemetry-semantic-conventions ✓ truststore ✓ distro ✗ soupsieve ✓ opentelemetry-sdk ✓ httpcore2 ✓ httpx2 ✓ coverage ✓ beautifulsoup4 ✓ shellingham ✗ typer ✓ mypy-extensions ✗ sse-starlette ✓ proto-plus ✓ mcp ✓ colorama ✗ uvloop ✗ huggingface-hub ✓

Top 120 - 240

httptools ✓ requests-oauthlib ✗ dnspython ✓ pytest-asyncio ✓ tomli ✓ opentelemetry-proto ✓ editables ✗ wcwidth ✗ docstring-parser ✗ cachetools ✓ werkzeug ✓ oauthlib ✗ sortedcontainers ✓ exceptiongroup ✓ more-itertools ✓ virtualenv ✗ opentelemetry-exporter-otlp-proto-common ✓ defusedxml ✗ redis ✓ pytest-cov ✗ hf-xet ✗ distlib ✗ psycopg2-binary ✓ networkx ✓ itsdangerous ✓ fonttools ✓ msgpack ✓ opentelemetry-exporter-otlp-proto-http ✓ requests-toolbelt ✗ mako ✓ alembic ✓ orjson ✓ tiktoken ✓ rsa ✗ prompt-toolkit ✓ scikit-learn ✓ tokenizers ✓ cloudpickle ✗ flask ✓ email-validator ✗ threadpoolctl ✗ anthropic ✓ pyopenssl ✗ isodate ✗ mypy ✓ blinker ✓ websocket-client ✓ nodeenv ✗ h2 ✓ hpack ✓ google-cloud-core ✓ python-discovery ✗ psycopg ✓ hyperframe ✗ httpx-sse ✗ zstandard ✗ matplotlib ✓ tzlocal ✓ pynacl ✗ azure-core ✓ joblib ✓ pytest-xdist ✗ execnet ✗ psycopg-binary ✓ google-cloud-storage ✓ ruamel-yaml ✗ kiwisolver ✓ tabulate ✓ google-cloud-bigquery ✓ opentelemetry-instrumentation ✓ bcrypt ✗ pypdf ✗ msal ✗ keyring ✓ langchain ✓ xlsxwriter ✗ google-crc32c ✓ jaraco-classes ✓ contourpy ✓ chardet ✓ cycler ✗ langchain-core ✓ google-resumable-media ✓ jaraco-functools ✓ jeepney ✓ google-genai ✓ secretstorage ✓ librt ✗ prometheus-client ✗ jaraco-context ✓ grpcio-tools ✓ identify ✓ dill ✗ sentry-sdk ✗ cfgv ✓ pre-commit ✓ deprecated ✓ gitpython ✗ asn1crypto ✗ decorator ✗ jsonpointer ✓ webencodings ✓ docutils ✗ toml ✗ backoff ✗ uv ✗ xxhash ✗ sympy ✗ pytest-json-ctrf ✓ asgiref ✓ uritemplate ✓ mpmath ✗ smmap ✗ docker ✗ google-api-python-client ✓ aiofiles ✗ google-auth-httplib2 ✓ asyncpg ✗ azure-identity ✗ traitlets ✓

Top 240 - 360

narwhals ✓ gitdb ✗ opentelemetry-util-http ✓ httplib2 ✓ rapidfuzz ✓ ptyprocess ✓ authlib ✓ fastjsonschema ✓ msal-extensions ✗ pexpect ✓ google-auth-oauthlib ✓ python-pptx ✗ python-docx ✗ opentelemetry-exporter-otlp-proto-grpc ✓ black ✓ playwright ✓ jsonpatch ✓ joserfc ✓ sqlparse ✓ executing ✗ pyee ✓ async-timeout ✓ tinycss2 ✓ babel ✗ snowflake-connector-python ✓ markdown ✓ transformers ✓ tornado ✗ paramiko ✗ gunicorn ✓ grpc-google-iam-v1 ✓ structlog ✓ xmltodict ✗ pymupdf ✓ pytest-timeout ✗ parso ✗ jedi ✓ azure-storage-blob ✓ ipython ✓ mcp-types ✓ pyproject-hooks ✓ aioitertools ✓ pyzmq ✓ watchdog ✗ asttokens ✗ griffelib ✓ brotli ✓ matplotlib-inline ✗ litellm ✓ typedload ✓ nbformat ✓ cachecontrol ✓ python-json-logger ✓ flatbuffers ✓ google-cloud-aiplatform ✓ pure-eval ✗ ast-serialize ✗ build ✓ onnxruntime ✓ stack-data ✗ isort ✓ databricks-sdk ✓ jupyter-core ✓ awswrangler ✓ beartype ✓ awscli ✓ marshmallow ✓ croniter ✗ safetensors ✓ pytest-mock ✓ slack-sdk ✗ types-pyyaml ✓ langsmith ✓ pypdfium2 ✓ multiprocess ✗ cyclopts ✓ debugpy ✓ nest-asyncio ✗ kubernetes ✓ setuptools-scm ✗ sqlglot ✓ opentelemetry-instrumentation-asgi ✓ lz4 ✗ opentelemetry-instrumentation-fastapi ✓ jupyter-client ✓ jsonref ✓ pytokens ✗ cython ✗ lark ✓ pyperclip ✗ tomli-w ✓ uuid-utils ✓ pathable ✓ poetry-core ✓ jsonschema-path ✓ rich-rst ✗ pymysql ✓ pycryptodome ✗ vcs-versioning ✗ types-requests ✓ reportlab ✓ cbor2 ✓ py-key-value-aio ✓ text-unidecode ✓ argon2-cffi-bindings ✓ fastuuid ✗ python-slugify ✓ toolz ✗ argon2-cffi ✗ mistune ✗ xlrd ✗ bleach ✓ deprecation ✓ termcolor ✓ graphql-core ✓ requests-file ✓ loguru ✗ py4j ✗ wsproto ✓ opentelemetry-instrumentation-requests ✓

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.