Skip to content

Commit

Permalink
Add: Error message in from_slice method.
Browse files Browse the repository at this point in the history
- Accept owned mapping for `from_mapping`.
  • Loading branch information
raynelfss committed Aug 5, 2024
1 parent d749950 commit 8d7c7a9
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions crates/circuit/src/circuit_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -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<I>(&mut self, py: Python, iter: I) -> PyResult<()>
where
I: IntoIterator<Item = (&'a Param, &'a Param)>,
I: IntoIterator<Item = (Param, Param)>,
{
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)
}
Expand Down

0 comments on commit 8d7c7a9

Please sign in to comment.