Python 3.5 Readiness

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

What is this about?

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

  1. 343 green packages (95.3%) have dropped support for Python 3.5;
  2. 17 uncolored packages (4.7%) still support Python 3.5.

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

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

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

How do you identify Python 3.5 support?

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

Top 120

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

Top 120 - 240

pydantic-settings ✓ opentelemetry-exporter-otlp-proto-grpc ✓ msgpack ✓ websockets ✓ proto-plus ✓ pyopenssl ✓ flask ✓ openai ✓ werkzeug ✓ google-cloud-storage ✓ dnspython ✓ mypy-extensions ✓ coverage ✓ pynacl ✓ opentelemetry-exporter-otlp-proto-http ✓ psycopg2-binary ✓ python-multipart ✓ isodate ✓ keyring ✓ distro ✓ wcwidth ✓ decorator ✓ networkx ✓ opentelemetry-exporter-otlp-proto-common ✓ poetry-core ✓ sortedcontainers ✗ huggingface-hub ✓ matplotlib ✓ fonttools ✓ jaraco-classes ✓ azure-core ✓ secretstorage ✓ scikit-learn ✓ textual ✓ jeepney ✓ pexpect ✓ azure-identity ✓ ptyprocess ✓ gitpython ✓ joblib ✓ ruff ✓ bcrypt ✓ msal ✓ redis ✓ jaraco-context ✓ kiwisolver ✓ snowflake-connector-python ✓ jaraco-functools ✓ opentelemetry-exporter-otlp ✓ editables ✓ types-requests ✓ defusedxml ✗ ruamel-yaml ✓ jiter ✓ watchfiles ✓ google-cloud-core ✓ zstandard ✓ opensearch-py ✓ itsdangerous ✓ rapidfuzz ✓ contourpy ✓ tabulate ✓ async-timeout ✓ smmap ✓ alembic ✓ threadpoolctl ✓ gitdb ✓ email-validator ✓ prompt-toolkit ✓ requests-aws4auth ✓ google-cloud-aiplatform ✓ deprecated ✗ orjson ✓ asn1crypto ✗ pytest-cov ✓ opentelemetry-instrumentation ✓ google-crc32c ✓ google-resumable-media ✓ tzlocal ✓ chardet ✓ docker ✓ kubernetes ✓ google-cloud-bigquery ✓ blinker ✓ setuptools-scm ✓ paramiko ✓ google-api-python-client ✓ events ✗ pyproject-hooks ✓ pytest-asyncio ✓ prometheus-client ✓ backoff ✓ build ✓ dill ✓ fastjsonschema ✗ cycler ✓ mako ✓ docstring-parser ✓ marshmallow ✓ uritemplate ✓ google-auth-oauthlib ✓ google-auth-httplib2 ✓ httplib2 ✓ msal-extensions ✓ uv ✓ azure-storage-blob ✓ hf-xet ✓ jsonpointer ✓ sqlparse ✓ opensearch-protobufs ✓ babel ✓ tokenizers ✓ isort ✓ sympy ✓ xmltodict ✓ nodeenv ✓ gcsfs ✓ uvloop ✓ aiofiles ✓ transformers ✓

Top 240 - 360

ipython ✓ mypy ✓ google-cloud-secret-manager ✓ mcp ✓ grpcio-health-checking ✓ mpmath ✓ parso ✓ opentelemetry-util-http ✓ traitlets ✓ tornado ✓ google-cloud-batch ✓ pre-commit ✓ tiktoken ✓ gunicorn ✓ cloudpickle ✓ black ✓ jedi ✓ cython ✓ httpx-sse ✓ executing ✓ py4j ✓ toml ✗ opentelemetry-instrumentation-requests ✓ importlib-resources ✓ authlib ✓ google-analytics-admin ✓ httptools ✓ asgiref ✓ sse-starlette ✓ identify ✓ cattrs ✓ asttokens ✓ durationpy ✓ cfgv ✓ langchain-core ✓ litellm ✓ sentry-sdk ✓ matplotlib-inline ✓ markdown ✓ cachecontrol ✓ opentelemetry-exporter-prometheus ✓ aliyun-python-sdk-core ✓ python-json-logger ✓ typedload ✓ grpc-google-iam-v1 ✓ databricks-sdk ✓ nest-asyncio ✗ pytest-xdist ✓ webencodings ✗ stack-data ✗ pure-eval ✓ dbt-core ✓ execnet ✓ jsonpatch ✓ pymongo ✓ xxhash ✓ requests-file ✓ pandas-stubs ✓ typing-inspect ✗ portalocker ✓ debugpy ✓ aioitertools ✓ watchdog ✓ dulwich ✓ jsonschema-path ✓ pkginfo ✓ pymysql ✓ h2 ✓ termcolor ✓ hyperframe ✓ typer-slim ✓ hpack ✓ awswrangler ✓ dbt-adapters ✓ pytest-mock ✓ pyzmq ✓ ruamel-yaml-clib ✓ poetry ✓ dataclasses-json ✓ msrest ✓ lz4 ✓ mccabe ✓ pyperclip ✗ pathable ✓ semver ✓ pylint ✓ invoke ✓ langsmith ✓ pywin32 ✓ pycryptodome ✓ databricks-sql-connector ✓ slack-sdk ✓ rfc3339-validator ✗ dbt-common ✓ argcomplete ✓ torch ✓ smart-open ✓ deepdiff ✓ snowflake-sqlalchemy ✓ pygithub ✓ installer ✓ cleo ✓ rich-toolkit ✓ crashtest ✓ tinycss2 ✓ sphinx ✓ arrow ✓ google-cloud-monitoring ✓ pendulum ✓ multiprocess ✓ jupyter-core ✓ google-cloud-vision ✓ google-cloud-speech ✓ google-cloud-kms ✓ notebook ✓ google-cloud-compute ✓ pycodestyle ✓ beartype ✓ datadog ✓ ipykernel ✓

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.