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

Top 120 - 240

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

Top 240 - 360

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