astx.templates

astx.templates

Source: packages/astx/src/astx/templates.py

title: ASTx template AST helpers.
summary: >-
  Provide semantic-facing template metadata for compile-time specialization
  without requiring parser-level syntax support.

Functions

set_template_params(node: astx.AST, params: Iterable[TemplateParam]) -> None

title: Attach template parameters to one AST node.
parameters:
  node:
    type: astx.AST
  params:
    type: Iterable[TemplateParam]

get_template_params(node: astx.AST) -> tuple[TemplateParam, ...]

title: Return the template parameters attached to one AST node.
parameters:
  node:
    type: astx.AST
returns:
  type: tuple[TemplateParam, Ellipsis]

is_template_node(node: astx.AST) -> bool

title: Return whether one AST node carries template parameters.
parameters:
  node:
    type: astx.AST
returns:
  type: bool

set_template_args(node: astx.AST, args: Iterable[astx.DataType] | None) -> None

title: Attach explicit template arguments to one call-like AST node.
parameters:
  node:
    type: astx.AST
  args:
    type: Iterable[astx.DataType] | None

get_template_args(node: astx.AST) -> tuple[astx.DataType, ...] | None

title: Return the explicit template arguments attached to one AST node.
parameters:
  node:
    type: astx.AST
returns:
  type: tuple[astx.DataType, Ellipsis] | None

mark_template_specialization(node: astx.AST, specialization_name: str) -> None

title: Mark one AST node as a generated template specialization.
parameters:
  node:
    type: astx.AST
  specialization_name:
    type: str

template_specialization_name(node: astx.AST) -> str | None

title: Return the generated specialization name for one AST node.
parameters:
  node:
    type: astx.AST
returns:
  type: str | None

is_template_specialization(node: astx.AST) -> bool

title: Return whether one AST node is a generated specialization.
parameters:
  node:
    type: astx.AST
returns:
  type: bool

add_generated_template_node(module: astx.Module, node: astx.AST) -> None

title: Attach one generated template node to a module.
parameters:
  module:
    type: astx.Module
  node:
    type: astx.AST

clear_generated_template_nodes(module: astx.Module) -> None

title: Remove generated template nodes attached to one module.
parameters:
  module:
    type: astx.Module

generated_template_nodes(module: astx.Module) -> tuple[astx.AST, ...]

title: Return the generated template nodes attached to a module.
parameters:
  module:
    type: astx.Module
returns:
  type: tuple[astx.AST, Ellipsis]

Classes

TemplateParam

title: One compile-time template parameter.
summary: >-
  Describe one bounded template variable attached to a function or method
  declaration.
attributes:
  name:
    type: str
  bound:
    type: astx.DataType
  loc:
    type: astx.SourceLocation