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

Top 120 - 240

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

Top 240 - 360

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

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.