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

Top 120 - 240

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

Top 240 - 360

asyncpg ✗ opentelemetry-util-http ✓ asn1crypto ✗ gitpython ✗ aiofiles ✗ docutils ✗ rapidfuzz ✓ pexpect ✓ msal-extensions ✗ httplib2 ✓ google-api-python-client ✓ joserfc ✓ pypdfium2 ✓ smmap ✗ google-auth-httplib2 ✓ jsonpatch ✓ playwright ✓ executing ✗ gitdb ✗ pyee ✓ pytest-json-ctrf ✓ fastjsonschema ✓ opentelemetry-exporter-otlp-proto-grpc ✓ pytest-timeout ✗ transformers ✓ markdown ✓ structlog ✓ sqlparse ✓ babel ✗ tornado ✓ google-auth-oauthlib ✓ gunicorn ✓ ipython ✓ opentelemetry-exporter-otlp-common ✓ jedi ✓ pyzmq ✓ parso ✗ brotli ✓ tinycss2 ✓ async-timeout ✓ asttokens ✗ grpc-google-iam-v1 ✓ matplotlib-inline ✗ xmltodict ✗ pure-eval ✗ watchdog ✓ ast-serialize ✗ snowflake-connector-python ✓ paramiko ✗ stack-data ✗ azure-storage-blob ✓ griffelib ✓ opentelemetry-exporter-http-transport ✓ black ✓ python-json-logger ✓ cachecontrol ✓ jupyter-core ✓ pyproject-hooks ✓ aioitertools ✓ pdfminer-six ✓ cython ✗ debugpy ✓ build ✓ litellm ✓ croniter ✗ nbformat ✓ types-pyyaml ✓ safetensors ✓ lark ✓ sqlglot ✓ jupyter-client ✓ cedarpy ✓ langsmith ✓ slack-sdk ✗ marshmallow ✓ reportlab ✓ nest-asyncio ✗ isort ✓ awscli ✓ databricks-sdk ✓ opentelemetry-instrumentation-asgi ✓ beartype ✓ google-cloud-aiplatform ✓ pytest-mock ✓ pdfplumber ✓ tomli-w ✓ uuid-utils ✓ kubernetes ✓ pycryptodome ✗ awswrangler ✓ opentelemetry-instrumentation-fastapi ✓ argon2-cffi-bindings ✓ lz4 ✗ fastuuid ✗ xlrd ✗ argon2-cffi ✗ loguru ✗ pymupdf4llm ✓ cbor2 ✓ ipython-pygments-lexers ✓ multiprocess ✗ pymysql ✓ cyclopts ✓ pathable ✓ jsonschema-path ✓ termcolor ✓ pymupdf-layout ✓ rfc3339-validator ✓ text-unidecode ✓ jsonref ✓ typedload ✓ deprecation ✓ shapely ✓ graphql-core ✓ pyperclip ✗ duckdb ✓ pytokens ✗ python-slugify ✓ types-requests ✓ rich-rst ✗

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.