In the grouped manifest tree, every subproject renders a real project name except pip, which renders the literal string root:
├─ services/api (subproject, gomod)
│ └─ acme.example/api — 2 packages [go.mod]
└─ services/billing (subproject, pip)
└─ root — 12 packages [requirements.txt]
Repro: bomly scan --recursive (bomly 0.18.0) on a monorepo fixture containing services/billing/requirements.txt (two pinned entries, no lockfile), alongside npm and Go subprojects.
Expected: something meaningful for a requirements.txt project — the subproject directory name (billing) seems like the natural fallback, matching how other detectors name their root when the manifest carries no name.
In the grouped manifest tree, every subproject renders a real project name except pip, which renders the literal string
root:Repro:
bomly scan --recursive(bomly 0.18.0) on a monorepo fixture containingservices/billing/requirements.txt(two pinned entries, no lockfile), alongside npm and Go subprojects.Expected: something meaningful for a requirements.txt project — the subproject directory name (
billing) seems like the natural fallback, matching how other detectors name their root when the manifest carries no name.