contracts.rules_unreachable_blocks

Page actions AI-ready formats and sharing
Open LLM text
Share with AI
Ask Claude Ask ChatGPT Ask Gemini Ask Copilot

Unreachable block detection for filesystem page templates.

Unreachable block detection for filesystem page templates.

contracts.rules_unreachable_blocks

Name Type Default Description
type
qualified_name
element_type
description
source_file
line_number
is_autodoc
autodoc_element
_autodoc_template
_autodoc_url_path
_autodoc_page_type
title
doc_content_hash

Symbols on this page

_walk_block_parents
function
def _walk_block_parents(nodes: Sequence[Node], enclosing: str | None, parent_map: dict[str, str | None], fragment_names: set[str]) -> None

Map each block/region name to its nearest enclosing block/region name.

Fragment block names are collected infragment_namesso the caller can skip them —{% fragment %}blocks are swap-only and never participate in full-page composition, so they are reachable by definition via render_block / render_fragment.

Parameters

Name Type Default Description
nodes Sequence[Node]
enclosing str | None
parent_map dict[str, str | None]
fragment_names set[str]
_block_is_reachable
function
def _block_is_reachable(block_name: str, roots: set[str], parent_map: dict[str, str | None]) -> bool

True if block_name is a composition root or nested under one.

Parameters

Name Type Default Description
block_name str
roots set[str]
parent_map dict[str, str | None]
check_unreachable_blocks
function
def check_unreachable_blocks(page_leaf_templates: set[str], kida_env: Environment | None, *, extras: dict[str, Any] | None = None) -> list[ContractIssue]

Detect blocks in page templates thatrender_with_blockscannot reach.

When Chirp composes filesystem pages into layouts, only thecontent slot (fed from the rendered page block subtree) participates. Blocks that are siblings of the composition roots — for examplepage_scriptsnext topage_root— are never rendered and are silently dropped.

Parameters

Name Type Default Description
page_leaf_templates set[str]
kida_env Environment | None
extras dict[str, Any] | None None

View source · /home/runner/work/chirp/chirp/site/../src/chirp/contracts/rules_unreachable_blocks.py:1