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. 111 green packages (30.8%) have dropped support for Python 3.9;
  2. 249 uncolored packages (69.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 ✗ urllib3 ✗ botocore ✗ typing-extensions ✗ requests ✗ certifi ✗ aiobotocore ✗ idna ✗ charset-normalizer ✗ python-dateutil ✗ setuptools ✓ packaging ✗ grpcio-status ✗ six ✓ s3fs ✓ s3transfer ✗ fsspec ✓ protobuf ✗ numpy ✓ cryptography ✗ pyyaml ✗ cffi ✗ pydantic ✗ pandas ✗ pluggy ✗ pygments ✗ pycparser ✗ click ✓ rsa ✗ attrs ✗ pydantic-core ✗ pytest ✓ yandexcloud ✗ platformdirs ✓ pyasn1 ✗ iniconfig ✓ h11 ✗ markupsafe ✓ anyio ✗ jmespath ✗ pip ✗ cachetools ✗ google-auth ✗ pytz ✗ annotated-types ✗ grpcio ✗ filelock ✓ jinja2 ✓ importlib-metadata ✓ pyasn1-modules ✗ tzdata ✓ opentelemetry-exporter-otlp-proto-grpc ✗ opentelemetry-proto ✗ zipp ✓ pyjwt ✗ awscli ✗ wheel ✗ google-api-core ✗ typing-inspection ✗ requests-oauthlib ✗ httpx ✗ grpcio-tools ✓ httpcore ✗ google-genai ✓ aiohttp ✗ pyarrow ✓ et-xmlfile ✗ openpyxl ✗ virtualenv ✗ jsonschema ✗ yarl ✗ python-dotenv ✗ scipy ✓ multidict ✗ colorama ✗ googleapis-common-protos ✗ opentelemetry-exporter-otlp ✗ tomli ✓ opentelemetry-exporter-otlp-proto-http ✗ sqlalchemy ✗ oauthlib ✗ rich ✗ opentelemetry-sdk ✗ greenlet ✓ tqdm ✗ frozenlist ✗ psutil ✓ markdown-it-py ✓ aiosignal ✓ wrapt ✗ propcache ✗ pyparsing ✗ mdurl ✗ rpds-py ✓ referencing ✓ jsonschema-specifications ✗ pillow ✓ uvicorn ✓ aiohappyeyeballs ✗ tenacity ✗ starlette ✓ opentelemetry-exporter-otlp-proto-common ✗ distlib ✗ pyopenssl ✗ websocket-client ✗ pathspec ✗ trove-classifiers ✓ beautifulsoup4 ✓ soupsieve ✗ opensearch-py ✓ fastapi ✗ tomlkit ✗ lxml ✗ docutils ✗ requests-aws4auth ✗ cloudpickle ✗ flask ✓ psycopg2-binary ✗ pynacl ✗ proto-plus ✗

Top 120 - 240

exceptiongroup ✓ google-cloud-storage ✗ isodate ✗ requests-toolbelt ✗ sniffio ✓ sortedcontainers ✓ textual ✗ regex ✗ azure-identity ✗ scikit-learn ✓ snowflake-connector-python ✗ events ✓ shellingham ✗ msal ✗ azure-core ✗ opentelemetry-semantic-conventions ✗ pexpect ✓ ptyprocess ✓ opentelemetry-api ✗ werkzeug ✓ decorator ✗ hatchling ✓ pyzmq ✗ more-itertools ✗ asn1crypto ✗ bcrypt ✗ huggingface-hub ✗ opensearch-protobufs ✓ async-timeout ✓ networkx ✓ websockets ✗ gitpython ✗ msgpack ✓ python-multipart ✓ threadpoolctl ✗ mypy-extensions ✗ joblib ✗ aliyun-python-sdk-core ✗ typedload ✓ paramiko ✗ google-cloud-batch ✗ kubernetes ✗ google-cloud-core ✗ langsmith ✓ smmap ✗ wcwidth ✗ dnspython ✓ gitdb ✗ google-auth-oauthlib ✗ openai ✗ coverage ✓ annotated-doc ✗ google-analytics-admin ✗ tabulate ✗ distro ✗ opentelemetry-exporter-prometheus ✗ redis ✓ ruamel-yaml ✗ google-resumable-media ✗ google-api-python-client ✗ google-cloud-secret-manager ✗ google-crc32c ✓ setuptools-scm ✗ poetry-core ✗ pytest-asyncio ✓ matplotlib ✓ langchain ✓ deprecated ✗ alembic ✓ chardet ✗ transformers ✗ google-cloud-bigquery ✗ py4j ✗ tzlocal ✗ grpcio-health-checking ✗ msal-extensions ✗ google-auth-httplib2 ✗ fonttools ✓ itsdangerous ✓ dill ✗ backoff ✗ typer ✗ httplib2 ✓ nodeenv ✗ keyring ✓ pydantic-settings ✓ blinker ✓ kiwisolver ✓ prompt-toolkit ✗ uritemplate ✓ azure-storage-blob ✗ jiter ✗ pre-commit ✓ identify ✓ cfgv ✓ pandas-stubs ✓ durationpy ✓ cycler ✗ marshmallow ✓ jaraco-classes ✓ secretstorage ✓ pyproject-hooks ✓ awswrangler ✗ prometheus-client ✗ cython ✗ fastjsonschema ✗ defusedxml ✗ orjson ✗ jeepney ✓ contourpy ✓ tokenizers ✗ xmltodict ✗ jaraco-functools ✓ sympy ✗ ruff ✗ jaraco-context ✓ importlib-resources ✓ sqlparse ✗ zstandard ✗ opentelemetry-instrumentation ✗

Top 240 - 360

aiofiles ✗ docker ✗ ipython ✓ gym-notices ✓ pytest-cov ✗ hf-xet ✗ tornado ✗ rapidfuzz ✓ build ✗ mpmath ✗ mako ✗ editables ✗ traitlets ✓ google-cloud-vision ✗ dbt-core ✓ snowflake-sqlalchemy ✗ google-cloud-tasks ✗ google-cloud-dlp ✗ google-cloud-speech ✗ parso ✗ nest-asyncio ✗ google-cloud-monitoring ✗ uv ✗ google-cloud-compute ✗ jedi ✗ email-validator ✗ google-cloud-workflows ✗ pymongo ✗ google-cloud-language ✗ litellm ✗ sphinx ✓ babel ✗ jsonpointer ✗ ply ✓ google-cloud-dataform ✗ grpc-google-iam-v1 ✗ matplotlib-inline ✗ tiktoken ✓ toml ✗ google-cloud-videointelligence ✗ pymysql ✓ google-cloud-os-login ✗ black ✓ types-requests ✓ executing ✗ google-cloud-bigtable ✗ langchain-core ✓ asttokens ✗ google-cloud-redis ✗ watchfiles ✗ ruamel-yaml-clib ✗ databricks-sdk ✗ google-cloud-kms ✗ google-cloud-memcache ✗ dbt-common ✓ stack-data ✗ pure-eval ✗ termcolor ✓ dbt-adapters ✓ webencodings ✓ msrest ✗ pendulum ✗ docstring-parser ✗ sentry-sdk ✗ pycryptodome ✗ jsonpath-ng ✗ aioitertools ✓ azure-common ✗ apache-beam ✓ scramp ✓ python-json-logger ✗ uvloop ✗ markdown ✓ asgiref ✗ gunicorn ✗ shapely ✓ pytest-xdist ✗ ray ✗ mypy ✗ notebook ✗ jsonpatch ✗ datadog ✗ torch ✓ python-telegram-bot ✗ google-cloud-logging ✗ execnet ✗ opentelemetry-util-http ✗ lz4 ✗ typing-inspect ✗ mcp ✓ cattrs ✗ h2 ✗ multiprocess ✗ httptools ✓ hyperframe ✗ hpack ✗ isort ✓ cachecontrol ✓ opentelemetry-instrumentation-requests ✗ debugpy ✗ google-cloud-aiplatform ✗ requests-file ✓ redshift-connector ✗ future ✗ invoke ✗ slack-sdk ✗ sse-starlette ✗ pkginfo ✗ databricks-sql-connector ✗ pycodestyle ✓ google-ads ✗ pyspark ✓ watchdog ✗ jupyter-core ✓ mysql-connector-python ✓ pygithub ✗ argcomplete ✗ ipykernel ✓ toolz ✗ typer-slim ✗

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.