From 6120f33e54a0e0e1c9dac1d4044f1e3464951f7c Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Tue, 13 Aug 2024 09:37:39 -0700 Subject: [PATCH] fix: The DefMeasureCalibration class returns `pyQuil` `AbstractInstrutcion`s instead of `quil` `Instruction`s --- pyquil/quilbase.py | 9 +++++++++ test/unit/test_quilbase.py | 17 +++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/pyquil/quilbase.py b/pyquil/quilbase.py index 8f1995592..3e5d981c5 100644 --- a/pyquil/quilbase.py +++ b/pyquil/quilbase.py @@ -2843,6 +2843,15 @@ def instrs(self) -> list[AbstractInstruction]: def instrs(self, instrs: list[AbstractInstruction]) -> None: quil_rs.MeasureCalibrationDefinition.instructions.__set__(self, _convert_to_rs_instructions(instrs)) # type: ignore[attr-defined] # noqa + @property # type: ignore[override] + def instructions(self) -> list[AbstractInstruction]: + """The instructions in the calibration.""" + return self.instrs + + @instructions.setter + def instructions(self, instructions: list[AbstractInstruction]) -> None: + self.instrs = instructions + def out(self) -> str: """Return the instruction as a valid Quil string.""" return super().to_quil() diff --git a/test/unit/test_quilbase.py b/test/unit/test_quilbase.py index 63f438f8b..e3c781218 100644 --- a/test/unit/test_quilbase.py +++ b/test/unit/test_quilbase.py @@ -473,8 +473,21 @@ def test_memory_reference(self, measure_calibration: DefMeasureCalibration, memo def test_instrs(self, measure_calibration: DefMeasureCalibration, instrs: List[AbstractInstruction]): assert measure_calibration.instrs == instrs - measure_calibration.instrs = [Gate("SomeGate", [], [Qubit(0)], [])] - assert measure_calibration.instrs == [Gate("SomeGate", [], [Qubit(0)], [])] + measure_calibration.instrs = [Gate("SomeGate", [], [Qubit(0)], []), Fence([0])] + assert isinstance(measure_calibration.instrs[0], Gate) + assert not isinstance(measure_calibration.instrs[0], Fence) + assert isinstance(measure_calibration.instrs[1], Fence) + assert not isinstance(measure_calibration.instrs[1], Gate) + assert measure_calibration.instrs == [Gate("SomeGate", [], [Qubit(0)], []), Fence([0])] + + def test_instructions(self, measure_calibration: DefMeasureCalibration, instrs: List[AbstractInstruction]): + assert measure_calibration.instructions == instrs + measure_calibration.instrs = [Gate("SomeGate", [], [Qubit(0)], []), Fence([0])] + assert isinstance(measure_calibration.instrs[0], Gate) + assert not isinstance(measure_calibration.instrs[0], Fence) + assert isinstance(measure_calibration.instrs[1], Fence) + assert not isinstance(measure_calibration.instrs[1], Gate) + assert measure_calibration.instrs == [Gate("SomeGate", [], [Qubit(0)], []), Fence([0])] def test_copy(self, measure_calibration: DefMeasureCalibration): assert isinstance(copy.copy(measure_calibration), DefMeasureCalibration)