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 ✓ pydantic ✓ python-dateutil ✗ six ✓ pydantic-core ✓ numpy ✓ setuptools ✓ click ✓ anyio ✓ iniconfig ✓ pytest ✓ annotated-types ✓ botocore ✓ typing-inspection ✓ h11 ✗ attrs ✗ markupsafe ✓ httpx ✗ httpcore ✗ s3transfer ✓ python-dotenv ✓ pyjwt ✗ protobuf ✓ starlette ✓ aiobotocore ✓ jinja2 ✓ pandas ✓ platformdirs ✓ opentelemetry-api ✓ fsspec ✓ pillow ✓ uvicorn ✓ pathspec ✗ filelock ✓ rpds-py ✓ jsonschema ✓ jmespath ✗ referencing ✓ jsonschema-specifications ✗ tomlkit ✗ multidict ✓ markdown-it-py ✓ rich ✗ aiohttp ✓ yarl ✓ mdurl ✗ annotated-doc ✗ propcache ✓ fastapi ✓ websockets ✓ tqdm ✗ frozenlist ✗ tzdata ✓ googleapis-common-protos ✓ aiosignal ✓ aiohappyeyeballs ✓ sniffio ✓ pytz ✗ pydantic-settings ✓ pyasn1 ✗ pip ✓ wrapt ✗ python-multipart ✓ google-auth ✓ trove-classifiers ✓ pyarrow ✓ tenacity ✓ zipp ✓ ruff ✗ jiter ✓ lxml ✗ pyasn1-modules ✗ importlib-metadata ✓ sqlalchemy ✓ greenlet ✓ hatchling ✓ truststore ✓ scipy ✓ wheel ✗ pyparsing ✗ openai ✓ regex ✓ grpcio-status ✓ grpcio ✓ watchfiles ✓ google-api-core ✓ soupsieve ✓ httpx2 ✓ httpcore2 ✓ openpyxl ✗ psutil ✓ et-xmlfile ✗ distro ✗ opentelemetry-semantic-conventions ✓ opentelemetry-sdk ✓ s3fs ✓ coverage ✓ beautifulsoup4 ✓ shellingham ✗ sse-starlette ✓ typer ✓ mcp ✓ mypy-extensions ✗ huggingface-hub ✓ httptools ✓ colorama ✗ proto-plus ✓

Top 120 - 240

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

Top 240 - 360

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

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.