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

Top 120 - 240

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

Top 240 - 360

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

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.