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

Top 120 - 240

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

Top 240 - 360

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

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.