google / google/python-fire

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

Abierto
#454 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
28.2k
Forks
1.5k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

# 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`

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.