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

Top 120 - 240

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

Top 240 - 360

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