RegisteredOp#
- class hugr.ops.RegisteredOp(*args, **kwargs)[source]#
Bases:
AsExtOp
Base class for operations that are registered with an extension using
Extension.register_op
.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.
Type arguments of the operation.
Attributes
ExtOp
operation that this type represents.The number of output ports for this operation.
Known operation definition.
- 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 #
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(ext_op: ExtOp) Self | None #
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
- classmethod op_def() ext.OpDef [source]#
The
tys.OpDef
for this operation.Used by
ext_op
, so must be deterministic.
- outer_signature() FunctionType #
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)