From 50e2a68472a20436709df10eb7ae1b2a56b3d060 Mon Sep 17 00:00:00 2001 From: marquessv Date: Wed, 8 Mar 2023 13:46:03 -0800 Subject: [PATCH 1/2] add and test setters --- pyquil/quilbase.py | 8 ++++++++ test/unit/test_quilbase.py | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/pyquil/quilbase.py b/pyquil/quilbase.py index 1738e0d67..c215decf2 100644 --- a/pyquil/quilbase.py +++ b/pyquil/quilbase.py @@ -236,10 +236,18 @@ def get_qubits(self, indices: bool = True) -> Set[QubitDesignator]: def qubits(self): return list(self.get_qubits(indices=False)) + @qubits.setter + def qubits(self, qubits: Iterable[Union[Qubit, QubitPlaceholder, FormalArgument]]): + quil_rs.Gate.qubits.__set__(self, _convert_to_rs_qubits(qubits)) + @property def params(self): return _convert_to_py_parameters(super().parameters) + @params.setter + def params(self, params: Iterable[ParameterDesignator]): + quil_rs.Gate.parameters.__set__(self, _convert_to_rs_expressions(params)) + def get_qubit_indices(self) -> Set[int]: return {qubit.as_fixed() for qubit in super().qubits} diff --git a/test/unit/test_quilbase.py b/test/unit/test_quilbase.py index 4b999536a..20968c51a 100644 --- a/test/unit/test_quilbase.py +++ b/test/unit/test_quilbase.py @@ -45,9 +45,13 @@ def test_name(self, gate, name): def test_params(self, gate, params): assert gate.params == params + gate.params = [pi / 2] + assert gate.params == [pi / 2] def test_qubits(self, gate, qubits): assert gate.qubits == qubits + gate.qubits = [Qubit(123)] + assert gate.qubits == [Qubit(123)] def test_get_qubits(self, gate, qubits): assert gate.get_qubit_indices() == {q.index for q in qubits} From 6a947c626c1053c334bf2a53be96bb7d935f6bae Mon Sep 17 00:00:00 2001 From: marquessv Date: Wed, 8 Mar 2023 13:46:25 -0800 Subject: [PATCH 2/2] use simple enum syntax --- pyquil/quilatom.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pyquil/quilatom.py b/pyquil/quilatom.py index bf1efe97e..b907dc358 100644 --- a/pyquil/quilatom.py +++ b/pyquil/quilatom.py @@ -576,15 +576,16 @@ def __init__(self, op1: ExpressionDesignator, op2: ExpressionDesignator): def _from_rs_infix_expression(cls, infix_expression: quil_rs.InfixExpression): left = _convert_to_py_parameter(infix_expression.left) right = _convert_to_py_parameter(infix_expression.right) - if infix_expression.operator.is_plus(): + print(infix_expression.operator) + if infix_expression.operator == quil_rs.InfixOperator.Plus: return Add(left, right) - if infix_expression.operator.is_minus(): + if infix_expression.operator == quil_rs.InfixOperator.Minus: return Sub(left, right) - if infix_expression.operator.is_slash(): + if infix_expression.operator == quil_rs.InfixOperator.Slash: return Div(left, right) - if infix_expression.operator.is_star(): + if infix_expression.operator == quil_rs.InfixOperator.Star: return Mul(left, right) - if infix_expression.operator.is_caret(): + if infix_expression.operator == quil_rs.InfixOperator.Caret: return Pow(left, right) raise ValueError(f"{type(infix_expression)} is not a valid InfixExpression")