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

Top 120 - 240

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

Top 240 - 360

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

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.