yobx.builder.light – Graph#

class yobx.builder.light.ProtoType(*values)[source]#

The same code can be used to output a onnx.GraphProto or a onnx.ModelProto.

GRAPH = 2[source]#
MODEL = 3[source]#
class yobx.builder.light.OnnxGraph(opset: int | None = None, opsets: Dict[str, int] | None = None, ir_version: int | None = None, proto_type: ProtoType = ProtoType.MODEL)[source]#

Accumulates nodes, inputs, outputs and initializers needed to build an ONNX graph using a fluent API.

Parameters:
  • opset – main opset version (defaults to onnx_opset_version() - 1)

  • opsets – additional opsets as {domain: version}

  • ir_version – ONNX IR version; only applied to ModelProto outputs

  • proto_typeProtoType - MODEL (default) or GRAPH

Simple example:

from yobx.builder.light import start

onx = start().vin("X").Neg().rename("Y").vout().to_onnx()
cst(value: ndarray, name: str | None = None) Var[source]#

Adds a constant initializer and returns it as a Var.

Parameters:
  • value – constant numpy array

  • name – optional name

Returns:

Var

get_opset(domain: str, exc: bool = True) int[source]#

Returns the opset version for domain.

Parameters:
  • domain – domain name

  • exc – raise an AssertionError if the domain is not registered

Returns:

version or 0 when exc is False and the domain is unknown

get_var(name: str) Var[source]#

Returns the Var corresponding to name.

Parameters:

name – variable name

Returns:

Var

has_name(name: str) bool[source]#

Returns True if name is already registered.

has_opset(domain: str) int[source]#

Returns the opset version for domain, or 0 if not registered.

Parameters:

domain – domain name

Returns:

opset version, or 0 if the domain is unknown

property input_names: List[str]#

Returns the input names.

property main_opset: int#

Returns the opset version for the main ONNX domain ("").

make_constant(value: ndarray, name: str | None = None) TensorProto[source]#

Adds a constant initializer.

Parameters:
  • value – numpy array to store as initializer

  • name – optional name (auto-generated when None)

Returns:

onnx.TensorProto

make_input(name: str, elem_type: int = 1, shape: Any | None = None) ValueInfoProto[source]#

Registers an input tensor and returns its onnx.ValueInfoProto.

Parameters:
  • name – input name (must be unique)

  • elem_type – ONNX element type integer

  • shape – optional shape (list of ints / strings / None for dynamic dims)

Returns:

onnx.ValueInfoProto

make_node(op_type: str, *inputs: Any, domain: str = '', n_outputs: int = 1, output_names: List[str] | None = None, **kwargs: Any) NodeProto[source]#

Creates and registers an ONNX node.

Parameters:
  • op_type – operator type name

  • inputs – input Var instances or numpy arrays

  • domain – operator domain (default "" for standard ops)

  • n_outputs – number of output tensors

  • output_names – explicit output names (auto-generated when None)

  • kwargs – operator attributes

Returns:

onnx.NodeProto

make_output(name: str, elem_type: int = 1, shape: Any | None = None) ValueInfoProto[source]#

Registers a graph output and returns its onnx.ValueInfoProto.

Parameters:
  • name – output name (must already exist as a node output or input)

  • elem_type – ONNX element type integer

  • shape – optional shape

Returns:

onnx.ValueInfoProto

property output_names: List[str]#

Returns the output names.

rename(old_name: str, new_name: str) None[source]#

Records a rename from old_name to new_name. The rename is applied lazily when building the final proto.

Parameters:
  • old_name – existing name

  • new_name – desired new name

set_opset(domain: str, version: int = 1) None[source]#

Registers domain with the given opset version.

If the domain is already registered with the same version this call is a no-op. A version mismatch raises an AssertionError.

Parameters:
  • domain – domain name

  • version – opset version (default: 1)

to_onnx() ModelProto[source]#

Builds and returns the ONNX proto.

Returns:

onnx.GraphProto when proto_type is GRAPH, onnx.ModelProto otherwise

true_name(name: str) str[source]#

Resolves a (possibly renamed) name to its current name.

Parameters:

name – original name

Returns:

current name after applying all renames

unique_name(prefix: str = 'r', value: Any | None = None) str[source]#

Returns a new unique name.

Parameters:
  • prefix – name prefix

  • value – optional object to associate with the name

Returns:

unique name string

vin(name: str, elem_type: int = 1, shape: Any | None = None) Var[source]#

Declares a new graph input and returns a Var.

Parameters:
  • name – input name

  • elem_type – ONNX element type integer (default: TensorProto.FLOAT)

  • shape – optional shape

Returns:

Var