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

Top 120 - 240

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

Top 240 - 360

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

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.