Move pairlists to be a plugin submodule
This commit is contained in:
		| @@ -15,7 +15,7 @@ def start_test_pairlist(args: Dict[str, Any]) -> None: | |||||||
|     """ |     """ | ||||||
|     Test Pairlist configuration |     Test Pairlist configuration | ||||||
|     """ |     """ | ||||||
|     from freqtrade.pairlist.pairlistmanager import PairListManager |     from freqtrade.plugins.pairlistmanager import PairListManager | ||||||
|     config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) |     config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) | ||||||
|  |  | ||||||
|     exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) |     exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ from freqtrade.exceptions import (DependencyException, ExchangeError, Insufficie | |||||||
| from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds | from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds | ||||||
| from freqtrade.misc import safe_value_fallback, safe_value_fallback2 | from freqtrade.misc import safe_value_fallback, safe_value_fallback2 | ||||||
| from freqtrade.mixins import LoggingMixin | from freqtrade.mixins import LoggingMixin | ||||||
| from freqtrade.pairlist.pairlistmanager import PairListManager | from freqtrade.plugins.pairlistmanager import PairListManager | ||||||
| from freqtrade.persistence import Order, PairLocks, Trade, cleanup_db, init_db | from freqtrade.persistence import Order, PairLocks, Trade, cleanup_db, init_db | ||||||
| from freqtrade.plugins.protectionmanager import ProtectionManager | from freqtrade.plugins.protectionmanager import ProtectionManager | ||||||
| from freqtrade.resolvers import ExchangeResolver, StrategyResolver | from freqtrade.resolvers import ExchangeResolver, StrategyResolver | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds | |||||||
| from freqtrade.mixins import LoggingMixin | from freqtrade.mixins import LoggingMixin | ||||||
| from freqtrade.optimize.optimize_reports import (generate_backtest_stats, show_backtest_results, | from freqtrade.optimize.optimize_reports import (generate_backtest_stats, show_backtest_results, | ||||||
|                                                  store_backtest_stats) |                                                  store_backtest_stats) | ||||||
| from freqtrade.pairlist.pairlistmanager import PairListManager | from freqtrade.plugins.pairlistmanager import PairListManager | ||||||
| from freqtrade.persistence import PairLocks, Trade | from freqtrade.persistence import PairLocks, Trade | ||||||
| from freqtrade.plugins.protectionmanager import ProtectionManager | from freqtrade.plugins.protectionmanager import ProtectionManager | ||||||
| from freqtrade.resolvers import ExchangeResolver, StrategyResolver | from freqtrade.resolvers import ExchangeResolver, StrategyResolver | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ from pandas import DataFrame | |||||||
| 
 | 
 | ||||||
| from freqtrade.exceptions import OperationalException | from freqtrade.exceptions import OperationalException | ||||||
| from freqtrade.misc import plural | from freqtrade.misc import plural | ||||||
| from freqtrade.pairlist.IPairList import IPairList | from freqtrade.plugins.pairlist.IPairList import IPairList | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||||
| @@ -6,7 +6,7 @@ from typing import Any, Dict, List | |||||||
| 
 | 
 | ||||||
| import pandas as pd | import pandas as pd | ||||||
| 
 | 
 | ||||||
| from freqtrade.pairlist.IPairList import IPairList | from freqtrade.plugins.pairlist.IPairList import IPairList | ||||||
| from freqtrade.persistence import Trade | from freqtrade.persistence import Trade | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -5,7 +5,7 @@ import logging | |||||||
| from typing import Any, Dict | from typing import Any, Dict | ||||||
| 
 | 
 | ||||||
| from freqtrade.exceptions import OperationalException | from freqtrade.exceptions import OperationalException | ||||||
| from freqtrade.pairlist.IPairList import IPairList | from freqtrade.plugins.pairlist.IPairList import IPairList | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||||
| @@ -5,7 +5,7 @@ import logging | |||||||
| from typing import Any, Dict | from typing import Any, Dict | ||||||
| 
 | 
 | ||||||
| from freqtrade.exceptions import OperationalException | from freqtrade.exceptions import OperationalException | ||||||
| from freqtrade.pairlist.IPairList import IPairList | from freqtrade.plugins.pairlist.IPairList import IPairList | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||||
| @@ -5,7 +5,7 @@ import logging | |||||||
| import random | import random | ||||||
| from typing import Any, Dict, List | from typing import Any, Dict, List | ||||||
| 
 | 
 | ||||||
| from freqtrade.pairlist.IPairList import IPairList | from freqtrade.plugins.pairlist.IPairList import IPairList | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||||
| @@ -4,7 +4,7 @@ Spread pair list filter | |||||||
| import logging | import logging | ||||||
| from typing import Any, Dict | from typing import Any, Dict | ||||||
| 
 | 
 | ||||||
| from freqtrade.pairlist.IPairList import IPairList | from freqtrade.plugins.pairlist.IPairList import IPairList | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||||
| @@ -7,7 +7,7 @@ import logging | |||||||
| from typing import Any, Dict, List | from typing import Any, Dict, List | ||||||
| 
 | 
 | ||||||
| from freqtrade.exceptions import OperationalException | from freqtrade.exceptions import OperationalException | ||||||
| from freqtrade.pairlist.IPairList import IPairList | from freqtrade.plugins.pairlist.IPairList import IPairList | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||||
| @@ -8,7 +8,7 @@ from datetime import datetime | |||||||
| from typing import Any, Dict, List | from typing import Any, Dict, List | ||||||
| 
 | 
 | ||||||
| from freqtrade.exceptions import OperationalException | from freqtrade.exceptions import OperationalException | ||||||
| from freqtrade.pairlist.IPairList import IPairList | from freqtrade.plugins.pairlist.IPairList import IPairList | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||||
| @@ -11,7 +11,7 @@ from pandas import DataFrame | |||||||
| 
 | 
 | ||||||
| from freqtrade.exceptions import OperationalException | from freqtrade.exceptions import OperationalException | ||||||
| from freqtrade.misc import plural | from freqtrade.misc import plural | ||||||
| from freqtrade.pairlist.IPairList import IPairList | from freqtrade.plugins.pairlist.IPairList import IPairList | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||||
| @@ -9,7 +9,7 @@ from cachetools import TTLCache, cached | |||||||
| 
 | 
 | ||||||
| from freqtrade.constants import ListPairsWithTimeframes | from freqtrade.constants import ListPairsWithTimeframes | ||||||
| from freqtrade.exceptions import OperationalException | from freqtrade.exceptions import OperationalException | ||||||
| from freqtrade.pairlist.IPairList import IPairList | from freqtrade.plugins.pairlist.IPairList import IPairList | ||||||
| from freqtrade.resolvers import PairListResolver | from freqtrade.resolvers import PairListResolver | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -6,7 +6,7 @@ This module load custom pairlists | |||||||
| import logging | import logging | ||||||
| from pathlib import Path | from pathlib import Path | ||||||
|  |  | ||||||
| from freqtrade.pairlist.IPairList import IPairList | from freqtrade.plugins.pairlist.IPairList import IPairList | ||||||
| from freqtrade.resolvers import IResolver | from freqtrade.resolvers import IResolver | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -20,7 +20,7 @@ class PairListResolver(IResolver): | |||||||
|     object_type = IPairList |     object_type = IPairList | ||||||
|     object_type_str = "Pairlist" |     object_type_str = "Pairlist" | ||||||
|     user_subdir = None |     user_subdir = None | ||||||
|     initial_search_path = Path(__file__).parent.parent.joinpath('pairlist').resolve() |     initial_search_path = Path(__file__).parent.parent.joinpath('plugins/pairlist').resolve() | ||||||
|  |  | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def load_pairlist(pairlist_name: str, exchange, pairlistmanager, |     def load_pairlist(pairlist_name: str, exchange, pairlistmanager, | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ from pandas import DataFrame | |||||||
|  |  | ||||||
| from freqtrade.data.dataprovider import DataProvider | from freqtrade.data.dataprovider import DataProvider | ||||||
| from freqtrade.exceptions import ExchangeError, OperationalException | from freqtrade.exceptions import ExchangeError, OperationalException | ||||||
| from freqtrade.pairlist.pairlistmanager import PairListManager | from freqtrade.plugins.pairlistmanager import PairListManager | ||||||
| from freqtrade.state import RunMode | from freqtrade.state import RunMode | ||||||
| from tests.conftest import get_patched_exchange | from tests.conftest import get_patched_exchange | ||||||
|  |  | ||||||
|   | |||||||
| @@ -341,7 +341,7 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: | |||||||
|     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') |     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') | ||||||
|     mocker.patch('freqtrade.optimize.backtesting.generate_backtest_stats') |     mocker.patch('freqtrade.optimize.backtesting.generate_backtest_stats') | ||||||
|     mocker.patch('freqtrade.optimize.backtesting.show_backtest_results') |     mocker.patch('freqtrade.optimize.backtesting.show_backtest_results') | ||||||
|     mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', |     mocker.patch('freqtrade.plugins.pairlistmanager.PairListManager.whitelist', | ||||||
|                  PropertyMock(return_value=['UNITTEST/BTC'])) |                  PropertyMock(return_value=['UNITTEST/BTC'])) | ||||||
|  |  | ||||||
|     default_conf['timeframe'] = '1m' |     default_conf['timeframe'] = '1m' | ||||||
| @@ -372,7 +372,7 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> | |||||||
|     mocker.patch('freqtrade.data.history.get_timerange', get_timerange) |     mocker.patch('freqtrade.data.history.get_timerange', get_timerange) | ||||||
|     patch_exchange(mocker) |     patch_exchange(mocker) | ||||||
|     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') |     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') | ||||||
|     mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', |     mocker.patch('freqtrade.plugins.pairlistmanager.PairListManager.whitelist', | ||||||
|                  PropertyMock(return_value=['UNITTEST/BTC'])) |                  PropertyMock(return_value=['UNITTEST/BTC'])) | ||||||
|  |  | ||||||
|     default_conf['timeframe'] = "1m" |     default_conf['timeframe'] = "1m" | ||||||
| @@ -392,7 +392,7 @@ def test_backtesting_no_pair_left(default_conf, mocker, caplog, testdatadir) -> | |||||||
|     mocker.patch('freqtrade.data.history.get_timerange', get_timerange) |     mocker.patch('freqtrade.data.history.get_timerange', get_timerange) | ||||||
|     patch_exchange(mocker) |     patch_exchange(mocker) | ||||||
|     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') |     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') | ||||||
|     mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', |     mocker.patch('freqtrade.plugins.pairlistmanager.PairListManager.whitelist', | ||||||
|                  PropertyMock(return_value=[])) |                  PropertyMock(return_value=[])) | ||||||
|  |  | ||||||
|     default_conf['timeframe'] = "1m" |     default_conf['timeframe'] = "1m" | ||||||
| @@ -415,9 +415,9 @@ def test_backtesting_pairlist_list(default_conf, mocker, caplog, testdatadir, ti | |||||||
|     mocker.patch('freqtrade.data.history.get_timerange', get_timerange) |     mocker.patch('freqtrade.data.history.get_timerange', get_timerange) | ||||||
|     patch_exchange(mocker) |     patch_exchange(mocker) | ||||||
|     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') |     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') | ||||||
|     mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', |     mocker.patch('freqtrade.plugins.pairlistmanager.PairListManager.whitelist', | ||||||
|                  PropertyMock(return_value=['XRP/BTC'])) |                  PropertyMock(return_value=['XRP/BTC'])) | ||||||
|     mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.refresh_pairlist') |     mocker.patch('freqtrade.plugins.pairlistmanager.PairListManager.refresh_pairlist') | ||||||
|  |  | ||||||
|     default_conf['ticker_interval'] = "1m" |     default_conf['ticker_interval'] = "1m" | ||||||
|     default_conf['datadir'] = testdatadir |     default_conf['datadir'] = testdatadir | ||||||
| @@ -700,7 +700,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): | |||||||
|     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') |     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') | ||||||
|     mocker.patch('freqtrade.optimize.backtesting.generate_backtest_stats') |     mocker.patch('freqtrade.optimize.backtesting.generate_backtest_stats') | ||||||
|     mocker.patch('freqtrade.optimize.backtesting.show_backtest_results') |     mocker.patch('freqtrade.optimize.backtesting.show_backtest_results') | ||||||
|     mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', |     mocker.patch('freqtrade.plugins.pairlistmanager.PairListManager.whitelist', | ||||||
|                  PropertyMock(return_value=['UNITTEST/BTC'])) |                  PropertyMock(return_value=['UNITTEST/BTC'])) | ||||||
|     patched_configuration_load_config_file(mocker, default_conf) |     patched_configuration_load_config_file(mocker, default_conf) | ||||||
|  |  | ||||||
| @@ -740,7 +740,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): | |||||||
|  |  | ||||||
|     patch_exchange(mocker) |     patch_exchange(mocker) | ||||||
|     backtestmock = MagicMock(return_value=pd.DataFrame(columns=BT_DATA_COLUMNS + ['profit_abs'])) |     backtestmock = MagicMock(return_value=pd.DataFrame(columns=BT_DATA_COLUMNS + ['profit_abs'])) | ||||||
|     mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', |     mocker.patch('freqtrade.plugins.pairlistmanager.PairListManager.whitelist', | ||||||
|                  PropertyMock(return_value=['UNITTEST/BTC'])) |                  PropertyMock(return_value=['UNITTEST/BTC'])) | ||||||
|     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', backtestmock) |     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', backtestmock) | ||||||
|     text_table_mock = MagicMock() |     text_table_mock = MagicMock() | ||||||
| @@ -837,7 +837,7 @@ def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdat | |||||||
|                       'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] |                       'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] | ||||||
|                       }), |                       }), | ||||||
|     ]) |     ]) | ||||||
|     mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', |     mocker.patch('freqtrade.plugins.pairlistmanager.PairListManager.whitelist', | ||||||
|                  PropertyMock(return_value=['UNITTEST/BTC'])) |                  PropertyMock(return_value=['UNITTEST/BTC'])) | ||||||
|     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', backtestmock) |     mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', backtestmock) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ import pytest | |||||||
|  |  | ||||||
| from freqtrade.constants import AVAILABLE_PAIRLISTS | from freqtrade.constants import AVAILABLE_PAIRLISTS | ||||||
| from freqtrade.exceptions import OperationalException | from freqtrade.exceptions import OperationalException | ||||||
| from freqtrade.pairlist.pairlistmanager import PairListManager | from freqtrade.plugins.pairlistmanager import PairListManager | ||||||
| from freqtrade.resolvers import PairListResolver | from freqtrade.resolvers import PairListResolver | ||||||
| from tests.conftest import get_patched_freqtradebot, log_has, log_has_re | from tests.conftest import get_patched_freqtradebot, log_has, log_has_re | ||||||
|  |  | ||||||
| @@ -190,7 +190,7 @@ def test_refresh_pairlist_dynamic_2(mocker, shitcoinmarkets, tickers, whitelist_ | |||||||
|     ) |     ) | ||||||
|     # Remove caching of ticker data to emulate changing volume by the time of second call |     # Remove caching of ticker data to emulate changing volume by the time of second call | ||||||
|     mocker.patch.multiple( |     mocker.patch.multiple( | ||||||
|         'freqtrade.pairlist.pairlistmanager.PairListManager', |         'freqtrade.plugins.pairlistmanager.PairListManager', | ||||||
|         _get_cached_tickers=MagicMock(return_value=tickers_dict), |         _get_cached_tickers=MagicMock(return_value=tickers_dict), | ||||||
|     ) |     ) | ||||||
|     freqtrade = get_patched_freqtradebot(mocker, whitelist_conf_2) |     freqtrade = get_patched_freqtradebot(mocker, whitelist_conf_2) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user