cd /news/developer-tools/what-a-build-requirement-declaration… · home › topics › developer-tools › article
[ARTICLE · art-169883] src=discuss.huggingface.co ↗ pub= topic=developer-tools verified=true sentiment=· neutral

What a build requirement declaration does (and does not) establish

A new read-only Yumi CLI, published by noqt, checks whether a Python ML package's declared build requirements match the environment declarations mapped to a specific non-isolated build route, reporting each result as DECLARED, DECLARATION_GAP or UNKNOWN. In the tool's synthetic example, a project declaring setuptools>=68 and wheel in [build-system].requires but mapping only setuptools>=68 in reqs/build.pip for a `pip wheel . --no-build-isolation` script yields a declaration gap for wheel — not proof that wheel was absent at runtime or that the build failed. The tool, run as `python -B declared_build_environment_evidence.py --root /path/to/repo --routes /path/to/routes.json` on Python 3.11+, reads explicitly mapped files, compares literal package names and binds results to source and route digests, but does not run builds, install dependencies or resolve version constraints.

read2 min views1 publishedNov 15, 2026

For maintainers of Python ML packages with custom build scripts: a requirement in pyproject.toml answers what the project declares. It does not, by itself, tell you what a particular non-isolated build route put into its environment.

Here’s a synthetic example. The project has:

[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"

Its scripts/build.sh runs python -m pip wheel . --no-build-isolation. The environment declaration mapped to that script, reqs/build.pip, names setuptools>=68 but does not name wheel.

Those facts support a narrow conclusion: if reqs/build.pip is the complete set of environment declarations for that non-isolated route, wheel is a declaration gap for that route. They do not prove wheel was absent at runtime or that the build failed; it could have been installed outside the mapped declarations. If the mapping is incomplete or the script’s route is unclear, the honest result is unknown. For a separately mapped isolated route, check the literal [build-system].requires declarations instead; don’t assume the frontend actually used isolation merely because the project declares build requirements.

We built a small, local, read-only Yumi CLI to make those boundaries explicit. The maintainer supplies the repository root and a route manifest naming the entrypoint, declaration files, isolation mode and whether those files are complete:

{
  "schema": 1,
  "routes": [{
    "name": "wheel script",
    "isolation": "non-isolated",
    "entrypoints": ["scripts/build.sh"],
    "declarations": ["reqs/build.pip"],
    "declarations_complete": true
  }]
}

Run python -B declared_build_environment_evidence.py --root /path/to/repo --routes /path/to/routes.json with Python 3.11+. The source and input format are public. It reads explicitly mapped files, compares literal package names, and binds results to source and route digests. It does not run a build, install dependencies or resolve version constraints.

The work is still in choosing the correct route and making an honest completeness assertion. You can do the same inspection manually; the CLI helps keep the distinction between DECLARED, DECLARATION_GAP and UNKNOWN explicit when a repository has several build paths. This example is illustrative, not evidence from a user build. Prepared with AI assistance on behalf of noqt.

── more in #developer-tools 4 stories · sorted by recency
── more on @noqt 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/what-a-build-require…] indexed:0 read:2min 2026-11-15 · —