Merge pull request #2035 from hroff-1902/cleanup-arguments
minor: cleanup Arguments
This commit is contained in:
commit
415c96204a
@ -342,14 +342,15 @@ class Arguments(object):
|
|||||||
"""
|
"""
|
||||||
Arguments Class. Manage the arguments received by the cli
|
Arguments Class. Manage the arguments received by the cli
|
||||||
"""
|
"""
|
||||||
def __init__(self, args: Optional[List[str]], description: str) -> None:
|
def __init__(self, args: Optional[List[str]], description: str,
|
||||||
|
no_default_config: bool = False) -> None:
|
||||||
self.args = args
|
self.args = args
|
||||||
self.parsed_arg: Optional[argparse.Namespace] = None
|
self._parsed_arg: Optional[argparse.Namespace] = None
|
||||||
self.parser = argparse.ArgumentParser(description=description)
|
self.parser = argparse.ArgumentParser(description=description)
|
||||||
|
self._no_default_config = no_default_config
|
||||||
|
|
||||||
def _load_args(self) -> None:
|
def _load_args(self) -> None:
|
||||||
self.build_args(optionlist=ARGS_MAIN)
|
self._build_args(optionlist=ARGS_MAIN)
|
||||||
|
|
||||||
self._build_subcommands()
|
self._build_subcommands()
|
||||||
|
|
||||||
def get_parsed_arg(self) -> argparse.Namespace:
|
def get_parsed_arg(self) -> argparse.Namespace:
|
||||||
@ -357,13 +358,13 @@ class Arguments(object):
|
|||||||
Return the list of arguments
|
Return the list of arguments
|
||||||
:return: List[str] List of arguments
|
:return: List[str] List of arguments
|
||||||
"""
|
"""
|
||||||
if self.parsed_arg is None:
|
if self._parsed_arg is None:
|
||||||
self._load_args()
|
self._load_args()
|
||||||
self.parsed_arg = self.parse_args()
|
self._parsed_arg = self._parse_args()
|
||||||
|
|
||||||
return self.parsed_arg
|
return self._parsed_arg
|
||||||
|
|
||||||
def parse_args(self, no_default_config: bool = False) -> argparse.Namespace:
|
def _parse_args(self) -> argparse.Namespace:
|
||||||
"""
|
"""
|
||||||
Parses given arguments and returns an argparse Namespace instance.
|
Parses given arguments and returns an argparse Namespace instance.
|
||||||
"""
|
"""
|
||||||
@ -371,12 +372,12 @@ class Arguments(object):
|
|||||||
|
|
||||||
# Workaround issue in argparse with action='append' and default value
|
# Workaround issue in argparse with action='append' and default value
|
||||||
# (see https://bugs.python.org/issue16399)
|
# (see https://bugs.python.org/issue16399)
|
||||||
if not no_default_config and parsed_arg.config is None:
|
if not self._no_default_config and parsed_arg.config is None:
|
||||||
parsed_arg.config = [constants.DEFAULT_CONFIG]
|
parsed_arg.config = [constants.DEFAULT_CONFIG]
|
||||||
|
|
||||||
return parsed_arg
|
return parsed_arg
|
||||||
|
|
||||||
def build_args(self, optionlist, parser=None):
|
def _build_args(self, optionlist, parser=None):
|
||||||
parser = parser or self.parser
|
parser = parser or self.parser
|
||||||
|
|
||||||
for val in optionlist:
|
for val in optionlist:
|
||||||
@ -396,17 +397,17 @@ class Arguments(object):
|
|||||||
# Add backtesting subcommand
|
# Add backtesting subcommand
|
||||||
backtesting_cmd = subparsers.add_parser('backtesting', help='Backtesting module.')
|
backtesting_cmd = subparsers.add_parser('backtesting', help='Backtesting module.')
|
||||||
backtesting_cmd.set_defaults(func=start_backtesting)
|
backtesting_cmd.set_defaults(func=start_backtesting)
|
||||||
self.build_args(optionlist=ARGS_BACKTEST, parser=backtesting_cmd)
|
self._build_args(optionlist=ARGS_BACKTEST, parser=backtesting_cmd)
|
||||||
|
|
||||||
# Add edge subcommand
|
# Add edge subcommand
|
||||||
edge_cmd = subparsers.add_parser('edge', help='Edge module.')
|
edge_cmd = subparsers.add_parser('edge', help='Edge module.')
|
||||||
edge_cmd.set_defaults(func=start_edge)
|
edge_cmd.set_defaults(func=start_edge)
|
||||||
self.build_args(optionlist=ARGS_EDGE, parser=edge_cmd)
|
self._build_args(optionlist=ARGS_EDGE, parser=edge_cmd)
|
||||||
|
|
||||||
# Add hyperopt subcommand
|
# Add hyperopt subcommand
|
||||||
hyperopt_cmd = subparsers.add_parser('hyperopt', help='Hyperopt module.')
|
hyperopt_cmd = subparsers.add_parser('hyperopt', help='Hyperopt module.')
|
||||||
hyperopt_cmd.set_defaults(func=start_hyperopt)
|
hyperopt_cmd.set_defaults(func=start_hyperopt)
|
||||||
self.build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd)
|
self._build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd)
|
||||||
|
|
||||||
# Add list-exchanges subcommand
|
# Add list-exchanges subcommand
|
||||||
list_exchanges_cmd = subparsers.add_parser(
|
list_exchanges_cmd = subparsers.add_parser(
|
||||||
@ -414,7 +415,7 @@ class Arguments(object):
|
|||||||
help='Print available exchanges.'
|
help='Print available exchanges.'
|
||||||
)
|
)
|
||||||
list_exchanges_cmd.set_defaults(func=start_list_exchanges)
|
list_exchanges_cmd.set_defaults(func=start_list_exchanges)
|
||||||
self.build_args(optionlist=ARGS_LIST_EXCHANGES, parser=list_exchanges_cmd)
|
self._build_args(optionlist=ARGS_LIST_EXCHANGES, parser=list_exchanges_cmd)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def parse_timerange(text: Optional[str]) -> TimeRange:
|
def parse_timerange(text: Optional[str]) -> TimeRange:
|
||||||
|
@ -51,8 +51,8 @@ def test_parse_args_verbose() -> None:
|
|||||||
|
|
||||||
def test_common_scripts_options() -> None:
|
def test_common_scripts_options() -> None:
|
||||||
arguments = Arguments(['-p', 'ETH/BTC'], '')
|
arguments = Arguments(['-p', 'ETH/BTC'], '')
|
||||||
arguments.build_args(ARGS_DOWNLOADER)
|
arguments._build_args(ARGS_DOWNLOADER)
|
||||||
args = arguments.parse_args()
|
args = arguments._parse_args()
|
||||||
assert args.pairs == 'ETH/BTC'
|
assert args.pairs == 'ETH/BTC'
|
||||||
|
|
||||||
|
|
||||||
@ -180,9 +180,8 @@ def test_download_data_options() -> None:
|
|||||||
'--exchange', 'binance'
|
'--exchange', 'binance'
|
||||||
]
|
]
|
||||||
arguments = Arguments(args, '')
|
arguments = Arguments(args, '')
|
||||||
arguments.build_args(ARGS_DOWNLOADER)
|
arguments._build_args(ARGS_DOWNLOADER)
|
||||||
|
args = arguments._parse_args()
|
||||||
args = arguments.parse_args()
|
|
||||||
assert args.pairs_file == 'file_with_pairs'
|
assert args.pairs_file == 'file_with_pairs'
|
||||||
assert args.datadir == 'datadir/directory'
|
assert args.datadir == 'datadir/directory'
|
||||||
assert args.days == 30
|
assert args.days == 30
|
||||||
@ -197,8 +196,8 @@ def test_plot_dataframe_options() -> None:
|
|||||||
'-p', 'UNITTEST/BTC',
|
'-p', 'UNITTEST/BTC',
|
||||||
]
|
]
|
||||||
arguments = Arguments(args, '')
|
arguments = Arguments(args, '')
|
||||||
arguments.build_args(ARGS_PLOT_DATAFRAME)
|
arguments._build_args(ARGS_PLOT_DATAFRAME)
|
||||||
pargs = arguments.parse_args(True)
|
pargs = arguments._parse_args()
|
||||||
assert pargs.indicators1 == "sma10,sma100"
|
assert pargs.indicators1 == "sma10,sma100"
|
||||||
assert pargs.indicators2 == "macd,fastd,fastk"
|
assert pargs.indicators2 == "macd,fastd,fastk"
|
||||||
assert pargs.plot_limit == 30
|
assert pargs.plot_limit == 30
|
||||||
@ -206,7 +205,6 @@ def test_plot_dataframe_options() -> None:
|
|||||||
|
|
||||||
|
|
||||||
def test_check_int_positive() -> None:
|
def test_check_int_positive() -> None:
|
||||||
|
|
||||||
assert check_int_positive("3") == 3
|
assert check_int_positive("3") == 3
|
||||||
assert check_int_positive("1") == 1
|
assert check_int_positive("1") == 1
|
||||||
assert check_int_positive("100") == 100
|
assert check_int_positive("100") == 100
|
||||||
|
@ -22,12 +22,12 @@ logger = logging.getLogger('download_backtest_data')
|
|||||||
|
|
||||||
DEFAULT_DL_PATH = 'user_data/data'
|
DEFAULT_DL_PATH = 'user_data/data'
|
||||||
|
|
||||||
arguments = Arguments(sys.argv[1:], 'Download backtest data')
|
|
||||||
arguments.build_args(ARGS_DOWNLOADER)
|
|
||||||
|
|
||||||
# Do not read the default config if config is not specified
|
# Do not read the default config if config is not specified
|
||||||
# in the command line options explicitely
|
# in the command line options explicitely
|
||||||
args = arguments.parse_args(no_default_config=True)
|
arguments = Arguments(sys.argv[1:], 'Download backtest data',
|
||||||
|
no_default_config=True)
|
||||||
|
arguments._build_args(optionlist=ARGS_DOWNLOADER)
|
||||||
|
args = arguments._parse_args()
|
||||||
|
|
||||||
# Use bittrex as default exchange
|
# Use bittrex as default exchange
|
||||||
exchange_name = args.exchange or 'bittrex'
|
exchange_name = args.exchange or 'bittrex'
|
||||||
|
@ -89,9 +89,8 @@ def plot_parse_args(args: List[str]) -> Dict[str, Any]:
|
|||||||
:return: args: Array with all arguments
|
:return: args: Array with all arguments
|
||||||
"""
|
"""
|
||||||
arguments = Arguments(args, 'Graph dataframe')
|
arguments = Arguments(args, 'Graph dataframe')
|
||||||
arguments.build_args(optionlist=ARGS_PLOT_DATAFRAME)
|
arguments._build_args(optionlist=ARGS_PLOT_DATAFRAME)
|
||||||
|
parsed_args = arguments._parse_args()
|
||||||
parsed_args = arguments.parse_args()
|
|
||||||
|
|
||||||
# Load the configuration
|
# Load the configuration
|
||||||
config = setup_configuration(parsed_args, RunMode.OTHER)
|
config = setup_configuration(parsed_args, RunMode.OTHER)
|
||||||
|
@ -42,9 +42,8 @@ def plot_parse_args(args: List[str]) -> Dict[str, Any]:
|
|||||||
:return: args: Array with all arguments
|
:return: args: Array with all arguments
|
||||||
"""
|
"""
|
||||||
arguments = Arguments(args, 'Graph profits')
|
arguments = Arguments(args, 'Graph profits')
|
||||||
arguments.build_args(optionlist=ARGS_PLOT_PROFIT)
|
arguments._build_args(optionlist=ARGS_PLOT_PROFIT)
|
||||||
|
parsed_args = arguments._parse_args()
|
||||||
parsed_args = arguments.parse_args()
|
|
||||||
|
|
||||||
# Load the configuration
|
# Load the configuration
|
||||||
config = setup_configuration(parsed_args, RunMode.OTHER)
|
config = setup_configuration(parsed_args, RunMode.OTHER)
|
||||||
|
Loading…
Reference in New Issue
Block a user