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

Top 120 - 240

typer ✓ openpyxl ✗ et-xmlfile ✗ oauthlib ✗ sse-starlette ✓ ruff ✗ dnspython ✓ more-itertools ✓ coverage ✓ exceptiongroup ✓ cachetools ✓ opentelemetry-exporter-otlp-proto-grpc ✓ mypy-extensions ✗ hf-xet ✗ google-genai ✓ distlib ✗ wcwidth ✗ pytest-asyncio ✓ docstring-parser ✗ python-discovery ✗ requests-toolbelt ✗ pyopenssl ✗ uvloop ✗ rsa ✗ httptools ✓ networkx ✓ grpcio-tools ✓ msgpack ✓ sortedcontainers ✓ tiktoken ✓ psycopg2-binary ✗ tokenizers ✓ redis ✓ werkzeug ✓ langchain ✓ httpx-sse ✗ opentelemetry-instrumentation-requests ✓ defusedxml ✗ google-cloud-storage ✓ tzlocal ✓ scikit-learn ✓ fonttools ✓ email-validator ✗ pynacl ✗ prompt-toolkit ✓ gitpython ✗ orjson ✓ azure-core ✓ pytest-json-ctrf ✓ azure-identity ✗ multiprocess ✗ isodate ✗ websocket-client ✗ opentelemetry-util-http ✓ joblib ✗ pytest-cov ✗ alembic ✓ keyring ✓ tabulate ✓ threadpoolctl ✗ smmap ✗ mako ✓ matplotlib ✓ jaraco-classes ✓ itsdangerous ✓ ruamel-yaml ✗ google-cloud-core ✓ truststore ✓ jeepney ✓ anthropic ✗ chardet ✓ secretstorage ✓ opentelemetry-instrumentation-threading ✓ msal ✗ gitdb ✗ bcrypt ✗ jaraco-functools ✓ dill ✗ mypy ✓ docutils ✗ uv ✗ jaraco-context ✓ flask ✓ httpx2 ✓ transformers ✓ kiwisolver ✓ h2 ✓ httpcore2 ✓ nodeenv ✗ opentelemetry-exporter-otlp ✓ contourpy ✓ google-resumable-media ✓ decorator ✗ hpack ✓ zstandard ✗ docker ✗ ydb ✓ xxhash ✗ google-crc32c ✓ google-api-python-client ✗ google-auth-httplib2 ✓ blinker ✓ snowflake-connector-python ✓ google-cloud-bigquery ✓ hyperframe ✗ sentry-sdk ✗ uritemplate ✓ google-auth-oauthlib ✓ cycler ✗ toml ✗ pre-commit ✓ ptyprocess ✓ prometheus-client ✗ black ✓ deprecated ✗ identify ✓ backoff ✗ langchain-core ✓ httplib2 ✓ pexpect ✓

Top 240 - 360

cfgv ✓ rapidfuzz ✓ sympy ✗ types-requests ✓ google-cloud-secret-manager ✓ mpmath ✗ asn1crypto ✗ awscli ✓ msal-extensions ✗ narwhals ✓ pypdf ✗ aiofiles ✗ jsonpointer ✓ async-timeout ✓ librt ✗ pytest-xdist ✗ cloudpickle ✗ paramiko ✗ ipython ✓ authlib ✓ execnet ✗ webencodings ✓ sqlparse ✓ pyproject-hooks ✓ pydantic-ai-slim ✓ google-cloud-batch ✓ fastjsonschema ✓ grpc-google-iam-v1 ✓ datasets ✓ asgiref ✓ joserfc ✓ traitlets ✓ gcsfs ✓ databricks-sdk ✓ google-cloud-aiplatform ✓ build ✓ poetry-core ✓ isort ✓ psycopg ✓ gunicorn ✓ azure-storage-blob ✗ google-cloud-kms ✓ jsonpatch ✗ google-analytics-admin ✓ sglang ✓ babel ✗ google-cloud-compute ✓ psycopg-binary ✓ executing ✗ cython ✗ langsmith ✓ cachecontrol ✓ asyncpg ✗ parso ✗ jedi ✓ pydantic-graph ✓ asttokens ✗ markdown ✓ setuptools-scm ✗ xmltodict ✗ marshmallow ✓ google-cloud-dlp ✓ google-cloud-speech ✓ python-docx ✗ google-cloud-pubsub ✓ watchdog ✗ vcs-versioning ✗ python-json-logger ✓ matplotlib-inline ✗ tornado ✗ safetensors ✓ google-cloud-texttospeech ✓ playwright ✓ dbt-adapters ✓ structlog ✓ fastuuid ✗ stack-data ✗ pure-eval ✗ tinycss2 ✓ pytokens ✗ weaviate-client ✓ fastmcp ✓ kubernetes ✓ google-cloud-logging ✓ pymupdf ✓ aioitertools ✓ pymongo ✗ pyee ✓ lz4 ✗ py4j ✗ xlsxwriter ✗ termcolor ✓ dbt-core ✓ mdit-py-plugins ✗ pymysql ✓ tree-sitter ✓ nest-asyncio ✗ brotli ✓ tomli-w ✓ google-cloud-monitoring ✓ opentelemetry-exporter-prometheus ✓ flatbuffers ✓ pyzmq ✗ croniter ✗ slack-sdk ✗ google-cloud-tasks ✓ pyperclip ✗ opentelemetry-instrumentation-fastapi ✓ fastmcp-slim ✓ linkify-it-py ✓ importlib-resources ✓ pytest-mock ✗ pytest-timeout ✗ griffelib ✓ deprecation ✓ debugpy ✗ pycryptodome ✗ torch ✓ uc-micro-py ✓ opentelemetry-instrumentation-asgi ✓

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.