diff --git a/freqtrade/exchange/exchange_utils.py b/freqtrade/exchange/exchange_utils.py index eaa6a7f42..43d7acbd6 100644 --- a/freqtrade/exchange/exchange_utils.py +++ b/freqtrade/exchange/exchange_utils.py @@ -54,17 +54,18 @@ def available_exchanges(ccxt_module: CcxtModuleType | None = None) -> list[str]: return [x for x in exchanges if validate_exchange(x)[0]] -def _exchange_has_helper(ex_has: dict[str, Any], required: dict[str, list[str]]) -> list[str]: +def _exchange_has_helper(ex_mod: ccxt.Exchange, required: dict[str, list[str]]) -> list[str]: """ - Checks availability of methods (or their replacement)s in a merged has-dict. - :param ex_has: merged "has" dict (ccxt.has) + Checks availability of methods (or their replacement)s in ex_mod.has + :param ex_mod: ccxt Exchange module :param required: dict of required methods, with possible replacement methods as list :return: list of missing required methods """ return [ k for k, v in required.items() - if ex_has.get(k) is not True and (len(v) == 0 or not (all(ex_has.get(x) for x in v))) + if ex_mod.has.get(k) is not True + and (len(v) == 0 or not (all(ex_mod.has.get(x) for x in v))) ] @@ -81,19 +82,17 @@ def validate_exchange(exchange: str) -> tuple[bool, str, str, ccxt.Exchange | No if not ex_mod or not ex_mod.has: return False, "", "", None - ex_has = dict(ex_mod.has or {}) - result = True reasons = [] reasons_fut = "" - missing = _exchange_has_helper(ex_has, EXCHANGE_HAS_REQUIRED) + missing = _exchange_has_helper(ex_mod, EXCHANGE_HAS_REQUIRED) if missing: result = False reasons.append(f"missing: {', '.join(missing)}") - missing_opt = _exchange_has_helper(ex_has, EXCHANGE_HAS_OPTIONAL) + missing_opt = _exchange_has_helper(ex_mod, EXCHANGE_HAS_OPTIONAL) - missing_futures = _exchange_has_helper(ex_has, EXCHANGE_HAS_OPTIONAL_FUTURES) + missing_futures = _exchange_has_helper(ex_mod, EXCHANGE_HAS_OPTIONAL_FUTURES) if exchange.lower() in BAD_EXCHANGES: result = False diff --git a/tests/exchange/test_exchange_utils.py b/tests/exchange/test_exchange_utils.py index 9460b8abf..d0d35a9dd 100644 --- a/tests/exchange/test_exchange_utils.py +++ b/tests/exchange/test_exchange_utils.py @@ -404,7 +404,7 @@ def test_exchange__exchange_has_helper(): "fetchMyTrades": ["fetchTrades"], "fetchOrder": ["fetchOpenOrder", "fetchClosedOrder"], } - missing = _exchange_has_helper(e_mod.has, required) + missing = _exchange_has_helper(e_mod, required) assert set(missing) == {"fetchOHLCV"} e_mod.has = { @@ -414,7 +414,7 @@ def test_exchange__exchange_has_helper(): "fetchMyTrades": False, "fetchOrder": True, } - missing = _exchange_has_helper(e_mod.has, required) + missing = _exchange_has_helper(e_mod, required) assert set(missing) == {"fetchOHLCV", "fetchMyTrades"} e_mod.has = { @@ -424,5 +424,5 @@ def test_exchange__exchange_has_helper(): "fetchMyTrades": False, "fetchOrder": False, } - missing = _exchange_has_helper(e_mod.has, required) + missing = _exchange_has_helper(e_mod, required) assert set(missing) == {"fetchOHLCV", "fetchMyTrades", "fetchOrder"}