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

Top 120 - 240

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

Top 240 - 360

marshmallow ✓ pytest-xdist ✗ authlib ✗ opentelemetry-util-http ✗ opentelemetry-instrumentation-requests ✗ sqlparse ✗ tornado ✗ identify ✓ traitlets ✓ msal-extensions ✗ parso ✗ transformers ✓ jsonpointer ✓ execnet ✗ pre-commit ✓ grpc-google-iam-v1 ✗ cfgv ✓ aiofiles ✗ jedi ✗ executing ✗ babel ✗ durationpy ✓ google-cloud-secret-manager ✗ gunicorn ✓ asttokens ✗ xxhash ✗ azure-storage-blob ✗ matplotlib-inline ✗ cython ✗ h2 ✗ asgiref ✗ hyperframe ✗ hpack ✗ xmltodict ✗ google-cloud-batch ✗ pure-eval ✗ stack-data ✗ tree-sitter-languages ✓ importlib-resources ✓ sentry-sdk ✗ py4j ✗ black ✓ nest-asyncio ✗ weaviate-client ✓ markdown ✓ anthropic ✗ langchain-core ✓ vcs-versioning ✓ databricks-sdk ✗ pyee ✗ webencodings ✓ google-analytics-admin ✗ python-json-logger ✓ termcolor ✓ datasets ✓ cachecontrol ✓ playwright ✗ jsonschema-path ✓ dbt-core ✓ debugpy ✗ librt ✗ jsonpatch ✗ watchdog ✗ typing-inspect ✗ gcsfs ✓ pyzmq ✗ pathable ✓ pymongo ✗ dbt-adapters ✓ google-cloud-compute ✗ pyperclip ✗ aioitertools ✓ google-cloud-kms ✗ pandas-stubs ✓ jsonref ✓ databricks-sql-connector ✗ pytest-mock ✗ lz4 ✗ grpcio-health-checking ✗ pycryptodome ✗ flatbuffers ✓ dulwich ✓ narwhals ✗ pymysql ✓ awswrangler ✓ beartype ✓ fastmcp ✓ pkginfo ✗ ujson ✓ jsonpath-ng ✓ isort ✓ slack-sdk ✗ msrest ✗ ydb ✗ cyclopts ✓ tinycss2 ✓ google-cloud-dlp ✗ deepdiff ✓ google-cloud-speech ✗ dataclasses-json ✗ mccabe ✗ dbt-common ✓ rich-rst ✗ jupyter-core ✓ poetry ✓ rich-toolkit ✓ langsmith ✓ torch ✓ argcomplete ✗ pymupdf ✓ pygithub ✗ google-cloud-monitoring ✗ ipykernel ✓ invoke ✗ simplejson ✗ rfc3339-validator ✓ pytest-json-ctrf ✓ xlsxwriter ✗ 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.