Skip to content
Closed
3 changes: 3 additions & 0 deletions src/braket/pennylane_plugin/translation.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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):
Expand Down
12 changes: 12 additions & 0 deletions test/unit_tests/test_translation.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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"] = [
Expand Down
Loading