Add errorsupression to safe wrapper
This commit is contained in:
parent
bc821c7c20
commit
c047e48a47
@ -5,7 +5,7 @@ from freqtrade.exceptions import StrategyError
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def strategy_safe_wrapper(f, message: str = "", default_retval=None):
|
def strategy_safe_wrapper(f, message: str = "", default_retval=None, supress_error=False):
|
||||||
"""
|
"""
|
||||||
Wrapper around user-provided methods and functions.
|
Wrapper around user-provided methods and functions.
|
||||||
Caches all exceptions and returns either the default_retval (if it's not None) or raises
|
Caches all exceptions and returns either the default_retval (if it's not None) or raises
|
||||||
@ -20,7 +20,7 @@ def strategy_safe_wrapper(f, message: str = "", default_retval=None):
|
|||||||
f"Strategy caused the following exception: {error}"
|
f"Strategy caused the following exception: {error}"
|
||||||
f"{f}"
|
f"{f}"
|
||||||
)
|
)
|
||||||
if default_retval is None:
|
if default_retval is None and not supress_error:
|
||||||
raise StrategyError(str(error)) from error
|
raise StrategyError(str(error)) from error
|
||||||
return default_retval
|
return default_retval
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
@ -28,7 +28,7 @@ def strategy_safe_wrapper(f, message: str = "", default_retval=None):
|
|||||||
f"{message}"
|
f"{message}"
|
||||||
f"Unexpected error {error} calling {f}"
|
f"Unexpected error {error} calling {f}"
|
||||||
)
|
)
|
||||||
if default_retval is None:
|
if default_retval is None and not supress_error:
|
||||||
raise StrategyError(str(error)) from error
|
raise StrategyError(str(error)) from error
|
||||||
return default_retval
|
return default_retval
|
||||||
|
|
||||||
|
@ -448,6 +448,11 @@ def test_strategy_safe_wrapper_error(caplog, error):
|
|||||||
assert isinstance(ret, bool)
|
assert isinstance(ret, bool)
|
||||||
assert ret
|
assert ret
|
||||||
|
|
||||||
|
caplog.clear()
|
||||||
|
# Test supressing error
|
||||||
|
ret = strategy_safe_wrapper(failing_method, message='DeadBeef', supress_error=True)()
|
||||||
|
assert log_has_re(r'DeadBeef.*', caplog)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('value', [
|
@pytest.mark.parametrize('value', [
|
||||||
1, 22, 55, True, False, {'a': 1, 'b': '112'},
|
1, 22, 55, True, False, {'a': 1, 'b': '112'},
|
||||||
|
Loading…
Reference in New Issue
Block a user