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

Top 120 - 240

requests-toolbelt ✗ psycopg2-binary ✗ isodate ✗ pynacl ✗ sortedcontainers ✓ regex ✗ scikit-learn ✓ opentelemetry-semantic-conventions ✗ opentelemetry-api ✗ werkzeug ✓ shellingham ✗ pyzmq ✗ azure-core ✗ networkx ✓ pexpect ✓ azure-identity ✗ ptyprocess ✓ more-itertools ✗ msal ✗ decorator ✗ hatchling ✓ snowflake-connector-python ✗ msgpack ✓ textual ✗ joblib ✗ threadpoolctl ✗ mypy-extensions ✗ python-multipart ✓ async-timeout ✓ asn1crypto ✗ websockets ✗ bcrypt ✗ gitpython ✗ google-cloud-core ✗ dnspython ✓ wcwidth ✗ openai ✗ coverage ✓ distro ✗ smmap ✗ paramiko ✗ annotated-doc ✗ tabulate ✗ gitdb ✗ langsmith ✓ google-resumable-media ✗ redis ✓ google-api-python-client ✗ matplotlib ✓ google-crc32c ✓ google-auth-oauthlib ✗ ruamel-yaml ✗ deprecated ✗ aliyun-python-sdk-core ✗ google-cloud-batch ✗ fonttools ✓ chardet ✗ google-cloud-bigquery ✗ alembic ✓ itsdangerous ✓ kubernetes ✗ transformers ✗ google-analytics-admin ✗ poetry-core ✗ google-cloud-secret-manager ✗ keyring ✓ dill ✗ tzlocal ✗ langchain ✓ google-auth-httplib2 ✗ pydantic-settings ✓ prompt-toolkit ✗ opentelemetry-exporter-prometheus ✗ kiwisolver ✓ setuptools-scm ✗ jiter ✗ msal-extensions ✗ blinker ✓ backoff ✗ py4j ✗ typer ✗ grpcio-health-checking ✗ uritemplate ✓ azure-storage-blob ✗ httplib2 ✓ cycler ✗ jaraco-classes ✓ secretstorage ✓ pyproject-hooks ✓ pytest-asyncio ✓ sympy ✗ zstandard ✗ defusedxml ✗ jeepney ✓ orjson ✗ fastjsonschema ✗ tokenizers ✗ marshmallow ✓ ruamel-yaml-clib ✗ prometheus-client ✗ contourpy ✓ rapidfuzz ✓ gym-notices ✓ opentelemetry-instrumentation ✗ ruff ✗ nodeenv ✗ mpmath ✗ importlib-resources ✓ jaraco-functools ✓ cython ✗ pandas-stubs ✓ sqlparse ✗ awswrangler ✗ build ✗ xmltodict ✗ hf-xet ✗ pytest-cov ✗ ipython ✓ tornado ✗ docker ✗

Top 240 - 360

editables ✗ uv ✗ mako ✗ pre-commit ✓ jaraco-context ✓ cfgv ✓ identify ✓ aiofiles ✗ types-requests ✓ jsonpointer ✗ traitlets ✓ email-validator ✗ typedload ✓ jedi ✗ toml ✗ nest-asyncio ✗ parso ✗ durationpy ✓ babel ✗ matplotlib-inline ✗ executing ✗ dbt-core ✓ grpc-google-iam-v1 ✗ black ✓ ply ✓ asttokens ✗ sphinx ✓ google-cloud-vision ✗ pymongo ✗ snowflake-sqlalchemy ✗ tiktoken ✓ langchain-core ✓ google-cloud-dlp ✗ argcomplete ✗ sentry-sdk ✗ google-cloud-tasks ✗ google-cloud-monitoring ✗ google-cloud-speech ✗ webencodings ✓ pymysql ✓ dbt-common ✓ google-cloud-language ✗ google-cloud-workflows ✗ google-cloud-compute ✗ docstring-parser ✗ stack-data ✗ litellm ✗ pure-eval ✗ termcolor ✓ markdown ✓ google-cloud-dataform ✗ torch ✓ dbt-adapters ✓ google-cloud-videointelligence ✗ msrest ✗ asgiref ✗ databricks-sdk ✗ google-cloud-os-login ✗ watchfiles ✗ aioitertools ✓ mypy ✗ opentelemetry-util-http ✗ google-cloud-bigtable ✗ pymupdf ✓ python-json-logger ✗ shapely ✓ gunicorn ✗ pendulum ✗ google-cloud-redis ✗ jsonpatch ✗ azure-common ✗ typing-inspect ✗ uvloop ✗ jsonpath-ng ✗ pytest-xdist ✗ pycryptodome ✗ mcp ✓ google-cloud-memcache ✗ opentelemetry-instrumentation-requests ✗ execnet ✗ cachecontrol ✓ debugpy ✗ multiprocess ✗ scramp ✗ notebook ✗ ray ✗ datadog ✗ google-cloud-kms ✗ pkginfo ✗ future ✗ httptools ✓ lz4 ✗ watchdog ✗ isort ✓ google-cloud-logging ✗ tree-sitter ✓ h2 ✗ hyperframe ✗ jupyter-core ✓ slack-sdk ✗ cattrs ✗ requests-file ✓ hpack ✗ opensearch-py ✓ wsproto ✓ python-telegram-bot ✗ apache-beam ✓ mccabe ✗ ipykernel ✓ datasets ✗ smart-open ✗ httpx-sse ✗ jupyter-client ✓ pyspark ✓ google-cloud-aiplatform ✗ dataclasses-json ✗ pycodestyle ✓ nvidia-nccl-cu12 ✗ comm ✓ 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.