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

Top 120 - 240

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

Top 240 - 360

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

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.