app.model.CompileRequest

This module defines the data models for compile requests. It provides classes to model metadata, node data, and the complete compile request.

Module Contents

class app.model.CompileRequest.OptimizeSettings

Abstract base class providing optimization settings.

optimizeWidth: int | None

If set, enables circuit width optimization with a user-defined priority.

optimizeDepth: int | None

If set, enables circuit depth optimization with a user-defined priority.

class app.model.CompileRequest.MetaData(/, **data: Any)

Contains metadata for a compile request, including versioning and optimization preferences.

Parameters:

data (Any)

version: str

Version identifier of the project or model.

name: str

Name of the quantum circuit or model.

description: str

Human-readable description of the model.

author: str

Author of the model.

optimizeWidth: Annotated[int, Field(gt=0)] | None = None

Optimization setting for reducing circuit width (optional).

optimizeDepth: Annotated[int, Field(gt=0)] | None = None

Optimization setting for reducing circuit depth (optional).

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.BaseNode(/, **data: Any)

Abstract base class for all node types used in a compile request.

Parameters:

data (Any)

id: str

Unique identifier for the node.

label: str | None = None

Optional label for the node used for display purposes.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.ImplementationNode(/, **data: Any)

Node containing a user-defined OpenQASM implementation.

Parameters:

data (Any)

implementation: str

Raw OpenQASM code associated with the node.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.EncodeValueNode(/, **data: Any)

Node representing quantum state encoding from classical values.

Parameters:

data (Any)

encoding: Literal['amplitude', 'angle', 'basis', 'custom', 'matrix', 'schmidt']

Encoding scheme used (e.g. “amplitude”, “basis”, etc.).

bounds: int = None

Indicates whether values are clamped (0 or 1).

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.PrepareStateNode(/, **data: Any)

Node for preparing known quantum states like Bell or GHZ.

Parameters:

data (Any)

quantumState: Literal['ϕ+', 'ϕ-', 'ψ+', 'ψ-', 'custom', 'ghz', 'uniform', 'w']

Type of quantum state to prepare (e.g. “ψ+”, “ghz”).

size: int = None

Number of qubits involved in state preparation.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.SplitterNode(/, **data: Any)

Node that splits qubits into multiple branches.

Parameters:

data (Any)

numberOutputs: int = None

Number of output branches created.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.MergerNode(/, **data: Any)

Node that merges multiple input branches into a single stream.

Parameters:

data (Any)

numberInputs: int = None

Number of input branches merged.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.MeasurementNode(/, **data: Any)

Node performing quantum measurement on specified qubit indices.

Parameters:

data (Any)

indices: list[Annotated[int, Field(ge=0)]]

List of qubit indices to measure.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.QubitNode(/, **data: Any)

Node representing qubit allocation.

Parameters:

data (Any)

size: int = None

Number of qubits to allocate.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.GateNode(/, **data: Any)

Node representing application of a quantum gate.

Parameters:

data (Any)

gate: app.openqasm3.stdgates.OneQubitGate | app.openqasm3.stdgates.TwoQubitGate | app.openqasm3.stdgates.ThreeQubitGate | Literal['cnot', 'toffoli']

The gate to apply (e.g., “x”, “cnot”, etc.).

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.ParameterizedGateNode(/, **data: Any)

Node representing a gate that requires a parameter (e.g., angle rotation).

Parameters:

data (Any)

gate: app.openqasm3.stdgates.OneQubitGateWithAngle | app.openqasm3.stdgates.TwoQubitGateWithParam | app.openqasm3.stdgates.TwoQubitGateWithAngle

The parameterized gate to apply.

parameter: float

Value of the gate’s parameter.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.BitLiteralNode(/, **data: Any)

Node representing a fixed classical bit value (0 or 1).

Parameters:

data (Any)

value: Literal[0, 1]

Bit value.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.BoolLiteralNode(/, **data: Any)

Node representing a boolean literal.

Parameters:

data (Any)

value: bool

Boolean value.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.IntLiteralNode(/, **data: Any)

Node representing an integer literal.

Parameters:

data (Any)

bitSize: int = None

“Bit size of the integer (optional).

value: int

Integer value.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.FloatLiteralNode(/, **data: Any)

Node representing a floating-point literal.

Parameters:

data (Any)

bitSize: int = None

Bit size of the float (optional).

value: float

Float value.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.AncillaNode(/, **data: Any)

Node allocating ancillary qubits for temporary computation.

Parameters:

data (Any)

size: int = None

Number of ancilla qubits allocated.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.NestedBlock(/, **data: Any)

Represents a subgraph or code block used inside control flow nodes.

Parameters:

data (Any)

nodes: list[NestableNode]

List of nodes within the block.

edges: list[Edge]

Connections between the nodes.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.IfThenElseNode(/, **data: Any)

Node representing conditional execution.

Parameters:

data (Any)

condition: str

Condition expression used to branch execution.

thenBlock: NestedBlock

Code block executed if the condition is true.

elseBlock: NestedBlock

Code block executed if the condition is false.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.RepeatNode(/, **data: Any)

Node representing a repeat loop structure.

Parameters:

data (Any)

iterations: int = None

Number of loop iterations.

block: NestedBlock

Code block to repeat.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.OperatorNode(/, **data: Any)

Node representing a classical operation (arithmetic, bitwise, comparison).

Parameters:

data (Any)

operator: Literal['+', '-', '*', '/', '**', '|', '&', '~', '^', '<', '<=', '>', '>=', '==', '!=', 'min', 'max']

Type of operator (e.g., “+”, “&”, “==”).

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.Edge(/, **data: Any)

Represents a connection between two ports of nodes.

Parameters:

data (Any)

source: tuple[Annotated[str, Field(description='Source node Id')], Annotated[int, Field(ge=0, description='Output index of source node')]]

Tuple of (node_id, output_index).

target: tuple[Annotated[str, Field(description='Target node id')], Annotated[int, Field(ge=0, description='Input index of target node')]]

Tuple of (node_id, input_index).

size: int | None = None

Optional size override for the edge

identifier: str | None = None

Optional name or alias of the connection.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.CompileRequest(/, **data: Any)

Top-level object representing a full graph-based quantum compile request.

Parameters:

data (Any)

metadata: MetaData

General information and optimization preferences.

nodes: list[Annotated[Node, Field(discriminator='type')]]

List of all nodes forming the program graph.

edges: list[Edge]

Directed edges defining input-output relationships between nodes.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class app.model.CompileRequest.SingleInsertMetaData(/, **data: Any)

Models the metadata of a single insert.

Parameters:

data (Any)

class app.model.CompileRequest.SingleInsert(/, **data: Any)

Single insertion of an implementation for the enricher.

Parameters:

data (Any)

class app.model.CompileRequest.InsertRequest(/, **data: Any)

Models a request for an implementation insert into the enricher.

Parameters:

data (Any)