Uncaught exception when a component has a property whose getter raises (intended?)
- Lingua principale
- Python
- Stelle
- 28.2k
- Fork
- 1.5k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
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):
```python
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.
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.