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

Top 120 - 240

distlib ✗ cachetools ✓ wcwidth ✗ opentelemetry-proto ✓ oauthlib ✗ more-itertools ✓ mcp ✓ pytest-asyncio ✓ dnspython ✓ requests-toolbelt ✗ sortedcontainers ✓ psycopg2-binary ✗ sse-starlette ✓ httptools ✓ uvloop ✗ rsa ✗ hf-xet ✗ docstring-parser ✗ opentelemetry-exporter-otlp-proto-common ✓ langchain ✓ opentelemetry-instrumentation ✓ python-discovery ✗ redis ✓ networkx ✓ pytest-cov ✗ werkzeug ✓ tiktoken ✓ scikit-learn ✓ truststore ✓ defusedxml ✗ msgpack ✓ opentelemetry-exporter-otlp-proto-http ✓ nodeenv ✗ isodate ✗ pyopenssl ✗ fonttools ✓ orjson ✓ prompt-toolkit ✓ gitpython ✗ alembic ✓ threadpoolctl ✗ mako ✓ httpx2 ✓ chardet ✓ tokenizers ✓ litellm ✓ httpcore2 ✓ websocket-client ✓ httpx-sse ✗ smmap ✗ azure-core ✓ google-cloud-core ✓ gitdb ✗ joblib ✗ identify ✓ pre-commit ✓ pynacl ✗ cfgv ✓ multiprocess ✗ dill ✗ tzlocal ✓ itsdangerous ✓ ruamel-yaml ✗ google-cloud-storage ✓ matplotlib ✓ zstandard ✗ bcrypt ✗ msal ✗ tabulate ✓ langchain-core ✓ email-validator ✗ h2 ✓ google-genai ✓ keyring ✓ hpack ✓ grpcio-tools ✓ mypy ✓ google-cloud-bigquery ✓ google-resumable-media ✓ toml ✗ hyperframe ✗ kiwisolver ✓ docutils ✗ google-crc32c ✓ anthropic ✓ jaraco-classes ✓ jeepney ✓ secretstorage ✓ decorator ✗ jaraco-functools ✓ flask ✓ docker ✗ cycler ✗ jaraco-context ✓ uv ✗ asn1crypto ✗ contourpy ✓ blinker ✓ sympy ✗ xxhash ✗ jsonpointer ✓ backoff ✗ prometheus-client ✗ opentelemetry-util-http ✓ mpmath ✗ deprecated ✗ uritemplate ✓ google-api-python-client ✓ google-auth-httplib2 ✓ async-timeout ✓ rapidfuzz ✓ azure-identity ✗ ptyprocess ✓ sentry-sdk ✗ pytest-xdist ✗ pytest-json-ctrf ✓ pexpect ✓ opentelemetry-exporter-otlp-proto-grpc ✓ execnet ✗ google-auth-oauthlib ✓

Top 240 - 360

aiofiles ✗ httplib2 ✓ narwhals ✓ sqlparse ✓ black ✓ opentelemetry-instrumentation-requests ✓ msal-extensions ✗ asgiref ✓ pypdf ✗ psycopg ✓ librt ✗ webencodings ✓ traitlets ✓ typedload ✓ cloudpickle ✗ jsonpatch ✗ fastjsonschema ✓ paramiko ✗ psycopg-binary ✓ snowflake-connector-python ✓ babel ✗ transformers ✓ gunicorn ✓ authlib ✓ executing ✗ ipython ✓ azure-storage-blob ✗ grpc-google-iam-v1 ✓ asyncpg ✗ awscli ✓ markdown ✓ databricks-sdk ✓ types-requests ✓ xmltodict ✗ structlog ✓ jedi ✓ parso ✗ pyproject-hooks ✓ marshmallow ✓ asttokens ✗ tornado ✗ build ✓ poetry-core ✓ joserfc ✓ isort ✓ python-json-logger ✓ matplotlib-inline ✗ aioitertools ✓ setuptools-scm ✗ python-docx ✗ datasets ✓ cachecontrol ✓ stack-data ✗ pure-eval ✗ langsmith ✓ tinycss2 ✓ awswrangler ✓ watchdog ✗ vcs-versioning ✗ cython ✗ xlsxwriter ✗ playwright ✓ pyzmq ✓ pytest-mock ✗ textual ✗ nest-asyncio ✗ pymupdf ✓ pytest-timeout ✗ debugpy ✗ pyee ✓ pymysql ✓ brotli ✓ lz4 ✗ kubernetes ✓ cbor2 ✓ safetensors ✓ reportlab ✓ fastuuid ✗ uuid-utils ✓ sqlglot ✓ slack-sdk ✗ termcolor ✓ py4j ✗ jupyter-core ✓ croniter ✗ pytokens ✗ nbformat ✓ flatbuffers ✓ typing-inspect ✗ importlib-resources ✓ loguru ✗ types-toml ✓ opentelemetry-exporter-otlp ✓ google-cloud-aiplatform ✓ xlrd ✗ pycryptodome ✗ types-pyyaml ✓ graphql-core ✗ text-unidecode ✓ wsproto ✓ opentelemetry-instrumentation-fastapi ✓ griffelib ✓ pymongo ✗ ast-serialize ✗ jupyter-client ✓ semver ✗ google-cloud-secret-manager ✓ mccabe ✗ grpclib ✓ faker ✓ deprecation ✓ tomli-w ✓ torch ✓ pyperclip ✗ requests-file ✓ python-slugify ✗ opentelemetry-instrumentation-asgi ✓ ruamel-yaml-clib ✗ lark ✓ invoke ✗

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.