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

Top 120 - 240

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

Top 240 - 360

mypy ✗ beartype ✓ google-auth-httplib2 ✗ cyclopts ✓ httplib2 ✓ transformers ✓ msal-extensions ✗ httpx-sse ✗ fastmcp ✓ rich-rst ✗ tornado ✗ babel ✗ executing ✗ multiprocess ✗ parso ✗ pre-commit ✓ cloudpickle ✗ gunicorn ✓ traitlets ✓ cython ✗ httptools ✓ databricks-sdk ✗ identify ✓ azure-storage-blob ✗ jedi ✗ asttokens ✗ aiofiles ✗ xmltodict ✗ py-key-value-aio ✓ cfgv ✓ opentelemetry-instrumentation-requests ✗ opentelemetry-util-http ✗ matplotlib-inline ✗ black ✓ asgiref ✗ sentry-sdk ✗ langchain-core ✓ grpc-google-iam-v1 ✗ importlib-resources ✓ uncalled-for ✓ google-cloud-secret-manager ✗ pure-eval ✗ stack-data ✗ pytest-xdist ✗ python-json-logger ✓ caio ✓ durationpy ✓ py4j ✗ aiofile ✗ cachecontrol ✓ markdown ✓ typing-inspect ✗ xxhash ✗ nest-asyncio ✗ execnet ✗ h2 ✗ webencodings ✓ hpack ✗ hyperframe ✗ termcolor ✓ watchdog ✗ typedload ✓ dbt-core ✓ jsonpatch ✗ asyncio ✓ litellm ✗ google-cloud-batch ✗ debugpy ✗ pydantic-ai-slim ✓ pymongo ✗ dbt-adapters ✓ dulwich ✓ pytest-mock ✗ google-analytics-admin ✗ pymupdf4llm ✓ arxiv ✗ pyzmq ✗ aioitertools ✓ pkginfo ✗ anthropic ✗ torch ✓ dataclasses-json ✗ pymupdf-layout ✓ fastapi-mcp ✓ wikipedia-api ✓ grpcio-health-checking ✗ deepdiff ✗ isort ✓ yandexcloud ✗ lz4 ✗ pymysql ✓ jsonpath-ng ✓ slack-sdk ✗ tree-sitter ✓ awswrangler ✓ dbt-common ✓ mccabe ✗ poetry ✓ pycryptodome ✗ datasets ✓ ruamel-yaml-clib ✗ pandas-stubs ✓ rfc3339-validator ✓ openapi-pydantic ✗ pygithub ✗ msrest ✗ xlsxwriter ✗ langsmith ✓ safetensors ✗ narwhals ✗ librt ✗ cleo ✗ pydantic-graph ✓ installer ✓ crashtest ✗ shapely ✓ semver ✗ text-unidecode ✓ jupyter-core ✓ tinycss2 ✓

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.