Skip to content

Commit 2ba8ecd

Browse files
authored
fix: FreeParameterExpression.subs() crash when expression is a plain Number (#1247)
1 parent 5e109bc commit 2ba8ecd

3 files changed

Lines changed: 16 additions & 0 deletions

File tree

src/braket/parametric/free_parameter_expression.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ def subs(
9090
FreeParameterExpression | Number | Expr: A numerical value if there are no
9191
symbols left in the expression otherwise returns a new FreeParameterExpression.
9292
"""
93+
if isinstance(self._expression, Number):
94+
return self._expression
95+
9396
new_parameter_values = {}
9497
for key, val in parameter_values.items():
9598
if issubclass(type(key), FreeParameterExpression):

test/unit_tests/braket/circuits/test_circuit.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3479,6 +3479,13 @@ def test_make_bound_circuit_bad_value():
34793479
circ.make_bound_circuit({"theta": input_val})
34803480

34813481

3482+
def test_make_bound_circuit_with_numeric_free_parameter_expression():
3483+
circ = Circuit().rz(0, FreeParameterExpression(3.0))
3484+
bound = circ.make_bound_circuit({})
3485+
expected = Circuit().rz(0, 3.0)
3486+
assert bound == expected
3487+
3488+
34823489
def test_circuit_with_expr():
34833490
theta = FreeParameter("theta")
34843491
alpha = FreeParameter("alpha")

test/unit_tests/braket/parametric/test_free_parameter_expression.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,12 @@ def test_neg():
141141
assert -expr == expected_expr and -(-expr) == expr
142142

143143

144+
@pytest.mark.parametrize("value", [3.0, 5, 0, -2.5])
145+
def test_subs_numeric_expression(value):
146+
expr = FreeParameterExpression(value)
147+
assert expr.subs({"anything": 42}) == value
148+
149+
144150
def test_sub_string():
145151
theta = FreeParameter("theta")
146152
expr = theta + 1

0 commit comments

Comments
 (0)