From 5ca54ff38f0f1dc181a51c9b1eb187cc65547532 Mon Sep 17 00:00:00 2001 From: Cody Wang Date: Thu, 24 Oct 2024 15:40:29 -0700 Subject: [PATCH 1/6] fix: Raise exception for `probs` with observable --- setup.py | 2 +- src/braket/pennylane_plugin/translation.py | 2 ++ test/unit_tests/test_translation.py | 11 +++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f82ce6d0..b586489f 100644 --- a/setup.py +++ b/setup.py @@ -53,7 +53,7 @@ }, extras_require={ "test": [ - "autoray<0.7.0", # autoray.tensorflow_diag no longer works + "autoray<0.7.0", # autoray.tensorflow_diag no longer works "docutils>=0.19", "flaky", "pre-commit", diff --git a/src/braket/pennylane_plugin/translation.py b/src/braket/pennylane_plugin/translation.py index aab1a20f..76c34622 100644 --- a/src/braket/pennylane_plugin/translation.py +++ b/src/braket/pennylane_plugin/translation.py @@ -576,6 +576,8 @@ def translate_result_type( # noqa: C901 observable = measurement.obs if return_type is ObservableReturnTypes.Probability: + if observable: + raise qml.DeviceError("Probability result type not supported for observables") return Probability(targets) if return_type is ObservableReturnTypes.State: diff --git a/test/unit_tests/test_translation.py b/test/unit_tests/test_translation.py index 5c719e68..6d07d2fe 100644 --- a/test/unit_tests/test_translation.py +++ b/test/unit_tests/test_translation.py @@ -826,6 +826,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 = qml.probs(op=qml.X(wires=0)) + + with pytest.raises( + qml.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"] = [ From 27bd6a9b1768a5d56acaf7df3151fbc8c1e86358 Mon Sep 17 00:00:00 2001 From: Cody Wang Date: Mon, 28 Oct 2024 12:39:24 -0700 Subject: [PATCH 2/6] Update src/braket/pennylane_plugin/translation.py Co-authored-by: Christina Lee --- src/braket/pennylane_plugin/translation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/braket/pennylane_plugin/translation.py b/src/braket/pennylane_plugin/translation.py index 76c34622..d8cad22c 100644 --- a/src/braket/pennylane_plugin/translation.py +++ b/src/braket/pennylane_plugin/translation.py @@ -576,7 +576,7 @@ def translate_result_type( # noqa: C901 observable = measurement.obs if return_type is ObservableReturnTypes.Probability: - if observable: + if observable and observable.diagonalizing_gates(): raise qml.DeviceError("Probability result type not supported for observables") return Probability(targets) From 8c6bee2215f5fee3abdfe598a92b27a3b1deca7f Mon Sep 17 00:00:00 2001 From: Cody Wang Date: Thu, 21 Aug 2025 23:43:58 -0700 Subject: [PATCH 3/6] fix badge --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index b795cfb4..3bbc8765 100644 --- a/README.rst +++ b/README.rst @@ -7,7 +7,7 @@ Amazon Braket PennyLane Plugin .. image:: https://img.shields.io/pypi/pyversions/amazon-braket-pennylane-plugin.svg :alt: Supported Python Versions :target: https://pypi.python.org/pypi/amazon-braket-pennylane-plugin -.. image:: https://img.shields.io/github/actions/workflow/status/amazon-braket/amazon-braket-strawberryfields-plugin-python/python-package.yml?branch=main&logo=github +.. image:: https://img.shields.io/github/actions/workflow/status/amazon-braket/amazon-braket-pennylane-plugin-python/python-package.yml?branch=main&logo=github :alt: Build Status :target: https://github.com/amazon-braket/amazon-braket-pennylane-plugin-python/actions?query=workflow%3A%22Python+package%22 .. image:: https://codecov.io/gh/amazon-braket/amazon-braket-pennylane-plugin-python/branch/main/graph/badge.svg?token=VPPM8BJKW4 From 6d86e9b6423dffc1f0e5f6089ecf33958e552baa Mon Sep 17 00:00:00 2001 From: Cody Wang Date: Thu, 21 Aug 2025 23:44:36 -0700 Subject: [PATCH 4/6] Update tox.ini --- tox.ini | 1 - 1 file changed, 1 deletion(-) diff --git a/tox.ini b/tox.ini index 5bf7eac9..56822439 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,6 @@ [tox] envlist = clean,linters,docs,unit-tests - [testenv:clean] deps = coverage skip_install = true From 09da6b795c3455bb48ccd630d6b1f8503cb6409a Mon Sep 17 00:00:00 2001 From: Cody Wang Date: Wed, 16 Sep 2026 12:51:30 -0700 Subject: [PATCH 5/6] Import DeviceError from pennylane.exceptions (#341) --- src/braket/pennylane_plugin/translation.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/braket/pennylane_plugin/translation.py b/src/braket/pennylane_plugin/translation.py index c5662304..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 @@ -568,7 +569,7 @@ def translate_result_type( if isinstance(measurement, qp.measurements.ProbabilityMP): if observable and observable.diagonalizing_gates(): - raise qp.DeviceError("Probability result type not supported for observables") + raise DeviceError("Probability result type not supported for observables") return Probability(targets) if isinstance(measurement, qp.measurements.StateMP): From 5c4842da515a3321d67e624ec321291fb264cc8a Mon Sep 17 00:00:00 2001 From: Cody Wang Date: Wed, 16 Sep 2026 12:52:44 -0700 Subject: [PATCH 6/6] Fix import and update test for DeviceError --- test/unit_tests/test_translation.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/unit_tests/test_translation.py b/test/unit_tests/test_translation.py index b6d0d391..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 @@ -844,10 +845,10 @@ def test_translate_result_type_unsupported_obs(): 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 = qml.probs(op=qml.X(wires=0)) + mp = qp.probs(op=qp.X(wires=0)) with pytest.raises( - qml.DeviceError, match="Probability result type not supported for observables" + DeviceError, match="Probability result type not supported for observables" ): translate_result_type(mp, [0], frozenset())