google / python-fire

Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely any Python object.
Other
26.98k stars 1.44k forks source link

[feature request] support multiple dialects for boolean parameters #461

Open iRyoka opened 1 year ago

iRyoka commented 1 year ago

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.

pranshugupta01 commented 1 year ago

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

dbieber commented 10 months ago

Another thing that works is --noflag

dbieber commented 10 months ago

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.