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 ✓ certifi ✗ requests ✗ typing-extensions ✗ botocore ✗ idna ✗ charset-normalizer ✗ aiobotocore ✗ python-dateutil ✗ six ✓ cryptography ✗ grpcio-status ✗ pip ✗ cffi ✗ pyyaml ✗ numpy ✓ s3transfer ✗ pluggy ✗ pygments ✗ pycparser ✓ pydantic ✗ fsspec ✓ s3fs ✓ click ✓ pytest ✓ protobuf ✗ pydantic-core ✗ pandas ✓ iniconfig ✓ attrs ✗ anyio ✗ h11 ✗ markupsafe ✓ jmespath ✗ annotated-types ✗ platformdirs ✓ wheel ✗ jinja2 ✓ filelock ✓ importlib-metadata ✓ pyjwt ✗ rsa ✗ typing-inspection ✗ zipp ✓ pathspec ✗ httpx ✗ pytz ✗ httpcore ✗ pyasn1 ✗ rich ✗ jsonschema ✓ python-dotenv ✗ aiohttp ✗ google-auth ✗ multidict ✗ tqdm ✗ requests-oauthlib ✗ tzdata ✓ yarl ✗ virtualenv ✗ colorama ✗ google-api-core ✗ grpcio ✗ markdown-it-py ✓ referencing ✓ googleapis-common-protos ✗ rpds-py ✓ pillow ✓ frozenlist ✗ wrapt ✗ mdurl ✗ propcache ✗ pyasn1-modules ✗ jsonschema-specifications ✗ aiosignal ✓ tomli ✓ scipy ✓ greenlet ✓ sqlalchemy ✗ oauthlib ✗ awscli ✗ trove-classifiers ✓ pyarrow ✓ starlette ✓ google-genai ✓ pyparsing ✗ uvicorn ✓ psutil ✓ fastapi ✓ aiohappyeyeballs ✗ tenacity ✓ opentelemetry-proto ✗ openpyxl ✗ et-xmlfile ✗ opentelemetry-semantic-conventions ✗ cachetools ✓ tomlkit ✗ websocket-client ✗ distlib ✗ opentelemetry-sdk ✗ grpcio-tools ✓ regex ✗ yandexcloud ✗ sniffio ✓ shellingham ✗ beautifulsoup4 ✓ soupsieve ✗ requests-toolbelt ✗ opentelemetry-exporter-otlp-proto-grpc ✗ exceptiongroup ✓ opentelemetry-api ✗ langchain ✓ more-itertools ✗ docutils ✗ lxml ✗ annotated-doc ✗ hatchling ✓

Top 120 - 240

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

Top 240 - 360

docstring-parser ✗ cfgv ✓ parso ✗ mypy ✗ xmltodict ✗ opentelemetry-util-http ✗ uvloop ✗ tornado ✗ traitlets ✓ toml ✗ jedi ✗ gunicorn ✓ cython ✗ black ✓ opensearch-py ✓ importlib-resources ✓ py4j ✗ google-cloud-secret-manager ✗ executing ✗ asgiref ✗ matplotlib-inline ✗ asttokens ✗ tiktoken ✓ cachecontrol ✓ nest-asyncio ✗ markdown ✓ httptools ✓ mcp ✓ requests-aws4auth ✗ langchain-core ✓ sentry-sdk ✗ ply ✓ grpc-google-iam-v1 ✗ stack-data ✗ webencodings ✓ pure-eval ✗ dbt-core ✓ httpx-sse ✗ awswrangler ✓ aliyun-python-sdk-core ✗ opentelemetry-exporter-prometheus ✗ pytest-xdist ✗ pkginfo ✗ pymongo ✗ execnet ✗ grpcio-health-checking ✗ sse-starlette ✗ dulwich ✓ watchdog ✗ google-cloud-batch ✗ pymysql ✓ jsonpatch ✗ isort ✓ termcolor ✓ authlib ✗ typing-inspect ✗ databricks-sdk ✗ dbt-adapters ✓ aioitertools ✓ debugpy ✗ typer-slim ✗ typedload ✓ croniter ✗ google-analytics-admin ✗ poetry ✓ pyzmq ✗ pycryptodome ✗ ruamel-yaml-clib ✗ msrest ✗ h2 ✗ hyperframe ✗ hpack ✗ events ✓ litellm ✗ pytest-mock ✗ torch ✓ jsonpath-ng ✗ xxhash ✗ dbt-common ✓ mccabe ✗ cleo ✗ crashtest ✗ installer ✓ poetry-plugin-export ✓ lz4 ✗ slack-sdk ✗ datasets ✗ pandas-stubs ✓ botocore-stubs ✗ types-awscrt ✗ dataclasses-json ✗ multiprocess ✗ argcomplete ✗ wsproto ✓ notebook ✗ boto3-stubs ✗ ipykernel ✓ deepdiff ✗ types-s3transfer ✗ jupyter-core ✓ arrow ✗ azure-common ✗ invoke ✗ pendulum ✗ snowflake-sqlalchemy ✗ pycodestyle ✓ pygithub ✗ langsmith ✓ rfc3339-validator ✓ datadog ✗ smart-open ✗ numba ✓ portalocker ✗ semver ✗ shapely ✓ jupyter-client ✓ nvidia-nccl-cu12 ✗ tinycss2 ✓ safetensors ✗ 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.