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

Top 120 - 240

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

Top 240 - 360

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