Merge pull request #2235 from hroff-1902/eliminate_import_strategy
Allow --strategy for hyperopt
This commit is contained in:
		| @@ -9,7 +9,7 @@ from arrow import Arrow | ||||
| from filelock import Timeout | ||||
| from pathlib import Path | ||||
|  | ||||
| from freqtrade import DependencyException, OperationalException | ||||
| from freqtrade import OperationalException | ||||
| from freqtrade.data.converter import parse_ticker_dataframe | ||||
| from freqtrade.data.history import load_tickerdata_file | ||||
| from freqtrade.optimize import setup_configuration, start_hyperopt | ||||
| @@ -246,24 +246,6 @@ def test_start_no_data(mocker, default_conf, caplog) -> None: | ||||
|     assert log_has('No data found. Terminating.', caplog) | ||||
|  | ||||
|  | ||||
| def test_start_failure(mocker, default_conf, caplog) -> None: | ||||
|     start_mock = MagicMock() | ||||
|     patched_configuration_load_config_file(mocker, default_conf) | ||||
|     mocker.patch('freqtrade.optimize.hyperopt.Hyperopt.start', start_mock) | ||||
|     patch_exchange(mocker) | ||||
|  | ||||
|     args = [ | ||||
|         '--config', 'config.json', | ||||
|         '--strategy', 'SampleStrategy', | ||||
|         'hyperopt', | ||||
|         '--epochs', '5' | ||||
|     ] | ||||
|     args = get_args(args) | ||||
|     with pytest.raises(DependencyException): | ||||
|         start_hyperopt(args) | ||||
|     assert log_has("Please don't use --strategy for hyperopt.", caplog) | ||||
|  | ||||
|  | ||||
| def test_start_filelock(mocker, default_conf, caplog) -> None: | ||||
|     start_mock = MagicMock(side_effect=Timeout(Hyperopt.get_lock_filename(default_conf))) | ||||
|     patched_configuration_load_config_file(mocker, default_conf) | ||||
|   | ||||
| @@ -5,40 +5,16 @@ import warnings | ||||
| from base64 import urlsafe_b64encode | ||||
| from os import path | ||||
| from pathlib import Path | ||||
| from unittest.mock import Mock | ||||
|  | ||||
| import pytest | ||||
| from pandas import DataFrame | ||||
|  | ||||
| from freqtrade import OperationalException | ||||
| from freqtrade.resolvers import StrategyResolver | ||||
| from freqtrade.strategy import import_strategy | ||||
| from freqtrade.strategy.default_strategy import DefaultStrategy | ||||
| from freqtrade.strategy.interface import IStrategy | ||||
| from freqtrade.tests.conftest import log_has, log_has_re | ||||
|  | ||||
|  | ||||
| def test_import_strategy(caplog): | ||||
|     caplog.set_level(logging.DEBUG) | ||||
|     default_config = {} | ||||
|  | ||||
|     strategy = DefaultStrategy(default_config) | ||||
|     strategy.some_method = lambda *args, **kwargs: 42 | ||||
|  | ||||
|     assert strategy.__module__ == 'freqtrade.strategy.default_strategy' | ||||
|     assert strategy.some_method() == 42 | ||||
|  | ||||
|     imported_strategy = import_strategy(strategy, default_config) | ||||
|  | ||||
|     assert dir(strategy) == dir(imported_strategy) | ||||
|  | ||||
|     assert imported_strategy.__module__ == 'freqtrade.strategy' | ||||
|     assert imported_strategy.some_method() == 42 | ||||
|  | ||||
|     assert log_has('Imported strategy freqtrade.strategy.default_strategy.DefaultStrategy ' | ||||
|                    'as freqtrade.strategy.DefaultStrategy', caplog) | ||||
|  | ||||
|  | ||||
| def test_search_strategy(): | ||||
|     default_config = {} | ||||
|     default_location = Path(__file__).parent.parent.parent.joinpath('strategy').resolve() | ||||
| @@ -96,16 +72,6 @@ def test_load_not_found_strategy(default_conf): | ||||
|         strategy._load_strategy(strategy_name='NotFoundStrategy', config=default_conf) | ||||
|  | ||||
|  | ||||
| def test_load_staticmethod_importerror(mocker, caplog, default_conf): | ||||
|     mocker.patch("freqtrade.resolvers.strategy_resolver.import_strategy", Mock( | ||||
|         side_effect=TypeError("can't pickle staticmethod objects"))) | ||||
|     with pytest.raises(OperationalException, | ||||
|                        match=r"Impossible to load Strategy 'DefaultStrategy'. " | ||||
|                              r"This class does not exist or contains Python code errors."): | ||||
|         StrategyResolver(default_conf) | ||||
|     assert log_has_re(r".*Error: can't pickle staticmethod objects", caplog) | ||||
|  | ||||
|  | ||||
| def test_strategy(result, default_conf): | ||||
|     default_conf.update({'strategy': 'DefaultStrategy'}) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user