# structure

URL: /kida/api/nodes/structure/
Section: nodes
Description: Template structure nodes for Kida AST.

---

> For a complete page index, fetch /kida/llms.txt.

Open LLM text
(/kida/api/nodes/structure/index.txt)

Share with AI

Ask Claude
(https://claude.ai/new?q=Please%20help%20me%20understand%20this%20documentation%3A%20%2Fkida%2Fapi%2Fnodes%2Fstructure%2Findex.txt)

Ask ChatGPT
(https://chatgpt.com/?q=Please%20help%20me%20understand%20this%20documentation%3A%20%2Fkida%2Fapi%2Fnodes%2Fstructure%2Findex.txt)

Ask Gemini
(https://gemini.google.com/app?q=Please%20help%20me%20understand%20this%20documentation%3A%20%2Fkida%2Fapi%2Fnodes%2Fstructure%2Findex.txt)

Ask Copilot
(https://copilot.microsoft.com/?q=Please%20help%20me%20understand%20this%20documentation%3A%20%2Fkida%2Fapi%2Fnodes%2Fstructure%2Findex.txt)

Module

#
`nodes.structure`

Template structure nodes for Kida AST.

18Classes

## Classes

`TemplateContext`

1

▼

Type declaration: {% template page: Page, site: Site %}

Type declaration: {% template page: Page, site: Site %}

#### Attributes

Name
Type
Description

`declarations`

`Sequence[tuple[str, str]]`

—

`Extends`

1

▼

Template inheritance: {% extends "base.html" %}

Template inheritance: {% extends "base.html" %}

#### Attributes

Name
Type
Description

`template`

`Expr`

—

`Block`

6

▼

Named block for inheritance: {% block name %}...{% end %}

Named block for inheritance: {% block name %}...{% end %}

#### Attributes

Name
Type
Description

`name`

`str`

—

`body`

`Sequence[Node]`

—

`scoped`

`bool`

—

`required`

`bool`

—

`fragment`

`bool`

—

`condition`

`Expr | None`

—

`Globals`

1

▼

Setup block for macros/variables available during render_block().

Setup block for macros/variables available during render_block().

#### Attributes

Name
Type
Description

`body`

`Sequence[Node]`

—

`Imports`

1

▼

Imports block — {% imports %}...{% end %}.

Same semantics as {% globals %} but signals intent: the…

Imports block — {% imports %}...{% end %}.

Same semantics as {% globals %} but signals intent: these imports
are for fragment/block scope. Compiles to _globals_setup.

#### Attributes

Name
Type
Description

`body`

`Sequence[Node]`

—

`Include`

3

▼

Include another template: {% include "partial.html" %}

Include another template: {% include "partial.html" %}

#### Attributes

Name
Type
Description

`template`

`Expr`

—

`with_context`

`bool`

—

`ignore_missing`

`bool`

—

`Import`

3

▼

Import functions from template: {% import "funcs.html" as f %}

Import functions from template: {% import "funcs.html" as f %}

#### Attributes

Name
Type
Description

`template`

`Expr`

—

`target`

`str`

—

`with_context`

`bool`

—

`FromImport`

3

▼

Import specific functions: {% from "funcs.html" import button, card %}

Import specific functions: {% from "funcs.html" import button, card %}

#### Attributes

Name
Type
Description

`template`

`Expr`

—

`names`

`Sequence[tuple[str, str | None]]`

—

`with_context`

`bool`

—

`Template`

3

▼

Root node representing a complete template.

Root node representing a complete template.

#### Attributes

Name
Type
Description

`body`

`Sequence[Node]`

—

`extends`

`Extends | None`

—

`context_type`

`TemplateContext | None`

—

`Cache`

4

▼

Fragment caching: {% cache key %}...{% end %}

Fragment caching: {% cache key %}...{% end %}

#### Attributes

Name
Type
Description

`key`

`Expr`

—

`body`

`Sequence[Node]`

—

`ttl`

`Expr | None`

—

`depends`

`Sequence[Expr]`

—

`With`

2

▼

Jinja2-style context manager: {% with x = expr %}...{% end %}

Jinja2-style context manager: {% with x = expr %}...{% end %}

#### Attributes

Name
Type
Description

`targets`

`Sequence[tuple[str, Expr]]`

—

`body`

`Sequence[Node]`

—

`WithConditional`

4

▼

Conditional with block: {% with expr as name %}...{% end %}

Conditional with block: {% with expr as name %}...{% end %}

#### Attributes

Name
Type
Description

`expr`

`Expr`

—

`target`

`Expr`

—

`body`

`Sequence[Node]`

—

`empty`

`Sequence[Node]`

—

`Embed`

3

▼

Embed template with block overrides: {% embed 'card.html' %}...{% end %}

Embed template with block overrides: {% embed 'card.html' %}...{% end %}

#### Attributes

Name
Type
Description

`template`

`Expr`

—

`blocks`

`dict[str, Block]`

—

`with_context`

`bool`

—

`Push`

2

▼

Push content to a named stack: {% push "scripts" %}...{% end %}

Content is collected during render…

Push content to a named stack: {% push "scripts" %}...{% end %}

Content is collected during rendering and emitted where the
corresponding`{% stack "scripts" %}`appears.

#### Attributes

Name
Type
Description

`stack_name`

`str`

—

`body`

`Sequence[Node]`

—

`Stack`

1

▼

Emit collected stack content: {% stack "scripts" %}

Outputs all content pushed to the named stack …

Emit collected stack content: {% stack "scripts" %}

Outputs all content pushed to the named stack via`{% push %}`.

#### Attributes

Name
Type
Description

`stack_name`

`str`

—

`Provide`

3

▼

Provide a value to descendant consumers.

``{% provide key = expr %}...{% endprovide %}`` pushes *v…

Provide a value to descendant consumers.

`{% provide key = expr %}...{% endprovide %}`pushes value onto
a per-key stack in`RenderContext`. Any descendant macro can read it
via`consume("key")`. Stack-based for nesting: inner provides shadow
outer ones for the same key.

#### Attributes

Name
Type
Description

`name`

`str`

—

`value`

`Expr`

—

`body`

`Sequence[Node]`

—

`TransVar`

2

▼

Variable binding in {% trans name=expr %}.

Binds a template expression to a simple name for use in…

Variable binding in {% trans name=expr %}.

Binds a template expression to a simple name for use inside
the trans body as {{ name }}.

#### Attributes

Name
Type
Description

`name`

`str`

—

`expr`

`Expr`

—

`Trans`

4

▼

{% trans %}...{% endtrans %} block.

Represents a translatable string region. The singular field ho…

{% trans %}...{% endtrans %} block.

Represents a translatable string region. The singular field holds
the message ID with %(name)s placeholders. When {% plural %} is
present, the plural field holds the plural form and count_expr
provides the ngettext dispatch value.

#### Attributes

Name
Type
Description

`singular`

`str`

—

`plural`

`str | None`

—

`variables`

`tuple[TransVar, ...]`

—

`count_expr`

`Expr | None`

—
