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

Top 120 - 240

pynacl ✗ textual ✗ isodate ✗ sortedcontainers ✓ azure-identity ✗ requests-toolbelt ✗ sniffio ✓ events ✓ pexpect ✓ ptyprocess ✓ regex ✗ snowflake-connector-python ✗ azure-core ✗ scikit-learn ✓ msal ✗ shellingham ✗ decorator ✗ opentelemetry-semantic-conventions ✗ hatchling ✓ opentelemetry-api ✗ werkzeug ✓ opensearch-protobufs ✓ asn1crypto ✗ huggingface-hub ✗ cloudpickle ✗ more-itertools ✗ bcrypt ✗ python-multipart ✓ async-timeout ✓ networkx ✓ google-cloud-batch ✗ threadpoolctl ✗ msgpack ✓ websockets ✗ aliyun-python-sdk-core ✗ joblib ✗ gitpython ✗ google-analytics-admin ✗ mypy-extensions ✗ paramiko ✗ langsmith ✓ google-cloud-core ✗ annotated-doc ✗ kubernetes ✗ dnspython ✓ smmap ✗ wcwidth ✗ google-cloud-secret-manager ✗ openai ✗ gitdb ✗ google-auth-oauthlib ✗ opentelemetry-exporter-prometheus ✗ tabulate ✗ google-api-python-client ✗ distro ✗ coverage ✓ google-resumable-media ✗ redis ✓ grpcio-health-checking ✗ google-crc32c ✓ matplotlib ✓ langchain ✓ poetry-core ✗ setuptools-scm ✗ deprecated ✗ chardet ✗ ruamel-yaml ✗ alembic ✓ pytest-asyncio ✓ google-auth-httplib2 ✗ pyzmq ✗ msal-extensions ✗ tzlocal ✗ py4j ✗ google-cloud-bigquery ✗ typedload ✓ fonttools ✓ pandas-stubs ✓ httplib2 ✓ dill ✗ backoff ✗ itsdangerous ✓ azure-storage-blob ✗ transformers ✗ kiwisolver ✓ typer ✗ uritemplate ✓ blinker ✓ prompt-toolkit ✗ pydantic-settings ✓ keyring ✓ nodeenv ✗ jiter ✗ cycler ✗ pre-commit ✓ durationpy ✓ identify ✓ cfgv ✓ marshmallow ✓ awswrangler ✗ cython ✗ jaraco-classes ✓ secretstorage ✓ prometheus-client ✗ defusedxml ✗ pyproject-hooks ✓ contourpy ✓ fastjsonschema ✗ tokenizers ✗ jeepney ✓ orjson ✗ google-cloud-vision ✗ google-cloud-tasks ✗ google-cloud-dlp ✗ google-cloud-speech ✗ jaraco-functools ✓ sympy ✗ google-cloud-monitoring ✗ importlib-resources ✓ google-cloud-workflows ✗

Top 240 - 360

ipython ✓ xmltodict ✗ zstandard ✗ google-cloud-compute ✗ jaraco-context ✓ editables ✗ google-cloud-language ✗ sqlparse ✗ hf-xet ✗ snowflake-sqlalchemy ✗ aiofiles ✗ sphinx ✓ google-cloud-dataform ✗ docker ✗ ruff ✗ opentelemetry-instrumentation ✗ dbt-core ✓ tornado ✗ traitlets ✓ google-cloud-videointelligence ✗ google-cloud-os-login ✗ pytest-cov ✗ email-validator ✗ mpmath ✗ rapidfuzz ✓ ruamel-yaml-clib ✗ mako ✗ nest-asyncio ✗ parso ✗ jedi ✗ google-cloud-bigtable ✗ build ✗ pymongo ✗ uv ✗ google-cloud-redis ✗ matplotlib-inline ✗ toml ✗ grpc-google-iam-v1 ✗ ply ✓ pymysql ✓ babel ✗ jsonpointer ✗ executing ✗ google-cloud-memcache ✗ tiktoken ✓ google-cloud-kms ✗ black ✓ asttokens ✗ litellm ✗ langchain-core ✓ types-requests ✓ dbt-common ✓ databricks-sdk ✗ stack-data ✗ pure-eval ✗ watchfiles ✗ dbt-adapters ✓ termcolor ✓ webencodings ✓ msrest ✗ pendulum ✗ azure-common ✗ pycryptodome ✗ docstring-parser ✗ jsonpath-ng ✗ python-telegram-bot ✗ apache-beam ✓ scramp ✗ sentry-sdk ✗ aioitertools ✓ ray ✗ shapely ✓ markdown ✓ google-cloud-logging ✗ notebook ✗ argcomplete ✗ python-json-logger ✗ asgiref ✗ pytest-xdist ✗ datadog ✗ uvloop ✗ torch ✓ jsonpatch ✗ gunicorn ✗ cattrs ✗ lz4 ✗ h2 ✗ hyperframe ✗ execnet ✗ mypy ✗ hpack ✗ tree-sitter ✓ pycodestyle ✓ opentelemetry-util-http ✗ typing-inspect ✗ google-ads ✗ future ✗ mcp ✓ multiprocess ✗ debugpy ✗ httptools ✓ redshift-connector ✗ mccabe ✗ isort ✓ requests-file ✓ databricks-sql-connector ✗ invoke ✗ opentelemetry-instrumentation-requests ✗ google-cloud-aiplatform ✗ slack-sdk ✗ pyspark ✓ mysql-connector-python ✓ jupyter-core ✓ cachecontrol ✓ ipykernel ✓ pkginfo ✗ sqlalchemy-bigquery ✗ toolz ✗ sse-starlette ✗ comm ✓

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.