From 8d7c7a973fa8161053fd137f85edc990b8c71c7d Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Mon, 5 Aug 2024 13:39:01 -0400 Subject: [PATCH] Add: Error message in `from_slice` method. - Accept owned mapping for `from_mapping`. --- crates/circuit/src/circuit_data.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/crates/circuit/src/circuit_data.rs b/crates/circuit/src/circuit_data.rs index d6ada1865f8b..55542c1bb02a 100644 --- a/crates/circuit/src/circuit_data.rs +++ b/crates/circuit/src/circuit_data.rs @@ -1038,7 +1038,10 @@ impl CircuitData { /// Assigns parameters to circuit data based on a slice of `Param`. pub fn assign_parameters_from_slice(&mut self, py: Python, slice: &[Param]) -> PyResult<()> { if slice.len() != self.param_table.num_parameters() { - todo!() + return Err(PyValueError::new_err(concat!( + "Mismatching number of values and parameters. For partial binding ", + "please pass a dictionary of {parameter: value} pairs." + ))); } let mut old_table = std::mem::take(&mut self.param_table); self.assign_parameters_inner( @@ -1052,15 +1055,16 @@ impl CircuitData { } /// Assigns parameters to circuit data based on a mapping of `Param` : `Param`. - pub fn assign_parameters_from_mapping<'a, I>(&mut self, py: Python, iter: I) -> PyResult<()> + /// This mapping assumes that the provided `Param` keys are instances of `ParameterExpression`. + pub fn assign_parameters_from_mapping(&mut self, py: Python, iter: I) -> PyResult<()> where - I: IntoIterator, + I: IntoIterator, { let mut items = Vec::new(); for (param_obj, value) in iter { let param_obj = param_obj.to_object(py); let uuid = ParameterUuid::from_parameter(param_obj.bind(py))?; - items.push((param_obj, value.clone(), self.param_table.pop(uuid)?)); + items.push((param_obj, value, self.param_table.pop(uuid)?)); } self.assign_parameters_inner(py, items) }