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. 128 green packages (35.6%) have dropped support for Python 3.9;
  2. 232 uncolored packages (64.4%) 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 ✗ urllib3 ✗ setuptools ✓ botocore ✗ certifi ✗ typing-extensions ✗ requests ✗ idna ✗ charset-normalizer ✗ aiobotocore ✗ python-dateutil ✗ cryptography ✗ six ✓ grpcio-status ✗ numpy ✓ cffi ✗ s3transfer ✗ pyyaml ✗ pip ✗ pluggy ✗ pycparser ✓ pygments ✗ fsspec ✓ pydantic ✗ s3fs ✓ pytest ✓ click ✓ pandas ✓ iniconfig ✓ attrs ✗ h11 ✗ pydantic-core ✗ protobuf ✗ anyio ✗ markupsafe ✓ jmespath ✗ platformdirs ✓ wheel ✗ annotated-types ✗ jinja2 ✓ httpx ✗ httpcore ✗ filelock ✓ rsa ✗ pyjwt ✗ importlib-metadata ✓ pytz ✗ awscli ✗ pyasn1 ✗ pathspec ✗ zipp ✓ typing-inspection ✗ aiohttp ✗ python-dotenv ✗ jsonschema ✓ multidict ✗ google-auth ✗ google-api-core ✗ tqdm ✗ tzdata ✓ yarl ✗ virtualenv ✗ colorama ✗ rich ✗ googleapis-common-protos ✗ requests-oauthlib ✗ frozenlist ✗ propcache ✗ wrapt ✗ pyarrow ✓ aiosignal ✓ rpds-py ✓ sqlalchemy ✗ pyasn1-modules ✗ greenlet ✓ referencing ✓ tomli ✓ jsonschema-specifications ✗ markdown-it-py ✓ pillow ✓ scipy ✓ trove-classifiers ✓ psutil ✓ pyparsing ✗ mdurl ✗ oauthlib ✗ aiohappyeyeballs ✗ starlette ✓ uvicorn ✓ grpcio ✗ opentelemetry-semantic-conventions ✗ fastapi ✗ tomlkit ✗ openpyxl ✗ et-xmlfile ✗ langchain ✓ tenacity ✓ soupsieve ✗ websocket-client ✗ beautifulsoup4 ✓ cachetools ✓ distlib ✗ sniffio ✓ regex ✗ shellingham ✗ lxml ✗ requests-toolbelt ✗ opentelemetry-sdk ✗ opentelemetry-proto ✗ opentelemetry-api ✗ pyopenssl ✗ proto-plus ✗ sortedcontainers ✓ exceptiongroup ✓ mypy-extensions ✗ google-cloud-storage ✗ docutils ✗ grpcio-tools ✓ werkzeug ✓

Top 120 - 240

psycopg2-binary ✗ websockets ✓ more-itertools ✗ hatchling ✓ networkx ✓ isodate ✗ pynacl ✗ decorator ✗ huggingface-hub ✗ coverage ✓ msgpack ✓ wcwidth ✗ scikit-learn ✓ azure-core ✗ google-genai ✓ flask ✓ python-multipart ✓ msal ✗ joblib ✗ distro ✗ bcrypt ✗ poetry-core ✓ openai ✗ cloudpickle ✗ opentelemetry-exporter-otlp-proto-http ✗ snowflake-connector-python ✗ threadpoolctl ✗ async-timeout ✓ pydantic-settings ✓ yandexcloud ✗ opentelemetry-exporter-otlp-proto-grpc ✗ ruamel-yaml ✗ google-cloud-core ✗ pexpect ✓ dnspython ✓ ptyprocess ✓ asn1crypto ✗ tabulate ✗ gitpython ✗ opentelemetry-exporter-otlp-proto-common ✗ redis ✓ matplotlib ✓ itsdangerous ✓ fonttools ✓ alembic ✓ ruff ✗ jiter ✗ annotated-doc ✗ transformers ✓ keyring ✓ azure-identity ✗ typer ✗ deprecated ✗ prompt-toolkit ✗ google-resumable-media ✗ google-crc32c ✓ tzlocal ✗ opentelemetry-instrumentation ✗ kubernetes ✗ paramiko ✗ chardet ✗ kiwisolver ✓ google-cloud-bigquery ✗ smmap ✗ blinker ✓ gitdb ✗ zstandard ✗ orjson ✓ jaraco-classes ✓ secretstorage ✓ backoff ✗ google-api-python-client ✗ prometheus-client ✗ cycler ✗ jeepney ✓ pytest-cov ✗ build ✗ editables ✗ fastjsonschema ✗ types-requests ✓ rapidfuzz ✓ pyproject-hooks ✓ pytest-asyncio ✓ setuptools-scm ✗ dill ✗ msal-extensions ✗ azure-storage-blob ✗ defusedxml ✗ contourpy ✓ google-auth-oauthlib ✗ jaraco-functools ✓ jaraco-context ✓ docker ✗ uritemplate ✓ tokenizers ✗ httplib2 ✓ sympy ✗ mako ✗ google-auth-httplib2 ✗ marshmallow ✓ babel ✗ sqlparse ✗ nodeenv ✗ mpmath ✗ hf-xet ✗ ipython ✓ opentelemetry-exporter-otlp ✗ py4j ✗ jsonpointer ✗ pre-commit ✓ cython ✗ importlib-resources ✓ xmltodict ✗ toml ✗ opentelemetry-instrumentation-requests ✗ aiofiles ✗ watchfiles ✗ tornado ✗ identify ✓ traitlets ✓

Top 240 - 360

uv ✗ mypy ✗ opentelemetry-util-http ✗ gunicorn ✓ jedi ✗ cfgv ✓ uvloop ✗ parso ✗ durationpy ✓ executing ✗ nest-asyncio ✗ black ✓ langchain-core ✓ textual ✗ matplotlib-inline ✗ docstring-parser ✗ mcp ✓ python-json-logger ✗ asttokens ✗ ply ✓ sentry-sdk ✗ dbt-core ✓ webencodings ✓ asgiref ✗ markdown ✓ grpc-google-iam-v1 ✗ cachecontrol ✓ email-validator ✗ httptools ✓ awswrangler ✓ stack-data ✗ pure-eval ✗ tiktoken ✓ httpx-sse ✗ typedload ✓ gcsfs ✓ sse-starlette ✗ dbt-adapters ✓ pymysql ✓ pkginfo ✗ google-cloud-secret-manager ✗ watchdog ✗ debugpy ✗ aioitertools ✓ google-cloud-aiplatform ✗ databricks-sdk ✗ typing-inspect ✗ dulwich ✓ jsonpatch ✗ pymongo ✗ termcolor ✓ isort ✓ torch ✓ dbt-common ✓ ruamel-yaml-clib ✗ msrest ✗ pyzmq ✗ pytest-xdist ✗ execnet ✗ jsonpath-ng ✗ poetry ✓ notebook ✗ pysocks ✓ langsmith ✓ pycryptodome ✗ xxhash ✗ lz4 ✗ h2 ✗ wsproto ✓ hyperframe ✗ hpack ✗ mccabe ✗ poetry-plugin-export ✓ botocore-stubs ✗ pytest-mock ✗ crashtest ✗ arrow ✗ safetensors ✗ types-awscrt ✗ cleo ✗ installer ✓ requests-file ✓ datadog ✗ slack-sdk ✗ pendulum ✗ azure-common ✗ multiprocess ✗ deepdiff ✗ jupyter-core ✓ invoke ✗ types-s3transfer ✗ shapely ✓ rfc3339-validator ✓ numba ✓ typer-slim ✗ boto3-stubs ✗ pygithub ✗ dataclasses-json ✗ selenium ✓ tinycss2 ✓ opentelemetry-exporter-prometheus ✗ pycodestyle ✓ jupyter-client ✓ ipykernel ✓ scramp ✓ nvidia-nccl-cu12 ✗ snowflake-sqlalchemy ✗ xlsxwriter ✗ future ✗ narwhals ✗ smart-open ✗ simplejson ✗ loguru ✗ litellm ✗ mistune ✗ argcomplete ✗ toolz ✗ comm ✓ lark ✓ text-unidecode ✓

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.