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

Top 120 - 240

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

Top 240 - 360

pexpect ✓ rapidfuzz ✓ google-auth-oauthlib ✓ aiofiles ✗ asgiref ✓ narwhals ✓ msal-extensions ✗ librt ✗ webencodings ✓ jsonpatch ✗ black ✓ traitlets ✓ sqlparse ✓ authlib ✓ paramiko ✗ asyncpg ✗ snowflake-connector-python ✓ fastjsonschema ✓ typedload ✓ babel ✗ opentelemetry-exporter-otlp-proto-grpc ✓ joserfc ✓ gunicorn ✓ azure-storage-blob ✗ structlog ✓ awscli ✓ executing ✗ google-cloud-aiplatform ✓ grpc-google-iam-v1 ✓ setuptools-scm ✗ python-docx ✗ ipython ✓ opentelemetry-instrumentation-requests ✓ transformers ✓ xmltodict ✗ playwright ✓ markdown ✓ pyee ✓ awswrangler ✓ jedi ✓ parso ✗ tornado ✗ datasets ✓ asttokens ✗ vcs-versioning ✗ tinycss2 ✓ cbor2 ✓ databricks-sdk ✓ pyproject-hooks ✓ marshmallow ✓ matplotlib-inline ✗ xlsxwriter ✗ mcp-types ✓ isort ✓ pymupdf ✓ aioitertools ✓ pytest-timeout ✗ build ✓ python-json-logger ✓ watchdog ✗ langsmith ✓ cachecontrol ✓ pure-eval ✗ stack-data ✗ griffelib ✓ litellm ✓ pytest-mock ✗ reportlab ✓ pyzmq ✓ flatbuffers ✓ poetry-core ✓ croniter ✗ ast-serialize ✗ grpclib ✓ cython ✗ brotli ✓ pymysql ✓ types-toml ✓ pyperclip ✗ nest-asyncio ✗ cyclopts ✓ slack-sdk ✗ types-requests ✓ lz4 ✗ uuid-utils ✓ kubernetes ✓ sqlglot ✓ debugpy ✗ nbformat ✓ py4j ✗ types-certifi ✓ beartype ✓ jsonref ✓ termcolor ✓ opentelemetry-instrumentation-fastapi ✓ types-pyyaml ✓ onnxruntime ✓ jupyter-core ✓ psycopg2 ✓ pytokens ✗ xlrd ✗ safetensors ✓ tomli-w ✓ mdit-py-plugins ✗ opentelemetry-instrumentation-asgi ✓ modal ✓ synchronicity ✓ linkify-it-py ✓ pathable ✓ jsonschema-path ✓ fastuuid ✗ pycryptodome ✗ wsproto ✓ jupyter-client ✓ importlib-resources ✓ torch ✓ text-unidecode ✓ loguru ✗ types-protobuf ✓ typing-inspect ✗

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.