# callable_plans

URL: /kida/api/compiler/callable_plans/
Section: compiler
Description: Immutable semantic plans for callable lowering.

---

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

Open LLM text
(/kida/api/compiler/callable_plans/index.txt)

Share with AI

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

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

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

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

Module

#
`compiler.callable_plans`

Immutable semantic plans for callable lowering.

6Classes6Functions

## Classes

`CallableParameterPlan`

2

▼

One callable parameter before Python AST assembly.

One callable parameter before Python AST assembly.

#### Attributes

Name
Type
Description

`name`

`str`

—

`annotation`

`str | None`

—

`CallableSignaturePlan`

8

▼

Semantic callable signature shared by def and region lowering.

Semantic callable signature shared by def and region lowering.

#### Attributes

Name
Type
Description

`public_name`

`str`

—

`function_name`

`str`

—

`parameters`

`tuple[CallableParameterPlan, ...]`

—

`parameter_names`

`tuple[str, ...]`

—

`bound_names`

`tuple[str, ...]`

—

`default_parameter_names`

`tuple[str, ...]`

—

`vararg`

`str | None`

—

`kwarg`

`str | None`

—

`CallSlotPlan`

4

▼

One call-block slot before callback AST assembly.

One call-block slot before callback AST assembly.

#### Attributes

Name
Type
Description

`name`

`str`

—

`function_name`

`str`

—

`body`

`tuple[Node, ...]`

—

`delegates_when_nested`

`bool`

—

`CallBlockPlan`

3

▼

Ordered slot callbacks for one call block.

Ordered slot callbacks for one call block.

#### Attributes

Name
Type
Description

`call`

`Expr`

—

`slots`

`tuple[CallSlotPlan, ...]`

—

`slot_function_items`

`tuple[tuple[str, str], ...]`

—

`SlotBindingPlan`

2

▼

One scoped binding passed from a slot placeholder.

One scoped binding passed from a slot placeholder.

#### Attributes

Name
Type
Description

`name`

`str`

—

`expression`

`Expr`

—

`SlotRenderPlan`

4

▼

Slot placeholder semantics before expression and body lowering.

Slot placeholder semantics before expression and body lowering.

#### Attributes

Name
Type
Description

`name`

`str`

—

`bindings`

`tuple[SlotBindingPlan, ...]`

—

`binding_names`

`tuple[str, ...]`

—

`body`

`tuple[Node, ...]`

—

## Functions

`plan_def_signature`

1

`CallableSignaturePlan`

▼

Build the immutable signature plan for a template def.

`def plan_def_signature(node: Def) -> CallableSignaturePlan`

##### Parameters

Name
Type
Description

`node`
`Def`

##### Returns

`CallableSignaturePlan`

`plan_region_signature`

2

`CallableSignaturePlan`

▼

Build the immutable signature plan for a template region.

`def plan_region_signature(node: Region, *, emitted_name: str | None = None) -> CallableSignaturePlan`

##### Parameters

Name
Type
Description

`node`
`Region`

`emitted_name`
`str | None`

Default:`None`

##### Returns

`CallableSignaturePlan`

`_slot_body_is_empty`

1

`bool`

▼

Treat whitespace-only data as an empty slot body.

`def _slot_body_is_empty(body: tuple[Node, ...]) -> bool`

##### Parameters

Name
Type
Description

`body`
`tuple[Node, ...]`

##### Returns

`bool`

`plan_call_block`

1

`CallBlockPlan`

▼

Build ordered immutable callback plans for a call block.

`def plan_call_block(node: CallBlock) -> CallBlockPlan`

##### Parameters

Name
Type
Description

`node`
`CallBlock`

##### Returns

`CallBlockPlan`

`_plan_call_slot`

2

`CallSlotPlan`

▼

Build one slot plan after freezing its body sequence.

`def _plan_call_slot(name: str, body: tuple[Node, ...]) -> CallSlotPlan`

##### Parameters

Name
Type
Description

`name`
`str`

`body`
`tuple[Node, ...]`

##### Returns

`CallSlotPlan`

`plan_slot_render`

1

`SlotRenderPlan`

▼

Build the immutable binding and body plan for a slot placeholder.

`def plan_slot_render(node: Slot) -> SlotRenderPlan`

##### Parameters

Name
Type
Description

`node`
`Slot`

##### Returns

`SlotRenderPlan`
