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

Top 120 - 240

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

Top 240 - 360

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

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.