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. 189 green packages (52.5%) have dropped support for Python 3.8;
  2. 171 uncolored packages (47.5%) 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 ✓ botocore ✓ setuptools ✓ requests ✗ typing-extensions ✓ certifi ✗ charset-normalizer ✗ idna ✗ packaging ✗ grpcio-status ✓ python-dateutil ✗ aiobotocore ✓ s3transfer ✓ six ✓ numpy ✓ pyyaml ✗ importlib-metadata ✓ s3fs ✓ protobuf ✓ cryptography ✗ pydantic ✓ cffi ✗ pip ✓ fsspec ✓ pycparser ✗ platformdirs ✓ attrs ✗ pandas ✓ click ✓ rsa ✗ pluggy ✓ jmespath ✗ jinja2 ✓ markupsafe ✓ pytz ✗ zipp ✓ virtualenv ✗ pydantic-core ✓ pyasn1 ✗ pygments ✗ filelock ✓ google-api-core ✗ wheel ✗ grpcio-tools ✓ h11 ✗ cachetools ✓ google-auth ✗ colorama ✗ pytest ✓ anyio ✓ sniffio ✓ annotated-types ✗ googleapis-common-protos ✗ iniconfig ✗ tomli ✓ httpx ✗ awscli ✓ jsonschema ✓ pyasn1-modules ✗ httpcore ✗ tzdata ✓ pyjwt ✓ aiohttp ✓ multidict ✓ yarl ✓ wrapt ✗ exceptiongroup ✓ tomlkit ✗ distlib ✗ pyarrow ✓ cloudpickle ✗ requests-oauthlib ✗ psutil ✓ tqdm ✗ requests-toolbelt ✗ sqlalchemy ✗ pyzmq ✗ frozenlist ✓ pathspec ✗ greenlet ✓ python-dotenv ✓ pyparsing ✓ oauthlib ✗ aiosignal ✓ propcache ✓ rich ✗ rpds-py ✓ jsonschema-specifications ✓ pillow ✓ scipy ✓ more-itertools ✓ referencing ✓ beautifulsoup4 ✓ typing-inspection ✓ grpcio ✓ pyopenssl ✗ soupsieve ✗ grpcio-health-checking ✓ docutils ✓ openpyxl ✗ coverage ✓ msgpack ✗ et-xmlfile ✗ isodate ✗ trove-classifiers ✓ aiohappyeyeballs ✓ markdown-it-py ✗ google-cloud-storage ✗ mdurl ✗ lxml ✗ werkzeug ✓ shellingham ✗ proto-plus ✗ mypy-extensions ✗ opentelemetry-semantic-conventions ✓ decorator ✗ yandexcloud ✓ keyring ✓ gym-notices ✓

Top 120 - 240

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

Top 240 - 360

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

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.