python-fire icon indicating copy to clipboard operation
python-fire copied to clipboard

Ability use args, kwargs with delimiter

Open nborisenko opened this issue 5 years ago • 1 comments

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

nborisenko avatar Jan 16 '20 14:01 nborisenko

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)

ljluestc avatar Aug 27 '23 16:08 ljluestc