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

Top 120 - 240

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

Top 240 - 360

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

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.