diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 760c470cb..4959c2adc 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -3,13 +3,13 @@ This module contains the configuration class """ import json import logging -import os import sys from argparse import Namespace from typing import Any, Callable, Dict, Optional from freqtrade import OperationalException, constants from freqtrade.configuration.check_exchange import check_exchange +from freqtrade.configuration.create_datadir import create_datadir from freqtrade.configuration.json_schema import validate_config_schema from freqtrade.loggers import setup_logging from freqtrade.misc import deep_merge_dicts @@ -171,17 +171,6 @@ class Configuration(object): return config - def _create_datadir(self, config: Dict[str, Any], datadir: Optional[str] = None) -> str: - if not datadir: - # set datadir - exchange_name = config.get('exchange', {}).get('name').lower() - datadir = os.path.join('user_data', 'data', exchange_name) - - if not os.path.isdir(datadir): - os.makedirs(datadir) - logger.info(f'Created data directory: {datadir}') - return datadir - def _args_to_config(self, config: Dict[str, Any], argname: str, logstring: str, logfun: Optional[Callable] = None) -> None: """ @@ -207,9 +196,9 @@ class Configuration(object): the --datadir option """ if 'datadir' in self.args and self.args.datadir: - config.update({'datadir': self._create_datadir(config, self.args.datadir)}) + config.update({'datadir': create_datadir(config, self.args.datadir)}) else: - config.update({'datadir': self._create_datadir(config, None)}) + config.update({'datadir': create_datadir(config, None)}) logger.info('Using data directory: %s ...', config.get('datadir')) def _load_optimize_config(self, config: Dict[str, Any]) -> Dict[str, Any]: diff --git a/freqtrade/configuration/create_datadir.py b/freqtrade/configuration/create_datadir.py new file mode 100644 index 000000000..ecb59bc84 --- /dev/null +++ b/freqtrade/configuration/create_datadir.py @@ -0,0 +1,18 @@ +import logging +import os +from typing import Any, Dict, Optional + + +logger = logging.getLogger(__name__) + + +def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> str: + if not datadir: + # set datadir + exchange_name = config.get('exchange', {}).get('name').lower() + datadir = os.path.join('user_data', 'data', exchange_name) + + if not os.path.isdir(datadir): + os.makedirs(datadir) + logger.info(f'Created data directory: {datadir}') + return datadir diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py index 55405ea3d..ee4d23d35 100644 --- a/freqtrade/tests/optimize/test_backtesting.py +++ b/freqtrade/tests/optimize/test_backtesting.py @@ -205,8 +205,8 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> None: patched_configuration_open(mocker, default_conf) mocker.patch( - 'freqtrade.configuration.configuration.Configuration._create_datadir', - lambda s, c, x: x + 'freqtrade.configuration.configuration.create_datadir', + lambda c, x: x ) args = [ diff --git a/freqtrade/tests/optimize/test_edge_cli.py b/freqtrade/tests/optimize/test_edge_cli.py index 470a831fb..582271af2 100644 --- a/freqtrade/tests/optimize/test_edge_cli.py +++ b/freqtrade/tests/optimize/test_edge_cli.py @@ -46,8 +46,8 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> None: patched_configuration_open(mocker, edge_conf) mocker.patch( - 'freqtrade.configuration.configuration.Configuration._create_datadir', - lambda s, c, x: x + 'freqtrade.configuration.configuration.create_datadir', + lambda c, x: x ) args = [ diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index 386893572..7c00c3023 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -83,8 +83,8 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplog) -> None: patched_configuration_open(mocker, default_conf) mocker.patch( - 'freqtrade.configuration.configuration.Configuration._create_datadir', - lambda s, c, x: x + 'freqtrade.configuration.configuration.create_datadir', + lambda c, x: x ) args = [ diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index d25d36526..f6d2deeaa 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -12,6 +12,7 @@ from jsonschema import Draft4Validator, ValidationError, validate from freqtrade import OperationalException, constants from freqtrade.configuration import Arguments, Configuration from freqtrade.configuration.check_exchange import check_exchange +from freqtrade.configuration.create_datadir import create_datadir from freqtrade.configuration.json_schema import validate_config_schema from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL from freqtrade.loggers import _set_loggers @@ -308,8 +309,8 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> None: patched_configuration_open(mocker, default_conf) mocker.patch( - 'freqtrade.configuration.configuration.Configuration._create_datadir', - lambda s, c, x: x + 'freqtrade.configuration.configuration.create_datadir', + lambda c, x: x ) arglist = [ @@ -580,12 +581,11 @@ def test_validate_default_conf(default_conf) -> None: validate(default_conf, constants.CONF_SCHEMA, Draft4Validator) -def test__create_datadir(mocker, default_conf, caplog) -> None: +def test_create_datadir(mocker, default_conf, caplog) -> None: mocker.patch('os.path.isdir', MagicMock(return_value=False)) md = MagicMock() mocker.patch('os.makedirs', md) - cfg = Configuration(Namespace()) - cfg._create_datadir(default_conf, '/foo/bar') + create_datadir(default_conf, '/foo/bar') assert md.call_args[0][0] == "/foo/bar" assert log_has('Created data directory: /foo/bar', caplog.record_tuples)