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 ✗ pydantic ✓ numpy ✓ six ✓ pydantic-core ✓ setuptools ✓ click ✓ anyio ✓ iniconfig ✓ pytest ✓ botocore ✓ annotated-types ✓ typing-inspection ✓ h11 ✗ attrs ✗ markupsafe ✓ httpx ✗ httpcore ✗ s3transfer ✓ python-dotenv ✓ pyjwt ✗ protobuf ✓ aiobotocore ✓ starlette ✓ pandas ✓ jinja2 ✓ opentelemetry-api ✓ fsspec ✓ platformdirs ✓ uvicorn ✓ pillow ✓ rpds-py ✓ filelock ✓ pathspec ✗ jsonschema ✓ jmespath ✗ referencing ✓ jsonschema-specifications ✗ tomlkit ✗ multidict ✓ markdown-it-py ✓ aiohttp ✓ rich ✗ yarl ✓ mdurl ✗ propcache ✓ annotated-doc ✗ fastapi ✓ tqdm ✗ frozenlist ✗ websockets ✓ tzdata ✓ aiosignal ✓ sniffio ✓ aiohappyeyeballs ✓ googleapis-common-protos ✓ pytz ✗ pydantic-settings ✓ pyasn1 ✗ pip ✓ python-multipart ✓ wrapt ✗ google-auth ✓ pyarrow ✓ trove-classifiers ✓ tenacity ✓ zipp ✓ jiter ✓ ruff ✗ scipy ✓ truststore ✓ lxml ✗ pyasn1-modules ✗ importlib-metadata ✓ sqlalchemy ✓ greenlet ✓ hatchling ✓ wheel ✗ openai ✓ pyparsing ✗ regex ✓ grpcio-status ✓ grpcio ✓ httpx2 ✓ httpcore2 ✓ watchfiles ✓ google-api-core ✓ soupsieve ✓ openpyxl ✗ psutil ✓ et-xmlfile ✗ 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 ✗ dnspython ✓ editables ✗ pytest-asyncio ✓ docstring-parser ✗ opentelemetry-proto ✓ cachetools ✓ oauthlib ✗ tomli ✓ more-itertools ✓ sortedcontainers ✓ defusedxml ✗ virtualenv ✗ networkx ✓ hf-xet ✗ opentelemetry-exporter-otlp-proto-common ✓ werkzeug ✓ redis ✓ exceptiongroup ✓ fonttools ✓ pytest-cov ✗ scikit-learn ✓ distlib ✗ psycopg2-binary ✓ cloudpickle ✗ threadpoolctl ✗ msgpack ✓ orjson ✓ prompt-toolkit ✓ opentelemetry-exporter-otlp-proto-http ✓ mako ✓ tiktoken ✓ alembic ✓ requests-toolbelt ✗ tokenizers ✓ joblib ✓ itsdangerous ✓ rsa ✗ isodate ✗ anthropic ✓ psycopg ✓ email-validator ✗ mypy ✓ h2 ✓ pyopenssl ✗ hpack ✓ hyperframe ✗ psycopg-binary ✓ httpx-sse ✗ python-discovery ✗ nodeenv ✗ matplotlib ✓ azure-core ✓ websocket-client ✓ zstandard ✗ execnet ✗ pytest-xdist ✗ tzlocal ✓ google-cloud-core ✓ pynacl ✗ flask ✓ kiwisolver ✓ pypdf ✗ grpcio-tools ✓ ruamel-yaml ✗ msal ✗ google-cloud-bigquery ✓ blinker ✓ langchain ✓ opentelemetry-instrumentation ✓ bcrypt ✗ google-cloud-storage ✓ contourpy ✓ sympy ✗ google-genai ✓ langchain-core ✓ cycler ✗ dill ✗ tabulate ✓ chardet ✓ mpmath ✗ uv ✗ prometheus-client ✗ google-crc32c ✓ keyring ✓ librt ✗ xxhash ✗ pre-commit ✓ jaraco-classes ✓ identify ✓ pytest-json-ctrf ✓ google-resumable-media ✓ jaraco-functools ✓ cfgv ✓ jeepney ✓ decorator ✗ jsonpointer ✓ sentry-sdk ✗ asn1crypto ✗ secretstorage ✓ gitpython ✗ backoff ✗ jaraco-context ✓ docutils ✗ asgiref ✓ docker ✗ deprecated ✓ webencodings ✓ xlsxwriter ✗ uritemplate ✓ narwhals ✓ toml ✗ smmap ✗ azure-identity ✗ ptyprocess ✓ google-api-python-client ✓ authlib ✓ traitlets ✓

Top 240 - 360

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

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.