TailLoop#

class hugr.ops.TailLoop(just_inputs: list[~hugr.tys.Type], rest: list[~hugr.tys.Type], _just_outputs: list[~hugr.tys.Type] | None = None, extension_delta: list[str] = <factory>)[source]#

Bases: DfParentOp, DataflowOp

Tail controlled loop operation, child dataflow graph iterates while it outputs the first variant of a sum type.

Methods

inner_signature

Inner signature of the child dataflow graph.

name

Name of the operation.

outer_signature

The external signature of this operation.

port_kind

Get the kind of the given port.

port_type

Get the type of the given dataflow port from the signature of the operation.

Attributes

just_outputs

Types that are only outputs of the child graph.

num_out

The number of output ports for this operation.

just_inputs

Types that are only inputs of the child graph.

rest

Types that are appended to both inputs and outputs of the graph.

extension_delta

inner_signature() FunctionType[source]#

Inner signature of the child dataflow graph.

just_inputs: list[Type]#

Types that are only inputs of the child graph.

property just_outputs: list[Type]#

Types that are only outputs of the child graph.

Raises:

IncompleteOp – If the outputs have not been set.

name() str[source]#

Name of the operation.

property num_out: int#

The number of output ports for this operation.

Example

>>> op = Const(val.TRUE)
>>> op.num_out
1
outer_signature() FunctionType[source]#

The external signature of this operation. Defines the valid external connectivity of the node the operation belongs to.

port_kind(port: InPort | OutPort) ValueKind | ConstKind | FunctionKind | CFKind | OrderKind#

Get the kind of the given port.

Example

>>> op = Const(val.TRUE)
>>> op.port_kind(OutPort(Node(0), 0))
ConstKind(Bool)
port_type(port: InPort | OutPort) Type#

Get the type of the given dataflow port from the signature of the operation.

Example

>>> op = Input([tys.Bool])
>>> op.port_type(OutPort(Node(0), 0))
Bool
rest: list[Type]#

Types that are appended to both inputs and outputs of the graph.