MCPcopy Create free account
hub / github.com/YuminosukeSato/ironkernel / execute_map

Function execute_map

src/python/py_kernel.rs:300–338  ·  view source on GitHub ↗

Execute a map spec: resolve named args to positional via KernelSpec.args[idx].name.

(map_spec: &PyMapSpec)

Source from the content-addressed store, hash-verified

298
299/// Execute a map spec: resolve named args to positional via KernelSpec.args[idx].name.
300pub fn execute_map(map_spec: &PyMapSpec) -> crate::error::ParsecResult<Buffer> {
301 let spec = &map_spec.spec.inner;
302 let expr = &spec.expr;
303 let mut missing: Vec<String> = spec
304 .args
305 .iter()
306 .filter(|arg| !map_spec.args.contains_key(&arg.name))
307 .map(|arg| arg.name.clone())
308 .collect();
309 missing.sort();
310 if !missing.is_empty() {
311 let message = if missing.len() == 1 {
312 format!("missing arg: {}", missing[0])
313 } else {
314 format!("missing args: {}", missing.join(", "))
315 };
316 return Err(crate::error::ParsecError::ArgError(message));
317 }
318
319 let expected_names: HashSet<&str> = spec.args.iter().map(|arg| arg.name.as_str()).collect();
320 let mut extra: Vec<String> = map_spec
321 .args
322 .keys()
323 .filter(|name| !expected_names.contains(name.as_str()))
324 .cloned()
325 .collect();
326 extra.sort();
327 if !extra.is_empty() {
328 return Err(crate::error::ParsecError::ArgError(format!(
329 "unexpected args: {}",
330 extra.join(", ")
331 )));
332 }
333
334 let mut positional: Vec<ArgValue> = Vec::with_capacity(spec.args.len());
335 positional.extend(spec.args.iter().map(|arg| map_spec.args[&arg.name].clone()));
336
337 eval_elementwise(expr, &positional)
338}
339
340/// Execute a reduce spec.
341pub fn execute_reduce(spec: &PyReduceSpec) -> crate::error::ParsecResult<f64> {

Calls 4

eval_elementwiseFunction · 0.85
is_emptyMethod · 0.80
lenMethod · 0.80
mapMethod · 0.45