MCPcopy
hub / github.com/google/python-fire / _ParseFn

Function _ParseFn

fire/core.py:718–752  ·  view source on GitHub ↗

Parses the list of `args` into (varargs, kwargs), remaining_args.

(args)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 4

_ParseKeywordArgsFunction · 0.85
_ParseArgsFunction · 0.85
FireErrorClass · 0.85
_ParseValueFunction · 0.85

Tested by

no test coverage detected