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

Top 120 - 240

grpcio-tools ✓ google-genai ✓ coverage ✓ tabulate ✓ langchain ✓ pyopenssl ✗ proto-plus ✗ opentelemetry-proto ✗ keyring ✓ werkzeug ✓ smmap ✗ mypy-extensions ✗ msgpack ✓ openai ✗ huggingface-hub ✗ jaraco-classes ✓ secretstorage ✓ google-cloud-storage ✓ watchfiles ✗ jeepney ✓ distro ✗ psycopg2-binary ✗ flask ✓ jaraco-context ✓ sortedcontainers ✓ pynacl ✗ sentry-sdk ✗ wcwidth ✗ scikit-learn ✓ fonttools ✓ jaraco-functools ✓ sse-starlette ✓ decorator ✗ matplotlib ✓ joblib ✗ opentelemetry-exporter-otlp-proto-http ✗ redis ✓ isodate ✗ mcp ✓ jiter ✗ kiwisolver ✓ email-validator ✗ sympy ✗ pexpect ✓ ptyprocess ✓ azure-core ✗ opentelemetry-exporter-otlp-proto-grpc ✗ gitpython ✗ opentelemetry-exporter-otlp-proto-common ✗ python-discovery ✗ mpmath ✗ bcrypt ✗ ruff ✗ poetry-core ✓ editables ✗ pytest-cov ✗ threadpoolctl ✗ alembic ✓ zstandard ✗ itsdangerous ✓ ruamel-yaml ✗ azure-identity ✗ docstring-parser ✗ async-timeout ✓ pytest-asyncio ✓ google-cloud-core ✗ msal ✗ contourpy ✓ orjson ✓ prompt-toolkit ✗ snowflake-connector-python ✗ gitdb ✗ opentelemetry-instrumentation ✗ cycler ✗ types-requests ✓ defusedxml ✗ docker ✗ blinker ✓ tzlocal ✗ rapidfuzz ✓ google-crc32c ✓ deprecated ✗ google-resumable-media ✗ zarr ✓ transformers ✓ chardet ✓ tokenizers ✗ pyproject-hooks ✓ dill ✗ kubernetes ✗ google-api-python-client ✗ hf-xet ✗ asn1crypto ✗ mako ✗ authlib ✗ fastjsonschema ✗ setuptools-scm ✗ build ✗ google-cloud-aiplatform ✗ paramiko ✗ backoff ✗ prometheus-client ✗ google-auth-oauthlib ✗ marshmallow ✓ uv ✗ sqlparse ✗ toml ✗ uritemplate ✓ google-auth-httplib2 ✗ textual ✗ ipython ✓ cython ✗ opentelemetry-exporter-otlp ✗ uvloop ✗ httplib2 ✓ nodeenv ✗ google-cloud-bigquery ✗ tiktoken ✓ mypy ✗ jsonpointer ✓

Top 240 - 360

multiprocess ✗ flatbuffers ✓ jsonschema-path ✓ msal-extensions ✗ azure-storage-blob ✗ babel ✗ tornado ✗ databricks-sdk ✗ cloudpickle ✗ pre-commit ✓ asgiref ✗ identify ✓ httptools ✓ parso ✗ traitlets ✓ pathable ✓ httpx-sse ✗ gunicorn ✓ xmltodict ✗ executing ✗ jedi ✗ black ✓ yandexcloud ✗ aiofiles ✗ pyperclip ✗ cfgv ✓ pytest-xdist ✗ opentelemetry-instrumentation-requests ✗ opentelemetry-util-http ✗ asttokens ✗ importlib-resources ✓ pymupdf ✓ cachecontrol ✓ onnxruntime ✓ matplotlib-inline ✗ google-cloud-secret-manager ✗ execnet ✗ py4j ✗ beartype ✓ xxhash ✗ stack-data ✗ pure-eval ✗ durationpy ✓ python-json-logger ✗ jsonref ✓ cyclopts ✓ grpc-google-iam-v1 ✗ markdown ✓ langchain-core ✓ h2 ✗ nest-asyncio ✗ hyperframe ✗ hpack ✗ webencodings ✓ litellm ✗ fastmcp ✓ pytest-mock ✗ dbt-core ✓ dulwich ✓ rich-rst ✗ termcolor ✓ pkginfo ✗ watchdog ✗ jsonpatch ✗ google-cloud-batch ✗ typing-inspect ✗ pymongo ✗ py-key-value-aio ✓ debugpy ✗ google-analytics-admin ✗ torch ✓ poetry ✓ aioitertools ✓ dbt-adapters ✓ isort ✓ grpcio-health-checking ✗ anthropic ✗ jsonpath-ng ✓ awswrangler ✓ tree-sitter ✓ pymysql ✓ cleo ✗ uncalled-for ✓ pyzmq ✗ installer ✓ crashtest ✗ pydantic-ai-slim ✓ ruamel-yaml-clib ✗ pycryptodome ✗ mccabe ✗ lz4 ✗ slack-sdk ✗ caio ✓ aiofile ✗ deepdiff ✗ dbt-common ✓ msrest ✗ gcsfs ✓ dataclasses-json ✗ safetensors ✗ cattrs ✓ langsmith ✓ wsproto ✓ pandas-stubs ✓ datasets ✓ xlsxwriter ✗ backports-tarfile ✓ rfc3339-validator ✓ pygithub ✗ typedload ✓ pytest-json-ctrf ✓ shapely ✓ tinycss2 ✓ pendulum ✗ pycodestyle ✓ arrow ✗ faker ✓ jupyter-core ✓ smart-open ✓ narwhals ✗

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.