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

Top 120 - 240

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

Top 240 - 360

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

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.