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

Top 120 - 240

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

Top 240 - 360

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

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.