Add simple method to add deprecations to cmd line options
This commit is contained in:
parent
e8843c31e6
commit
7ee971c3e3
@ -4,6 +4,7 @@ This module contains the configuration class
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
import warnings
|
||||||
from argparse import Namespace
|
from argparse import Namespace
|
||||||
from typing import Any, Callable, Dict, Optional
|
from typing import Any, Callable, Dict, Optional
|
||||||
|
|
||||||
@ -15,7 +16,6 @@ from freqtrade.loggers import setup_logging
|
|||||||
from freqtrade.misc import deep_merge_dicts
|
from freqtrade.misc import deep_merge_dicts
|
||||||
from freqtrade.state import RunMode
|
from freqtrade.state import RunMode
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@ -187,7 +187,8 @@ class Configuration(object):
|
|||||||
'Using ticker_interval: {} ...')
|
'Using ticker_interval: {} ...')
|
||||||
|
|
||||||
self._args_to_config(config, argname='live',
|
self._args_to_config(config, argname='live',
|
||||||
logstring='Parameter -l/--live detected ...')
|
logstring='Parameter -l/--live detected ...',
|
||||||
|
deprecated_msg='--live will be removed soon.')
|
||||||
|
|
||||||
self._args_to_config(config, argname='position_stacking',
|
self._args_to_config(config, argname='position_stacking',
|
||||||
logstring='Parameter --enable-position-stacking detected ...')
|
logstring='Parameter --enable-position-stacking detected ...')
|
||||||
@ -323,7 +324,8 @@ class Configuration(object):
|
|||||||
'to be greater than trailing_stop_positive_offset in your config.')
|
'to be greater than trailing_stop_positive_offset in your config.')
|
||||||
|
|
||||||
def _args_to_config(self, config: Dict[str, Any], argname: str,
|
def _args_to_config(self, config: Dict[str, Any], argname: str,
|
||||||
logstring: str, logfun: Optional[Callable] = None) -> None:
|
logstring: str, logfun: Optional[Callable] = None,
|
||||||
|
deprecated_msg: Optional[str] = None) -> None:
|
||||||
"""
|
"""
|
||||||
:param config: Configuration dictionary
|
:param config: Configuration dictionary
|
||||||
:param argname: Argumentname in self.args - will be copied to config dict.
|
:param argname: Argumentname in self.args - will be copied to config dict.
|
||||||
@ -340,3 +342,5 @@ class Configuration(object):
|
|||||||
logger.info(logstring.format(logfun(config[argname])))
|
logger.info(logstring.format(logfun(config[argname])))
|
||||||
else:
|
else:
|
||||||
logger.info(logstring.format(config[argname]))
|
logger.info(logstring.format(config[argname]))
|
||||||
|
if deprecated_msg:
|
||||||
|
warnings.warn(f"DEPRECATED: {deprecated_msg}", DeprecationWarning)
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
# pragma pylint: disable=missing-docstring, protected-access, invalid-name
|
# pragma pylint: disable=missing-docstring, protected-access, invalid-name
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import warnings
|
||||||
from argparse import Namespace
|
from argparse import Namespace
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from unittest.mock import MagicMock
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from unittest.mock import MagicMock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from jsonschema import Draft4Validator, ValidationError, validate
|
from jsonschema import Draft4Validator, ValidationError, validate
|
||||||
@ -62,6 +63,32 @@ def test_load_config_file(default_conf, mocker, caplog) -> None:
|
|||||||
assert validated_conf.items() >= default_conf.items()
|
assert validated_conf.items() >= default_conf.items()
|
||||||
|
|
||||||
|
|
||||||
|
def test__args_to_config(caplog):
|
||||||
|
|
||||||
|
arg_list = ['--strategy-path', 'TestTest']
|
||||||
|
args = Arguments(arg_list, '').get_parsed_arg()
|
||||||
|
configuration = Configuration(args)
|
||||||
|
config = {}
|
||||||
|
with warnings.catch_warnings(record=True) as w:
|
||||||
|
# No warnings ...
|
||||||
|
configuration._args_to_config(config, argname="strategy_path", logstring="DeadBeef")
|
||||||
|
assert len(w) == 0
|
||||||
|
assert log_has("DeadBeef", caplog.record_tuples)
|
||||||
|
assert config['strategy_path'] == "TestTest"
|
||||||
|
|
||||||
|
configuration = Configuration(args)
|
||||||
|
config = {}
|
||||||
|
with warnings.catch_warnings(record=True) as w:
|
||||||
|
# Deprecation warnings!
|
||||||
|
configuration._args_to_config(config, argname="strategy_path", logstring="DeadBeef",
|
||||||
|
deprecated_msg="Going away soon!")
|
||||||
|
assert len(w) == 1
|
||||||
|
assert issubclass(w[-1].category, DeprecationWarning)
|
||||||
|
assert "DEPRECATED: Going away soon!" in str(w[-1].message)
|
||||||
|
assert log_has("DeadBeef", caplog.record_tuples)
|
||||||
|
assert config['strategy_path'] == "TestTest"
|
||||||
|
|
||||||
|
|
||||||
def test_load_config_max_open_trades_zero(default_conf, mocker, caplog) -> None:
|
def test_load_config_max_open_trades_zero(default_conf, mocker, caplog) -> None:
|
||||||
default_conf['max_open_trades'] = 0
|
default_conf['max_open_trades'] = 0
|
||||||
patched_configuration_load_config_file(mocker, default_conf)
|
patched_configuration_load_config_file(mocker, default_conf)
|
||||||
|
Loading…
Reference in New Issue
Block a user