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

Top 120 - 240

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

Top 240 - 360

pre-commit ✓ google-cloud-kms ✓ uv ✗ anthropic ✗ google-cloud-compute ✓ cfgv ✓ traitlets ✓ prometheus-client ✗ aiofiles ✗ authlib ✓ pyproject-hooks ✓ backoff ✗ gcsfs ✓ sympy ✗ joserfc ✓ jsonpointer ✓ cloudpickle ✗ mpmath ✗ mypy ✓ paramiko ✗ executing ✗ poetry-core ✓ jedi ✓ parso ✗ google-cloud-aiplatform ✓ google-cloud-dlp ✓ fastjsonschema ✗ datasets ✓ pytest-xdist ✗ build ✓ matplotlib-inline ✗ asttokens ✗ msal-extensions ✗ databricks-sdk ✓ execnet ✗ google-cloud-texttospeech ✓ sqlparse ✗ asgiref ✗ sentry-sdk ✗ google-cloud-speech ✓ black ✓ stack-data ✗ pure-eval ✗ webencodings ✓ narwhals ✓ opentelemetry-instrumentation-threading ✓ babel ✗ azure-storage-blob ✗ pandas-stubs ✓ gunicorn ✓ python-json-logger ✓ termcolor ✓ databricks-sql-connector ✗ grpc-google-iam-v1 ✗ google-cloud-pubsub ✓ marshmallow ✓ jsonpatch ✗ tornado ✗ setuptools-scm ✗ pypdf ✗ python-docx ✗ cachecontrol ✓ pydantic-graph ✓ pyperclip ✗ jsonschema-path ✓ cython ✗ xmltodict ✗ types-requests ✓ tree-sitter ✓ pymongo ✗ dbt-adapters ✓ kubernetes ✓ py4j ✗ snowflake-snowpark-python ✓ markdown ✓ griffelib ✓ beartype ✓ pathable ✓ google-cloud-tasks ✓ cyclopts ✓ vcs-versioning ✗ dbt-core ✓ jsonref ✓ tinycss2 ✓ isort ✓ rich-rst ✗ fastuuid ✗ librt ✗ xlsxwriter ✗ google-cloud-monitoring ✓ aioitertools ✓ asyncpg ✗ google-cloud-logging ✓ py-key-value-aio ✓ watchdog ✗ opentelemetry-exporter-prometheus ✓ pymupdf ✓ langsmith ✓ llama-parse ✓ llama-cloud-services ✓ importlib-resources ✓ pytest-mock ✗ pyzmq ✗ structlog ✓ lz4 ✗ debugpy ✗ google-cloud-vision ✓ fastmcp ✓ google-cloud-bigtable ✓ mdit-py-plugins ✗ flatbuffers ✓ dulwich ✓ psycopg ✓ deprecation ✓ nest-asyncio ✗ cfn-lint ✓ sphinx ✓ google-cloud-videointelligence ✓ linkify-it-py ✓ google-cloud-workflows ✓

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.