ExtOp#
- class hugr.ops.ExtOp(_op_def: ext.OpDef, signature: tys.FunctionType | None = None, args: list[tys.TypeArg] = <factory>)[source]#
Bases:
AsExtOp
A non-core dataflow operation defined in an extension.
Methods
Cached signature of the operation, if there is one.
Load from a
ExtOp
operation.Name of the operation.
The
tys.OpDef
for this operation.The external signature of this operation.
Get the kind of the given port.
Get the type of the given dataflow port from the signature of the operation.
to_custom_op
Type arguments of the operation.
Attributes
ExtOp
operation that this type represents.The number of output ports for this operation.
signature
args
- exception InvalidExtOp(msg: str)#
Bases:
Exception
Extension operation does not match the expected type.
- with_traceback()#
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- cached_signature() FunctionType | None [source]#
Cached signature of the operation, if there is one.
Used by
op_def
, so must be deterministic.
- property ext_op: ExtOp#
ExtOp
operation that this type represents.Computed once using
op_def()
type_args()
andtype_args()
. Each of those methods should be deterministic.
- classmethod from_ext(custom: ExtOp) ExtOp [source]#
Load from a
ExtOp
operation.By default assumes the type of cls is a singleton, and compares the result of
to_ext()
with the given ext_op.If successful, returns the singleton, else None.
Non-singleton types should override this method.
- Raises:
InvalidCustomOp – If the given ext_op does not match the expected one for a
given extension/operation name. –
- property num_out: int#
The number of output ports for this operation.
Example
>>> op = Const(val.TRUE) >>> op.num_out 1
- op_def() ext.OpDef [source]#
The
tys.OpDef
for this operation.Used by
ext_op
, so must be deterministic.
- 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)