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

Top 120 - 240

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

Top 240 - 360

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

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.