Parses the list of `args` into (varargs, kwargs), remaining_args.
(args)
| 716 | required_kwonly = set(fn_spec.kwonlyargs) - set(fn_spec.kwonlydefaults) |
| 717 | |
| 718 | def _ParseFn(args): |
| 719 | """Parses the list of `args` into (varargs, kwargs), remaining_args.""" |
| 720 | kwargs, remaining_kwargs, remaining_args = _ParseKeywordArgs(args, fn_spec) |
| 721 | |
| 722 | # Note: _ParseArgs modifies kwargs. |
| 723 | parsed_args, kwargs, remaining_args, capacity = _ParseArgs( |
| 724 | fn_spec.args, fn_spec.defaults, num_required_args, kwargs, |
| 725 | remaining_args, metadata) |
| 726 | |
| 727 | if fn_spec.varargs or fn_spec.varkw: |
| 728 | # If we're allowed *varargs or **kwargs, there's always capacity. |
| 729 | capacity = True |
| 730 | |
| 731 | extra_kw = set(kwargs) - set(fn_spec.kwonlyargs) |
| 732 | if fn_spec.varkw is None and extra_kw: |
| 733 | raise FireError('Unexpected kwargs present:', extra_kw) |
| 734 | |
| 735 | missing_kwonly = set(required_kwonly) - set(kwargs) |
| 736 | if missing_kwonly: |
| 737 | raise FireError('Missing required flags:', missing_kwonly) |
| 738 | |
| 739 | # If we accept *varargs, then use all remaining arguments for *varargs. |
| 740 | if fn_spec.varargs is not None: |
| 741 | varargs, remaining_args = remaining_args, [] |
| 742 | else: |
| 743 | varargs = [] |
| 744 | |
| 745 | for index, value in enumerate(varargs): |
| 746 | varargs[index] = _ParseValue(value, None, None, metadata) |
| 747 | |
| 748 | varargs = parsed_args + varargs |
| 749 | remaining_args += remaining_kwargs |
| 750 | |
| 751 | consumed_args = args[:len(args) - len(remaining_args)] |
| 752 | return (varargs, kwargs), consumed_args, remaining_args, capacity |
| 753 | |
| 754 | return _ParseFn |
| 755 |
nothing calls this directly
no test coverage detected