qml.ops.functions.assert_valid

assert_valid(op, skip_pickle=False, skip_wire_mapping=False, skip_differentiation=False)[source]

Runs basic validation checks on an Operator to make sure it has been correctly defined.

Parameters

op (Operator) – an operator instance to validate

Keyword Arguments
  • skip_pickle=False – If True, pickling tests are not run. Set to True when testing a locally defined operator, as pickle cannot handle local objects

  • skip_differentiation – If True, differentiation tests are not run. Set to True when the operator is parametrized but not differentiable.

Examples:

class MyOp(qml.operation.Operator):

    def __init__(self, data, wires):
        self.data = data
        super().__init__(wires=wires)

op = MyOp(qml.numpy.array(0.5), wires=0)
>>> assert_valid(op)
AssertionError: op.data must be a tuple
class MyOp(qml.operation.Operator):

    def __init__(self, wires):
        self.hyperparameters["unhashable_list"] = []
        super().__init__(wires=wires)

op = MyOp(wires = 0)
assert_valid(op)
ValueError: metadata output from _flatten must be hashable. This also applies to hyperparameters