MCPcopy
hub / github.com/huggingface/smolagents / new_func

Function new_func

src/smolagents/local_python_executor.py:471–519  ·  view source on GitHub ↗
(*args: Any, **kwargs: Any)

Source from the content-addressed store, hash-verified

469 source_code = ast.unparse(func_def)
470
471 def new_func(*args: Any, **kwargs: Any) -> Any:
472 func_state = state.copy()
473 arg_names = [arg.arg for arg in func_def.args.args]
474 default_values = [
475 evaluate_ast(d, state, static_tools, custom_tools, authorized_imports) for d in func_def.args.defaults
476 ]
477
478 # Apply default values
479 defaults = dict(zip(arg_names[-len(default_values) :], default_values))
480
481 # Set positional arguments
482 for name, value in zip(arg_names, args):
483 func_state[name] = value
484
485 # Set keyword arguments
486 for name, value in kwargs.items():
487 func_state[name] = value
488
489 # Handle variable arguments
490 if func_def.args.vararg:
491 vararg_name = func_def.args.vararg.arg
492 func_state[vararg_name] = args
493
494 if func_def.args.kwarg:
495 kwarg_name = func_def.args.kwarg.arg
496 func_state[kwarg_name] = kwargs
497
498 # Set default values for arguments that were not provided
499 for name, value in defaults.items():
500 if name not in func_state:
501 func_state[name] = value
502
503 # Update function state with self and __class__
504 if func_def.args.args and func_def.args.args[0].arg == "self":
505 if args:
506 func_state["self"] = args[0]
507 func_state["__class__"] = args[0].__class__
508
509 result = None
510 try:
511 for stmt in func_def.body:
512 result = evaluate_ast(stmt, func_state, static_tools, custom_tools, authorized_imports)
513 except ReturnException as e:
514 result = e.value
515
516 if func_def.name == "__init__":
517 return None
518
519 return result
520
521 # Store original AST, source code, and name
522 new_func.__ast__ = func_def

Callers

nothing calls this directly

Calls 1

evaluate_astFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…