Uncaught exception when a component has a property whose getter raises (intended?)
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 58/100
Piste de recherche
Commencez par le reproducteur app.py fourni et suivez le chemin d’énumération des membres utilisé par l’invocation sans argument et par --help. Comparez ce chemin avec l’appel direct à greet, puis ajoutez une couverture pour une propriété qui lève une exception ; le travail est terminé lorsque help et l’invocation sans argument gèrent l’échec du getter conformément au comportement choisi, tandis que greet continue de fonctionner.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
When a component has a @property whose getter raises, fire.Fire(component) crashes with the property's raw traceback on bare invocation and on --help, instead of showing usage/help. A direct call to an unrelated method works fine.
Repro (fire 0.7.1):
import fire
class App:
@property
def status(self):
raise RuntimeError("backend unavailable") # e.g. a lazy / fallible getter
def greet(self, who="world"):
return f"hi {who}"
if __name__ == "__main__":
fire.Fire(App())
$ python app.py --help
...
value = getter(object, key)
File "app.py", line 5, in status
raise RuntimeError("backend unavailable")
RuntimeError: backend unavailable
$ python app.py greet # works
hi world
Fire enumerates members (and reads property values) during help/listing, so any property getter that can raise (lazy config, DB or network access, etc.) takes down --help and bare invocation, even though those properties are never invoked.
Is this intended, or should Fire surface a clean error (or skip properties that raise) during member enumeration? Happy to send a PR if a fix would be welcome.
Found via automated analysis and confirmed with the reproducer above on fire 0.7.1.
- Langage dominant
- Python
- Étoiles
- 28.2k
- Forks
- 1.5k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de google/python-fire
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
google/python-fire#693 ·
-
Release 0.7.2? Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 38/100
google/python-fire#698 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
google/python-fire#665 · 2 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
google/python-fire#659 · 1 commentaire ·
-
Releasing 3.14 Support Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
google/python-fire#643 · 4 commentaires · 5 réactions ·
Toutes les issues de google/python-fire
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
stephrobert/dsoxlab#238 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
sublimehq/package_control#1780 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
nwg-piotr/nwg-displays#145 ·