mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-12-15 20:31:43 +00:00
refactor: indicate private methods by convention
This commit is contained in:
@@ -439,7 +439,7 @@ class Binance(Exchange):
|
|||||||
pair, until=until, since=since, from_id=from_id
|
pair, until=until, since=since, from_id=from_id
|
||||||
)
|
)
|
||||||
|
|
||||||
def check_delisting_futures(self, pair: str) -> datetime | None:
|
def _check_delisting_futures(self, pair: str) -> datetime | None:
|
||||||
delivery_time = self.markets.get(pair, {}).get("info", {}).get("deliveryDate", None)
|
delivery_time = self.markets.get(pair, {}).get("info", {}).get("deliveryDate", None)
|
||||||
if delivery_time:
|
if delivery_time:
|
||||||
if isinstance(delivery_time, str) and (delivery_time != ""):
|
if isinstance(delivery_time, str) and (delivery_time != ""):
|
||||||
@@ -459,14 +459,20 @@ class Binance(Exchange):
|
|||||||
return delivery_time
|
return delivery_time
|
||||||
|
|
||||||
def check_delisting_time(self, pair: str) -> datetime | None:
|
def check_delisting_time(self, pair: str) -> datetime | None:
|
||||||
|
"""
|
||||||
|
Check if the pair gonna be delisted.
|
||||||
|
By default, it returns None.
|
||||||
|
:param pair: Market symbol
|
||||||
|
:return: Datetime if the pair gonna be delisted, None otherwise
|
||||||
|
"""
|
||||||
if self._config["runmode"] not in TRADE_MODES:
|
if self._config["runmode"] not in TRADE_MODES:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if self.trading_mode == TradingMode.FUTURES:
|
if self.trading_mode == TradingMode.FUTURES:
|
||||||
return self.check_delisting_futures(pair)
|
return self._check_delisting_futures(pair)
|
||||||
return self.get_spot_pair_delist_time(pair, refresh=False)
|
return self._get_spot_pair_delist_time(pair, refresh=False)
|
||||||
|
|
||||||
def get_spot_delist_schedule(self):
|
def _get_spot_delist_schedule(self):
|
||||||
"""
|
"""
|
||||||
Get the delisting schedule for spot pairs
|
Get the delisting schedule for spot pairs
|
||||||
Only works in live mode as it requires API keys,
|
Only works in live mode as it requires API keys,
|
||||||
@@ -494,7 +500,7 @@ class Binance(Exchange):
|
|||||||
except ccxt.BaseError as e:
|
except ccxt.BaseError as e:
|
||||||
raise OperationalException(e) from e
|
raise OperationalException(e) from e
|
||||||
|
|
||||||
def get_spot_pair_delist_time(self, pair: str, refresh: bool = False) -> datetime | None:
|
def _get_spot_pair_delist_time(self, pair: str, refresh: bool = False) -> datetime | None:
|
||||||
"""
|
"""
|
||||||
Get the delisting time for a pair if it will be delisted
|
Get the delisting time for a pair if it will be delisted
|
||||||
:param pair: Pair to get the delisting time for
|
:param pair: Pair to get the delisting time for
|
||||||
@@ -512,7 +518,7 @@ class Binance(Exchange):
|
|||||||
if delist_time := cache.get(pair, None):
|
if delist_time := cache.get(pair, None):
|
||||||
return delist_time
|
return delist_time
|
||||||
|
|
||||||
delist_schedule = self.get_spot_delist_schedule()
|
delist_schedule = self._get_spot_delist_schedule()
|
||||||
|
|
||||||
if delist_schedule is None:
|
if delist_schedule is None:
|
||||||
return None
|
return None
|
||||||
|
|||||||
@@ -1116,8 +1116,8 @@ def test_check_delisting_time_binance(default_conf_usdt, mocker):
|
|||||||
exchange._config["runmode"] = RunMode.BACKTEST
|
exchange._config["runmode"] = RunMode.BACKTEST
|
||||||
delist_mock = MagicMock(return_value=None)
|
delist_mock = MagicMock(return_value=None)
|
||||||
delist_fut_mock = MagicMock(return_value=None)
|
delist_fut_mock = MagicMock(return_value=None)
|
||||||
mocker.patch.object(exchange, "get_spot_pair_delist_time", delist_mock)
|
mocker.patch.object(exchange, "_get_spot_pair_delist_time", delist_mock)
|
||||||
mocker.patch.object(exchange, "check_delisting_futures", delist_fut_mock)
|
mocker.patch.object(exchange, "_check_delisting_futures", delist_fut_mock)
|
||||||
|
|
||||||
# Invalid run mode
|
# Invalid run mode
|
||||||
resp = exchange.check_delisting_time("BTC/USDT")
|
resp = exchange.check_delisting_time("BTC/USDT")
|
||||||
@@ -1141,7 +1141,7 @@ def test_check_delisting_time_binance(default_conf_usdt, mocker):
|
|||||||
assert delist_fut_mock.call_count == 1
|
assert delist_fut_mock.call_count == 1
|
||||||
|
|
||||||
|
|
||||||
def test_check_delisting_futures_binance(default_conf_usdt, mocker, markets):
|
def test__check_delisting_futures_binance(default_conf_usdt, mocker, markets):
|
||||||
markets["BTC/USDT:USDT"] = deepcopy(markets["SOL/BUSD:BUSD"])
|
markets["BTC/USDT:USDT"] = deepcopy(markets["SOL/BUSD:BUSD"])
|
||||||
markets["BTC/USDT:USDT"]["info"]["deliveryDate"] = 4133404800000
|
markets["BTC/USDT:USDT"]["info"]["deliveryDate"] = 4133404800000
|
||||||
markets["SOL/BUSD:BUSD"]["info"]["deliveryDate"] = 4133404800000
|
markets["SOL/BUSD:BUSD"]["info"]["deliveryDate"] = 4133404800000
|
||||||
@@ -1149,33 +1149,35 @@ def test_check_delisting_futures_binance(default_conf_usdt, mocker, markets):
|
|||||||
exchange = get_patched_exchange(mocker, default_conf_usdt, exchange="binance")
|
exchange = get_patched_exchange(mocker, default_conf_usdt, exchange="binance")
|
||||||
mocker.patch(f"{EXMS}.markets", PropertyMock(return_value=markets))
|
mocker.patch(f"{EXMS}.markets", PropertyMock(return_value=markets))
|
||||||
|
|
||||||
resp_sol = exchange.check_delisting_futures("SOL/BUSD:BUSD")
|
resp_sol = exchange._check_delisting_futures("SOL/BUSD:BUSD")
|
||||||
# Delisting is equal to BTC
|
# Delisting is equal to BTC
|
||||||
assert resp_sol is None
|
assert resp_sol is None
|
||||||
# Actually has a delisting date
|
# Actually has a delisting date
|
||||||
resp_ada = exchange.check_delisting_futures("ADA/USDT:USDT")
|
resp_ada = exchange._check_delisting_futures("ADA/USDT:USDT")
|
||||||
assert resp_ada == dt_utc(2025, 10, 18)
|
assert resp_ada == dt_utc(2025, 10, 18)
|
||||||
|
|
||||||
|
|
||||||
def test_get_spot_delist_schedule_binance(default_conf_usdt, mocker):
|
def test__get_spot_delist_schedule_binance(default_conf_usdt, mocker):
|
||||||
exchange = get_patched_exchange(mocker, default_conf_usdt, exchange="binance")
|
exchange = get_patched_exchange(mocker, default_conf_usdt, exchange="binance")
|
||||||
ret_value = [{"delistTime": 1759114800000, "symbols": ["ETCBTC"]}]
|
ret_value = [{"delistTime": 1759114800000, "symbols": ["ETCBTC"]}]
|
||||||
schedule_mock = mocker.patch.object(exchange, "get_spot_delist_schedule", return_value=None)
|
schedule_mock = mocker.patch.object(exchange, "_get_spot_delist_schedule", return_value=None)
|
||||||
|
|
||||||
# None - mode is DRY
|
# None - mode is DRY
|
||||||
assert exchange.get_spot_pair_delist_time("ETC/BTC") is None
|
assert exchange._get_spot_pair_delist_time("ETC/BTC") is None
|
||||||
# Switch to live
|
# Switch to live
|
||||||
exchange._config["runmode"] = RunMode.LIVE
|
exchange._config["runmode"] = RunMode.LIVE
|
||||||
assert exchange.get_spot_pair_delist_time("ETC/BTC") is None
|
assert exchange._get_spot_pair_delist_time("ETC/BTC") is None
|
||||||
|
|
||||||
mocker.patch.object(exchange, "get_spot_delist_schedule", return_value=ret_value)
|
mocker.patch.object(exchange, "_get_spot_delist_schedule", return_value=ret_value)
|
||||||
resp = exchange.get_spot_pair_delist_time("ETC/BTC")
|
resp = exchange._get_spot_pair_delist_time("ETC/BTC")
|
||||||
assert resp == dt_utc(2025, 9, 29, 3, 0)
|
assert resp == dt_utc(2025, 9, 29, 3, 0)
|
||||||
assert schedule_mock.call_count == 1
|
assert schedule_mock.call_count == 1
|
||||||
schedule_mock.reset_mock()
|
schedule_mock.reset_mock()
|
||||||
|
|
||||||
# Caching - don't refresh.
|
# Caching - don't refresh.
|
||||||
assert exchange.get_spot_pair_delist_time("ETC/BTC", refresh=False) == dt_utc(2025, 9, 29, 3, 0)
|
assert exchange._get_spot_pair_delist_time("ETC/BTC", refresh=False) == dt_utc(
|
||||||
|
2025, 9, 29, 3, 0
|
||||||
|
)
|
||||||
assert schedule_mock.call_count == 0
|
assert schedule_mock.call_count == 0
|
||||||
|
|
||||||
api_mock = MagicMock()
|
api_mock = MagicMock()
|
||||||
@@ -1184,7 +1186,7 @@ def test_get_spot_delist_schedule_binance(default_conf_usdt, mocker):
|
|||||||
default_conf_usdt,
|
default_conf_usdt,
|
||||||
api_mock,
|
api_mock,
|
||||||
"binance",
|
"binance",
|
||||||
"get_spot_delist_schedule",
|
"_get_spot_delist_schedule",
|
||||||
"sapi_get_spot_delist_schedule",
|
"sapi_get_spot_delist_schedule",
|
||||||
retries=1,
|
retries=1,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user