from pathlib import Path from config import STORAGE_DIR, PROJECTS_DIR, PROJECTS_CACHE_DIR def safe_basename(topic: str, format_name: str) -> str: clean = topic.replace("/", "_").replace("\x00", "") return f"{clean} - {format_name}" def final_paths(topic: str, format_name: str) -> tuple[Path, Path]: base = safe_basename(topic, format_name) return STORAGE_DIR / "html" / f"{base}.html", STORAGE_DIR / "pdf" / f"{base}.pdf" def temp_paths(guide_id: str) -> tuple[Path, Path]: return STORAGE_DIR / "html" / f"{guide_id}.tmp.html", STORAGE_DIR / "pdf" / f"{guide_id}.tmp.pdf" def project_dir(name: str) -> Path: return PROJECTS_DIR / name def project_cache_path(name: str) -> Path: return PROJECTS_CACHE_DIR / f"{name}.md"