fix: make MkDocs generation filesystem-complete and package-aware

- Add filesystem-based module discovery via `discover_module_paths`
- Decouple documentation coverage from Python import behavior
- Ensure GriffeLoader receives a full module list instead of a single root
- Make MkDocs renderer level-agnostic using global package detection
- Emit `index.md` only for true packages, suppress `<package>.md`
- Mirror full dotted module hierarchy into nested docs directories
- Update CLI, exports, and type stubs to expose discovery helper
- Align tests with filesystem-driven module coverage

This fixes missing docs for submodules and removes invalid package `.md` files.
This commit is contained in:
2026-01-20 23:25:56 +05:30
parent 2e5d330fca
commit dca19caaf3
9 changed files with 120 additions and 41 deletions

View File

@@ -1,12 +1,18 @@
from pathlib import Path
from docforge.loader import GriffeLoader
from docforge.loader import GriffeLoader, discover_module_paths
from docforge.renderers.mkdocs import MkDocsRenderer
def test_mkdocs_emits_all_modules(tmp_path: Path) -> None:
loader = GriffeLoader()
project = loader.load_project(["docforge"])
discovered_paths = discover_module_paths(
"docforge",
Path(r"C:\Users\vishe\WorkSpace\code\aetos\doc-forge")
)
project = loader.load_project(
discovered_paths
)
renderer = MkDocsRenderer()
renderer.generate_sources(project, tmp_path)
@@ -32,5 +38,24 @@ def test_mkdocs_emits_all_modules(tmp_path: Path) -> None:
else:
expected.add("/".join(parts) + ".md")
# expected = {
# 'docforge/cli/main.md',
# 'docforge/renderers/index.md',
# 'docforge/loader/index.md',
# 'docforge/model/index.md',
# 'docforge/nav/index.md',
# 'docforge/renderers/mkdocs.md',
# 'docforge/index.md',
# 'docforge/loader/griffe_loader.md',
# 'docforge/model/object.md',
# 'docforge/cli/index.md',
# 'docforge/nav/resolver.md',
# 'docforge/renderers/base.md',
# 'docforge/nav/mkdocs.md',
# 'docforge/nav/spec.md',
# 'docforge/model/module.md',
# 'docforge/cli/mkdocs.md',
# 'docforge/model/project.md'
# }
missing = expected - emitted
assert not missing, f"Missing markdown files for modules: {missing}"