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

Top 120 - 240

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

Top 240 - 360

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

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.