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 ✗ numpy ✓ aiobotocore ✓ pydantic ✗ pycparser ✓ grpcio-status ✓ click ✓ anyio ✓ pytest ✓ iniconfig ✓ pydantic-core ✓ s3transfer ✓ attrs ✗ h11 ✗ fsspec ✓ protobuf ✓ annotated-types ✗ litellm ✓ httpx ✗ httpcore ✗ markupsafe ✓ typing-inspection ✗ pandas ✓ python-dotenv ✓ platformdirs ✓ jinja2 ✓ pathspec ✗ pyjwt ✗ filelock ✓ s3fs ✓ jmespath ✗ tqdm ✗ aiohttp ✓ rpds-py ✓ jsonschema ✓ google-auth ✓ rich ✗ uvicorn ✓ starlette ✓ yarl ✓ markdown-it-py ✓ pyasn1 ✗ pip ✓ multidict ✗ opentelemetry-sdk ✓ propcache ✓ wheel ✗ referencing ✓ jsonschema-specifications ✗ websockets ✓ aiohappyeyeballs ✓ frozenlist ✗ mdurl ✗ importlib-metadata ✓ fastapi ✓ opentelemetry-semantic-conventions ✓ pillow ✓ aiosignal ✓ virtualenv ✗ trove-classifiers ✓ zipp ✓ pytz ✗ googleapis-common-protos ✗ tzdata ✓ hatchling ✓ google-api-core ✓ sniffio ✓ wrapt ✗ pyasn1-modules ✗ greenlet ✓ opentelemetry-api ✓ annotated-doc ✗ opentelemetry-exporter-otlp-proto-http ✓ scipy ✓ pydantic-settings ✓ pyarrow ✓ grpcio ✓ textual ✗ huggingface-hub ✓ tenacity ✓ sqlalchemy ✗ opentelemetry-proto ✓ beautifulsoup4 ✓ distro ✗ regex ✓ pyparsing ✗ colorama ✗ opentelemetry-instrumentation ✓ soupsieve ✗ python-multipart ✓ openai ✗ psutil ✓ jiter ✗ requests-oauthlib ✗ shellingham ✗ lxml ✗ tomli ✓ langchain ✓ awscli ✓ opentelemetry-exporter-otlp-proto-common ✓ proto-plus ✓ typer ✓ watchfiles ✓ cachetools ✓

Top 120 - 240

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

Top 240 - 360

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