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. 101 green packages (28.1%) have dropped support for Python 3.8;
  2. 259 white packages (71.9%) still support Python 3.8.

Package 'x' is white. 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 ✗ botocore ✗ urllib3 ✗ requests ✗ setuptools ✓ certifi ✗ idna ✗ charset-normalizer ✗ packaging ✗ typing-extensions ✗ python-dateutil ✗ aiobotocore ✗ grpcio-status ✗ s3transfer ✗ six ✓ pyyaml ✗ fsspec ✗ numpy ✓ s3fs ✗ wheel ✗ cryptography ✗ pip ✗ pydantic ✗ google-api-core ✗ pandas ✓ cffi ✗ attrs ✗ awscli ✗ importlib-metadata ✓ pycparser ✗ rsa ✗ jmespath ✗ pyasn1 ✗ click ✓ zipp ✓ protobuf ✗ rich ✗ markupsafe ✓ pytz ✗ platformdirs ✗ jinja2 ✓ colorama ✗ aiohttp ✓ tomli ✓ pyjwt ✓ pydantic-core ✗ pytest ✗ pluggy ✗ virtualenv ✗ jsonschema ✗ googleapis-common-protos ✗ google-auth ✗ filelock ✗ cachetools ✗ pyarrow ✓ wrapt ✗ sqlalchemy ✗ docutils ✓ pyasn1-modules ✗ pygments ✗ annotated-types ✗ greenlet ✗ requests-oauthlib ✗ yarl ✓ requests-toolbelt ✗ iniconfig ✗ tzdata ✓ psutil ✓ pyparsing ✓ multidict ✗ werkzeug ✓ exceptiongroup ✓ soupsieve ✗ oauthlib ✗ beautifulsoup4 ✓ frozenlist ✗ aiosignal ✗ distlib ✗ grpcio ✗ more-itertools ✗ async-timeout ✓ isodate ✗ tomlkit ✗ scipy ✓ tqdm ✗ pillow ✓ pathspec ✗ deprecated ✗ decorator ✗ anyio ✓ sortedcontainers ✓ openpyxl ✗ markdown-it-py ✗ httpx ✗ et-xmlfile ✗ pyopenssl ✗ flask ✓ sniffio ✓ rpds-py ✓ proto-plus ✗ h11 ✗ coverage ✓ httpcore ✗ jsonschema-specifications ✗ lxml ✗ mypy-extensions ✗ dill ✗ mdurl ✗ python-dotenv ✗ propcache ✓ azure-core ✗ google-cloud-storage ✗ referencing ✗ gitpython ✗ asn1crypto ✗ msgpack ✗ tenacity ✗ pexpect ✓ pynacl ✗ aiohappyeyeballs ✗

Top 120 - 240

ptyprocess ✓ msal ✗ asgiref ✗ websocket-client ✗ itsdangerous ✓ poetry-core ✗ google-cloud-core ✗ opentelemetry-sdk ✗ alembic ✗ psycopg2-binary ✗ gitdb ✗ smmap ✗ keyring ✓ google-resumable-media ✗ importlib-resources ✓ trove-classifiers ✓ scikit-learn ✓ pycodestyle ✓ snowflake-connector-python ✗ regex ✗ blinker ✓ fastapi ✗ opentelemetry-api ✗ bcrypt ✗ wcwidth ✗ shellingham ✗ jaraco-classes ✓ chardet ✗ pkginfo ✗ backoff ✗ jeepney ✓ secretstorage ✗ ruamel-yaml ✗ google-crc32c ✓ py4j ✗ mccabe ✗ tabulate ✗ matplotlib ✓ poetry-plugin-export ✗ paramiko ✗ isort ✗ fastjsonschema ✗ pytest-cov ✓ build ✗ azure-storage-blob ✗ grpcio-tools ✓ cloudpickle ✗ portalocker ✓ google-cloud-bigquery ✗ gunicorn ✗ dnspython ✓ google-api-python-client ✗ pyproject-hooks ✓ networkx ✓ mock ✗ azure-identity ✗ sqlparse ✗ py ✗ threadpoolctl ✗ httplib2 ✗ marshmallow ✓ rapidfuzz ✓ prompt-toolkit ✗ msal-extensions ✗ google-auth-oauthlib ✗ joblib ✗ awswrangler ✗ kiwisolver ✗ docker ✗ termcolor ✓ typedload ✓ cython ✗ ipython ✓ fonttools ✗ nest-asyncio ✗ argcomplete ✗ starlette ✗ babel ✗ cycler ✗ ply ✓ redis ✗ ruamel-yaml-clib ✓ tzlocal ✗ xmltodict ✗ defusedxml ✗ uritemplate ✗ pymysql ✗ opentelemetry-semantic-conventions ✗ black ✓ sentry-sdk ✗ mako ✗ types-requests ✓ setuptools-scm ✗ pendulum ✗ google-auth-httplib2 ✗ cachecontrol ✗ traitlets ✓ markdown ✗ tornado ✗ pyflakes ✓ pyrsistent ✗ huggingface-hub ✗ jedi ✗ distro ✗ nodeenv ✗ uvicorn ✗ poetry ✗ prometheus-client ✗ openai ✗ flake8 ✓ transformers ✓ toml ✗ kubernetes ✗ contourpy ✓ scramp ✗ pyzmq ✗ dulwich ✓ parso ✗ croniter ✗ grpc-google-iam-v1 ✗

Top 240 - 360

debugpy ✗ crashtest ✗ pymongo ✗ cleo ✗ matplotlib-inline ✗ typer ✗ python-slugify ✗ webencodings ✓ installer ✓ websockets ✓ multiprocess ✗ jsonpointer ✗ pycryptodomex ✗ sphinx ✓ orjson ✗ pycryptodome ✗ requests-aws4auth ✗ stack-data ✗ asttokens ✗ pytest-mock ✗ mypy ✗ typing-inspect ✗ hatchling ✗ executing ✗ arrow ✗ ipykernel ✓ zope-interface ✗ redshift-connector ✗ opentelemetry-proto ✗ python-json-logger ✗ loguru ✗ lazy-object-proxy ✗ aiofiles ✗ pytzdata ✗ jupyter-core ✓ colorlog ✗ pure-eval ✗ jupyter-client ✓ aioitertools ✓ datadog ✗ types-python-dateutil ✓ identify ✓ setproctitle ✗ smart-open ✗ pre-commit ✓ bs4 ✓ pytest-runner ✓ astroid ✓ msrest ✗ elasticsearch ✗ pygithub ✗ azure-common ✗ jupyterlab ✗ opentelemetry-exporter-otlp-proto-grpc ✗ future ✗ jsonpath-ng ✗ opentelemetry-exporter-otlp ✗ rfc3339-validator ✗ pg8000 ✗ opentelemetry-exporter-otlp-proto-http ✗ nbconvert ✓ nbformat ✗ retry ✓ shapely ✗ google-cloud-secret-manager ✗ tokenizers ✗ mysql-connector-python ✓ google-cloud-pubsub ✗ torch ✗ hypothesis ✓ ordered-set ✗ pylint ✓ nbclient ✗ apache-airflow ✗ responses ✗ comm ✓ cfgv ✓ snowflake-sqlalchemy ✗ opensearch-py ✗ bleach ✓ requests-file ✓ mdit-py-plugins ✗ jupyter-server ✓ pydantic-settings ✗ jsonpatch ✗ appdirs ✗ pyspark ✗ jaraco-functools ✓ flask-caching ✓ notebook ✓ snowballstemmer ✗ mistune ✗ tinycss2 ✗ sympy ✗ opentelemetry-exporter-otlp-proto-common ✗ pkgutil-resolve-name ✓ slack-sdk ✗ google-pasta ✗ oscrypto ✗ tox ✗ pytest-xdist ✗ toolz ✗ jupyterlab-server ✗ jaraco-context ✓ ruff ✗ watchdog ✓ xlrd ✗ langchain-core ✓ humanfriendly ✗ flask-wtf ✓ aenum ✗ lz4 ✗ django ✓ connexion ✗ imagesize ✗ db-dtypes ✗ typeguard ✓ google-cloud-aiplatform ✗ tensorboard ✓ alabaster ✓

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.