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

Top 120 - 240

distro ✗ tomlkit ✗ proto-plus ✓ distlib ✗ editables ✗ huggingface-hub ✓ rsa ✗ google-genai ✓ dnspython ✓ openpyxl ✗ opentelemetry-exporter-otlp-proto-grpc ✓ et-xmlfile ✗ mcp ✓ keyring ✓ websocket-client ✗ opentelemetry-instrumentation ✓ grpcio-tools ✓ requests-toolbelt ✗ mypy-extensions ✗ wcwidth ✗ jaraco-classes ✓ jeepney ✓ secretstorage ✓ jaraco-functools ✓ coverage ✓ gitpython ✗ google-cloud-storage ✓ networkx ✓ sse-starlette ✓ python-discovery ✗ jaraco-context ✓ multiprocess ✗ psycopg2-binary ✗ opentelemetry-exporter-otlp-proto-common ✓ werkzeug ✓ pyopenssl ✗ msgpack ✓ smmap ✗ pytest-json-ctrf ✓ ruff ✗ decorator ✗ fonttools ✓ docstring-parser ✗ docutils ✗ pynacl ✗ sortedcontainers ✓ docker ✗ hf-xet ✗ matplotlib ✓ redis ✓ ptyprocess ✓ azure-identity ✗ tabulate ✓ azure-core ✓ pexpect ✓ gitdb ✗ prompt-toolkit ✗ isodate ✗ email-validator ✗ kiwisolver ✓ contourpy ✓ scikit-learn ✓ uvloop ✗ httptools ✓ bcrypt ✗ dill ✗ google-cloud-core ✓ flask ✓ itsdangerous ✓ pydantic-graph ✓ defusedxml ✗ tiktoken ✓ pytest-asyncio ✓ tokenizers ✓ msal ✗ ydb ✗ joblib ✗ pytest-cov ✗ alembic ✓ async-timeout ✓ httpx-sse ✗ snowflake-connector-python ✗ orjson ✓ threadpoolctl ✗ chardet ✓ google-resumable-media ✓ ruamel-yaml ✗ google-cloud-aiplatform ✓ google-crc32c ✓ deprecated ✗ kubernetes ✓ cycler ✗ tzlocal ✗ mako ✗ langchain-core ✓ blinker ✓ google-api-python-client ✗ databricks-sql-connector ✗ google-cloud-batch ✗ google-cloud-bigquery ✗ opentelemetry-exporter-otlp ✓ weaviate-client ✓ google-cloud-secret-manager ✗ uv ✗ xxhash ✗ google-auth-oauthlib ✓ uritemplate ✓ google-auth-httplib2 ✓ opentelemetry-instrumentation-requests ✓ mypy ✓ rapidfuzz ✓ ipython ✓ toml ✗ nodeenv ✗ prometheus-client ✗ asn1crypto ✗ opentelemetry-util-http ✓ httplib2 ✓ paramiko ✗ google-analytics-admin ✗

Top 240 - 360

traitlets ✓ authlib ✓ transformers ✓ pyproject-hooks ✓ identify ✓ pre-commit ✓ zstandard ✗ h2 ✗ google-cloud-kms ✗ google-cloud-compute ✗ hyperframe ✗ hpack ✗ sympy ✗ cfgv ✓ aiofiles ✗ gcsfs ✓ poetry-core ✓ executing ✗ jedi ✓ parso ✗ backoff ✗ build ✓ jsonpointer ✓ matplotlib-inline ✗ fastjsonschema ✗ msal-extensions ✗ sqlparse ✗ azure-storage-blob ✗ mpmath ✗ marshmallow ✓ anthropic ✗ types-requests ✓ asttokens ✗ cloudpickle ✗ datasets ✓ durationpy ✓ google-cloud-dlp ✗ sentry-sdk ✗ black ✓ pandas-stubs ✓ gunicorn ✓ pure-eval ✗ stack-data ✗ babel ✗ joserfc ✗ rich-toolkit ✓ setuptools-scm ✓ google-cloud-speech ✗ grpc-google-iam-v1 ✗ databricks-sdk ✓ python-json-logger ✓ google-cloud-texttospeech ✗ asgiref ✗ webencodings ✓ pytest-xdist ✗ cython ✗ termcolor ✓ xmltodict ✗ cyclopts ✓ tree-sitter ✓ execnet ✗ dbt-adapters ✓ google-cloud-pubsub ✗ tornado ✗ py4j ✗ pymongo ✗ nest-asyncio ✗ jsonpatch ✗ dbt-core ✓ cachecontrol ✓ importlib-resources ✓ watchdog ✗ markdown ✓ librt ✗ llama-parse ✓ llama-cloud-services ✓ jsonschema-path ✓ vcs-versioning ✓ google-cloud-tasks ✗ rich-rst ✗ pyzmq ✗ google-cloud-monitoring ✗ aioitertools ✓ typing-inspect ✗ google-cloud-bigtable ✗ asyncpg ✗ structlog ✗ flatbuffers ✓ mdit-py-plugins ✗ pathable ✓ isort ✓ opentelemetry-instrumentation-threading ✓ snowflake-snowpark-python ✗ debugpy ✗ google-cloud-vision ✗ sphinx ✓ tinycss2 ✓ google-cloud-logging ✗ pyperclip ✗ torch ✓ pymysql ✓ pycryptodome ✗ jsonref ✓ linkify-it-py ✓ pymupdf ✓ msrest ✗ sqlalchemy-bigquery ✓ awswrangler ✓ beartype ✓ google-cloud-language ✗ fastmcp ✓ pytest-mock ✗ google-cloud-videointelligence ✗ grpcio-health-checking ✗ slack-sdk ✗ google-cloud-workflows ✗ google-cloud-redis ✗ google-cloud-dataform ✗ uc-micro-py ✓ google-cloud-os-login ✗

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.