r"""Recursively evaluate arguments, including nested calls.
(arg)
| 433 | return textwrap.dedent(call).strip() |
| 434 | |
| 435 | def evaluate_arg(arg): |
| 436 | r"""Recursively evaluate arguments, including nested calls.""" |
| 437 | if isinstance(arg, ast.Call): |
| 438 | # Recursively parse nested calls |
| 439 | func_name, args, kwargs = parse_function_call(ast.unparse(arg)) |
| 440 | return func_name, args, kwargs |
| 441 | elif isinstance( |
| 442 | arg, ast.Constant |
| 443 | ): # Handle literals like numbers, strings, etc. |
| 444 | return arg.value |
| 445 | elif isinstance(arg, ast.List): # Handle list literals |
| 446 | return [evaluate_arg(el) for el in arg.elts] |
| 447 | elif isinstance(arg, ast.Dict): # Handle dictionary literals |
| 448 | return { |
| 449 | evaluate_arg(k): evaluate_arg(v) |
| 450 | for k, v in zip(arg.keys, arg.values) |
| 451 | } |
| 452 | elif isinstance(arg, ast.Tuple): # Handle tuple literals |
| 453 | return tuple(evaluate_arg(el) for el in arg.elts) |
| 454 | else: |
| 455 | return ast.literal_eval(arg) # Safely evaluate other types |
| 456 | |
| 457 | call = preprocess_input(call) |
| 458 | parsed_calls = [] |
no test coverage detected