Source code for tket_exts.tket.modifier
"""Modifier extension operations."""
import functools
from hugr.ext import Extension, OpDef, TypeDef
from ._util import TketExtension, load_extension
[docs]
class ModifierExtension(TketExtension):
"""Control, dagger and power modifiers for unitary operations."""
[docs]
@functools.cache
def __call__(self) -> Extension:
"""Returns the quantum extension"""
return load_extension("tket.modifier")
[docs]
def TYPES(self) -> list[TypeDef]:
"""Return the types defined by this extension"""
return []
[docs]
def OPS(self) -> list[OpDef]:
"""Return the operations defined by this extension"""
return [
self.control,
self.dagger,
self.power,
]
@functools.cached_property
def control(self) -> OpDef:
"""Control modifier operation."""
return self().get_op("ControlModifier")
@functools.cached_property
def dagger(self) -> OpDef:
"""Dagger modifier operation."""
return self().get_op("DaggerModifier")
@functools.cached_property
def power(self) -> OpDef:
"""Power modifier operation."""
return self().get_op("PowerModifier")