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

Top 120 - 240

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

Top 240 - 360

rapidfuzz ✓ pyproject-hooks ✓ black ✓ google-cloud-kms ✓ mpmath ✗ google-analytics-admin ✓ h2 ✗ paramiko ✗ jsonpointer ✓ gcsfs ✓ hyperframe ✗ toml ✗ async-timeout ✓ joserfc ✓ google-cloud-compute ✓ aiofiles ✗ backoff ✗ narwhals ✓ build ✓ msal-extensions ✗ fastjsonschema ✗ sentry-sdk ✗ authlib ✓ pytest-xdist ✗ poetry-core ✓ cloudpickle ✗ sqlparse ✗ traitlets ✓ google-cloud-dlp ✓ ghapi ✓ webencodings ✓ asgiref ✓ execnet ✗ databricks-sdk ✓ azure-storage-blob ✗ babel ✗ datasets ✓ google-cloud-texttospeech ✓ executing ✗ librt ✗ jedi ✓ google-cloud-speech ✓ dbt-core ✓ jsonpatch ✗ types-requests ✓ gunicorn ✓ cython ✗ parso ✗ setuptools-scm ✗ grpc-google-iam-v1 ✗ asttokens ✗ python-json-logger ✓ dbt-adapters ✓ databricks-sql-connector ✗ cachecontrol ✓ tornado ✗ marshmallow ✓ google-cloud-pubsub ✓ matplotlib-inline ✗ xmltodict ✗ pandas-stubs ✓ vcs-versioning ✗ pymongo ✗ markdown ✓ stack-data ✗ pure-eval ✗ isort ✓ py4j ✗ pypdf ✗ kubernetes ✓ psycopg ✓ tinycss2 ✓ langsmith ✓ asyncpg ✗ structlog ✓ google-cloud-tasks ✓ watchdog ✗ snowflake-snowpark-python ✓ pydantic-graph ✓ importlib-resources ✓ google-cloud-logging ✓ lz4 ✗ pymupdf ✓ xlsxwriter ✗ pyzmq ✗ psycopg-binary ✓ deprecation ✓ aioitertools ✓ opentelemetry-exporter-prometheus ✓ torch ✓ pycryptodome ✗ google-cloud-monitoring ✓ pyperclip ✗ python-docx ✗ debugpy ✗ safetensors ✓ slack-sdk ✗ nest-asyncio ✗ pytokens ✗ termcolor ✓ fastuuid ✗ griffelib ✓ pytest-mock ✗ tomli-w ✓ pymysql ✓ jsonschema-path ✓ dulwich ✓ llama-parse ✓ google-cloud-bigtable ✓ llama-cloud-services ✓ sphinx ✓ jupyter-core ✓ cyclopts ✓ dbt-common ✓ beartype ✓ google-cloud-vision ✓ numba ✓ awswrangler ✓ pkginfo ✗ brotli ✓

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.