- Notifications
You must be signed in to change notification settings - Fork286
Description
Example:
from fastcore.script import anno_parserdef test_fun(toggle:bool=True): print(toggle)test_fun()print(anno_parser(test_fun).parse_args([]))Prints:
TrueNamespace(toggle=False, pdb=False, xtra=None)What I would expect
TrueNamespace(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 astore_false annotation but I don't think it can solve this problem alone (I would have to rename the argument tono_toggle and deal with the consequences in my code).
This is caused by this linehttps://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 thearg:bool=True to do anything sensible so hopefully everybody avoided using this configuration in existing codebases.