From 537d10c627bb307875507b69219ad29ce82a31da Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 May 2022 20:43:43 +0200 Subject: [PATCH] Improve some typing --- freqtrade/configuration/configuration.py | 5 +++-- freqtrade/configuration/directory_operations.py | 2 +- freqtrade/strategy/hyper.py | 4 ++-- freqtrade/strategy/parameters.py | 2 ++ pyproject.toml | 3 +++ 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 96b585cd1..3f563b6cd 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -490,7 +490,8 @@ class Configuration: if not pairs_file.exists(): raise OperationalException(f'No pairs file found with path "{pairs_file}".') config['pairs'] = load_file(pairs_file) - config['pairs'].sort() + if isinstance(config['pairs'], list): + config['pairs'].sort() return if 'config' in self.args and self.args['config']: @@ -501,5 +502,5 @@ class Configuration: pairs_file = config['datadir'] / 'pairs.json' if pairs_file.exists(): config['pairs'] = load_file(pairs_file) - if 'pairs' in config: + if 'pairs' in config and isinstance(config['pairs'], list): config['pairs'].sort() diff --git a/freqtrade/configuration/directory_operations.py b/freqtrade/configuration/directory_operations.py index ca305c260..771fd53cc 100644 --- a/freqtrade/configuration/directory_operations.py +++ b/freqtrade/configuration/directory_operations.py @@ -15,7 +15,7 @@ def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> Pat folder = Path(datadir) if datadir else Path(f"{config['user_data_dir']}/data") if not datadir: # set datadir - exchange_name = config.get('exchange', {}).get('name').lower() + exchange_name = config.get('exchange', {}).get('name', '').lower() folder = folder.joinpath(exchange_name) if not folder.is_dir(): diff --git a/freqtrade/strategy/hyper.py b/freqtrade/strategy/hyper.py index 15f5be483..5c09dd862 100644 --- a/freqtrade/strategy/hyper.py +++ b/freqtrade/strategy/hyper.py @@ -69,7 +69,7 @@ class HyperStrategyMixin: @classmethod def detect_all_parameters(cls) -> Dict: """ Detect all parameters and return them as a list""" - params: Dict = { + params: Dict[str, Any] = { 'buy': list(cls.detect_parameters('buy')), 'sell': list(cls.detect_parameters('sell')), 'protection': list(cls.detect_parameters('protection')), @@ -148,7 +148,7 @@ class HyperStrategyMixin: """ Returns list of Parameters that are not part of the current optimize job """ - params = { + params: Dict[str, Dict] = { 'buy': {}, 'sell': {}, 'protection': {}, diff --git a/freqtrade/strategy/parameters.py b/freqtrade/strategy/parameters.py index 02706690d..83dd41de9 100644 --- a/freqtrade/strategy/parameters.py +++ b/freqtrade/strategy/parameters.py @@ -97,6 +97,8 @@ class NumericParameter(BaseParameter): class IntParameter(NumericParameter): default: int value: int + low: int + high: int def __init__(self, low: Union[int, Sequence[int]], high: Optional[int] = None, *, default: int, space: Optional[str] = None, optimize: bool = True, load: bool = True, **kwargs): diff --git a/pyproject.toml b/pyproject.toml index 0cb81f745..8020b0636 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,3 +50,6 @@ exclude = [ "build_helpers/*.py", ] ignore = ["freqtrade/vendor/**"] + +# Align pyright to mypy config +strictParameterNoneValue = false