Source code for tket_exts.tket.measurement

"""Measurement extension operations."""

import functools

from hugr.ext import Extension, OpDef, TypeDef
from hugr.ops import ExtOp
from hugr.tys import ExtType

from ._util import TketExtension, load_extension


[docs] class MeasurementExtension(TketExtension): """Operations on measurement types."""
[docs] @functools.cache def __call__(self) -> Extension: """Returns the measurement extension""" return load_extension("tket.measurement")
[docs] def TYPES(self) -> list[TypeDef]: """Return the types defined by this extension""" return [self.measurement_t.type_def]
[docs] def OPS(self) -> list[OpDef]: """Return the operations defined by this extension""" return [ self.read.op_def(), ]
@functools.cached_property def measurement_t(self) -> ExtType: """A copyable type representing the result of a measurement operation.""" return self().get_type("Measurement").instantiate([]) @functools.cached_property def read(self) -> ExtOp: """Consumes a measurement, converting it into a bool.""" return self().get_op("Read").instantiate()