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

Top 120 - 240

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

Top 240 - 360

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

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.