Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

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

Ouverte
#454 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
python
Domaine
cli

Piste de recherche

Exécutez les deux exemples Python de l'issue et comparez le comportement des options courtes avec et sans kwargs. Suivez ensuite l'analyse des arguments de Python Fire pour les options courtes et les arguments nommés. Le travail est terminé lorsque -f et -s alimentent first_arg et second_arg, tandis que les flags sans rapport continuent d'apparaître dans kwargs, avec une couverture de régression pour les deux cas.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Description:

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

Example that works OK:

The following example works ok:

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

❯ python .\example.py -- --help
NAME
    example.py - Prints the 2 arguments separated by bar

SYNOPSIS
    example.py <flags>

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

❯ 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.

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

❯ python .\example2.py -- --help
NAME
    example2.py - Prints the 2 arguments separated by bar

SYNOPSIS
    example2.py <flags>

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

❯ 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

Langage dominant
Python
Étoiles
28.2k
Forks
1.5k
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de google/python-fire

Toutes les issues de google/python-fire

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.