Python 3.8 Readiness

Python 3.8 support graph for the 360 most popular Python packages!

What is this about?

Python 3.8 is a version of Python that is past its End Of Life. This site shows Python 3.8 support for the 360 most downloaded packages on PyPI:

  1. 209 green packages (58.1%) have dropped support for Python 3.8;
  2. 151 uncolored packages (41.9%) still support Python 3.8.

Package 'x' is uncolored. What can I do?

There can be many reasons a package is still supporting Python 3.8:

  • 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.8 support.

How do you identify Python 3.8 support?

We look for the Programming Language :: Python :: 3.8 classifier on the latest release of the project, via PyPI's JSON API.

Top 120

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

Top 120 - 240

opentelemetry-api ✓ pynacl ✗ proto-plus ✗ websocket-client ✓ pexpect ✓ google-cloud-storage ✗ shellingham ✗ ptyprocess ✓ snowflake-connector-python ✓ opentelemetry-semantic-conventions ✓ msgpack ✓ hatchling ✓ psycopg2-binary ✓ scikit-learn ✓ mypy-extensions ✗ huggingface-hub ✓ python-multipart ✗ coverage ✓ decorator ✗ networkx ✓ sortedcontainers ✓ transformers ✓ azure-core ✓ azure-identity ✓ wcwidth ✗ websockets ✓ async-timeout ✓ msal ✗ gitpython ✗ bcrypt ✗ dnspython ✓ annotated-doc ✗ threadpoolctl ✓ asn1crypto ✗ matplotlib ✓ openai ✓ google-cloud-core ✗ smmap ✗ joblib ✓ gitdb ✗ fonttools ✓ deprecated ✗ distro ✗ keyring ✓ chardet ✗ tabulate ✗ itsdangerous ✓ prompt-toolkit ✗ google-cloud-bigquery ✓ paramiko ✓ google-resumable-media ✗ ruamel-yaml ✗ poetry-core ✓ setuptools-scm ✗ google-crc32c ✓ dill ✗ pydantic-settings ✓ secretstorage ✓ google-api-python-client ✗ kiwisolver ✓ redis ✓ alembic ✓ jaraco-classes ✓ pyproject-hooks ✓ blinker ✓ google-auth-oauthlib ✗ backoff ✗ jeepney ✓ jiter ✓ typer ✗ google-cloud-batch ✗ langsmith ✓ fastjsonschema ✗ rapidfuzz ✓ cycler ✗ zstandard ✓ ruff ✗ tzlocal ✓ google-cloud-secret-manager ✗ msal-extensions ✗ grpcio-health-checking ✓ build ✓ uritemplate ✓ aliyun-python-sdk-core ✗ tokenizers ✓ google-auth-httplib2 ✗ orjson ✓ defusedxml ✗ contourpy ✓ httplib2 ✓ jaraco-functools ✓ google-analytics-admin ✗ pytest-cov ✓ sqlparse ✗ azure-storage-blob ✓ ruamel-yaml-clib ✓ py4j ✗ cloudpickle ✗ langchain ✓ jaraco-context ✓ kubernetes ✗ argcomplete ✗ docker ✗ marshmallow ✓ xmltodict ✓ pytest-asyncio ✓ prometheus-client ✓ hf-xet ✗ ipython ✓ importlib-resources ✓ email-validator ✗ types-requests ✓ mako ✗ aiofiles ✓ cython ✗ sympy ✓ nodeenv ✗ opentelemetry-instrumentation ✓ jsonpointer ✗ uv ✗

Top 240 - 360

tornado ✓ traitlets ✓ jedi ✗ parso ✗ black ✓ babel ✗ editables ✗ pre-commit ✓ cfgv ✓ nest-asyncio ✗ mpmath ✗ identify ✓ matplotlib-inline ✓ executing ✗ toml ✗ docstring-parser ✗ awswrangler ✓ asttokens ✓ snowflake-sqlalchemy ✗ mypy ✓ sentry-sdk ✗ typedload ✓ pyzmq ✗ ply ✓ grpc-google-iam-v1 ✗ webencodings ✓ termcolor ✓ pymysql ✓ tritonclient ✗ sphinx ✓ markdown ✓ stack-data ✗ pure-eval ✗ watchfiles ✓ langchain-core ✓ torch ✓ aioitertools ✓ gunicorn ✗ tiktoken ✓ cachecontrol ✓ pymupdf ✓ mcp ✓ asgiref ✓ pytest-xdist ✓ pymongo ✓ dbt-core ✓ typing-inspect ✗ pkginfo ✗ execnet ✗ opentelemetry-util-http ✓ uvloop ✗ httpx-sse ✓ google-cloud-kms ✗ multiprocess ✗ debugpy ✗ google-cloud-vision ✗ mccabe ✗ databricks-sdk ✗ jsonpatch ✗ python-json-logger ✗ google-cloud-tasks ✗ textual ✓ google-cloud-monitoring ✗ google-cloud-speech ✗ google-cloud-compute ✗ google-cloud-dlp ✗ msrest ✗ isort ✓ google-cloud-workflows ✗ pycodestyle ✓ boto3-stubs ✓ google-cloud-language ✗ shapely ✓ pycryptodome ✗ dbt-common ✓ dbt-adapters ✓ pandas-stubs ✓ google-cloud-dataform ✗ jsonpath-ng ✗ rfc3339-validator ✗ watchdog ✓ httptools ✓ pendulum ✓ google-cloud-videointelligence ✗ opentelemetry-instrumentation-requests ✓ google-cloud-os-login ✗ pypandoc-binary ✗ azure-common ✗ smart-open ✓ dulwich ✓ durationpy ✓ future ✗ safetensors ✗ databricks-sql-connector ✗ datadog ✗ google-cloud-redis ✗ scramp ✗ slack-sdk ✗ poetry ✓ userpath ✗ cattrs ✓ requests-file ✓ jupyter-core ✓ backports-tarfile ✓ deepdiff ✓ ray ✓ google-cloud-memcache ✗ h2 ✓ lz4 ✓ google-cloud-bigtable ✗ hyperframe ✓ tinycss2 ✓ notebook ✓ authlib ✓ opensearch-py ✓ crashtest ✗ hpack ✓ invoke ✗ installer ✓ cleo ✗

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.