Are we PEP 517 yet? 📦

Last refreshed: 2026-09-08

What is PEP 517?

PEP 517 defines a standard interface between build frontends such as pip and uv, and build backends such as Setuptools, Flit, Hatchling, and PDM.

It allows projects to declare their build dependencies in the [build-system] table of pyproject.toml.

Legend

  • Green projects (279; 77.5%): declares a PEP 517 build backend
  • Yellow projects (74; 20.6%): no PEP 517 backend, but a universal wheel
  • Orange projects (3; 0.8%): no PEP 517 backend and no universal wheel
  • Gray projects (4; 1.1%): no source distribution

The package ranking comes from Hugo van Kemenade. The complete build-system dataset is available as csv.

boto3 packaging typing-extensions certifi idna urllib3 requests charset-normalizer setuptools cryptography cffi pluggy pygments pyyaml botocore python-dateutil six pydantic numpy click pycparser anyio pytest pydantic-core iniconfig aiobotocore annotated-types h11 attrs typing-inspection protobuf fsspec httpx markupsafe httpcore s3transfer python-dotenv platformdirs pandas jinja2 pathspec grpcio-status filelock pip pyjwt starlette uvicorn litellm aiohttp tqdm jmespath rpds-py yarl jsonschema rich markdown-it-py multidict propcache s3fs fastapi referencing tomlkit frozenlist jsonschema-specifications pyasn1 wheel websockets aiohappyeyeballs mdurl aiosignal google-auth pillow googleapis-common-protos pytz sniffio importlib-metadata trove-classifiers zipp opentelemetry-semantic-conventions annotated-doc virtualenv hatchling pydantic-settings tzdata wrapt ghapi greenlet opentelemetry-api huggingface-hub opentelemetry-sdk pyasn1-modules tenacity google-api-core regex pyarrow python-multipart textual openai grpcio soupsieve beautifulsoup4 jiter pyparsing sqlalchemy distro scipy colorama tomli lxml watchfiles opentelemetry-proto psutil shellingham opentelemetry-instrumentation editables typer requests-oauthlib opentelemetry-exporter-otlp-proto-http proto-plus openpyxl et-xmlfile mcp ruff opentelemetry-exporter-otlp-proto-common coverage exceptiongroup sglang oauthlib mypy-extensions dnspython more-itertools wcwidth cachetools distlib sse-starlette hf-xet multiprocess pytest-asyncio python-discovery docstring-parser sortedcontainers requests-toolbelt pyopenssl psycopg2-binary rsa uvloop msgpack opentelemetry-exporter-otlp-proto-grpc tiktoken httptools google-genai networkx werkzeug tokenizers redis gitpython fonttools langchain prompt-toolkit defusedxml grpcio-tools scikit-learn smmap pytest-cov google-cloud-storage matplotlib orjson email-validator pynacl httpx-sse isodate chardet azure-core gitdb tzlocal alembic itsdangerous dill websocket-client nodeenv joblib tabulate mako opentelemetry-instrumentation-requests threadpoolctl ruamel-yaml h2 azure-identity keyring google-cloud-core mypy kiwisolver bcrypt hpack pytest-json-ctrf flask opentelemetry-util-http contourpy jaraco-classes msal docutils truststore hyperframe jeepney jaraco-functools decorator zstandard anthropic pre-commit secretstorage identify cfgv toml docker xxhash jaraco-context blinker uv cycler google-resumable-media httpx2 ptyprocess google-crc32c sympy transformers httpcore2 pexpect google-cloud-bigquery google-api-python-client uritemplate black prometheus-client jsonpointer google-auth-httplib2 sentry-sdk langchain-core opentelemetry-instrumentation-threading deprecated backoff snowflake-connector-python async-timeout google-auth-oauthlib rapidfuzz mpmath asn1crypto httplib2 opentelemetry-exporter-otlp ipython awscli pytest-xdist narwhals librt aiofiles types-requests msal-extensions poetry-core datasets pypdf execnet traitlets cloudpickle asgiref ydb paramiko jsonpatch sqlparse google-cloud-secret-manager pyproject-hooks webencodings fastjsonschema authlib psycopg build grpc-google-iam-v1 gunicorn executing databricks-sdk isort joserfc azure-storage-blob jedi parso babel asttokens psycopg-binary google-cloud-aiplatform matplotlib-inline cython tornado markdown setuptools-scm xmltodict pydantic-ai-slim stack-data pure-eval asyncpg gcsfs google-cloud-batch marshmallow cachecontrol langsmith python-json-logger vcs-versioning fastuuid python-docx structlog watchdog playwright google-cloud-kms safetensors tinycss2 termcolor google-analytics-admin google-cloud-compute pytokens aioitertools kubernetes brotli pymupdf pyzmq pyee xlsxwriter pymongo lz4 mdit-py-plugins google-cloud-pubsub pydantic-graph cbor2 pytest-mock pytest-timeout py4j pymysql linkify-it-py flatbuffers google-cloud-dlp pyperclip nest-asyncio google-cloud-speech dbt-adapters wsproto debugpy typedload google-cloud-texttospeech ruamel-yaml-clib croniter slack-sdk uc-micro-py weaviate-client griffelib tomli-w types-toml importlib-resources pycryptodome google-cloud-logging opentelemetry-instrumentation-fastapi reportlab awswrangler torch fastmcp mccabe