(cls, node)
| 621 | |
| 622 | @classmethod |
| 623 | def parse_node(cls, node): |
| 624 | normal_args = cls.get_arg_tuples(node.args.args, node.args.defaults) |
| 625 | kwonlyargs = cls.get_arg_tuples(node.args.kwonlyargs, node.args.kw_defaults) |
| 626 | # TODO: all single args should be tuples like this |
| 627 | vararg = cls.get_arg(node.args.vararg) |
| 628 | kwarg = cls.get_arg(node.args.kwarg) |
| 629 | # create context variables |
| 630 | target_vars = [arg[0] for arg in normal_args] |
| 631 | if vararg: |
| 632 | target_vars.append(vararg) |
| 633 | if kwarg: |
| 634 | target_vars.append(kwarg) |
| 635 | |
| 636 | args = cls.get_arg_parts(node.args.args, node.args.defaults, "arg") |
| 637 | kw_args = cls.get_arg_parts( |
| 638 | node.args.kwonlyargs, node.args.kw_defaults, "kwonly" |
| 639 | ) |
| 640 | varargs = cls.get_arg_part(node.args.vararg, None, "vararg") |
| 641 | kwargs = cls.get_arg_part(node.args.kwarg, None, "kwarg") |
| 642 | all_args = [*args, varargs, *kw_args, kwargs] |
| 643 | |
| 644 | if isinstance(node, ast.Lambda): |
| 645 | body_node = node.body |
| 646 | else: |
| 647 | bodyMod = wrap_in_module(node.body) |
| 648 | body_node = FunctionBodyTransformer().visit(bodyMod) |
| 649 | |
| 650 | return { |
| 651 | "node": node, |
| 652 | "name": getattr(node, "name", None), |
| 653 | "args": IndexedDict([(p["name"], p) for p in all_args if p is not None]), |
| 654 | # TODO: arg is the node counterpart to target_vars |
| 655 | "_spec1_args": args, |
| 656 | "*args": varargs, |
| 657 | "**kwargs": kwargs, |
| 658 | "body": {"node": body_node, "target_vars": TargetVars(target_vars)}, |
| 659 | } |
| 660 | |
| 661 | |
| 662 | class LambdaFunctionParser(Parser): |
no test coverage detected