[docs]classInstructionKind(Enum):"""Tag for instruction kind."""CCX=enum.auto()RZZ=enum.auto()CNOT=enum.auto()SWAP=enum.auto()H=enum.auto()S=enum.auto()X=enum.auto()Y=enum.auto()Z=enum.auto()I=enum.auto()M=enum.auto()RX=enum.auto()RY=enum.auto()RZ=enum.auto()# The two following instructions are used internally by the transpiler_XC=enum.auto()_ZC=enum.auto()
class_KindChecker:"""Enforce tag field declaration."""def__init_subclass__(cls)->None:super().__init_subclass__()utils.check_kind(cls,{"InstructionKind":InstructionKind,"Plane":Plane})@dataclasses.dataclassclassCCX(_KindChecker):"""Toffoli circuit instruction."""target:intcontrols:tuple[int,int]kind:ClassVar[Literal[InstructionKind.CCX]]=dataclasses.field(default=InstructionKind.CCX,init=False)@dataclasses.dataclassclassRZZ(_KindChecker):"""RZZ circuit instruction."""target:intcontrol:intangle:float# FIXME: Remove `| None` from `meas_index`# - `None` makes codes messy/type-unsafemeas_index:int|None=Nonekind:ClassVar[Literal[InstructionKind.RZZ]]=dataclasses.field(default=InstructionKind.RZZ,init=False)
@dataclasses.dataclassclass_XC(_KindChecker):"""X correction circuit instruction. Used internally by the transpiler."""target:intdomain:set[int]kind:ClassVar[Literal[InstructionKind._XC]]=dataclasses.field(default=InstructionKind._XC,init=False)@dataclasses.dataclassclass_ZC(_KindChecker):"""Z correction circuit instruction. Used internally by the transpiler."""target:intdomain:set[int]kind:ClassVar[Literal[InstructionKind._ZC]]=dataclasses.field(default=InstructionKind._ZC,init=False)ifsys.version_info>=(3,10):Instruction=CCX|RZZ|CNOT|SWAP|H|S|X|Y|Z|I|M|RX|RY|RZ|_XC|_ZCelse:Instruction=Union[CCX,RZZ,CNOT,SWAP,H,S,X,Y,Z,I,M,RX,RY,RZ,_XC,_ZC]