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

Top 120 - 240

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

Top 240 - 360

orjson ✗ durationpy ✓ cython ✗ mpmath ✗ zstandard ✗ google-cloud-videointelligence ✗ dbt-core ✓ google-cloud-os-login ✗ ipython ✓ sqlparse ✗ jaraco-functools ✓ pre-commit ✓ editables ✗ jaraco-context ✓ xmltodict ✗ aiofiles ✗ identify ✓ cfgv ✓ google-cloud-bigtable ✗ tornado ✗ google-cloud-redis ✗ email-validator ✗ nest-asyncio ✗ mako ✗ traitlets ✓ opentelemetry-instrumentation ✗ pymongo ✗ jedi ✗ ruff ✗ rapidfuzz ✓ uv ✗ docker ✗ parso ✗ google-cloud-memcache ✗ pytest-cov ✗ argcomplete ✗ jsonpointer ✗ grpc-google-iam-v1 ✗ ply ✓ pymysql ✓ build ✗ toml ✗ matplotlib-inline ✗ google-cloud-kms ✗ executing ✗ babel ✗ langchain-core ✓ tiktoken ✓ dbt-common ✓ asttokens ✗ gym-notices ✓ black ✓ dbt-adapters ✓ databricks-sdk ✗ webencodings ✓ stack-data ✗ azure-common ✗ msrest ✗ pure-eval ✗ python-telegram-bot ✗ litellm ✗ tree-sitter ✓ pendulum ✗ ray ✗ docstring-parser ✗ termcolor ✓ types-requests ✓ torch ✓ jsonpath-ng ✗ scramp ✗ apache-beam ✓ pycryptodome ✗ watchfiles ✗ google-cloud-logging ✗ sentry-sdk ✗ shapely ✓ markdown ✓ aioitertools ✓ jsonpatch ✗ notebook ✗ datadog ✗ asgiref ✗ pycodestyle ✓ pytest-xdist ✗ python-json-logger ✗ cattrs ✗ gunicorn ✗ mccabe ✗ tree-sitter-languages ✓ lz4 ✗ uvloop ✗ google-ads ✗ multiprocess ✗ h2 ✗ hyperframe ✗ hpack ✗ future ✗ typing-inspect ✗ execnet ✗ redshift-connector ✗ debugpy ✗ mcp ✓ opentelemetry-util-http ✗ mypy ✗ pyspark ✓ requests-file ✓ databricks-sql-connector ✗ invoke ✗ jupyter-core ✓ mysql-connector-python ✓ opentelemetry-instrumentation-requests ✗ pysocks ✓ ipykernel ✓ slack-sdk ✗ wsproto ✓ httptools ✓ sqlalchemy-bigquery ✗ google-cloud-bigquery-datatransfer ✗ google-cloud-aiplatform ✗ 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.