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

Top 120 - 240

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

Top 240 - 360

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

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.