vibe.static_analysis.core

Static Template Analysis Core Functions (Flask-Independent).

Orchestrates the static analysis of Jinja templates against their definitions. Includes functions to: - Analyze dependencies between variables (analyze_template_dependencies). - Generate a validation context using ValidatedValue objects. - Perform the main static check (static_check_template) by running various AST visitors. Accepts configuration explicitly.

analyze_template_dependencies

analyze_template_dependencies(ast: Template, question_keys: set[str]) -> dict[str, str | None]

Analyzes the Abstract Syntax Tree (AST) of a template content string.

to determine conditional dependencies between known question variables.

Parameters:
  • ast (Template) –

    The AST content of the Jinja template.

  • question_keys (set[str]) –

    An iterable of known question variable names.

Returns:
  • dict[str, str | None]

    A dictionary mapping child variable names to their first encountered

  • dict[str, str | None]

    conditional parent variable name (or None if first seen outside a relevant 'if').

generate_validation_context

generate_validation_context(template: TemplateData, reporter: Callable[[ValidationIssue], None], session_context: dict[str, Any] | None = None, question_definitions: dict[str, Any] | None = None) -> NestedValue

Create a nested NestedValue context with ValidatedValue instances at the leaves.

This context includes: 1. Merged session_context. 2. Placeholders for session_context_definitions (from definition-only components). 3. ValidatedValues for the host template's questions. 4. Namespaced ValidatedValues for all internal questions of all components inserted by the host template.

generate_component_validation_context

generate_component_validation_context(template: TemplateData, prefix: str, context_root: NestedValue, reporter: Callable[[ValidationIssue], None]) -> None

Populate component input/question placeholders into the validation context.

Recursively walks component instances to install probe placeholders so that component templates can be safely rendered during static checks.

static_check_template

static_check_template(ast: Template, template: TemplateData, question_definitions: dict[str, Any], session_context: dict[str, Any], alias: str = '') -> tuple[list[ValidationIssue], dict[str, str | None], UsageMap]

Perform multiple static checks on a template (or component) AST.

Collect ALL checking errors.

Parameters:
  • ast (Template) –

    The template content as an AST

  • template (TemplateData) –

    Template metadata for the current bundle

  • question_definitions (dict) –

    Definitions keyed by full path.

  • session_context (dict) –

    The default session context to merge for the check.

  • alias (str, default: '' ) –

    Optional alias prefix for component checks

Raises:

check_component_integration

check_component_integration(template: TemplateData, question_definitions: dict[str, Any], session_context: dict[str, Any], loaded_components_map: dict[str, ComponentTemplateData], collected_issues: list[ValidationIssue], reporter: Callable[[ValidationIssue], None], validation_context: NestedValue, inst_args: ComponentInstanceArgs) -> None

Cross-check host/component integration for presence, inputs, and scoping.

check_component_aliases

check_component_aliases(template: TemplateData, component_instances_ast: list[ComponentInstanceArgs], reporter: Callable[[ValidationIssue], None]) -> None

Validate that explicit component aliases are unique within the host template.