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

Top 120 - 240

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

Top 240 - 360

opentelemetry-instrumentation-requests ✗ httptools ✓ databricks-sdk ✗ babel ✗ identify ✓ opentelemetry-util-http ✗ parso ✗ gunicorn ✓ pre-commit ✓ traitlets ✓ cfgv ✓ litellm ✗ sentry-sdk ✗ executing ✗ tornado ✗ jedi ✗ azure-storage-blob ✗ grpc-google-iam-v1 ✗ vcs-versioning ✓ google-cloud-secret-manager ✗ pydantic-ai-slim ✓ cython ✗ authlib ✗ asttokens ✗ aiofiles ✗ xxhash ✗ black ✓ xmltodict ✗ matplotlib-inline ✗ durationpy ✓ asgiref ✗ h2 ✗ langchain-core ✓ hpack ✗ hyperframe ✗ google-cloud-batch ✗ importlib-resources ✓ pytest-xdist ✗ pure-eval ✗ py4j ✗ stack-data ✗ sglang ✓ google-analytics-admin ✗ python-json-logger ✓ markdown ✓ tree-sitter ✓ cachecontrol ✓ execnet ✗ webencodings ✓ termcolor ✓ typing-inspect ✗ nest-asyncio ✗ jsonpatch ✗ anthropic ✗ dbt-core ✓ datasets ✓ pymongo ✗ weaviate-client ✓ jsonschema-path ✓ grpcio-health-checking ✗ watchdog ✗ dbt-adapters ✓ pydantic-graph ✓ dulwich ✓ pandas-stubs ✓ debugpy ✗ typedload ✓ pkginfo ✗ dataclasses-json ✗ pytest-mock ✗ pymysql ✓ lz4 ✗ aioitertools ✓ awswrangler ✓ isort ✓ pytest-json-ctrf ✓ torch ✓ pyzmq ✗ pathable ✓ slack-sdk ✗ pycryptodome ✗ pyperclip ✗ databricks-sql-connector ✗ poetry ✓ jsonpath-ng ✓ mccabe ✗ flatbuffers ✓ deepdiff ✓ langsmith ✓ librt ✗ rich-toolkit ✓ dbt-common ✓ pygithub ✗ gcsfs ✓ tinycss2 ✓ tree-sitter-languages ✓ pymupdf ✓ rfc3339-validator ✓ smart-open ✓ xlsxwriter ✗ cleo ✗ narwhals ✗ semver ✗ google-cloud-monitoring ✗ msrest ✗ crashtest ✗ installer ✓ beartype ✓ ruamel-yaml-clib ✗ sphinx ✓ jsonref ✓ text-unidecode ✓ python-slugify ✗ loguru ✗ notebook ✗ arrow ✗ backports-tarfile ✓ pendulum ✗ invoke ✗ google-cloud-compute ✗

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.