Module pdocs.static
View Source
import pathlib import typing import pdocs.doc import pdocs.render class StaticError(Exception): pass def module_to_path(m: pdocs.doc.Module, extension="html") -> pathlib.Path: """ Calculates the filesystem path for the static output of a given module. """ p = pathlib.Path(*m.name.split(".")) if m.submodules: p /= f"index.{extension}" else: p = p.with_suffix(f".{extension}") return p def path_to_module( roots: typing.Sequence[pdocs.doc.Module], path: pathlib.Path ) -> pdocs.doc.Module: """ Retrieves the matching module for a given path from a module tree. """ if path.suffix == ".html": path = path.with_suffix("") parts = list(path.parts) if parts[-1] == "index": parts = parts[:-1] elif parts[-1] == "index.m": parts[-1] = "index" for root in roots: mod = root.find_ident(".".join(parts)) if isinstance(mod, pdocs.doc.Module): return mod raise StaticError("No matching module for {path}".format(path=path)) def would_overwrite(destination: pathlib.Path, roots: typing.Sequence[pdocs.doc.Module]) -> bool: """Would rendering root to dst overwrite any file?""" if len(roots) > 1: path = destination / "index.html" if path.exists(): return True for root in roots: if destination.joinpath(root.name).exists(): return True return False def html_out( dst: pathlib.Path, roots: typing.Sequence[pdocs.doc.Module], external_links: bool = True, link_prefix: str = "", source: bool = False, ): if len(roots) > 1: dst.mkdir(parents=True, exist_ok=True) p = dst / "index.html" idx = pdocs.render.html_index(roots, link_prefix=link_prefix) p.write_text(idx, encoding="utf-8") for root in roots: for m in root.allmodules(): p = dst.joinpath(module_to_path(m)) p.parent.mkdir(parents=True, exist_ok=True) out = pdocs.render.html_module( m, external_links=external_links, link_prefix=link_prefix, source=source ) p.write_text(out, encoding="utf-8") def md_out( dst: pathlib.Path, roots: typing.Sequence[pdocs.doc.Module], externel_links: bool = True, source: bool = False, ): for root in roots: for m in root.allmodules(): p = dst.joinpath(module_to_path(m, extension="md")) p.parent.mkdir(parents=True, exist_ok=True) out = pdocs.render.text(m, source=source) p.write_text(out, encoding="utf-8")
Functions
html_out
def ( dst: pathlib.Path, roots: Sequence[pdocs.doc.Module], external_links: bool = True, link_prefix: str = '', source: bool = False )
View Source
def html_out( dst: pathlib.Path, roots: typing.Sequence[pdocs.doc.Module], external_links: bool = True, link_prefix: str = "", source: bool = False, ): if len(roots) > 1: dst.mkdir(parents=True, exist_ok=True) p = dst / "index.html" idx = pdocs.render.html_index(roots, link_prefix=link_prefix) p.write_text(idx, encoding="utf-8") for root in roots: for m in root.allmodules(): p = dst.joinpath(module_to_path(m)) p.parent.mkdir(parents=True, exist_ok=True) out = pdocs.render.html_module( m, external_links=external_links, link_prefix=link_prefix, source=source ) p.write_text(out, encoding="utf-8")
md_out
def ( dst: pathlib.Path, roots: Sequence[pdocs.doc.Module], externel_links: bool = True, source: bool = False )
View Source
def md_out( dst: pathlib.Path, roots: typing.Sequence[pdocs.doc.Module], externel_links: bool = True, source: bool = False, ): for root in roots: for m in root.allmodules(): p = dst.joinpath(module_to_path(m, extension="md")) p.parent.mkdir(parents=True, exist_ok=True) out = pdocs.render.text(m, source=source) p.write_text(out, encoding="utf-8")
module_to_path
def ( m: pdocs.doc.Module, extension='html' ) -> pathlib.Path
Calculates the filesystem path for the static output of a given module.
View Source
def module_to_path(m: pdocs.doc.Module, extension="html") -> pathlib.Path: """ Calculates the filesystem path for the static output of a given module. """ p = pathlib.Path(*m.name.split(".")) if m.submodules: p /= f"index.{extension}" else: p = p.with_suffix(f".{extension}") return p
path_to_module
def ( roots: Sequence[pdocs.doc.Module], path: pathlib.Path ) -> pdocs.doc.Module
Retrieves the matching module for a given path from a module tree.
View Source
def path_to_module( roots: typing.Sequence[pdocs.doc.Module], path: pathlib.Path ) -> pdocs.doc.Module: """ Retrieves the matching module for a given path from a module tree. """ if path.suffix == ".html": path = path.with_suffix("") parts = list(path.parts) if parts[-1] == "index": parts = parts[:-1] elif parts[-1] == "index.m": parts[-1] = "index" for root in roots: mod = root.find_ident(".".join(parts)) if isinstance(mod, pdocs.doc.Module): return mod raise StaticError("No matching module for {path}".format(path=path))
would_overwrite
def ( destination: pathlib.Path, roots: Sequence[pdocs.doc.Module] ) -> bool
Would rendering root to dst overwrite any file?
View Source
def would_overwrite(destination: pathlib.Path, roots: typing.Sequence[pdocs.doc.Module]) -> bool: """Would rendering root to dst overwrite any file?""" if len(roots) > 1: path = destination / "index.html" if path.exists(): return True for root in roots: if destination.joinpath(root.name).exists(): return True return False
Classes
StaticError
class ( /, *args, **kwargs )
Common base class for all non-exit exceptions.
View Source
class StaticError(Exception): pass
Ancestors (in MRO)
- builtins.Exception
- builtins.BaseException
Class variables
args
Methods
with_traceback
def ( ... )
Exception.with_traceback(tb) -- set self.traceback to tb and return self.