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

[feature request] support multiple dialects for boolean parameters

Open iRyoka opened this issue 2 years ago • 3 comments

Consider the following code:

import fire

def a(flag: bool):
   if flag: 
      print("hooray!")
   else:
      print("Wanna see a flag :(")

if __name__ == '__main__': fire.Fire(a)

Now, the following options work as expected (print 'hooray!'): python a.py --flag python a.py --flag=True python a.py --flag=true

However, in order to disable flag explicity the only working option is: python a.py --flag=False and the seemingly rational version python a.py --flag=false result in 'hooray' being printed as flag is parsed as a string 'false' which then casts to boolean True.

My request: support 0, 'false' and 'no' as valid boolean arguments that all cast to False. Make this behavior optional. One way to do this is by adding a custom type to lable such flags with.

iRyoka avatar Aug 31 '23 09:08 iRyoka

Hi , can i work on this issue by adding a custom function for detecting different boolean types.

pranshugupta01 avatar Sep 05 '23 10:09 pranshugupta01

Another thing that works is --noflag

dbieber avatar Dec 12 '23 16:12 dbieber

Implementing this request would have to come as part of a larger change: using type annotations to infer types and parse arguments accordingly; this isn't planned at this time.

dbieber avatar Dec 12 '23 16:12 dbieber