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

Top 120 - 240

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

Top 240 - 360

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

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.