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. 240 green packages (66.7%) have dropped support for Python 3.9;
  2. 120 uncolored packages (33.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 ✗ certifi ✗ idna ✗ urllib3 ✓ requests ✓ charset-normalizer ✗ cryptography ✗ pluggy ✓ cffi ✓ python-dateutil ✗ pycparser ✓ pyyaml ✗ botocore ✓ setuptools ✓ pygments ✗ six ✓ pydantic ✓ pydantic-core ✓ click ✓ numpy ✓ anyio ✓ annotated-types ✓ typing-inspection ✓ pytest ✓ h11 ✗ iniconfig ✓ attrs ✗ markupsafe ✓ httpx ✗ httpcore ✗ protobuf ✓ tzdata ✓ pyjwt ✗ s3transfer ✓ python-dotenv ✓ jinja2 ✓ pandas ✓ aiobotocore ✓ starlette ✓ pillow ✓ opentelemetry-api ✓ platformdirs ✓ uvicorn ✓ pathspec ✗ rpds-py ✓ jsonschema ✓ tomlkit ✗ pip ✓ jmespath ✗ referencing ✓ jsonschema-specifications ✗ filelock ✓ fsspec ✓ multidict ✓ markdown-it-py ✓ rich ✗ aiohttp ✓ yarl ✓ mdurl ✗ fastapi ✓ annotated-doc ✗ propcache ✓ websockets ✓ googleapis-common-protos ✓ pytz ✗ pyasn1 ✗ frozenlist ✗ aiosignal ✓ tqdm ✗ sniffio ✓ pydantic-settings ✓ aiohappyeyeballs ✓ python-multipart ✓ pyarrow ✓ wrapt ✗ lxml ✗ trove-classifiers ✓ google-auth ✓ truststore ✓ hatchling ✓ jiter ✓ ruff ✗ httpx2 ✓ httpcore2 ✓ tenacity ✓ pyasn1-modules ✗ sqlalchemy ✓ zipp ✓ greenlet ✓ importlib-metadata ✓ pyparsing ✗ psutil ✓ wheel ✗ grpcio ✓ grpcio-status ✓ openai ✓ regex ✓ scipy ✓ watchfiles ✓ openpyxl ✗ et-xmlfile ✗ google-api-core ✓ distro ✗ sse-starlette ✓ opentelemetry-semantic-conventions ✓ soupsieve ✓ coverage ✓ opentelemetry-sdk ✓ beautifulsoup4 ✓ shellingham ✗ mcp ✓ wcwidth ✗ typer ✓ mypy-extensions ✗ proto-plus ✓ colorama ✗ uvloop ✗ werkzeug ✓

Top 120 - 240

editables ✗ requests-oauthlib ✗ huggingface-hub ✓ docstring-parser ✗ httptools ✓ pytest-asyncio ✓ dnspython ✓ opentelemetry-proto ✓ s3fs ✓ oauthlib ✗ cachetools ✓ defusedxml ✗ tomli ✓ networkx ✓ itsdangerous ✓ opentelemetry-exporter-otlp-proto-common ✓ virtualenv ✗ sortedcontainers ✓ fonttools ✓ pytest-cov ✗ more-itertools ✓ psycopg2-binary ✓ redis ✓ msgpack ✓ distlib ✗ hf-xet ✗ prompt-toolkit ✓ exceptiongroup ✓ alembic ✓ opentelemetry-exporter-otlp-proto-http ✓ mako ✓ requests-toolbelt ✗ flask ✓ orjson ✓ blinker ✓ tiktoken ✓ tokenizers ✓ psycopg ✓ isodate ✗ scikit-learn ✓ tabulate ✓ anthropic ✓ httpx-sse ✗ cloudpickle ✗ psycopg-binary ✓ pypdf ✗ rsa ✗ xlsxwriter ✗ mypy ✓ execnet ✗ pytest-xdist ✗ threadpoolctl ✗ tzlocal ✓ python-discovery ✗ email-validator ✗ matplotlib ✓ nodeenv ✗ websocket-client ✓ ruamel-yaml ✗ azure-core ✓ h2 ✓ hpack ✓ pyopenssl ✗ google-cloud-core ✓ hyperframe ✗ zstandard ✗ kiwisolver ✓ joblib ✓ pynacl ✗ bcrypt ✗ opentelemetry-instrumentation ✓ msal ✗ google-cloud-bigquery ✓ google-cloud-storage ✓ cycler ✗ chardet ✓ google-crc32c ✓ contourpy ✓ google-genai ✓ prometheus-client ✗ grpcio-tools ✓ jsonpointer ✓ langchain ✓ google-resumable-media ✓ dill ✗ langchain-core ✓ librt ✗ xxhash ✗ uv ✗ decorator ✗ asgiref ✓ identify ✓ keyring ✓ sentry-sdk ✗ pre-commit ✓ jaraco-functools ✓ cfgv ✓ backoff ✗ mpmath ✗ sympy ✗ ptyprocess ✓ jaraco-classes ✓ docker ✗ uritemplate ✓ jeepney ✓ python-pptx ✗ narwhals ✓ webencodings ✓ secretstorage ✓ deprecated ✓ pymupdf ✓ jaraco-context ✓ traitlets ✓ docutils ✗ gitpython ✗ asyncpg ✗ azure-identity ✓ google-api-python-client ✓ pexpect ✓ asn1crypto ✗

Top 240 - 360

toml ✗ httplib2 ✓ smmap ✗ opentelemetry-util-http ✓ flatbuffers ✓ google-auth-httplib2 ✓ gitdb ✗ rapidfuzz ✓ msal-extensions ✗ python-docx ✗ aiofiles ✗ executing ✗ jsonpatch ✓ onnxruntime ✓ playwright ✓ google-auth-oauthlib ✓ babel ✗ fastjsonschema ✓ tornado ✓ markdown ✓ sqlparse ✓ authlib ✓ pyee ✓ gunicorn ✓ opentelemetry-exporter-otlp-proto-grpc ✓ jedi ✓ mcp-types ✓ brotli ✓ pytest-timeout ✗ parso ✗ tinycss2 ✓ asttokens ✗ ipython ✓ grpc-google-iam-v1 ✓ pytest-json-ctrf ✓ async-timeout ✓ structlog ✓ paramiko ✗ joserfc ✓ matplotlib-inline ✗ pyzmq ✓ pure-eval ✗ transformers ✓ black ✓ snowflake-connector-python ✓ stack-data ✗ xmltodict ✗ azure-storage-blob ✓ watchdog ✗ ast-serialize ✗ python-json-logger ✓ aioitertools ✓ cachecontrol ✓ pypdfium2 ✓ croniter ✗ pyproject-hooks ✓ jupyter-core ✓ litellm ✓ griffelib ✓ debugpy ✓ build ✓ nest-asyncio ✗ nbformat ✓ google-cloud-aiplatform ✓ langsmith ✓ opentelemetry-exporter-otlp-common ✓ isort ✓ types-pyyaml ✓ cython ✗ jupyter-client ✓ lark ✓ awscli ✓ pytest-mock ✓ sqlglot ✓ tomli-w ✓ typedload ✓ uuid-utils ✓ slack-sdk ✗ safetensors ✓ marshmallow ✓ reportlab ✓ multiprocess ✗ databricks-sdk ✓ lz4 ✗ kubernetes ✓ awswrangler ✓ opentelemetry-instrumentation-asgi ✓ setuptools-scm ✗ termcolor ✓ pymysql ✓ xlrd ✗ opentelemetry-instrumentation-fastapi ✓ beartype ✓ loguru ✗ argon2-cffi-bindings ✓ pycryptodome ✗ fastuuid ✗ argon2-cffi ✗ opentelemetry-exporter-http-transport ✓ poetry-core ✓ pytokens ✗ text-unidecode ✓ rfc3339-validator ✓ types-requests ✓ ipython-pygments-lexers ✓ cyclopts ✓ python-slugify ✓ shapely ✓ duckdb ✓ graphql-core ✓ comm ✓ vcs-versioning ✗ cbor2 ✓ invoke ✗ pdfminer-six ✓ arrow ✗ jsonref ✓ pyperclip ✗ semver ✓ faker ✓

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.