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

Top 120 - 240

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

Top 240 - 360

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

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.