Custom#

class hugr.ops.Custom(op_name: str, signature: ~hugr.tys.FunctionType = <factory>, description: str = '', extension: str = '', args: list[~hugr.tys.TypeArg] = <factory>)[source]#

Bases: DataflowOp

Serializable version of non-core dataflow operation defined in an extension.

Methods

check_id

Check if the operation matches the given extension and operation name.

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.

resolve

Resolve the custom operation to an ExtOp.

Attributes

description

extension

num_out

The number of output ports for this operation.

op_name

signature

args

check_id(extension: str, name: str) bool[source]#

Check if the operation matches the given extension and operation name.

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
resolve(registry: ext.ExtensionRegistry) ExtOp | Custom[source]#

Resolve the custom operation to an ExtOp.

If extension or operation is not found, returns itself.