python-fire
python-fire copied to clipboard
Ability use args, kwargs with delimiter
Fire now try to parse flat args and kwargs, but often this not convenient Example:
import fire
def test(*args, **kwargs):
print(kwargs)
print(args)
fire.Fire(test)
python main.py arg1 arg2 --kwarg1 1 --kwarg2 2
{'kwarg1': 1, 'kwarg2': 2} ('arg1', 'arg2')
In some cases will be much more simple have opportunity to set *args **kwargs like this :
python main.py --args arg1 --args arg2 --kwargs kwarg1=1 --kwargs kwarg2=2
import fire
def test(*args, **kwargs): print(kwargs) print(args)
class ArgsAndKwargs: def init(self): self.args = [] self.kwargs = {}
def add_args(self, *args):
self.args.extend(args)
def add_kwargs(self, **kwargs):
self.kwargs.update(kwargs)
def main(**params): args_and_kwargs = ArgsAndKwargs()
if 'args' in params:
args_and_kwargs.add_args(*params['args'])
if 'kwargs' in params:
args_and_kwargs.add_kwargs(**params['kwargs'])
test(*args_and_kwargs.args, **args_and_kwargs.kwargs)
fire.Fire(main)