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. 151 green packages (41.9%) have dropped support for Python 3.9;
  2. 209 uncolored packages (58.1%) 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 ✗ setuptools ✓ urllib3 ✗ certifi ✗ requests ✓ charset-normalizer ✗ typing-extensions ✗ idna ✗ botocore ✗ cryptography ✗ python-dateutil ✗ six ✓ numpy ✓ aiobotocore ✗ cffi ✗ pyyaml ✗ pycparser ✓ grpcio-status ✗ pluggy ✗ pydantic ✗ pygments ✗ s3transfer ✗ attrs ✗ click ✓ anyio ✓ protobuf ✓ pydantic-core ✗ fsspec ✓ platformdirs ✓ pandas ✓ pytest ✓ h11 ✗ markupsafe ✓ iniconfig ✓ wheel ✗ annotated-types ✗ importlib-metadata ✓ pyjwt ✗ pathspec ✗ pip ✗ python-dotenv ✓ jinja2 ✓ zipp ✓ jmespath ✗ s3fs ✓ filelock ✓ httpx ✗ typing-inspection ✗ rich ✗ httpcore ✗ uvicorn ✓ jsonschema ✓ pytz ✗ yarl ✓ multidict ✗ starlette ✓ pyasn1 ✗ tomli ✓ trove-classifiers ✓ fastapi ✓ google-auth ✗ aiohttp ✗ markdown-it-py ✓ tqdm ✗ virtualenv ✗ opentelemetry-api ✗ tzdata ✓ mdurl ✗ google-api-core ✗ awscli ✗ googleapis-common-protos ✗ annotated-doc ✗ tenacity ✓ pillow ✓ frozenlist ✗ propcache ✗ rpds-py ✓ referencing ✓ colorama ✗ jsonschema-specifications ✗ scipy ✓ aiosignal ✓ pyasn1-modules ✗ regex ✓ cachetools ✓ wrapt ✗ greenlet ✓ hatchling ✓ requests-oauthlib ✗ sqlalchemy ✗ soupsieve ✗ pyparsing ✗ pyarrow ✓ websockets ✓ more-itertools ✗ grpcio ✗ aiohappyeyeballs ✗ exceptiongroup ✓ opentelemetry-semantic-conventions ✗ typer ✓ docutils ✗ psutil ✓ networkx ✓ oauthlib ✗ rsa ✗ pydantic-settings ✓ shellingham ✗ sniffio ✓ python-multipart ✓ opentelemetry-sdk ✗ dnspython ✓ beautifulsoup4 ✓ tomlkit ✗ lxml ✗ tabulate ✓ distlib ✗ smmap ✗ requests-toolbelt ✗ keyring ✓

Top 120 - 240

openpyxl ✗ et-xmlfile ✗ jaraco-classes ✓ watchfiles ✗ secretstorage ✓ jeepney ✓ websocket-client ✗ werkzeug ✓ grpcio-tools ✓ proto-plus ✗ mypy-extensions ✗ jaraco-context ✓ coverage ✓ openai ✗ opentelemetry-proto ✗ jaraco-functools ✓ pyopenssl ✗ msgpack ✓ google-genai ✓ sse-starlette ✓ huggingface-hub ✗ mcp ✓ langchain ✓ google-cloud-storage ✓ distro ✗ email-validator ✗ sympy ✗ psycopg2-binary ✗ sortedcontainers ✓ wcwidth ✗ fonttools ✓ pynacl ✗ mpmath ✗ decorator ✗ scikit-learn ✓ flask ✓ opentelemetry-exporter-otlp-proto-http ✗ matplotlib ✓ joblib ✗ sentry-sdk ✗ redis ✓ isodate ✗ kiwisolver ✓ jiter ✗ gitpython ✗ pexpect ✓ docstring-parser ✗ ptyprocess ✓ ruff ✗ python-discovery ✗ opentelemetry-exporter-otlp-proto-common ✗ azure-core ✗ opentelemetry-exporter-otlp-proto-grpc ✗ pytest-cov ✗ zstandard ✗ bcrypt ✗ editables ✗ poetry-core ✓ threadpoolctl ✗ itsdangerous ✓ alembic ✓ google-cloud-core ✗ contourpy ✓ azure-identity ✗ prompt-toolkit ✗ gitdb ✗ ruamel-yaml ✗ msal ✗ authlib ✗ opentelemetry-instrumentation ✗ docker ✗ orjson ✓ snowflake-connector-python ✗ async-timeout ✓ defusedxml ✗ rapidfuzz ✓ blinker ✓ google-crc32c ✓ cycler ✗ pytest-asyncio ✓ google-resumable-media ✗ types-requests ✓ deprecated ✗ tzlocal ✗ chardet ✓ setuptools-scm ✓ mako ✗ flatbuffers ✓ pyproject-hooks ✓ build ✗ kubernetes ✗ dill ✗ jsonschema-path ✓ hf-xet ✗ asn1crypto ✗ uv ✗ fastjsonschema ✗ tokenizers ✗ google-api-python-client ✗ pathable ✓ backoff ✗ prometheus-client ✗ google-cloud-aiplatform ✗ paramiko ✗ pyperclip ✗ pymupdf ✓ marshmallow ✓ transformers ✓ onnxruntime ✓ toml ✗ uvloop ✗ uritemplate ✓ google-auth-oauthlib ✗ sqlparse ✗ ipython ✓ nodeenv ✗ jsonref ✓ google-cloud-bigquery ✗ beartype ✓ mypy ✗

Top 240 - 360

jsonpointer ✓ cyclopts ✓ textual ✗ tiktoken ✓ google-auth-httplib2 ✗ opentelemetry-exporter-otlp ✗ httplib2 ✓ cython ✗ fastmcp ✓ msal-extensions ✗ rich-rst ✗ httpx-sse ✗ tornado ✗ babel ✗ pre-commit ✓ executing ✗ gunicorn ✓ parso ✗ traitlets ✓ httptools ✓ identify ✓ cloudpickle ✗ azure-storage-blob ✗ databricks-sdk ✗ multiprocess ✗ jedi ✗ py-key-value-aio ✓ asttokens ✗ xmltodict ✗ cfgv ✓ aiofiles ✗ asgiref ✗ opentelemetry-instrumentation-requests ✗ opentelemetry-util-http ✗ black ✓ matplotlib-inline ✗ pytest-xdist ✗ importlib-resources ✓ cachecontrol ✓ uncalled-for ✓ langchain-core ✓ grpc-google-iam-v1 ✗ pure-eval ✗ stack-data ✗ google-cloud-secret-manager ✗ caio ✓ aiofile ✗ python-json-logger ✗ execnet ✗ durationpy ✓ markdown ✓ py4j ✗ nest-asyncio ✗ xxhash ✗ h2 ✗ webencodings ✓ typing-inspect ✗ hpack ✗ hyperframe ✗ termcolor ✓ watchdog ✗ dbt-core ✓ typedload ✓ asyncio ✓ dulwich ✓ jsonpatch ✗ pytest-mock ✗ debugpy ✗ pkginfo ✗ litellm ✗ google-cloud-batch ✗ pydantic-ai-slim ✓ dbt-adapters ✓ pymongo ✗ pymupdf4llm ✓ arxiv ✗ torch ✓ pymupdf-layout ✓ yandexcloud ✗ google-analytics-admin ✗ aioitertools ✓ pyzmq ✗ fastapi-mcp ✓ wikipedia-api ✓ anthropic ✗ poetry ✓ isort ✓ grpcio-health-checking ✗ deepdiff ✗ dataclasses-json ✗ pymysql ✓ lz4 ✗ jsonpath-ng ✓ mccabe ✗ slack-sdk ✗ cleo ✗ ruamel-yaml-clib ✗ dbt-common ✓ awswrangler ✓ installer ✓ crashtest ✗ pycryptodome ✗ tree-sitter ✓ safetensors ✗ datasets ✓ openapi-pydantic ✗ rfc3339-validator ✓ pandas-stubs ✓ langsmith ✓ msrest ✗ xlsxwriter ✗ pygithub ✗ librt ✗ text-unidecode ✓ narwhals ✗ shapely ✓ pydantic-graph ✓ semver ✗ jupyter-core ✓ protego ✓

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.