Example:
from fastcore.script import anno_parser
def test_fun(toggle:bool=True):
print(toggle)
test_fun()
print(anno_parser(test_fun).parse_args([]))
Prints:
True
Namespace(toggle=False, pdb=False, xtra=None)
What I would expect
True
Namespace(toggle=True, pdb=False, xtra=None)
In this example I think I would prefer the command line parameter to be named "--no-toggle" and the default to be True if the parameter was not passed. There is a store_false annotation but I don't think it can solve this problem alone (I would have to rename the argument to no_toggle and deal with the consequences in my code).
This is caused by this line https://github.com/fastai/fastcore/blob/master/fastcore/script.py#L41 always overriding the default value provided by the function definition in case of boolean arguments.
I hope we could fix this without breaking backwards compatibility. Current code cannot rely on the arg:bool=True to do anything sensible so hopefully everybody avoided using this configuration in existing codebases.