extract load_from_files to load_config
This commit is contained in:
parent
673b3034ee
commit
1347107c1e
@ -12,7 +12,7 @@ from freqtrade.configuration.check_exchange import check_exchange
|
|||||||
from freqtrade.configuration.deprecated_settings import process_temporary_deprecated_settings
|
from freqtrade.configuration.deprecated_settings import process_temporary_deprecated_settings
|
||||||
from freqtrade.configuration.directory_operations import create_datadir, create_userdata_dir
|
from freqtrade.configuration.directory_operations import create_datadir, create_userdata_dir
|
||||||
from freqtrade.configuration.environment_vars import enironment_vars_to_dict
|
from freqtrade.configuration.environment_vars import enironment_vars_to_dict
|
||||||
from freqtrade.configuration.load_config import load_config_file, load_file
|
from freqtrade.configuration.load_config import load_file, load_from_files
|
||||||
from freqtrade.enums import NON_UTIL_MODES, TRADING_MODES, CandleType, RunMode, TradingMode
|
from freqtrade.enums import NON_UTIL_MODES, TRADING_MODES, CandleType, RunMode, TradingMode
|
||||||
from freqtrade.exceptions import OperationalException
|
from freqtrade.exceptions import OperationalException
|
||||||
from freqtrade.loggers import setup_logging
|
from freqtrade.loggers import setup_logging
|
||||||
@ -55,34 +55,17 @@ class Configuration:
|
|||||||
:param files: List of file paths
|
:param files: List of file paths
|
||||||
:return: configuration dictionary
|
:return: configuration dictionary
|
||||||
"""
|
"""
|
||||||
|
# Keep this method as staticmethod, so it can be used from interactive environments
|
||||||
c = Configuration({'config': files}, RunMode.OTHER)
|
c = Configuration({'config': files}, RunMode.OTHER)
|
||||||
return c.get_config()
|
return c.get_config()
|
||||||
|
|
||||||
def load_from_files(self, files: List[str]) -> Dict[str, Any]:
|
|
||||||
|
|
||||||
# Keep this method as staticmethod, so it can be used from interactive environments
|
|
||||||
config: Dict[str, Any] = {}
|
|
||||||
|
|
||||||
if not files:
|
|
||||||
return deepcopy(constants.MINIMAL_CONFIG)
|
|
||||||
|
|
||||||
# We expect here a list of config filenames
|
|
||||||
for path in files:
|
|
||||||
logger.info(f'Using config: {path} ...')
|
|
||||||
# Merge config options, overwriting old values
|
|
||||||
config = deep_merge_dicts(load_config_file(path), config)
|
|
||||||
|
|
||||||
config['config_files'] = files
|
|
||||||
|
|
||||||
return config
|
|
||||||
|
|
||||||
def load_config(self) -> Dict[str, Any]:
|
def load_config(self) -> Dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
Extract information for sys.argv and load the bot configuration
|
Extract information for sys.argv and load the bot configuration
|
||||||
:return: Configuration dictionary
|
:return: Configuration dictionary
|
||||||
"""
|
"""
|
||||||
# Load all configs
|
# Load all configs
|
||||||
config: Dict[str, Any] = self.load_from_files(self.args.get("config", []))
|
config: Dict[str, Any] = load_from_files(self.args.get("config", []))
|
||||||
|
|
||||||
# Load environment variables
|
# Load environment variables
|
||||||
env_data = enironment_vars_to_dict()
|
env_data = enironment_vars_to_dict()
|
||||||
|
@ -4,12 +4,15 @@ This module contain functions to load the configuration file
|
|||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
from copy import deepcopy
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
import rapidjson
|
import rapidjson
|
||||||
|
|
||||||
|
from freqtrade.constants import MINIMAL_CONFIG
|
||||||
from freqtrade.exceptions import OperationalException
|
from freqtrade.exceptions import OperationalException
|
||||||
|
from freqtrade.misc import deep_merge_dicts
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -70,3 +73,21 @@ def load_config_file(path: str) -> Dict[str, Any]:
|
|||||||
)
|
)
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
||||||
|
def load_from_files(files: List[str]) -> Dict[str, Any]:
|
||||||
|
|
||||||
|
config: Dict[str, Any] = {}
|
||||||
|
|
||||||
|
if not files:
|
||||||
|
return deepcopy(MINIMAL_CONFIG)
|
||||||
|
|
||||||
|
# We expect here a list of config filenames
|
||||||
|
for path in files:
|
||||||
|
logger.info(f'Using config: {path} ...')
|
||||||
|
# Merge config options, overwriting old values
|
||||||
|
config = deep_merge_dicts(load_config_file(path), config)
|
||||||
|
|
||||||
|
config['config_files'] = files
|
||||||
|
|
||||||
|
return config
|
||||||
|
@ -87,7 +87,7 @@ def get_mock_coro(return_value):
|
|||||||
|
|
||||||
def patched_configuration_load_config_file(mocker, config) -> None:
|
def patched_configuration_load_config_file(mocker, config) -> None:
|
||||||
mocker.patch(
|
mocker.patch(
|
||||||
'freqtrade.configuration.configuration.load_config_file',
|
'freqtrade.configuration.load_config.load_config_file',
|
||||||
lambda *args, **kwargs: config
|
lambda *args, **kwargs: config
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@ def test_load_config_combine_dicts(default_conf, mocker, caplog) -> None:
|
|||||||
|
|
||||||
configsmock = MagicMock(side_effect=config_files)
|
configsmock = MagicMock(side_effect=config_files)
|
||||||
mocker.patch(
|
mocker.patch(
|
||||||
'freqtrade.configuration.configuration.load_config_file',
|
'freqtrade.configuration.load_config.load_config_file',
|
||||||
configsmock
|
configsmock
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ def test_from_config(default_conf, mocker, caplog) -> None:
|
|||||||
mocker.patch('freqtrade.configuration.configuration.create_datadir', lambda c, x: x)
|
mocker.patch('freqtrade.configuration.configuration.create_datadir', lambda c, x: x)
|
||||||
|
|
||||||
configsmock = MagicMock(side_effect=config_files)
|
configsmock = MagicMock(side_effect=config_files)
|
||||||
mocker.patch('freqtrade.configuration.configuration.load_config_file', configsmock)
|
mocker.patch('freqtrade.configuration.load_config.load_config_file', configsmock)
|
||||||
|
|
||||||
validated_conf = Configuration.from_files(['test_conf.json', 'test2_conf.json'])
|
validated_conf = Configuration.from_files(['test_conf.json', 'test2_conf.json'])
|
||||||
|
|
||||||
@ -214,7 +214,7 @@ def test_print_config(default_conf, mocker, caplog) -> None:
|
|||||||
|
|
||||||
configsmock = MagicMock(side_effect=config_files)
|
configsmock = MagicMock(side_effect=config_files)
|
||||||
mocker.patch('freqtrade.configuration.configuration.create_datadir', lambda c, x: x)
|
mocker.patch('freqtrade.configuration.configuration.create_datadir', lambda c, x: x)
|
||||||
mocker.patch('freqtrade.configuration.configuration.load_config_file', configsmock)
|
mocker.patch('freqtrade.configuration.configuration.load_from_files', configsmock)
|
||||||
|
|
||||||
validated_conf = Configuration.from_files(['test_conf.json'])
|
validated_conf = Configuration.from_files(['test_conf.json'])
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user