Module

nodes.functions

Function definition and call nodes for Kida AST.

Classes

DefParam 2 ▼
A single parameter in a {% def %} with optional type annotation.

A single parameter in a {% def %} with optional type annotation.

Attributes

Name Type Description
name str —
annotation str | None —
Def 7 ▼
Function definition: {% def name(params) %}...{% end %}

Function definition: {% def name(params) %}...{% end %}

Attributes

Name Type Description
name str —
params Sequence[DefParam] —
body Sequence[Node] —
defaults Sequence[Expr] —
vararg str | None —
kwarg str | None —

Methods

args 0 tuple[str, ...] ▼
Backward-compat bridge: returns parameter names.
property
def args(self) -> tuple[str, ...]
Returns
tuple[str, ...]
Region 8 ▼
Parameterized renderable unit: {% region name(params) %}...{% end %}. Compiles to BOTH a block fun…

Parameterized renderable unit: {% region name(params) %}...{% end %}.

Compiles to BOTH a block function (for render_block) AND a callable (for {{ name(args) }}). Parameters make it self-contained.

Attributes

Name Type Description
name str —
params Sequence[DefParam] —
body Sequence[Node] —
defaults Sequence[Expr] —
vararg str | None —
kwarg str | None —
condition Expr | None —

Methods

args 0 tuple[str, ...] ▼
Backward-compat bridge: returns parameter names.
property
def args(self) -> tuple[str, ...]
Returns
tuple[str, ...]
Slot 3 ▼
Slot placeholder inside {% def %}: {% slot %} or {% slot name %} With scoped bindings: {% slot nam…

Slot placeholder inside {% def %}: {% slot %} or {% slot name %}

With scoped bindings: {% slot name let:item=expr %}...default...{% end %} Bindings expose data from the def body to the caller's slot content. When a body is present, it serves as default content when no caller overrides this slot.

Attributes

Name Type Description
name str —
bindings tuple[tuple[str, Expr], ...] —
body Sequence[Node] —
SlotBlock 3 ▼
Named slot content inside {% call %}: {% slot name %}...{% end %} With scoped params: {% slot name…

Named slot content inside {% call %}: {% slot name %}...{% end %}

With scoped params: {% slot name let:item, let:index %}...{% end %} Params declare which scoped bindings the slot body consumes.

Attributes

Name Type Description
name str —
body Sequence[Node] —
params tuple[str, ...] —
CallBlock 4 ▼
Call function with slot content: {% call name(args) %}...{% end %}

Call function with slot content: {% call name(args) %}...{% end %}

Attributes

Name Type Description
call Expr —
slots dict[str, Sequence[Node]] —
args Sequence[Expr] —

Methods

body 0 Sequence[Node] ▼
Backward-compat: default slot content.
property
def body(self) -> Sequence[Node]
Returns
Sequence[Node]