Outcome
source_layout = "explicit" documents how declared roots reach Ruff/basedpyright/coverage scopes, but not how Python at the root can import a package that lives in a subproject directory. The managed pytest/coverage gate fails with ModuleNotFoundError until the consumer independently wires a uv workspace plus a dev dependency.
Evidence
- Fresh adoption, project-standards 5.26.0 (
v5.26.0), Linux, Python 3.14.7, uv 0.11.6.
- python-tooling 1.16 with
build_backend = "none", source_layout = "explicit", additional_source_roots = ["subproj/src"], pytest.test_paths = ["subproj/tests"].
- After apply,
uv run coverage run -m pytest fails:
subproj/tests/conftest.py:9: in <module>
from subproj.content.loader import Content
E ModuleNotFoundError: No module named 'subproj'
The declared roots reach the checker include, Ruff src, and coverage.run.source as documented — but nothing puts the package on the root environment's import path.
Expected behavior
The adopt guide (or troubleshooting table) should state the import prerequisite and the supported wiring, e.g. a uv workspace with the subproject as a member plus a dev dependency on it:
[tool.uv.workspace]
members = ["subproj"]
[tool.uv.sources]
subproj = { workspace = true }
with additional_dev_dependencies = ["subproj"] (and a note that additional_dev_dependencies is the intended channel for this).
Consumer consequence
Multiple failed gate cycles; the fix is discoverable only from uv workspace knowledge, not from the standards documentation.
Blocks progress: no (workaround found).
Outcome
source_layout = "explicit"documents how declared roots reach Ruff/basedpyright/coverage scopes, but not how Python at the root can import a package that lives in a subproject directory. The managed pytest/coverage gate fails withModuleNotFoundErroruntil the consumer independently wires a uv workspace plus a dev dependency.Evidence
v5.26.0), Linux, Python 3.14.7, uv 0.11.6.build_backend = "none",source_layout = "explicit",additional_source_roots = ["subproj/src"],pytest.test_paths = ["subproj/tests"].uv run coverage run -m pytestfails:The declared roots reach the checker
include, Ruffsrc, andcoverage.run.sourceas documented — but nothing puts the package on the root environment's import path.Expected behavior
The adopt guide (or troubleshooting table) should state the import prerequisite and the supported wiring, e.g. a uv workspace with the subproject as a member plus a dev dependency on it:
with
additional_dev_dependencies = ["subproj"](and a note thatadditional_dev_dependenciesis the intended channel for this).Consumer consequence
Multiple failed gate cycles; the fix is discoverable only from uv workspace knowledge, not from the standards documentation.
Blocks progress: no (workaround found).