diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 6388799..103b30b 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -32,9 +32,6 @@ jobs: - name: Install docs (and dev) dependencies run: | uv sync --extra docs - - - name: Generate API reference pages (real files) - run: uv run python scripts/generate_api_docs.py - name: Build site run: uv run mkdocs build --strict diff --git a/docs/_scripts/gen_api.py b/docs/_scripts/gen_api.py index 1ffb2a2..4c54fbe 100644 --- a/docs/_scripts/gen_api.py +++ b/docs/_scripts/gen_api.py @@ -4,27 +4,27 @@ import mkdocs_gen_files # ------------------------------------------------------------------- -# Konfiguration -# Falls du den Namen kennst, trag ihn hier ein; None => Auto-Detect. -PACKAGE: str | None = "fastflowtransform" # <- bei Bedarf anpassen oder auf None setzen +# Configuration +# If you already know the package name, set it here; None => auto-detect. +PACKAGE: str | None = "fastflowtransform" # adjust as needed or set to None SRC_DIR = Path("src") # ------------------------------------------------------------------- def detect_package() -> tuple[str, Path]: """ - Liefert (package_name, package_root_path). - Prüft zuerst src-Layout (src//__init__.py), dann Flat-Layout (/__init__.py). + Returns (package_name, package_root_path). + Checks src layout first (src//__init__.py), then flat layout (/__init__.py). """ candidates: list[tuple[str, str, Path]] = [] - # src-Layout + # src layout if SRC_DIR.exists(): for p in SRC_DIR.iterdir(): if p.is_dir() and (p / "__init__.py").exists(): candidates.append(("src", p.name, p)) - # Flat-Layout (im Repo-Root) + # Flat layout (at the repository root) root = Path(".") ignore = { "docs", @@ -48,43 +48,43 @@ def detect_package() -> tuple[str, Path]: if name == PACKAGE: return name, path raise AssertionError( - f'Paket "{PACKAGE}" nicht gefunden. Erwartet z. B. src/{PACKAGE}/ oder {PACKAGE}/ mit __init__.py' + f'Package "{PACKAGE}" not found. Expected e.g. src/{PACKAGE}/ or {PACKAGE}/ with __init__.py' ) unique = {(name, str(path)) for _, name, path in candidates} if not unique: raise AssertionError( - "Kein Paket gefunden. Lege src//__init__.py an oder setze PACKAGE im Skript." + "No package found. Create src//__init__.py or set PACKAGE in the script." ) if len(unique) > 1: formatted = "\n".join(f"- {name} @ {path}" for name, path in sorted(unique)) raise AssertionError( - f"Mehrere mögliche Pakete gefunden:\n{formatted}\nSetze PACKAGE explizit im Skript." + f"Multiple possible packages found:\n{formatted}\nSet PACKAGE explicitly in the script." ) name, path_str = next(iter(unique)) return name, Path(path_str) package, pkg_root = detect_package() -print(f"[gen_api] Paket erkannt: {package} | Pfad: {pkg_root}") +print(f"[gen_api] Detected package: {package} | Path: {pkg_root}") generated_files: list[tuple[str, str]] = [] # (module, doc_file) for path in sorted(pkg_root.rglob("*.py")): - # Rausfiltern + # Filter out unwanted cache directories if any(part in {"__pycache__", ".pytest_cache"} for part in path.parts): continue rel = path.with_suffix("").relative_to(pkg_root) parts = list(rel.parts) - # Modulname bestimmen + # Determine module name if path.name == "__init__.py": module = package + ("" if not parts[:-1] else "." + ".".join(parts[:-1])) else: module = package + "." + ".".join(parts) - # Zielpfad (mkdocs_gen_files.open legt Ordner an) + # Target path (mkdocs_gen_files.open creates directories) doc_file = f"reference/{module.replace('.', '/')}.md" generated_files.append((module, doc_file)) @@ -96,7 +96,7 @@ def detect_package() -> tuple[str, Path]: f.write(" filters:\n") f.write(' - "!^_"\n') -# Index-Seite erzeugen +# Generate index page index_path = "reference/index.md" with mkdocs_gen_files.open(index_path, "w") as f: f.write("# API Reference\n\n")