Skip to content

First-character argument flag is undocumented and behaves strangely when colliding with default options #238

@ntjess

Description

@ntjess

Consider the function signature:

def main(headless=False):
  # Construct GUI
  if not headless:
    widget.show()
    app.exec()

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

After reading through the user guide for fire, I would expect python myFile -h to produce the help signature for this file. However, it runs the script with headless = True.

While in retrospect I suppose this makes sense, I would like some way of telling fire to disallow shortcut flags if they override user-expected options like --[i]nteractive, --[h]elp, etc. In those cases, the user can be forced to say python myFile --headless for the desired behavior.

Moreover, if my script looked like this:

def main(headless=False, hArg=True):
  # Construct GUI
  if not headless:
    widget.show()
    app.exec()

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

and I ran the same line of code, fire would appropriately err out. This is also acceptable in my opinion.

More importantly, the first-character flag behavior should at the very least be documented. I read through https://github.com/google/python-fire/blob/master/docs/guide.md and couldn't find it there.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions