chore(release): 0.0.7
Squash-merge lib-standardisation: adopt repo standards across packaging, tooling, docs, and CI. - standardize pyproject.toml (canonical packaging, lint config, extras, GSDFC pydoclint) - add py.typed marker, modernize type hints and Google-style docstrings - nest generated docs under docs/lib and docs/mcp; add hand-written wiki - adopt standard Type A PyPI CI pipeline (tag==version guard + quality gate) - promote generated CHANGELOG.md; bump version to 0.0.7
This commit is contained in:
@@ -16,7 +16,8 @@ The renderer ensures a consistent documentation structure by:
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
from docforge.models import Project, Module
|
||||
|
||||
from docforge.models import Module, Project
|
||||
|
||||
|
||||
class MkDocsRenderer:
|
||||
@@ -53,7 +54,7 @@ class MkDocsRenderer:
|
||||
out_dir (Path):
|
||||
Directory where generated Markdown files will be written.
|
||||
|
||||
module_is_source (bool, optional):
|
||||
module_is_source (bool | None):
|
||||
If True, treat the specified module as the documentation root
|
||||
rather than nesting it inside a folder.
|
||||
"""
|
||||
@@ -65,8 +66,7 @@ class MkDocsRenderer:
|
||||
|
||||
# Detect packages (modules with children)
|
||||
packages = {
|
||||
p for p in paths
|
||||
if any(other.startswith(p + ".") for other in paths)
|
||||
p for p in paths if any(other.startswith(p + ".") for other in paths)
|
||||
}
|
||||
|
||||
for module in modules:
|
||||
@@ -82,15 +82,15 @@ class MkDocsRenderer:
|
||||
project: Project,
|
||||
docs_dir: Path,
|
||||
module_is_source: bool | None = None,
|
||||
readme_dir: Path | None = None,
|
||||
) -> None:
|
||||
"""
|
||||
Generate a `README.md` file from the root module docstring.
|
||||
|
||||
Behavior:
|
||||
|
||||
- If `module_is_source` is True, `README.md` is written to the project
|
||||
root directory.
|
||||
- If False, README generation is currently not implemented.
|
||||
Notes:
|
||||
- If `module_is_source` is True, `README.md` is written to the
|
||||
project root directory.
|
||||
- If False, README generation is currently not implemented.
|
||||
|
||||
Args:
|
||||
project (Project):
|
||||
@@ -99,15 +99,20 @@ class MkDocsRenderer:
|
||||
docs_dir (Path):
|
||||
Directory containing generated documentation sources.
|
||||
|
||||
module_is_source (bool, optional):
|
||||
module_is_source (bool | None):
|
||||
Whether the module is treated as the project source root.
|
||||
|
||||
readme_dir (Path | None):
|
||||
Directory where the generated README.md should be written.
|
||||
Defaults to the parent of `docs_dir`.
|
||||
"""
|
||||
|
||||
if not module_is_source:
|
||||
# Future: support README generation per module
|
||||
return
|
||||
|
||||
readme_path = docs_dir.parent / "README.md"
|
||||
readme_root = readme_dir if readme_dir is not None else docs_dir.parent
|
||||
readme_path = readme_root / "README.md"
|
||||
|
||||
root_module = None
|
||||
for module in project.get_all_modules():
|
||||
@@ -127,12 +132,12 @@ class MkDocsRenderer:
|
||||
str(root_module.docstring),
|
||||
)
|
||||
|
||||
content = (
|
||||
f"# {project.name}\n\n"
|
||||
f"{doc.strip()}\n"
|
||||
)
|
||||
content = f"# {project.name}\n\n" f"{doc.strip()}\n"
|
||||
|
||||
if not readme_path.exists() or readme_path.read_text(encoding="utf-8") != content:
|
||||
if (
|
||||
not readme_path.exists()
|
||||
or readme_path.read_text(encoding="utf-8") != content
|
||||
):
|
||||
readme_path.write_text(
|
||||
content,
|
||||
encoding="utf-8",
|
||||
@@ -151,7 +156,7 @@ class MkDocsRenderer:
|
||||
Project model to inspect.
|
||||
|
||||
Returns:
|
||||
Optional[Module]:
|
||||
Module | None:
|
||||
The root `Module` if found, otherwise `None`.
|
||||
"""
|
||||
for module in project.get_all_modules():
|
||||
@@ -183,7 +188,7 @@ class MkDocsRenderer:
|
||||
out_dir (Path):
|
||||
Base directory for generated documentation files.
|
||||
|
||||
module_is_source (bool, optional):
|
||||
module_is_source (bool | None):
|
||||
Whether the module acts as the documentation root directory.
|
||||
"""
|
||||
|
||||
@@ -231,10 +236,7 @@ class MkDocsRenderer:
|
||||
str:
|
||||
Markdown source containing a mkdocstrings directive.
|
||||
"""
|
||||
return (
|
||||
f"# {title}\n\n"
|
||||
f"::: {module_path}\n"
|
||||
)
|
||||
return f"# {title}\n\n" f"::: {module_path}\n"
|
||||
|
||||
def _ensure_root_index(
|
||||
self,
|
||||
@@ -255,8 +257,7 @@ class MkDocsRenderer:
|
||||
|
||||
if not root_index.exists():
|
||||
root_index.write_text(
|
||||
f"# {project.name}\n\n"
|
||||
"## Modules\n\n",
|
||||
f"# {project.name}\n\n" "## Modules\n\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user