Are we PEP 517 yet? 📦

Last refreshed: 2026-10-12

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