nemoguardrails.colang.v2_x.lang.colang_ast

View as Markdown

The data types that are used when constructing the Abstract Syntax Tree after parsing.

Module Contents

Classes

NameDescription
Abort-
Assignment-
BeginScopeDefines the start of a new scope in a flow to keep track of all started actions/flows.
Break-
CatchPatternFailureSet the pattern failure catcher to catch a failing pattern and forward it to the specified label.
Continue-
DecoratorThe definition for a flow decorator.
ElementBase class for all elements in the AST.
ElementsElement that encapsulates multiple sub-elements.
EndScopeDefines the end of a scope in a flow that will stop all active actions/flows that have been started
FlowElement that represents a flow.
FlowParamDefThe definition for a flow parameter.
FlowReturnMemberDefThe definition for a flow return member.
ForkHeadElement to fork the current head into multiple heads.
GlobalDeclare a global variable.
GotoElement for navigating to a label.
If-
ImportThe definition for an import statement.
Label-
LogLog a message.
MergeHeadsMerge heads based on uid from same flow.
Meta-
PrintPrint a message.
PrioritySet the priority of the flow in terms of action resolution.
Return-
SourceInformation about the source of an element.
SpecElement that represents a spec.
SpecAndA conjunction of specs.
SpecOpAn operation performed on a spec.
SpecOpTypeAll internal event types.
SpecOrA disjunction of spects.
SpecTypeThe type of a spec.
ValueElement that contains a value.
WaitForHeadsWait for a number of heads.
When-
While-

Functions

NameDescription
_make_hashableMake all subtypes of Element hashable.

Data

ElementType

SpecElementType

API

class nemoguardrails.colang.v2_x.lang.colang_ast.Abort(
_type: str = 'abort',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None
)
Dataclass

Bases: Element

_type
str = 'abort'
class nemoguardrails.colang.v2_x.lang.colang_ast.Assignment(
_type: str = 'assignment',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
key: str = '',
expression: str = ''
)
Dataclass

Bases: Element

_type
str = 'assignment'
expression
str = ''
key
str = ''
class nemoguardrails.colang.v2_x.lang.colang_ast.BeginScope(
_type: str = '_begin_scope',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
name: str = ''
)
Dataclass

Bases: Element

Defines the start of a new scope in a flow to keep track of all started actions/flows.

_type
str = '_begin_scope'
name
str = ''
class nemoguardrails.colang.v2_x.lang.colang_ast.Break(
_type: str = 'break',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
label: typing.Optional[str] = None
)
Dataclass

Bases: Element

_type
str = 'break'
label
Optional[str] = None
class nemoguardrails.colang.v2_x.lang.colang_ast.CatchPatternFailure(
_type: str = '_catch_pattern_failure',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
label: typing.Optional[str] = None
)
Dataclass

Bases: Element

Set the pattern failure catcher to catch a failing pattern and forward it to the specified label. If the label is not set the failure will be propagated to the parent flow.

_type
str = '_catch_pattern_failure'
label
Optional[str] = None
class nemoguardrails.colang.v2_x.lang.colang_ast.Continue(
_type: str = 'continue',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
label: typing.Optional[str] = None
)
Dataclass

Bases: Element

_type
str = 'continue'
label
Optional[str] = None
class nemoguardrails.colang.v2_x.lang.colang_ast.Decorator(
_type: str = 'decorator',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
name: str = '',
parameters: dict = dict()
)
Dataclass

Bases: Element

The definition for a flow decorator.

Explicit typing is not yet supported.

_type
str = 'decorator'
name
str = ''
parameters
dict = field(default_factory=dict)
class nemoguardrails.colang.v2_x.lang.colang_ast.Element(
_type: str,
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None
)
Dataclass

Base class for all elements in the AST.

_source
Optional[Source] = None
_type
str
nemoguardrails.colang.v2_x.lang.colang_ast.Element.__eq__(
other
)
nemoguardrails.colang.v2_x.lang.colang_ast.Element.__getitem__(
key
)
nemoguardrails.colang.v2_x.lang.colang_ast.Element.get(
key,
default_value = None
)

Getter for backward compatibility with dict elements.

TODO: to remove at some point.

nemoguardrails.colang.v2_x.lang.colang_ast.Element.hash()

Return the hash for the current object.

Dataclass

Bases: Element

Element that encapsulates multiple sub-elements.

_type
str = 'value'
elements
List[Element] = field(default_factory=list)
class nemoguardrails.colang.v2_x.lang.colang_ast.EndScope(
_type: str = '_end_scope',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
name: str = ''
)
Dataclass

Bases: Element

Defines the end of a scope in a flow that will stop all active actions/flows that have been started within that scope.

_type
str = '_end_scope'
name
str = ''
class nemoguardrails.colang.v2_x.lang.colang_ast.Flow(
_type: str = 'flow',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
name: str = '',
decorators: typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.Decorator] = list(),
parameters: typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.FlowParamDef] = list(),
return_members: typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.FlowReturnMemberDef] = list(),
elements: typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.Element] = list(),
source_code: typing.Optional[str] = None,
file_info: typing.Dict[str, typing.Any] = dict()
)
Dataclass

Bases: Element

Element that represents a flow.

_type
str = 'flow'
decorators
List[Decorator] = field(default_factory=list)
elements
List[Element] = field(default_factory=list)
file_info
Dict[str, Any] = field(default_factory=dict)
name
str = ''
parameters
List[FlowParamDef] = field(default_factory=list)
return_members
List[FlowReturnMemberDef] = field(default_factory=list)
source_code
Optional[str] = None
class nemoguardrails.colang.v2_x.lang.colang_ast.FlowParamDef(
name: str,
default_value_expr: typing.Optional[str] = None
)
Dataclass

The definition for a flow parameter.

Explicit typing is not yet supported.

default_value_expr
Optional[str] = None
name
str
class nemoguardrails.colang.v2_x.lang.colang_ast.FlowReturnMemberDef(
name: str,
default_value_expr: typing.Optional[str] = None
)
Dataclass

The definition for a flow return member.

Explicit typing is not yet supported.

default_value_expr
Optional[str] = None
name
str
class nemoguardrails.colang.v2_x.lang.colang_ast.ForkHead(
_type: str = '_fork',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
fork_uid: str = '',
labels: typing.List[str] = list()
)
Dataclass

Bases: Element

Element to fork the current head into multiple heads.

For each label a new head.

_type
str = '_fork'
fork_uid
str = ''
labels
List[str] = field(default_factory=list)
class nemoguardrails.colang.v2_x.lang.colang_ast.Global(
_type: str = '_global',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
name: str = ''
)
Dataclass

Bases: Element

Declare a global variable.

_type
str = '_global'
name
str = ''
class nemoguardrails.colang.v2_x.lang.colang_ast.Goto(
_type: str = 'goto',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
label: str = '',
expression: str = 'True'
)
Dataclass

Bases: Element

Element for navigating to a label.

If the expression is not True, just skips to the next element.

_type
str = 'goto'
expression
str = 'True'
label
str = ''
class nemoguardrails.colang.v2_x.lang.colang_ast.If(
_type: str = 'if',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
expression: str = '',
then_elements: typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.ElementType] = list(),
else_elements: typing.Optional[typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.ElementType]] = None
)
Dataclass

Bases: Element

_type
str = 'if'
else_elements
Optional[List[ElementType]] = None
expression
str = ''
then_elements
List[ElementType] = field(default_factory=list)
class nemoguardrails.colang.v2_x.lang.colang_ast.Import(
_type: str = 'import',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
path: typing.Optional[str] = None,
package: typing.Optional[str] = None
)
Dataclass

Bases: Element

The definition for an import statement.

We support both “path mode” and “package” mode.

import core import rag.advanced import “some-spec/some-sub-package”

_type
str = 'import'
package
Optional[str] = None
path
Optional[str] = None
class nemoguardrails.colang.v2_x.lang.colang_ast.Label(
_type: str = 'label',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
name: str = ''
)
Dataclass

Bases: Element

_type
str = 'label'
name
str = ''
class nemoguardrails.colang.v2_x.lang.colang_ast.Log(
_type: str = '_log',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
info: str = ''
)
Dataclass

Bases: Element

Log a message.

_type
str = '_log'
info
str = ''
class nemoguardrails.colang.v2_x.lang.colang_ast.MergeHeads(
_type: str = '_merge',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
fork_uid: str = ''
)
Dataclass

Bases: Element

Merge heads based on uid from same flow.

Only one head will advance from this element.

_type
str = '_merge'
fork_uid
str = ''
class nemoguardrails.colang.v2_x.lang.colang_ast.Meta(
_type: str = 'meta',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
meta: dict = dict()
)
Dataclass

Bases: Element

_type
str = 'meta'
meta
dict = field(default_factory=dict)
class nemoguardrails.colang.v2_x.lang.colang_ast.Print(
_type: str = '_print',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
info: str = ''
)
Dataclass

Bases: Element

Print a message.

_type
str = '_print'
info
str = ''
class nemoguardrails.colang.v2_x.lang.colang_ast.Priority(
_type: str = '_priority',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
priority_expr: str = '1.0'
)
Dataclass

Bases: Element

Set the priority of the flow in terms of action resolution.

_type
str = '_priority'
priority_expr
str = '1.0'
class nemoguardrails.colang.v2_x.lang.colang_ast.Return(
_type: str = 'return',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
expression: typing.Optional[str] = None
)
Dataclass

Bases: Element

_type
str = 'return'
expression
Optional[str] = None
class nemoguardrails.colang.v2_x.lang.colang_ast.Source(
line: int,
column: int,
start_pos: int,
end_pos: int
)
Dataclass

Information about the source of an element.

column
int
end_pos
int
line
int
start_pos
int
class nemoguardrails.colang.v2_x.lang.colang_ast.Spec(
_type: str = 'spec',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
name: typing.Optional[str] = None,
spec_type: nemoguardrails.colang.v2_x.lang.colang_ast.SpecType = SpecType.EVENT,
arguments: typing.Dict[str, typing.Any] = dict(),
members: typing.Optional[typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.Spec]] = None,
var_name: typing.Optional[str] = None,
ref: typing.Optional[typing.Union[str, dict]] = None
)
Dataclass

Bases: Element

Element that represents a spec.

A spec can represent a flow, an action or an event. Currently, we will determine at runtime what the spec is.

A spec is either specified directly through a name and arguments, or through a variable. In both cases, additional members can be accessed, e.g., .Finished().

_type
str = 'spec'
arguments
Dict[str, Any] = field(default_factory=dict)
members
Optional[List[Spec]] = None
name
Optional[str] = None
ref
Optional[Union[str, dict]] = field(default=None)
spec_type
SpecType = SpecType.EVENT
var_name
Optional[str] = None
class nemoguardrails.colang.v2_x.lang.colang_ast.SpecAnd(
_type: str = 'spec_and',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
specs: typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.Spec] = list()
)
Dataclass

Bases: Element

A conjunction of specs.

_type
str = 'spec_and'
specs
List[Spec] = field(default_factory=list)
class nemoguardrails.colang.v2_x.lang.colang_ast.SpecOp(
_type: str = 'spec_op',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
op: str = '',
spec: typing.Union[nemoguardrails.colang.v2_x.lang.colang_ast.Spec, dict] = Spec(),
return_var_name: typing.Optional[str] = None,
info: dict = dict()
)
Dataclass

Bases: Element

An operation performed on a spec.

Valid operations are: send, match, start, stop, await, activate, deactivate.

_type
str = 'spec_op'
info
dict = field(default_factory=dict)
op
str = ''
return_var_name
Optional[str] = None
spec
Union[Spec, dict] = field(default_factory=Spec)
class nemoguardrails.colang.v2_x.lang.colang_ast.SpecOpType

Bases: enum.Enum

All internal event types.

ACTIVATE
= 'activate'
AWAIT
= 'await'
DEACTIVATE
= 'deactivate'
MATCH
= 'match'
NONE
= 'none'
SEND
= 'send'
START
= 'start'
STOP
= 'stop'
class nemoguardrails.colang.v2_x.lang.colang_ast.SpecOr(
_type: str = 'spec_or',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
specs: typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.Spec] = list()
)
Dataclass

Bases: Element

A disjunction of spects.

_type
str = 'spec_or'
specs
List[Spec] = field(default_factory=list)
class nemoguardrails.colang.v2_x.lang.colang_ast.SpecType

Bases: enum.Enum

The type of a spec.

ACTION
= 'action'
EVENT
= 'event'
FLOW
= 'flow'
REFERENCE
= 'reference'
class nemoguardrails.colang.v2_x.lang.colang_ast.Value(
_type: str = 'value',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
value: typing.Any = None
)
Dataclass

Bases: Element

Element that contains a value.

_type
str = 'value'
class nemoguardrails.colang.v2_x.lang.colang_ast.WaitForHeads(
_type: str = '_wait_for_heads',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
number: int = 1
)
Dataclass

Bases: Element

Wait for a number of heads.

Once enough heads have reached this element they will be merged and only one head will advance.

_type
str = '_wait_for_heads'
number
int = 1
class nemoguardrails.colang.v2_x.lang.colang_ast.When(
_type: str = 'when',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
when_specs: typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.SpecElementType] = list(),
then_elements: typing.List[typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.ElementType]] = list(),
else_elements: typing.Optional[typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.ElementType]] = None
)
Dataclass

Bases: Element

_type
str = 'when'
else_elements
Optional[List[ElementType]] = None
then_elements
List[List[ElementType]] = field(default_factory=list)
when_specs
List[SpecElementType] = field(default_factory=list)
class nemoguardrails.colang.v2_x.lang.colang_ast.While(
_type: str = 'while',
_source: typing.Optional[nemoguardrails.colang.v2_x.lang.colang_ast.Source] = None,
expression: str = '',
elements: typing.List[nemoguardrails.colang.v2_x.lang.colang_ast.ElementType] = list()
)
Dataclass

Bases: Element

_type
str = 'while'
elements
List[ElementType] = field(default_factory=list)
expression
str = ''
nemoguardrails.colang.v2_x.lang.colang_ast._make_hashable(
obj: typing.Any
) -> typing.Any

Make all subtypes of Element hashable.

nemoguardrails.colang.v2_x.lang.colang_ast.ElementType = Union[Element, dict]
nemoguardrails.colang.v2_x.lang.colang_ast.SpecElementType = Union[Spec, SpecAnd, SpecOr]