"""Guppy FT standard code extensions."""importfunctoolsfromhugr.extimportExtension,OpDef,TypeDeffromhugr.opsimportExtOpfromhugr.tysimportBoundedNatArg,ExtTypefromguppyft.extensions._utilimportload_extension
[docs]classStdTypesExtension:"""Extension providing standard logical types."""
[docs]def__call__(self)->Extension:"""Returns the standard types extension."""returnload_extension("guppyft.std.types")
@functools.cached_propertydeflogical_measurement_def(self)->TypeDef:"""A logical measurement. This is the generic type definition. For the instantiated type, see `logical_measurement`. """returnself().get_type("logical_measurement")
[docs]deflogical_measurement(self,k:int)->ExtType:"""A logical measurement. Args: k: The number of logical measurements. """returnself.logical_measurement_def.instantiate([BoundedNatArg(k)])
[docs]classStdOpsExtension:"""Extension providing standard logical operations."""
[docs]def__call__(self)->Extension:"""Returns the standard ops extension."""returnload_extension("guppyft.std.ops")
@functools.cached_propertydefdecode_def(self)->OpDef:"""Decode a logical measurement. This is the generic type definition. For the instantiated type, see `decode`. """returnself().get_op("decode")
[docs]defdecode(self,k:int)->ExtOp:"""Decode a logical measurement. Args: k: The number of logical measurements. """returnself.decode_def.instantiate([BoundedNatArg(k)])