Module

compiler.analysis_phases

Template-structure validation and block/region discovery for compilation.

Classes

JinjaSetReadFinding 4
One proven Jinja ``if`` assignment read outside its Kida block.

One proven Jinjaifassignment read outside its Kida block.

Attributes

Name Type Description
name str
lineno int
suggestion str
shadow bool
_JinjaSetOrigin 5

Attributes

Name Type Description
name str
lineno int
suggestion str
shadow bool
identity tuple[int, str]
_OriginFlow 2

Attributes

Name Type Description
origin _JinjaSetOrigin | None
parents tuple[_OriginFlow, ...]

Functions

collect_jinja_set_read_findings 1 tuple[JinjaSetReadFindin…
Find proven Jinja ``if`` assignment flow that Kida block scope breaks.
def collect_jinja_set_read_findings(nodes: Sequence[Node]) -> tuple[JinjaSetReadFinding, ...]
Parameters
Name Type Description
nodes Sequence[Node]
Returns
tuple[JinjaSetReadFinding, ...]
collect_template_blocks 3 dict[str, Block | Region]
Validate identifiers and collect all compile-time block/region owners.
def collect_template_blocks(nodes: Sequence[Node], *, template_name: str | None, filename: str | None) -> dict[str, Block | Region]
Parameters
Name Type Description
nodes Sequence[Node]
template_name str | None
filename str | None
Returns
dict[str, Block | Region]
has_unconditional_expressions 1 bool
Return whether top-level nodes can produce unconditional name refs.
def has_unconditional_expressions(body: Sequence[Any]) -> bool
Parameters
Name Type Description
body Sequence[Any]
Returns
bool
collect_variable_references 1 tuple[dict[str, int], se…
Collect unconditional name-reference counts and mutations from Kida AST.
def collect_variable_references(nodes: Any) -> tuple[dict[str, int], set[str]]
Parameters
Name Type Description
nodes Any
Returns
tuple[dict[str, int], set[str]]
analyze_cacheable_names 2 set[str]
Return names safe and profitable to cache as compiler locals.
def analyze_cacheable_names(body_nodes: Sequence[Any], *, local_names: set[str]) -> set[str]
Parameters
Name Type Description
body_nodes Sequence[Any]
local_names set[str]
Returns
set[str]