google / google/python-fire

[bug] short flags/arguments does not work with `**kwargs`

Aperta
#454 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
28.2k
Fork
1.5k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

# Description:

Short flags/arguments (e.g. `-u` for `--username`) does not work with `**kwargs`

# Example that works OK:

The following example works ok:

```python
import fire

def cli(first_arg="left", second_arg="right"):
"""Prints the 2 arguments separated by bar

Parameters
----------
first_arg : str
the first arg
second_arg : str
the second arg
"""
print(f"{first_arg} | {second_arg}" )

if __name__ == '__main__':
fire.Fire(cli)
```
## Help output
```sh
❯ python .\example.py -- --help
NAME
example.py - Prints the 2 arguments separated by bar

SYNOPSIS
example.py

DESCRIPTION
Prints the 2 arguments separated by bar

FLAGS
-f, --first_arg=FIRST_ARG
Default: 'left'
the first arg
-s, --second_arg=SECOND_ARG
Default: 'right'
the second arg
```
## Usage with short flags
```sh
❯ python .\example.py -f="hello" -s="word"
hello | word
```
# Example that does not work:

The following next example does not work with short flags, **even when they are showing on the help output**.
It is using `**kwargs`. It seems the short flags are going to the `**kwargs` dictionary.

```python
import fire

def cli(first_arg="left", second_arg="right", **kwargs):
"""Prints the 2 arguments separated by bar

Parameters
----------
first_arg : str
the first arg
second_arg : str
the second arg
kwargs : str
additional args
"""
print(f"{first_arg} | {second_arg}" )
print(kwargs)

if __name__ == '__main__':
fire.Fire(cli)
```
## Help output
```sh
❯ python .\example2.py -- --help
NAME
example2.py - Prints the 2 arguments separated by bar

SYNOPSIS
example2.py

DESCRIPTION
Prints the 2 arguments separated by bar

FLAGS
-f, --first_arg=FIRST_ARG
Default: 'left'
the first arg
-s, --second_arg=SECOND_ARG
Default: 'right'
the second arg
Additional flags are accepted.
additional args
```
## Usage with short flags
```sh
❯ python .\example2.py -f="hello" -s="word"
left | right
{'f': 'hello', 's': 'word'}
```
In summary: the `-f` and `-s` arguments should be parsing to `--first_arg` and `--second_arg` but they are parsing to `kwargs`

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.