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

Top 120 - 240

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

Top 240 - 360

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

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.