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

Top 120 - 240

tomlkit ✗ multiprocess ✗ requests-toolbelt ✗ openpyxl ✗ opentelemetry-proto ✗ et-xmlfile ✗ huggingface-hub ✓ gitpython ✗ wcwidth ✗ werkzeug ✓ editables ✗ google-cloud-storage ✓ networkx ✓ ptyprocess ✓ pexpect ✓ grpcio-tools ✓ decorator ✗ mypy-extensions ✗ msgpack ✓ watchfiles ✗ textual ✗ matplotlib ✓ docker ✗ pyopenssl ✗ smmap ✗ python-discovery ✗ fonttools ✓ coverage ✓ langchain ✓ opentelemetry-exporter-otlp-proto-http ✗ dnspython ✓ psycopg2-binary ✗ kiwisolver ✓ pynacl ✗ tabulate ✓ sortedcontainers ✓ contourpy ✓ prompt-toolkit ✗ gitdb ✗ mcp ✓ scikit-learn ✓ opentelemetry-instrumentation ✗ docstring-parser ✗ flask ✓ google-cloud-core ✗ google-genai ✓ itsdangerous ✓ ruff ✗ hf-xet ✗ sse-starlette ✓ opentelemetry-exporter-otlp-proto-common ✗ joblib ✗ opentelemetry-exporter-otlp-proto-grpc ✗ dill ✗ isodate ✗ keyring ✓ cycler ✗ redis ✓ chardet ✓ google-crc32c ✓ async-timeout ✓ bcrypt ✗ google-resumable-media ✗ threadpoolctl ✗ orjson ✓ jaraco-classes ✓ kubernetes ✗ tokenizers ✓ blinker ✓ jeepney ✓ secretstorage ✓ azure-identity ✗ azure-core ✓ pydantic-ai-slim ✓ pytest-cov ✗ zstandard ✗ ipython ✓ alembic ✓ nodeenv ✗ defusedxml ✗ pytest-asyncio ✓ msal ✗ toml ✗ tzlocal ✗ ruamel-yaml ✗ jaraco-context ✓ xxhash ✗ jaraco-functools ✓ deprecated ✗ transformers ✓ tiktoken ✓ snowflake-connector-python ✗ mako ✗ traitlets ✓ email-validator ✗ identify ✓ pre-commit ✓ parso ✗ uvloop ✗ rapidfuzz ✓ uv ✗ executing ✗ jedi ✓ cfgv ✓ google-api-python-client ✗ prometheus-client ✗ google-cloud-bigquery ✗ asttokens ✗ matplotlib-inline ✗ databricks-sql-connector ✗ httptools ✓ asn1crypto ✗ uritemplate ✓ h2 ✗ sympy ✗ httpx-sse ✗ poetry-core ✓ setuptools-scm ✓ pyproject-hooks ✓ hyperframe ✗

Top 240 - 360

pure-eval ✗ stack-data ✗ hpack ✗ google-auth-oauthlib ✗ google-auth-httplib2 ✗ durationpy ✓ build ✓ paramiko ✗ mypy ✓ opentelemetry-instrumentation-requests ✗ types-requests ✓ google-cloud-aiplatform ✓ httplib2 ✓ fastjsonschema ✗ mpmath ✗ sqlparse ✗ opentelemetry-util-http ✗ datasets ✓ grpc-google-iam-v1 ✗ backoff ✗ aiofiles ✗ cloudpickle ✗ jsonpointer ✓ pytest-json-ctrf ✓ marshmallow ✓ termcolor ✓ opentelemetry-exporter-otlp ✗ msal-extensions ✗ babel ✗ tornado ✗ google-cloud-secret-manager ✗ tree-sitter ✓ anthropic ✗ gunicorn ✓ markdown ✓ asgiref ✗ pytest-xdist ✗ azure-storage-blob ✗ cython ✗ vcs-versioning ✓ sentry-sdk ✗ execnet ✗ webencodings ✓ xmltodict ✗ py4j ✗ nest-asyncio ✗ google-cloud-batch ✗ black ✓ authlib ✓ databricks-sdk ✓ python-json-logger ✓ cachecontrol ✓ debugpy ✗ pyzmq ✗ weaviate-client ✓ importlib-resources ✓ dbt-core ✓ ydb ✗ langchain-core ✓ jsonpatch ✗ watchdog ✗ librt ✗ typing-inspect ✗ gcsfs ✓ google-analytics-admin ✗ google-cloud-compute ✗ pymongo ✗ google-cloud-kms ✗ pytest-mock ✗ dulwich ✓ aioitertools ✓ lz4 ✗ tinycss2 ✓ typedload ✓ joserfc ✗ google-cloud-pubsub ✗ flatbuffers ✓ safetensors ✗ slack-sdk ✗ jsonschema-path ✓ tree-sitter-languages ✓ dbt-adapters ✓ pymupdf ✓ pkginfo ✗ jupyter-core ✓ cbor2 ✓ torch ✓ awswrangler ✓ narwhals ✗ pymysql ✓ jupyter-client ✓ google-cloud-dlp ✗ pycryptodome ✗ isort ✓ google-cloud-speech ✗ ipykernel ✓ deepdiff ✓ cyclopts ✓ rfc3339-validator ✓ msrest ✗ types-pyyaml ✓ poetry ✓ xlsxwriter ✗ asyncpg ✗ dataclasses-json ✗ invoke ✗ semver ✗ langsmith ✓ arrow ✗ comm ✓ structlog ✗ rich-rst ✗ dbt-common ✓ mccabe ✗ pydantic-graph ✓ ipython-pygments-lexers ✓ types-toml ✓ pathable ✓ ruamel-yaml-clib ✗ loguru ✗

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.