python-fire
python-fire copied to clipboard
Raising FireError in __init__ is not handled properly
In version 0.3.1 when user attempts to raise error in the __init__
method the effective error that gets printed is about missing self
argument. Minimal example:
import fire
from fire.core import FireError
class Calc:
def __init__(self):
raise FireError('foo')
def add(self):
pass
if __name__ == "__main__":
fire.Fire(Calc)
python calc.py add
ERROR: The function received no value for the required argument: self
When executed interactively, the error is correct:
>>>import calc; import fire
>>>fire.Fire(calc.Calc)
ERROR: foo
I've the same error with the same version. I'm trying to debug core.py
because the problem is in this file. I'll let you know if I found something.
Today I've tried to create something like a filter in the _ParseArgs()
function (core.py
). This filter check if there is the keyword "self"
in fn_args
and the component is a class, so it remove "self"
from fn_args
and append it to fn_defaults
(to do this I've converted fn_defaults
to a list, I've appended "self"
and I've reconverted it in a tuple), but this doesn't work. Tomorrow I'll try to find other solutions.
@joejoevictor is also taking a look at this
Any updates on this issue? cc: @joejoevictor