diff --git a/src/braket/pennylane_plugin/translation.py b/src/braket/pennylane_plugin/translation.py index 7fbc95b9..de2e1397 100644 --- a/src/braket/pennylane_plugin/translation.py +++ b/src/braket/pennylane_plugin/translation.py @@ -18,6 +18,7 @@ import numpy as onp import pennylane as qp from pennylane import numpy as np +from pennylane.exceptions import DeviceError from pennylane.measurements import MeasurementProcess from pennylane.operation import Operation, Operator from pennylane.pulse import ParametrizedEvolution @@ -567,6 +568,8 @@ def translate_result_type( observable = measurement.obs if isinstance(measurement, qp.measurements.ProbabilityMP): + if observable and observable.diagonalizing_gates(): + raise DeviceError("Probability result type not supported for observables") return Probability(targets) if isinstance(measurement, qp.measurements.StateMP): diff --git a/test/unit_tests/test_translation.py b/test/unit_tests/test_translation.py index 30c80ea4..4290a79d 100644 --- a/test/unit_tests/test_translation.py +++ b/test/unit_tests/test_translation.py @@ -47,6 +47,7 @@ ) from pennylane import measurements from pennylane import numpy as pnp +from pennylane.exceptions import DeviceError from pennylane.pulse import ParametrizedEvolution, transmon_drive from pennylane.wires import Wires @@ -841,6 +842,17 @@ def test_translate_result_type_unsupported_obs(): translate_result_type(tape.measurements[0], [0], frozenset()) +def test_translate_result_type_probs_observable(): + """Tests if a DeviceError is raised by translate_result_type for a Probability return type + with an observable attached""" + mp = qp.probs(op=qp.X(wires=0)) + + with pytest.raises( + DeviceError, match="Probability result type not supported for observables" + ): + translate_result_type(mp, [0], frozenset()) + + def test_translate_result(): result_dict = _result_meta() result_dict["resultTypes"] = [