In [5]:
import argparse
import inspect

In [19]:
def main(var_1: str, var_2: float=2.0, var_3='hi'):
    print('got: ')
    print(var_1)
    print(var_2)
    print(var_3)
    pass

In [20]:
def main_aux():
    signature = inspect.signature(main)  # type: inspect.Signature
    pars = list(signature.parameters.values())
    parser = argparse.ArgumentParser(description=inspect.getdoc(main))
    for p in pars:
        parser.add_argument(
            '--{}'.format(p.name.replace('_', '-')),
            default=None if p.default == inspect._empty else p.default,
            type=p.annotation if type(p.annotation) is type else None)
    args = parser.parse_args()
    main(**args.__dict__)

In [ ]:


In [13]:
def hi(x=2):
    return inspect.signature(hi)

In [ ]:


In [ ]: