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

Top 120 - 240

watchfiles ✓ cachetools ✓ more-itertools ✓ tomlkit ✗ proto-plus ✓ oauthlib ✗ opentelemetry-exporter-otlp-proto-common ✓ pyopenssl ✗ mcp ✓ pytest-json-ctrf ✓ opentelemetry-exporter-otlp-proto-grpc ✓ coverage ✓ dnspython ✓ azure-identity ✗ google-genai ✓ azure-core ✓ sse-starlette ✓ networkx ✓ distlib ✗ rsa ✗ wcwidth ✗ mypy-extensions ✗ requests-toolbelt ✗ ruff ✗ uvloop ✗ python-discovery ✗ docstring-parser ✗ grpcio-tools ✓ msgpack ✓ psycopg2-binary ✗ sortedcontainers ✓ msal ✗ google-cloud-storage ✓ gitpython ✗ pytest-asyncio ✓ redis ✓ hf-xet ✗ werkzeug ✓ weaviate-client ✓ smmap ✗ tabulate ✓ keyring ✓ decorator ✗ pynacl ✗ matplotlib ✓ fonttools ✓ ydb ✓ defusedxml ✗ jaraco-classes ✓ httptools ✓ email-validator ✗ websocket-client ✗ jeepney ✓ prompt-toolkit ✗ secretstorage ✓ docutils ✗ isodate ✗ httpx-sse ✗ tzlocal ✓ scikit-learn ✓ jaraco-functools ✓ tokenizers ✓ jaraco-context ✓ opentelemetry-instrumentation-requests ✓ tiktoken ✓ gitdb ✗ pytest-cov ✗ alembic ✓ msal-extensions ✗ kiwisolver ✓ google-cloud-core ✓ itsdangerous ✓ bcrypt ✗ opentelemetry-util-http ✓ flask ✓ joblib ✗ opentelemetry-exporter-otlp ✓ snowflake-connector-python ✓ threadpoolctl ✗ orjson ✓ google-api-python-client ✗ dill ✗ contourpy ✓ google-resumable-media ✓ ruamel-yaml ✗ google-crc32c ✓ ptyprocess ✓ pytest-xdist ✗ transformers ✓ google-cloud-bigquery ✓ mako ✗ google-cloud-secret-manager ✓ pexpect ✓ zstandard ✗ google-cloud-batch ✓ blinker ✓ ipython ✓ execnet ✗ uritemplate ✓ httplib2 ✓ pydantic-ai-slim ✓ langchain-core ✓ rapidfuzz ✓ nodeenv ✗ deprecated ✗ google-auth-httplib2 ✓ chardet ✓ anthropic ✗ google-auth-oauthlib ✓ multiprocess ✗ mypy ✓ black ✓ asn1crypto ✗ uv ✗ cycler ✗ google-analytics-admin ✓ google-cloud-kms ✓ hpack ✓ google-cloud-compute ✓ identify ✓

Top 240 - 360

prometheus-client ✗ pre-commit ✓ docker ✗ async-timeout ✓ xxhash ✗ opentelemetry-instrumentation-threading ✓ cfgv ✓ joserfc ✓ gcsfs ✓ sympy ✗ authlib ✓ paramiko ✗ mpmath ✗ h2 ✗ google-cloud-aiplatform ✓ toml ✗ pyproject-hooks ✓ hyperframe ✗ jsonpointer ✓ sentry-sdk ✗ traitlets ✓ google-cloud-dlp ✓ aiofiles ✗ narwhals ✓ backoff ✗ azure-storage-blob ✗ poetry-core ✓ jedi ✓ fastjsonschema ✗ google-cloud-texttospeech ✓ cloudpickle ✗ databricks-sdk ✓ sqlparse ✗ asgiref ✗ executing ✗ webencodings ✓ build ✓ google-cloud-speech ✓ parso ✗ babel ✗ librt ✗ pymupdf ✓ databricks-sql-connector ✗ tornado ✗ matplotlib-inline ✗ pandas-stubs ✓ dbt-core ✓ asttokens ✗ google-cloud-pubsub ✓ grpc-google-iam-v1 ✗ pycryptodomex ✗ jsonpatch ✗ xlsxwriter ✗ gunicorn ✓ stack-data ✗ marshmallow ✓ datasets ✓ pure-eval ✗ dbt-adapters ✓ cython ✗ cachecontrol ✓ setuptools-scm ✗ isort ✓ xmltodict ✗ pymongo ✗ py4j ✗ pydantic-graph ✓ pypdf ✗ python-json-logger ✓ types-requests ✓ flatbuffers ✓ markdown ✓ google-cloud-tasks ✓ psycopg ✓ pyperclip ✗ python-docx ✗ vcs-versioning ✗ pytest-rerunfailures ✓ kubernetes ✓ snowflake-snowpark-python ✓ pyzmq ✗ tinycss2 ✓ jsonschema-path ✓ asyncpg ✗ pytokens ✗ aioitertools ✓ google-cloud-monitoring ✓ psycopg-binary ✓ structlog ✓ langsmith ✓ griffelib ✓ google-cloud-logging ✓ lz4 ✗ slack-sdk ✗ watchdog ✗ debugpy ✗ beartype ✓ llama-parse ✓ opentelemetry-exporter-prometheus ✓ llama-cloud-services ✓ nest-asyncio ✗ rich-rst ✗ onnxruntime ✓ markdownify ✓ pathable ✓ importlib-resources ✓ typedload ✓ pycryptodome ✗ safetensors ✓ google-cloud-bigtable ✓ jsonref ✓ cyclopts ✓ jupyter-core ✓ termcolor ✓ google-cloud-vision ✓ py-key-value-aio ✓ pymysql ✓ pytest-mock ✗ sphinx ✓ pytest-timeout ✗

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.