(*args: Any, **kwargs: Any)
| 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 |
nothing calls this directly
no test coverage detected
searching dependent graphs…