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. 190 green packages (52.8%) have dropped support for Python 3.8;
  2. 170 uncolored packages (47.2%) 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

cloudflare ✗ acme ✓ certbot-dns-cloudflare ✓ boto3 ✓ urllib3 ✓ botocore ✓ requests ✗ setuptools ✓ certifi ✗ typing-extensions ✓ grpcio-status ✓ charset-normalizer ✗ idna ✗ packaging ✗ python-dateutil ✗ aiobotocore ✓ s3transfer ✓ six ✓ numpy ✓ s3fs ✓ pyyaml ✗ protobuf ✓ cryptography ✗ importlib-metadata ✓ fsspec ✓ pydantic ✓ cffi ✗ pip ✓ pycparser ✗ pandas ✓ attrs ✗ platformdirs ✓ rsa ✗ click ✓ jmespath ✗ jinja2 ✓ markupsafe ✓ pytz ✗ pyasn1 ✗ google-api-core ✗ zipp ✓ pluggy ✓ pydantic-core ✓ pygments ✗ filelock ✓ wheel ✗ google-auth ✗ cachetools ✓ virtualenv ✗ h11 ✗ colorama ✗ anyio ✓ sniffio ✓ grpcio-tools ✓ googleapis-common-protos ✗ pytest ✓ annotated-types ✗ pyasn1-modules ✗ httpx ✗ tzdata ✓ jsonschema ✓ pyjwt ✓ httpcore ✗ aiohttp ✓ iniconfig ✗ tomli ✓ pyarrow ✓ multidict ✓ wrapt ✗ yarl ✓ requests-oauthlib ✗ awscli ✓ psutil ✓ tomlkit ✗ exceptiongroup ✓ tqdm ✗ sqlalchemy ✗ cloudpickle ✗ frozenlist ✓ oauthlib ✗ greenlet ✓ distlib ✗ python-dotenv ✓ aiosignal ✓ pyparsing ✓ pillow ✓ pathspec ✗ rpds-py ✓ scipy ✓ requests-toolbelt ✗ pyzmq ✗ propcache ✓ jsonschema-specifications ✓ rich ✗ grpcio ✓ referencing ✓ beautifulsoup4 ✓ openpyxl ✗ soupsieve ✗ pyopenssl ✗ typing-inspection ✓ et-xmlfile ✗ docutils ✓ grpcio-health-checking ✓ isodate ✗ more-itertools ✓ aiohappyeyeballs ✓ google-cloud-storage ✗ msgpack ✗ markdown-it-py ✗ proto-plus ✗ mdurl ✗ lxml ✗ werkzeug ✓ trove-classifiers ✓ opentelemetry-semantic-conventions ✓ decorator ✗ coverage ✓ shellingham ✗ websocket-client ✗

Top 120 - 240

mypy-extensions ✗ yandexcloud ✓ pynacl ✗ async-timeout ✓ azure-core ✓ sortedcontainers ✓ snowflake-connector-python ✓ azure-identity ✓ deprecated ✗ msal ✗ psycopg2-binary ✗ keyring ✓ flask ✓ tenacity ✓ asn1crypto ✗ scikit-learn ✓ weaviate-client ✓ gym-notices ✓ poetry-core ✓ opentelemetry-api ✓ langsmith ✓ google-cloud-core ✗ starlette ✓ regex ✗ bcrypt ✗ jaraco-classes ✓ types-requests ✓ jeepney ✓ pexpect ✓ secretstorage ✗ wcwidth ✗ fastjsonschema ✗ ptyprocess ✓ uvicorn ✓ fastapi ✗ opentelemetry-sdk ✓ gitpython ✗ networkx ✓ tabulate ✗ huggingface-hub ✗ chardet ✗ threadpoolctl ✓ paramiko ✗ google-resumable-media ✗ google-api-python-client ✗ opentelemetry-proto ✓ aliyun-python-sdk-core ✗ itsdangerous ✓ smmap ✗ gitdb ✗ dnspython ✓ rapidfuzz ✓ pyproject-hooks ✓ matplotlib ✓ build ✗ ruamel-yaml ✗ google-crc32c ✓ dill ✗ blinker ✓ backoff ✗ joblib ✓ fonttools ✓ websockets ✓ google-auth-oauthlib ✗ prompt-toolkit ✗ awswrangler ✓ alembic ✓ opentelemetry-instrumentation ✓ importlib-resources ✓ pkginfo ✗ kiwisolver ✓ jaraco-functools ✓ msal-extensions ✗ zstandard ✗ defusedxml ✗ google-genai ✓ typedload ✓ uritemplate ✓ opentelemetry-exporter-otlp-proto-http ✓ cachecontrol ✓ sqlparse ✗ google-cloud-bigquery ✓ jaraco-context ✓ cycler ✗ distro ✗ transformers ✓ pytest-cov ✓ openai ✗ langchain ✓ marshmallow ✓ redis ✓ py4j ✗ azure-storage-blob ✗ xmltodict ✗ httplib2 ✗ google-auth-httplib2 ✗ opentelemetry-util-http ✓ ipython ✓ tzlocal ✓ ruamel-yaml-clib ✓ docker ✗ poetry-plugin-export ✓ sphinx ✓ opentelemetry-instrumentation-requests ✓ poetry ✓ cython ✗ nest-asyncio ✗ opentelemetry-exporter-otlp-proto-grpc ✓ opentelemetry-exporter-otlp-proto-common ✓ dulwich ✓ black ✓ babel ✗ contourpy ✓ crashtest ✗ cleo ✗ traitlets ✓ installer ✓ jedi ✗ pymysql ✗ jsonpointer ✗

Top 240 - 360

prometheus-client ✓ hatchling ✗ parso ✗ grpc-google-iam-v1 ✗ gunicorn ✗ isort ✓ pycodestyle ✓ tornado ✓ kubernetes ✗ setuptools-scm ✗ typer ✗ matplotlib-inline ✗ mako ✗ toml ✗ langchain-core ✓ snowflake-sqlalchemy ✗ orjson ✓ webencodings ✓ markdown ✓ mccabe ✗ ruff ✗ termcolor ✓ types-python-dateutil ✓ asttokens ✗ ply ✓ executing ✗ sentry-sdk ✗ tokenizers ✓ nodeenv ✗ gym ✗ pendulum ✓ python-json-logger ✗ aiofiles ✗ stack-data ✗ mypy ✓ databricks-sql-connector ✗ pre-commit ✓ pure-eval ✗ typing-inspect ✗ asgiref ✓ shapely ✓ jiter ✓ opentelemetry-exporter-otlp ✓ sympy ✓ identify ✓ py ✗ pymongo ✓ scramp ✗ pytest-xdist ✓ torch ✓ cfgv ✓ backports-tarfile ✓ opensearch-py ✗ pycryptodome ✗ msrest ✗ argcomplete ✗ uv ✗ azure-common ✗ pydantic-settings ✓ jsonpatch ✗ smart-open ✗ snowflake-snowpark-python ✓ datadog ✗ future ✗ notebook ✓ execnet ✗ python-multipart ✗ redshift-connector ✗ jsonpath-ng ✗ email-validator ✗ pyrsistent ✗ pbs-installer ✓ semver ✗ google-cloud-secret-manager ✗ debugpy ✗ mysql-connector-python ✓ mpmath ✗ jupyter-core ✓ findpython ✗ arrow ✗ aioitertools ✓ tiktoken ✓ lz4 ✓ databricks-sdk ✗ pyspark ✓ watchdog ✓ pytest-asyncio ✓ rfc3339-validator ✗ apache-beam ✓ pyflakes ✓ slack-sdk ✗ dataclasses-json ✗ jupyter-client ✓ pytest-mock ✗ requests-aws4auth ✗ multiprocess ✗ jupyterlab ✓ apache-airflow-providers-common-sql ✓ mistune ✗ google-cloud-pubsub ✗ tinycss2 ✗ tb-nightly ✓ ipykernel ✓ nbformat ✗ bleach ✓ tableauserverclient ✓ flake8 ✓ pycryptodomex ✗ editables ✗ google-cloud-aiplatform ✓ comm ✓ pygithub ✗ hf-xet ✓ nbconvert ✓ python-slugify ✗ nbclient ✓ cattrs ✓ google-cloud-resource-manager ✗ gcsfs ✓ watchfiles ✓

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.