google / google/python-fire

Completion does not work with nested commands with 'group flags'

Offen
#255 1 Kommentar 4 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Python
Sterne
28.2k
Forks
1.5k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

I'm trying to create a CLI which consists of several command groups. Commands within the command group share some common flags. In my example that is e.g. the `--namespace` flag in the `sub` command group.

I got this working. However, it breaks some fire functionality like generating command completion and a proper `--help` output.

Note that I use the class object in stead of class instances for the command groups (in contrast to [the documentation](https://google.github.io/python-fire/guide/#grouping-commands)):
```python
import fire

class Sub(object):
"""Command group which has group-flags
"""

def __init__(self, namespace='default'):
self._namespace = namespace

def command(self):
"""Run as `mycli sub command`"""
print(f"Now I return {self._namespace}")

class MyCLI(object):
"""My super fancy CLI
"""
def __init__(self, verbose=False):
# It just references the class, not an instance as shown in the docs
self.sub = Sub
# ...

if __name__ == '__main__':
fire.Fire(MyCLI, name='mycli')
```

Running a command works properly (you can even rearrange the flag):
```
$ mycli sub command
Now I return default

$ mycli sub command --namespace test
Now I return test
```

However, when running `mycli -- --completion` it will just print a completion script without any actual command completions.

It seems that my use-case is either not supported, or I have implemented it quite wrong. I'm quite new to fire and python cli tools, so I suppose the latter could definitely be the case ;-).

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.