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

Top 120 - 240

mypy-extensions ✗ pyopenssl ✗ werkzeug ✓ langchain ✓ openai ✗ websocket-client ✗ google-cloud-storage ✗ networkx ✓ msgpack ✓ coverage ✓ flask ✓ opentelemetry-exporter-otlp-proto-http ✗ pydantic-settings ✓ dnspython ✓ distro ✗ pynacl ✗ psycopg2-binary ✗ textual ✗ python-multipart ✓ huggingface-hub ✗ wcwidth ✗ opentelemetry-exporter-otlp-proto-grpc ✗ fonttools ✓ scikit-learn ✓ isodate ✗ tabulate ✓ sortedcontainers ✓ joblib ✗ jiter ✗ matplotlib ✓ yandexcloud ✗ azure-identity ✗ decorator ✗ opentelemetry-exporter-otlp-proto-common ✗ smmap ✗ keyring ✓ redis ✓ kiwisolver ✓ ruff ✗ azure-core ✗ bcrypt ✗ editables ✗ jaraco-classes ✓ threadpoolctl ✗ secretstorage ✓ msal ✗ python-discovery ✗ itsdangerous ✓ watchfiles ✗ jeepney ✓ gitpython ✗ snowflake-connector-python ✗ google-cloud-core ✗ types-requests ✓ prompt-toolkit ✗ alembic ✓ poetry-core ✓ contourpy ✓ jaraco-context ✓ pexpect ✓ ruamel-yaml ✗ ptyprocess ✓ async-timeout ✓ mcp ✓ opentelemetry-instrumentation ✗ zstandard ✗ pytest-cov ✗ orjson ✓ jaraco-functools ✓ pydantic-ai-slim ✓ defusedxml ✗ pytest-asyncio ✓ google-crc32c ✓ deprecated ✗ email-validator ✗ blinker ✓ rapidfuzz ✓ google-resumable-media ✗ opentelemetry-exporter-otlp ✗ tzlocal ✗ gitdb ✗ cycler ✗ sympy ✗ docstring-parser ✗ docker ✗ asn1crypto ✗ hf-xet ✗ chardet ✓ google-api-python-client ✗ pyproject-hooks ✓ paramiko ✗ mpmath ✗ mako ✗ uv ✗ kubernetes ✗ backoff ✗ tokenizers ✗ prometheus-client ✗ dill ✗ marshmallow ✓ google-cloud-bigquery ✗ google-auth-oauthlib ✗ build ✗ sse-starlette ✓ uritemplate ✓ fastjsonschema ✗ setuptools-scm ✗ google-auth-httplib2 ✗ httplib2 ✓ pydantic-graph ✓ mypy ✗ uvloop ✗ google-cloud-batch ✗ sqlparse ✗ gcsfs ✓ google-cloud-secret-manager ✗ transformers ✓ tiktoken ✓ msal-extensions ✗ google-analytics-admin ✗

Top 240 - 360

babel ✗ azure-storage-blob ✗ ipython ✓ black ✓ jsonpointer ✗ toml ✗ xmltodict ✗ aiofiles ✗ nodeenv ✗ httptools ✓ aliyun-python-sdk-core ✗ httpx-sse ✗ tornado ✗ opentelemetry-util-http ✗ opentelemetry-instrumentation-requests ✗ databricks-sdk ✗ cython ✗ asgiref ✗ sentry-sdk ✗ gunicorn ✓ cloudpickle ✗ parso ✗ executing ✗ traitlets ✓ pre-commit ✓ grpcio-health-checking ✗ pytest-xdist ✗ jedi ✗ pandas-stubs ✓ py4j ✗ authlib ✗ identify ✓ asttokens ✗ grpc-google-iam-v1 ✗ importlib-resources ✓ execnet ✗ cfgv ✓ matplotlib-inline ✗ markdown ✓ langchain-core ✓ webencodings ✓ cachecontrol ✓ litellm ✗ python-json-logger ✗ stack-data ✗ durationpy ✓ nest-asyncio ✗ pure-eval ✗ typing-inspect ✗ xxhash ✗ jsonpatch ✗ pymongo ✗ dbt-core ✓ h2 ✗ pytest-json-ctrf ✓ hyperframe ✗ isort ✓ hpack ✗ termcolor ✓ watchdog ✗ pytest-mock ✗ awswrangler ✓ jsonschema-path ✓ pkginfo ✗ rich-toolkit ✓ debugpy ✗ dulwich ✓ cattrs ✓ dataclasses-json ✗ pymysql ✓ aioitertools ✓ multiprocess ✗ databricks-sql-connector ✗ jsonpath-ng ✓ sphinx ✓ google-cloud-speech ✗ google-cloud-vision ✗ anthropic ✗ torch ✓ dbt-adapters ✓ google-cloud-monitoring ✗ google-cloud-compute ✗ google-cloud-kms ✗ pyzmq ✗ slack-sdk ✗ pygithub ✗ msrest ✗ typedload ✓ flatbuffers ✓ pycryptodome ✗ lz4 ✗ google-cloud-bigtable ✗ google-cloud-tasks ✗ google-cloud-workflows ✗ google-cloud-dlp ✗ poetry ✓ dbt-common ✓ google-cloud-videointelligence ✗ ruamel-yaml-clib ✗ opentelemetry-exporter-prometheus ✗ google-cloud-language ✗ sqlalchemy-bigquery ✗ mccabe ✗ librt ✗ google-cloud-os-login ✗ google-cloud-dataform ✗ narwhals ✗ pathable ✓ smart-open ✓ semver ✗ langsmith ✓ pendulum ✗ snowflake-sqlalchemy ✗ weaviate-client ✓ tinycss2 ✓ installer ✓ rfc3339-validator ✓ deepdiff ✗ google-cloud-redis ✗ cleo ✗

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.