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

Top 120 - 240

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

Top 240 - 360

babel ✗ ipython ✓ xmltodict ✗ jsonpointer ✗ nodeenv ✗ aiofiles ✗ httpx-sse ✗ black ✓ cloudpickle ✗ tiktoken ✓ databricks-sdk ✗ httptools ✓ authlib ✗ opentelemetry-util-http ✗ opentelemetry-instrumentation-requests ✗ asgiref ✗ grpcio-health-checking ✗ py4j ✗ aliyun-python-sdk-core ✗ pre-commit ✓ gunicorn ✓ toml ✗ tornado ✗ parso ✗ traitlets ✓ cython ✗ pydantic-graph ✓ importlib-resources ✓ identify ✓ durationpy ✓ executing ✗ dbt-core ✓ jedi ✗ pandas-stubs ✓ pytest-xdist ✗ langchain-core ✓ cfgv ✓ asttokens ✗ grpc-google-iam-v1 ✗ markdown ✓ matplotlib-inline ✗ execnet ✗ litellm ✗ webencodings ✓ python-json-logger ✗ nest-asyncio ✗ cachecontrol ✓ stack-data ✗ pure-eval ✗ jsonpatch ✗ typing-inspect ✗ pymongo ✗ awswrangler ✓ jsonschema-path ✓ xxhash ✗ isort ✓ termcolor ✓ h2 ✗ dbt-adapters ✓ hyperframe ✗ hpack ✗ aioitertools ✓ watchdog ✗ debugpy ✗ pymysql ✓ pytest-mock ✗ pkginfo ✗ dbt-common ✓ dataclasses-json ✗ rich-toolkit ✓ dulwich ✓ jsonpath-ng ✓ pyperclip ✗ torch ✓ pathable ✓ pyzmq ✗ slack-sdk ✗ msrest ✗ google-cloud-speech ✗ cattrs ✓ databricks-sql-connector ✗ pycryptodome ✗ google-cloud-vision ✗ google-cloud-monitoring ✗ google-cloud-kms ✗ google-cloud-compute ✗ sphinx ✓ tree-sitter ✓ pygithub ✗ lz4 ✗ typedload ✓ google-cloud-tasks ✗ multiprocess ✗ invoke ✗ ruamel-yaml-clib ✗ google-cloud-dlp ✗ langsmith ✓ portalocker ✗ google-cloud-workflows ✗ semver ✗ anthropic ✗ mccabe ✗ google-cloud-videointelligence ✗ opentelemetry-exporter-prometheus ✗ sqlalchemy-bigquery ✗ poetry ✓ google-cloud-language ✗ rfc3339-validator ✓ google-cloud-bigtable ✗ google-cloud-os-login ✗ snowflake-sqlalchemy ✗ google-cloud-dataform ✗ pendulum ✗ deepdiff ✗ smart-open ✓ argcomplete ✗ nvidia-nccl-cu12 ✗ google-cloud-redis ✗ tinycss2 ✓ cyclopts ✓

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.