String hinted arguments passed numerical values should not be coerced

Ouverte Adaptée aux débutants
#733 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
70/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
python
Domaine
cli

Piste de recherche

L’issue fournit une reproduction minimale dans tp.py, mais ne nomme aucun fichier du projet ni aucun test. Commence par suivre la façon dont Fire analyse les valeurs de CLI et applique les annotations de type des arguments des callables, puis trouve les tests pertinents pour les arguments annotés comme string. Le travail est terminé lorsque 1.10 et '1.10' parviennent tous deux à la fonction sous forme de chaînes et qu’un test de régression couvre ce comportement.

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

Description

Observed behavior

If a callable command function defines an argument with a string hint, e.g. arg: str, and a value of 1.10 is passed to it, then it receives an argument of type float with value 1.1 which has different meaning than the passed value.

This is particularly troublesome when dealing with versions since 1.1 is much different than 1.10.

Expected behavior

Fire should not coerce the value to a type different than the type hint, regardless of its format.

Reproduction

Code
# tp.py
import fire


def main(arg: str):
    print(f"Hello! {type(arg)} {arg}")


if __name__ == "__main__":
    fire.Fire(main)
Execution
$ python tp.py 1.10
Hello! <class 'float'> 1.1

or

$ python tp.py '1.10'
Hello! <class 'float'> 1.1

Metadata

fire version v0.7.1

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.