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

Top 120 - 240

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

Top 240 - 360

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

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.