httk.web.templating

Submodules

Classes

TemplateEngine

Base class for protocol classes.

TemplateRenderInput

HttkCompatTemplateEngine

Legacy-oriented template resolution for old httkweb projects.

JinjaTemplateEngine

Package Contents

class httk.web.templating.TemplateEngine[source]

Bases: Protocol

Base class for protocol classes.

Protocol classes are defined as:

class Proto(Protocol):
    def meth(self) -> int:
        ...

Such classes are primarily used with static type checkers that recognize structural subtyping (static duck-typing).

For example:

class C:
    def meth(self) -> int:
        return 0

def func(x: Proto) -> int:
    return x.meth()

func(C())  # Passes static type check

See PEP 544 for details. Protocol classes decorated with @typing.runtime_checkable act as simple-minded runtime protocols that check only the presence of given attributes, ignoring their type signatures. Protocol classes can be generic, they are defined as:

class GenProto[T](Protocol):
    def meth(self) -> T:
        ...
render(render_input: TemplateRenderInput) str[source]
render_fragment(*, template_name: str, context: dict[str, object]) str | None[source]
class httk.web.templating.TemplateRenderInput[source]
content_html: str
template_name: str | None
base_template_name: str | None
context: dict[str, object]
class httk.web.templating.HttkCompatTemplateEngine(template_dir: pathlib.Path)[source]

Bases: httk.web.templating.jinja2_engine.JinjaTemplateEngine

Legacy-oriented template resolution for old httkweb projects.

The compatibility engine keeps Jinja rendering but prioritizes legacy template suffixes so old .httkweb.html files resolve first.

render(render_input: httk.web.templating.base.TemplateRenderInput) str[source]
render_fragment(*, template_name: str, context: dict[str, object]) str | None[source]
class httk.web.templating.JinjaTemplateEngine(template_dir: pathlib.Path, *, template_suffixes: tuple[str, Ellipsis] = TEMPLATE_SUFFIXES)[source]
template_dir
template_suffixes = ('.html.j2', '.jinja', '.j2', '.html', '.httkweb.html')
render(render_input: httk.web.templating.base.TemplateRenderInput) str[source]
render_fragment(*, template_name: str, context: dict[str, object]) str | None[source]