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

Top 120 - 240

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

Top 240 - 360

pydantic-ai-slim ✓ cloudpickle ✗ msal-extensions ✗ transformers ✓ identify ✓ pytest-xdist ✗ jsonpointer ✓ grpc-google-iam-v1 ✗ opentelemetry-instrumentation-requests ✗ opentelemetry-util-http ✗ pre-commit ✓ cfgv ✓ gunicorn ✓ aiofiles ✗ durationpy ✓ babel ✗ traitlets ✓ google-cloud-secret-manager ✗ parso ✗ execnet ✗ tornado ✗ jedi ✗ azure-storage-blob ✗ xxhash ✗ executing ✗ cython ✗ google-cloud-batch ✗ databricks-sdk ✗ asgiref ✗ h2 ✗ asttokens ✗ xmltodict ✗ matplotlib-inline ✗ hyperframe ✗ hpack ✗ black ✓ authlib ✗ importlib-resources ✓ langchain-core ✓ pure-eval ✗ py4j ✗ termcolor ✓ stack-data ✗ google-analytics-admin ✗ vcs-versioning ✓ markdown ✓ weaviate-client ✓ sentry-sdk ✗ webencodings ✓ anthropic ✗ nest-asyncio ✗ tree-sitter-languages ✓ cachecontrol ✓ python-json-logger ✓ datasets ✓ typing-inspect ✗ dbt-core ✓ pyee ✗ jsonpatch ✗ dbt-adapters ✓ pymongo ✗ gcsfs ✓ watchdog ✗ grpcio-health-checking ✗ aioitertools ✓ debugpy ✗ pandas-stubs ✓ jsonschema-path ✓ google-cloud-compute ✗ librt ✗ playwright ✗ google-cloud-kms ✗ pytest-mock ✗ databricks-sql-connector ✗ dulwich ✓ pymysql ✓ pyzmq ✗ pkginfo ✗ jsonpath-ng ✓ lz4 ✗ awswrangler ✓ pycryptodome ✗ flatbuffers ✓ msrest ✗ slack-sdk ✗ dataclasses-json ✗ isort ✓ pyperclip ✗ typedload ✓ pathable ✓ narwhals ✗ deepdiff ✓ dbt-common ✓ tinycss2 ✓ google-cloud-dlp ✗ google-cloud-speech ✗ torch ✓ langsmith ✓ mccabe ✗ pymupdf ✓ pygithub ✗ poetry ✓ google-cloud-monitoring ✗ rich-toolkit ✓ ydb ✗ pydantic-graph ✓ rfc3339-validator ✓ notebook ✗ argcomplete ✗ sphinx ✓ invoke ✗ ruamel-yaml-clib ✗ loguru ✗ jsonref ✓ xlsxwriter ✗ pendulum ✗ semver ✗ cleo ✗ arrow ✗ beartype ✓

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.