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

Top 120 - 240

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

Top 240 - 360

narwhals ✓ traitlets ✓ asgiref ✓ azure-identity ✗ psycopg-binary ✓ httplib2 ✓ typedload ✓ librt ✗ aiofiles ✗ sqlparse ✓ msal-extensions ✗ fastjsonschema ✓ jsonpatch ✗ pypdf ✗ black ✓ paramiko ✗ babel ✗ authlib ✓ snowflake-connector-python ✓ opentelemetry-exporter-otlp-proto-grpc ✓ executing ✗ gunicorn ✓ asyncpg ✗ opentelemetry-instrumentation-requests ✓ ipython ✓ structlog ✓ transformers ✓ azure-storage-blob ✗ markdown ✓ jedi ✓ parso ✗ grpc-google-iam-v1 ✓ tornado ✗ xmltodict ✗ asttokens ✗ awscli ✓ joserfc ✓ tinycss2 ✓ matplotlib-inline ✗ google-cloud-aiplatform ✓ setuptools-scm ✗ datasets ✓ awswrangler ✓ marshmallow ✓ pyproject-hooks ✓ build ✓ cbor2 ✓ python-json-logger ✓ stack-data ✗ pure-eval ✗ databricks-sdk ✓ litellm ✓ playwright ✓ aioitertools ✓ vcs-versioning ✗ poetry-core ✓ pyzmq ✓ python-docx ✗ cachecontrol ✓ isort ✓ watchdog ✗ pymupdf ✓ xlsxwriter ✗ pytest-mock ✗ langsmith ✓ pyee ✓ pytest-timeout ✗ types-toml ✓ nbformat ✓ types-requests ✓ cython ✗ brotli ✓ slack-sdk ✗ nest-asyncio ✗ debugpy ✗ croniter ✗ grpclib ✓ jupyter-core ✓ pymysql ✓ lz4 ✗ termcolor ✓ kubernetes ✓ reportlab ✓ ast-serialize ✗ fastuuid ✗ types-certifi ✓ uuid-utils ✓ flatbuffers ✓ types-pyyaml ✓ griffelib ✓ jupyter-client ✓ modal ✓ safetensors ✓ synchronicity ✓ py4j ✗ sqlglot ✓ typing-inspect ✗ pyperclip ✗ text-unidecode ✓ opentelemetry-instrumentation-fastapi ✓ importlib-resources ✓ pytokens ✗ mdit-py-plugins ✗ tomli-w ✓ linkify-it-py ✓ loguru ✗ pycryptodome ✗ ruamel-yaml-clib ✗ lark ✓ graphql-core ✗ mccabe ✗ faker ✓ jsonref ✓ xlrd ✗ opentelemetry-instrumentation-asgi ✓ beartype ✓ semver ✗ python-slugify ✗ mistune ✗ requests-file ✓

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.