python-fire
python-fire copied to clipboard
Provide strict mode
You already mentioned to plan to add a strict mode to python-fire in https://github.com/google/python-fire/issues/221 and https://github.com/google/python-fire/issues/222. I would highly appreciate this, so I am opening a new issue for this.
The problem with CLI facing function is that MyPy cannot help here. The type of the input arguments depends on how python-fire (or other CLI parsers) parse the arguments. Thus type hinting cannot spot errors. I for myself had strings were I expected a number (e.g. by passing in "02" instead of "2") or lists where I expected strings (erroneous trailing comma "foobar,"). There is no way to catch this except for explicitly checking for it.
I am currently experimenting with [[https://pypi.org/project/dpcontracts/|dpcontracts]] and https://github.com/RussBaz/enforce to prevent CLI induced errors. However, strict mode would make things much easier here.
One requirement for me would be that I can enable strict mode from within the script. Having to pass `--strict`` all the time would not prevent errors due to wrong usage.
I would be very glad to see this comming.
I would love this! Without it I am going back to argparse
This feature would be nice, but if you're trying to call a function from command line using Fire, you can always validate the inputs of the function by putting a decorator called @beartype on it.
It is provided by this lib: https://github.com/beartype/beartype
>>> @beartype
... def spirit_bear(kermode: str, gitgaata: (str, int)) -> tuple:
... return (kermode, gitgaata, "Moksgm'ol", 'Ursus americanus kermodei')
>>> spirit_bear(0xdeadbeef, 'People of the Cane')
AssertionError: parameter kermode=0xdeadbeef not of <class "str">