Repository navigation
feat(topology): Map modern Python projects - #162
Conversation
|
Reviewed in depth against the #160 provider contract, with fixtures run through 1. BLOCKING — source roots are guessed from directory naming, not read from the declared package layout
False ownership. A flat-layout project declaring with "source_roots": ["src"],
"members": {"python:pyproject.toml:myproj": ["src/unrelated_scratch/scratch.py"]},
"coverage": {"status": "complete"}The actually-declared module is absent from members, an unrelated directory is claimed as this project's source, and coverage says Silent drop. A hatch project with Minimum fix consistent with the contract: detect the presence of 2. BLOCKING — a
|
Co-Authored-By: GPT-5.6 Sol <codex@openai.com>
Reject external manifests and mark declared layouts partial.
d2190a3 to
7d53ba9
Compare
Complied
Additional changes
|
|
Verified and merged. Re-ran both original reproductions against
Anchoring declared package roots to each manifest's own directory is a good call — that's the generalization that makes nested layouts behave. One note for the record: Generated by Claude Code |
What does this PR do?
Adds Python project topology discovery for common repository manifests:
pyproject.tomlwithout executing Python code.Why it matters
Python repositories often describe project boundaries in packaging metadata rather than directory layout. The topology graph should reflect those boundaries without running project code.
CLI / MCP surface
No new commands, arguments, or MCP tools. Existing topology output includes Python project and module nodes when manifests are present.
Security
pyproject.tomlis read as data; no Python code is executed.Verification
codemap .andcodemap --deps .The repository linter reports the existing baseline findings and one non-functional simplification suggestion in this branch.
Co-Authored-By: GPT-5.6 Sol codex@openai.com