Parse and show relevant configuration section
This commit is contained in:
parent
e079d36f84
commit
45aaa8c09d
@ -1,13 +1,15 @@
|
|||||||
"""
|
"""
|
||||||
This module contain functions to load the configuration file
|
This module contain functions to load the configuration file
|
||||||
"""
|
"""
|
||||||
import rapidjson
|
|
||||||
import logging
|
import logging
|
||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
from typing import Any, Dict
|
from typing import Any, Dict
|
||||||
|
|
||||||
from freqtrade.exceptions import OperationalException
|
import rapidjson
|
||||||
|
|
||||||
|
from freqtrade.exceptions import OperationalException
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -15,6 +17,22 @@ logger = logging.getLogger(__name__)
|
|||||||
CONFIG_PARSE_MODE = rapidjson.PM_COMMENTS | rapidjson.PM_TRAILING_COMMAS
|
CONFIG_PARSE_MODE = rapidjson.PM_COMMENTS | rapidjson.PM_TRAILING_COMMAS
|
||||||
|
|
||||||
|
|
||||||
|
def log_config_error_range(path: str, errmsg: str) -> str:
|
||||||
|
"""
|
||||||
|
Parses configuration file and prints range around error
|
||||||
|
"""
|
||||||
|
if path != '-':
|
||||||
|
offsetlist = re.findall(r'(?<=Parse\serror\sat\soffset\s)\d+', errmsg)
|
||||||
|
if offsetlist:
|
||||||
|
offset = int(offsetlist[0])
|
||||||
|
text = Path(path).read_text()
|
||||||
|
# Fetch an offset of 80 characters around the error line
|
||||||
|
subtext = text[offset-min(80, offset):offset+80]
|
||||||
|
segments = subtext.split('\n')
|
||||||
|
# Remove first and last lines, to avoid odd truncations
|
||||||
|
return '\n'.join(segments[1:-1])
|
||||||
|
|
||||||
|
|
||||||
def load_config_file(path: str) -> Dict[str, Any]:
|
def load_config_file(path: str) -> Dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
Loads a config file from the given path
|
Loads a config file from the given path
|
||||||
@ -29,5 +47,11 @@ def load_config_file(path: str) -> Dict[str, Any]:
|
|||||||
raise OperationalException(
|
raise OperationalException(
|
||||||
f'Config file "{path}" not found!'
|
f'Config file "{path}" not found!'
|
||||||
' Please create a config file or check whether it exists.')
|
' Please create a config file or check whether it exists.')
|
||||||
|
except rapidjson.JSONDecodeError as e:
|
||||||
|
err_range = log_config_error_range(path, str(e))
|
||||||
|
raise OperationalException(
|
||||||
|
f'{e}\n'
|
||||||
|
f'Please verify the following segment of your configuration:\n{err_range}'
|
||||||
|
)
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
Loading…
Reference in New Issue
Block a user