mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-11-29 00:23:07 +00:00
refactor: tests - update timezone.utc to UTC
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from datetime import UTC, datetime, timedelta
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -8,19 +8,19 @@ from tests.conftest import create_mock_trades_usdt
|
||||
|
||||
@pytest.mark.usefixtures("init_persistence")
|
||||
def test_key_value_store(time_machine):
|
||||
start = datetime(2023, 1, 1, 4, tzinfo=timezone.utc)
|
||||
start = datetime(2023, 1, 1, 4, tzinfo=UTC)
|
||||
time_machine.move_to(start, tick=False)
|
||||
|
||||
KeyValueStore.store_value("test", "testStringValue")
|
||||
KeyValueStore.store_value("test_dt", datetime.now(timezone.utc))
|
||||
KeyValueStore.store_value("test_dt", datetime.now(UTC))
|
||||
KeyValueStore.store_value("test_float", 22.51)
|
||||
KeyValueStore.store_value("test_int", 15)
|
||||
|
||||
assert KeyValueStore.get_value("test") == "testStringValue"
|
||||
assert KeyValueStore.get_value("test") == "testStringValue"
|
||||
assert KeyValueStore.get_string_value("test") == "testStringValue"
|
||||
assert KeyValueStore.get_value("test_dt") == datetime.now(timezone.utc)
|
||||
assert KeyValueStore.get_datetime_value("test_dt") == datetime.now(timezone.utc)
|
||||
assert KeyValueStore.get_value("test_dt") == datetime.now(UTC)
|
||||
assert KeyValueStore.get_datetime_value("test_dt") == datetime.now(UTC)
|
||||
assert KeyValueStore.get_string_value("test_dt") is None
|
||||
assert KeyValueStore.get_float_value("test_dt") is None
|
||||
assert KeyValueStore.get_int_value("test_dt") is None
|
||||
@@ -31,11 +31,11 @@ def test_key_value_store(time_machine):
|
||||
assert KeyValueStore.get_datetime_value("test_int") is None
|
||||
|
||||
time_machine.move_to(start + timedelta(days=20, hours=5), tick=False)
|
||||
assert KeyValueStore.get_value("test_dt") != datetime.now(timezone.utc)
|
||||
assert KeyValueStore.get_value("test_dt") != datetime.now(UTC)
|
||||
assert KeyValueStore.get_value("test_dt") == start
|
||||
# Test update works
|
||||
KeyValueStore.store_value("test_dt", datetime.now(timezone.utc))
|
||||
assert KeyValueStore.get_value("test_dt") == datetime.now(timezone.utc)
|
||||
KeyValueStore.store_value("test_dt", datetime.now(UTC))
|
||||
assert KeyValueStore.get_value("test_dt") == datetime.now(UTC)
|
||||
|
||||
KeyValueStore.store_value("test_float", 23.51)
|
||||
assert KeyValueStore.get_value("test_float") == 23.51
|
||||
@@ -52,7 +52,7 @@ def test_key_value_store(time_machine):
|
||||
@pytest.mark.usefixtures("init_persistence")
|
||||
def test_set_startup_time(fee, time_machine):
|
||||
create_mock_trades_usdt(fee)
|
||||
start = datetime.now(timezone.utc)
|
||||
start = datetime.now(UTC)
|
||||
time_machine.move_to(start, tick=False)
|
||||
set_startup_time()
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# pragma pylint: disable=missing-docstring, C0103
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from datetime import UTC, datetime, timedelta
|
||||
from types import FunctionType
|
||||
|
||||
import pytest
|
||||
@@ -265,7 +265,7 @@ def test_interest(fee, exchange, is_short, lev, minutes, rate, interest, trading
|
||||
stake_amount=20.0,
|
||||
amount=30.0,
|
||||
open_rate=2.0,
|
||||
open_date=datetime.now(timezone.utc) - timedelta(minutes=minutes),
|
||||
open_date=datetime.now(UTC) - timedelta(minutes=minutes),
|
||||
fee_open=fee.return_value,
|
||||
fee_close=fee.return_value,
|
||||
exchange=exchange,
|
||||
@@ -605,7 +605,7 @@ def test_calc_open_close_trade_price(
|
||||
stake_amount=60.0,
|
||||
open_rate=2.0,
|
||||
amount=30.0,
|
||||
open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=10),
|
||||
open_date=datetime.now(tz=UTC) - timedelta(minutes=10),
|
||||
interest_rate=0.0005,
|
||||
fee_open=fee.return_value,
|
||||
fee_close=fee.return_value,
|
||||
@@ -812,7 +812,7 @@ def test_calc_open_trade_value(
|
||||
stake_amount=60.0,
|
||||
amount=30.0,
|
||||
open_rate=2.0,
|
||||
open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=10),
|
||||
open_date=datetime.now(tz=UTC) - timedelta(minutes=10),
|
||||
fee_open=fee_rate,
|
||||
fee_close=fee_rate,
|
||||
exchange=exchange,
|
||||
@@ -863,7 +863,7 @@ def test_calc_close_trade_price(
|
||||
stake_amount=60.0,
|
||||
amount=30.0,
|
||||
open_rate=open_rate,
|
||||
open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=10),
|
||||
open_date=datetime.now(tz=UTC) - timedelta(minutes=10),
|
||||
fee_open=fee_rate,
|
||||
fee_close=fee_rate,
|
||||
exchange=exchange,
|
||||
@@ -1164,7 +1164,7 @@ def test_calc_profit(
|
||||
stake_amount=60.0,
|
||||
amount=30.0 * lev,
|
||||
open_rate=2.0,
|
||||
open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=10),
|
||||
open_date=datetime.now(tz=UTC) - timedelta(minutes=10),
|
||||
interest_rate=0.0005,
|
||||
exchange=exchange,
|
||||
is_short=is_short,
|
||||
@@ -1882,7 +1882,7 @@ def test_get_trades_proxy(fee, use_db, is_short):
|
||||
assert len(trades) == 2
|
||||
assert not trades[0].is_open
|
||||
|
||||
opendate = datetime.now(tz=timezone.utc) - timedelta(minutes=15)
|
||||
opendate = datetime.now(tz=UTC) - timedelta(minutes=15)
|
||||
|
||||
assert len(Trade.get_trades_proxy(open_date=opendate)) == 3
|
||||
|
||||
@@ -1989,7 +1989,7 @@ def test_fully_canceled_entry_order_count(fee, is_short):
|
||||
|
||||
@pytest.mark.usefixtures("init_persistence")
|
||||
def test_update_order_from_ccxt(caplog, time_machine):
|
||||
start = datetime(2023, 1, 1, 4, tzinfo=timezone.utc)
|
||||
start = datetime(2023, 1, 1, 4, tzinfo=UTC)
|
||||
time_machine.move_to(start, tick=False)
|
||||
|
||||
# Most basic order return (only has orderid)
|
||||
@@ -2172,7 +2172,7 @@ def test_trade_truncates_string_fields():
|
||||
stake_amount=20.0,
|
||||
amount=30.0,
|
||||
open_rate=2.0,
|
||||
open_date=datetime.now(timezone.utc) - timedelta(minutes=20),
|
||||
open_date=datetime.now(UTC) - timedelta(minutes=20),
|
||||
fee_open=0.001,
|
||||
fee_close=0.001,
|
||||
exchange="binance",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import json
|
||||
from datetime import datetime, timezone
|
||||
from datetime import UTC, datetime
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -182,7 +182,7 @@ def test_trade_fromjson():
|
||||
|
||||
assert trade.id == 25
|
||||
assert trade.pair == "ETH/USDT"
|
||||
assert trade.open_date_utc == datetime(2022, 10, 18, 9, 12, 42, tzinfo=timezone.utc)
|
||||
assert trade.open_date_utc == datetime(2022, 10, 18, 9, 12, 42, tzinfo=UTC)
|
||||
assert isinstance(trade.open_date, datetime)
|
||||
assert trade.exit_reason == "no longer good"
|
||||
assert trade.realized_profit == 2.76315361
|
||||
@@ -192,7 +192,7 @@ def test_trade_fromjson():
|
||||
|
||||
assert len(trade.orders) == 5
|
||||
last_o = trade.orders[-1]
|
||||
assert last_o.order_filled_utc == datetime(2022, 10, 18, 9, 45, 22, tzinfo=timezone.utc)
|
||||
assert last_o.order_filled_utc == datetime(2022, 10, 18, 9, 45, 22, tzinfo=UTC)
|
||||
assert isinstance(last_o.order_date, datetime)
|
||||
assert last_o.funding_fee == -0.055
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from datetime import UTC, datetime, timedelta
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -62,7 +62,7 @@ def test_PairLocks(use_db):
|
||||
|
||||
pair = "BTC/USDT"
|
||||
# Lock until 14:30
|
||||
lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc)
|
||||
lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=UTC)
|
||||
PairLocks.lock_pair(pair, lock_time)
|
||||
|
||||
assert not PairLocks.is_pair_locked(pair)
|
||||
@@ -121,15 +121,15 @@ def test_PairLocks_getlongestlock(use_db):
|
||||
assert PairLocks.is_pair_locked(pair)
|
||||
lock = PairLocks.get_pair_longest_lock(pair)
|
||||
|
||||
assert lock.lock_end_time.replace(tzinfo=timezone.utc) > dt_now() + timedelta(minutes=3)
|
||||
assert lock.lock_end_time.replace(tzinfo=timezone.utc) < dt_now() + timedelta(minutes=14)
|
||||
assert lock.lock_end_time.replace(tzinfo=UTC) > dt_now() + timedelta(minutes=3)
|
||||
assert lock.lock_end_time.replace(tzinfo=UTC) < dt_now() + timedelta(minutes=14)
|
||||
|
||||
PairLocks.lock_pair(pair, dt_now() + timedelta(minutes=15))
|
||||
assert PairLocks.is_pair_locked(pair)
|
||||
|
||||
lock = PairLocks.get_pair_longest_lock(pair)
|
||||
# Must be longer than above
|
||||
assert lock.lock_end_time.replace(tzinfo=timezone.utc) > dt_now() + timedelta(minutes=14)
|
||||
assert lock.lock_end_time.replace(tzinfo=UTC) > dt_now() + timedelta(minutes=14)
|
||||
|
||||
PairLocks.reset_locks()
|
||||
PairLocks.use_db = True
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timezone
|
||||
from datetime import UTC, datetime
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
import pandas as pd
|
||||
@@ -141,7 +141,7 @@ def test_gen_pairlist_with_valid_change_pair_list_config(mocker, rpl_config, tic
|
||||
"lookback_days": 4,
|
||||
}
|
||||
]
|
||||
start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=timezone.utc)
|
||||
start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=UTC)
|
||||
time_machine.move_to(start, tick=False)
|
||||
|
||||
mock_ohlcv_data = {
|
||||
@@ -224,7 +224,7 @@ def test_filter_pairlist_with_empty_ticker(mocker, rpl_config, tickers, time_mac
|
||||
"lookback_days": 4,
|
||||
}
|
||||
]
|
||||
start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=timezone.utc)
|
||||
start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=UTC)
|
||||
time_machine.move_to(start, tick=False)
|
||||
|
||||
mock_ohlcv_data = {
|
||||
@@ -291,7 +291,7 @@ def test_filter_pairlist_with_max_value_set(mocker, rpl_config, tickers, time_ma
|
||||
}
|
||||
]
|
||||
|
||||
start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=timezone.utc)
|
||||
start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=UTC)
|
||||
time_machine.move_to(start, tick=False)
|
||||
|
||||
mock_ohlcv_data = {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import random
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from datetime import UTC, datetime, timedelta
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -31,8 +31,8 @@ def generate_mock_trade(
|
||||
stake_amount=0.01,
|
||||
fee_open=fee,
|
||||
fee_close=fee,
|
||||
open_date=datetime.now(timezone.utc) - timedelta(minutes=min_ago_open or 200),
|
||||
close_date=datetime.now(timezone.utc) - timedelta(minutes=min_ago_close or 30),
|
||||
open_date=datetime.now(UTC) - timedelta(minutes=min_ago_open or 200),
|
||||
close_date=datetime.now(UTC) - timedelta(minutes=min_ago_close or 30),
|
||||
open_rate=open_rate,
|
||||
is_open=is_open,
|
||||
amount=0.01 / open_rate,
|
||||
@@ -99,9 +99,9 @@ def test_protectionmanager(mocker, default_conf):
|
||||
for handler in freqtrade.protections._protection_handlers:
|
||||
assert handler.name in AVAILABLE_PROTECTIONS
|
||||
if not handler.has_global_stop:
|
||||
assert handler.global_stop(datetime.now(timezone.utc), "*") is None
|
||||
assert handler.global_stop(datetime.now(UTC), "*") is None
|
||||
if not handler.has_local_stop:
|
||||
assert handler.stop_per_pair("XRP/BTC", datetime.now(timezone.utc), "*") is None
|
||||
assert handler.stop_per_pair("XRP/BTC", datetime.now(UTC), "*") is None
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -499,7 +499,7 @@ def test_CooldownPeriod_unlock_at(mocker, default_conf, fee, caplog, time_machin
|
||||
assert not log_has_re(message, caplog)
|
||||
caplog.clear()
|
||||
|
||||
start_dt = datetime(2024, 5, 2, 0, 30, 0, tzinfo=timezone.utc)
|
||||
start_dt = datetime(2024, 5, 2, 0, 30, 0, tzinfo=UTC)
|
||||
time_machine.move_to(start_dt, tick=False)
|
||||
|
||||
generate_mock_trade(
|
||||
@@ -527,7 +527,7 @@ def test_CooldownPeriod_unlock_at(mocker, default_conf, fee, caplog, time_machin
|
||||
assert not PairLocks.is_global_lock()
|
||||
|
||||
# Force rollover to the next day.
|
||||
start_dt = datetime(2024, 5, 2, 22, 00, 0, tzinfo=timezone.utc)
|
||||
start_dt = datetime(2024, 5, 2, 22, 00, 0, tzinfo=UTC)
|
||||
time_machine.move_to(start_dt, tick=False)
|
||||
generate_mock_trade(
|
||||
"ETH/BTC",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from copy import deepcopy
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from datetime import UTC, datetime, timedelta
|
||||
from unittest.mock import ANY, MagicMock, PropertyMock
|
||||
|
||||
import pytest
|
||||
@@ -347,7 +347,7 @@ def test__rpc_timeunit_profit(
|
||||
assert day["starting_balance"] in (pytest.approx(1062.37), pytest.approx(1066.46))
|
||||
assert day["fiat_value"] in (0.0,)
|
||||
# ensure first day is current date
|
||||
assert str(days["data"][0]["date"]) == str(datetime.now(timezone.utc).date())
|
||||
assert str(days["data"][0]["date"]) == str(datetime.now(UTC).date())
|
||||
|
||||
# Try invalid data
|
||||
with pytest.raises(RPCException, match=r".*must be an integer greater than 0*"):
|
||||
@@ -1296,9 +1296,9 @@ def test_rpc_add_and_delete_lock(mocker, default_conf):
|
||||
rpc = RPC(freqtradebot)
|
||||
pair = "ETH/BTC"
|
||||
|
||||
rpc._rpc_add_lock(pair, datetime.now(timezone.utc) + timedelta(minutes=4), "", "*")
|
||||
rpc._rpc_add_lock(pair, datetime.now(timezone.utc) + timedelta(minutes=5), "", "*")
|
||||
rpc._rpc_add_lock(pair, datetime.now(timezone.utc) + timedelta(minutes=10), "", "*")
|
||||
rpc._rpc_add_lock(pair, datetime.now(UTC) + timedelta(minutes=4), "", "*")
|
||||
rpc._rpc_add_lock(pair, datetime.now(UTC) + timedelta(minutes=5), "", "*")
|
||||
rpc._rpc_add_lock(pair, datetime.now(UTC) + timedelta(minutes=10), "", "*")
|
||||
|
||||
locks = rpc._rpc_locks()
|
||||
assert locks["lock_count"] == 3
|
||||
|
||||
@@ -5,7 +5,7 @@ Unit test file for rpc/api_server.py
|
||||
import asyncio
|
||||
import logging
|
||||
import time
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from datetime import UTC, datetime, timedelta
|
||||
from pathlib import Path
|
||||
from unittest.mock import ANY, MagicMock, PropertyMock
|
||||
|
||||
@@ -637,12 +637,12 @@ def test_api_locks(botclient):
|
||||
[
|
||||
{
|
||||
"pair": "ETH/BTC",
|
||||
"until": f"{format_date(datetime.now(timezone.utc) + timedelta(minutes=4))}Z",
|
||||
"until": f"{format_date(datetime.now(UTC) + timedelta(minutes=4))}Z",
|
||||
"reason": "randreason",
|
||||
},
|
||||
{
|
||||
"pair": "XRP/BTC",
|
||||
"until": f"{format_date(datetime.now(timezone.utc) + timedelta(minutes=20))}Z",
|
||||
"until": f"{format_date(datetime.now(UTC) + timedelta(minutes=20))}Z",
|
||||
"reason": "deadbeef",
|
||||
},
|
||||
],
|
||||
@@ -711,7 +711,7 @@ def test_api_daily(botclient, mocker, ticker, fee, markets):
|
||||
assert len(response["data"]) == 7
|
||||
assert response["stake_currency"] == "BTC"
|
||||
assert response["fiat_display_currency"] == "USD"
|
||||
assert response["data"][0]["date"] == str(datetime.now(timezone.utc).date())
|
||||
assert response["data"][0]["date"] == str(datetime.now(UTC).date())
|
||||
|
||||
|
||||
def test_api_weekly(botclient, mocker, ticker, fee, markets, time_machine):
|
||||
@@ -1695,7 +1695,7 @@ def test_api_force_entry(botclient, mocker, fee, endpoint):
|
||||
exchange="binance",
|
||||
stake_amount=1,
|
||||
open_rate=0.245441,
|
||||
open_date=datetime.now(timezone.utc),
|
||||
open_date=datetime.now(UTC),
|
||||
is_open=False,
|
||||
is_short=False,
|
||||
fee_close=fee.return_value,
|
||||
|
||||
@@ -4,7 +4,7 @@ Unit test file for rpc/external_message_consumer.py
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
from datetime import datetime, timezone
|
||||
from datetime import UTC, datetime
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
import pytest
|
||||
@@ -99,7 +99,7 @@ def test_emc_handle_producer_message(patched_emc, caplog, ohlcv_history):
|
||||
"data": {
|
||||
"key": ("BTC/USDT", "5m", "spot"),
|
||||
"df": ohlcv_history,
|
||||
"la": datetime.now(timezone.utc),
|
||||
"la": datetime.now(UTC),
|
||||
},
|
||||
}
|
||||
patched_emc.handle_producer_message(test_producer, df_message)
|
||||
@@ -123,7 +123,7 @@ def test_emc_handle_producer_message(patched_emc, caplog, ohlcv_history):
|
||||
|
||||
malformed_message = {
|
||||
"type": "analyzed_df",
|
||||
"data": {"key": "BTC/USDT", "df": ohlcv_history, "la": datetime.now(timezone.utc)},
|
||||
"data": {"key": "BTC/USDT", "df": ohlcv_history, "la": datetime.now(UTC)},
|
||||
}
|
||||
patched_emc.handle_producer_message(test_producer, malformed_message)
|
||||
|
||||
@@ -137,7 +137,7 @@ def test_emc_handle_producer_message(patched_emc, caplog, ohlcv_history):
|
||||
"data": {
|
||||
"key": ("BTC/USDT", "5m", "spot"),
|
||||
"df": ohlcv_history.loc[ohlcv_history["open"] < 0],
|
||||
"la": datetime.now(timezone.utc),
|
||||
"la": datetime.now(UTC),
|
||||
},
|
||||
}
|
||||
patched_emc.handle_producer_message(test_producer, malformed_message)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timezone
|
||||
from datetime import UTC, datetime
|
||||
|
||||
import pytest
|
||||
from pandas import DataFrame
|
||||
@@ -47,7 +47,7 @@ def test_strategy_test_v3(dataframe_1m, fee, is_short, side):
|
||||
amount=0.1,
|
||||
rate=20000,
|
||||
time_in_force="gtc",
|
||||
current_time=datetime.now(timezone.utc),
|
||||
current_time=datetime.now(UTC),
|
||||
side=side,
|
||||
entry_tag=None,
|
||||
)
|
||||
@@ -63,7 +63,7 @@ def test_strategy_test_v3(dataframe_1m, fee, is_short, side):
|
||||
time_in_force="gtc",
|
||||
exit_reason="roi",
|
||||
sell_reason="roi",
|
||||
current_time=datetime.now(timezone.utc),
|
||||
current_time=datetime.now(UTC),
|
||||
side=side,
|
||||
)
|
||||
is True
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# pragma pylint: disable=missing-docstring, C0103
|
||||
import logging
|
||||
import math
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from datetime import UTC, datetime, timedelta
|
||||
from pathlib import Path
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
@@ -208,7 +208,7 @@ def test_ignore_expired_candle(default_conf):
|
||||
strategy = StrategyResolver.load_strategy(default_conf)
|
||||
strategy.ignore_buying_expired_candle_after = 60
|
||||
|
||||
latest_date = datetime(2020, 12, 30, 7, 0, 0, tzinfo=timezone.utc)
|
||||
latest_date = datetime(2020, 12, 30, 7, 0, 0, tzinfo=UTC)
|
||||
# Add 1 candle length as the "latest date" defines candle open.
|
||||
current_time = latest_date + timedelta(seconds=80 + 300)
|
||||
|
||||
@@ -765,7 +765,7 @@ def test_leverage_callback(default_conf, side) -> None:
|
||||
assert (
|
||||
strategy.leverage(
|
||||
pair="XRP/USDT",
|
||||
current_time=datetime.now(timezone.utc),
|
||||
current_time=datetime.now(UTC),
|
||||
current_rate=2.2,
|
||||
proposed_leverage=1.0,
|
||||
max_leverage=5.0,
|
||||
@@ -780,7 +780,7 @@ def test_leverage_callback(default_conf, side) -> None:
|
||||
assert (
|
||||
strategy.leverage(
|
||||
pair="XRP/USDT",
|
||||
current_time=datetime.now(timezone.utc),
|
||||
current_time=datetime.now(UTC),
|
||||
current_rate=2.2,
|
||||
proposed_leverage=1.0,
|
||||
max_leverage=5.0,
|
||||
@@ -897,7 +897,7 @@ def test_is_pair_locked(default_conf):
|
||||
|
||||
pair = "BTC/USDT"
|
||||
# Lock until 14:30
|
||||
lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc)
|
||||
lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=UTC)
|
||||
# Subtract 2 seconds, as locking rounds up to the next candle.
|
||||
strategy.lock_pair(pair, lock_time - timedelta(seconds=2))
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from datetime import UTC, datetime, timedelta
|
||||
|
||||
import pytest
|
||||
import time_machine
|
||||
@@ -21,14 +21,14 @@ from freqtrade.util.datetime_helpers import dt_humanize_delta
|
||||
|
||||
def test_dt_now():
|
||||
with time_machine.travel("2021-09-01 05:01:00 +00:00", tick=False) as t:
|
||||
now = datetime.now(timezone.utc)
|
||||
now = datetime.now(UTC)
|
||||
assert dt_now() == now
|
||||
assert dt_ts() == int(now.timestamp() * 1000)
|
||||
assert dt_ts(now) == int(now.timestamp() * 1000)
|
||||
|
||||
t.shift(timedelta(hours=5))
|
||||
assert dt_now() >= now
|
||||
assert dt_now() == datetime.now(timezone.utc)
|
||||
assert dt_now() == datetime.now(UTC)
|
||||
assert dt_ts() == int(dt_now().timestamp() * 1000)
|
||||
# Test with different time than now
|
||||
assert dt_ts(now) == int(now.timestamp() * 1000)
|
||||
@@ -37,42 +37,42 @@ def test_dt_now():
|
||||
def test_dt_ts_def():
|
||||
assert dt_ts_def(None) == 0
|
||||
assert dt_ts_def(None, 123) == 123
|
||||
assert dt_ts_def(datetime(2023, 5, 5, tzinfo=timezone.utc)) == 1683244800000
|
||||
assert dt_ts_def(datetime(2023, 5, 5, tzinfo=timezone.utc), 123) == 1683244800000
|
||||
assert dt_ts_def(datetime(2023, 5, 5, tzinfo=UTC)) == 1683244800000
|
||||
assert dt_ts_def(datetime(2023, 5, 5, tzinfo=UTC), 123) == 1683244800000
|
||||
|
||||
|
||||
def test_dt_ts_none():
|
||||
assert dt_ts_none(None) is None
|
||||
assert dt_ts_none(None) is None
|
||||
assert dt_ts_none(datetime(2023, 5, 5, tzinfo=timezone.utc)) == 1683244800000
|
||||
assert dt_ts_none(datetime(2023, 5, 5, tzinfo=timezone.utc)) == 1683244800000
|
||||
assert dt_ts_none(datetime(2023, 5, 5, tzinfo=UTC)) == 1683244800000
|
||||
assert dt_ts_none(datetime(2023, 5, 5, tzinfo=UTC)) == 1683244800000
|
||||
|
||||
|
||||
def test_dt_utc():
|
||||
assert dt_utc(2023, 5, 5) == datetime(2023, 5, 5, tzinfo=timezone.utc)
|
||||
assert dt_utc(2023, 5, 5) == datetime(2023, 5, 5, tzinfo=UTC)
|
||||
assert dt_utc(2023, 5, 5, 0, 0, 0, 555500) == datetime(
|
||||
2023, 5, 5, 0, 0, 0, 555500, tzinfo=timezone.utc
|
||||
2023, 5, 5, 0, 0, 0, 555500, tzinfo=UTC
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("as_ms", [True, False])
|
||||
def test_dt_from_ts(as_ms):
|
||||
multi = 1000 if as_ms else 1
|
||||
assert dt_from_ts(1683244800.0 * multi) == datetime(2023, 5, 5, tzinfo=timezone.utc)
|
||||
assert dt_from_ts(1683244800.0 * multi) == datetime(2023, 5, 5, tzinfo=UTC)
|
||||
assert dt_from_ts(1683244800.5555 * multi) == datetime(
|
||||
2023, 5, 5, 0, 0, 0, 555500, tzinfo=timezone.utc
|
||||
2023, 5, 5, 0, 0, 0, 555500, tzinfo=UTC
|
||||
)
|
||||
# As int
|
||||
assert dt_from_ts(1683244800 * multi) == datetime(2023, 5, 5, tzinfo=timezone.utc)
|
||||
assert dt_from_ts(1683244800 * multi) == datetime(2023, 5, 5, tzinfo=UTC)
|
||||
# As milliseconds
|
||||
assert dt_from_ts(1683244800 * multi) == datetime(2023, 5, 5, tzinfo=timezone.utc)
|
||||
assert dt_from_ts(1683242400 * multi) == datetime(2023, 5, 4, 23, 20, tzinfo=timezone.utc)
|
||||
assert dt_from_ts(1683244800 * multi) == datetime(2023, 5, 5, tzinfo=UTC)
|
||||
assert dt_from_ts(1683242400 * multi) == datetime(2023, 5, 4, 23, 20, tzinfo=UTC)
|
||||
|
||||
|
||||
def test_dt_floor_day():
|
||||
now = datetime(2023, 9, 1, 5, 2, 3, 455555, tzinfo=timezone.utc)
|
||||
now = datetime(2023, 9, 1, 5, 2, 3, 455555, tzinfo=UTC)
|
||||
|
||||
assert dt_floor_day(now) == datetime(2023, 9, 1, tzinfo=timezone.utc)
|
||||
assert dt_floor_day(now) == datetime(2023, 9, 1, tzinfo=UTC)
|
||||
|
||||
|
||||
def test_shorten_date() -> None:
|
||||
@@ -95,21 +95,21 @@ def test_format_ms_time() -> None:
|
||||
date_in_epoch_ms = 1523383321132
|
||||
date = format_ms_time(date_in_epoch_ms)
|
||||
assert isinstance(date, str)
|
||||
res = datetime(2018, 4, 10, 18, 2, 1, tzinfo=timezone.utc)
|
||||
res = datetime(2018, 4, 10, 18, 2, 1, tzinfo=UTC)
|
||||
assert date == res.strftime("%Y-%m-%dT%H:%M:%S")
|
||||
assert date == "2018-04-10T18:02:01"
|
||||
res = datetime(2017, 12, 13, 8, 2, 1, tzinfo=timezone.utc)
|
||||
res = datetime(2017, 12, 13, 8, 2, 1, tzinfo=UTC)
|
||||
# Date 2017-12-13 08:02:01
|
||||
date_in_epoch_ms = 1513152121000
|
||||
assert format_ms_time(date_in_epoch_ms) == res.strftime("%Y-%m-%dT%H:%M:%S")
|
||||
|
||||
|
||||
def test_format_date() -> None:
|
||||
date = datetime(2023, 9, 1, 5, 2, 3, 455555, tzinfo=timezone.utc)
|
||||
date = datetime(2023, 9, 1, 5, 2, 3, 455555, tzinfo=UTC)
|
||||
assert format_date(date) == "2023-09-01 05:02:03"
|
||||
assert format_date(None) == ""
|
||||
|
||||
date = datetime(2021, 9, 30, 22, 59, 3, 455555, tzinfo=timezone.utc)
|
||||
date = datetime(2021, 9, 30, 22, 59, 3, 455555, tzinfo=UTC)
|
||||
assert format_date(date) == "2021-09-30 22:59:03"
|
||||
assert format_date(None) == ""
|
||||
|
||||
@@ -119,10 +119,10 @@ def test_format_ms_time_detailed() -> None:
|
||||
date_in_epoch_ms = 1523383321132
|
||||
date = format_ms_time_det(date_in_epoch_ms)
|
||||
assert isinstance(date, str)
|
||||
res = datetime(2018, 4, 10, 18, 2, 1, 132145, tzinfo=timezone.utc)
|
||||
res = datetime(2018, 4, 10, 18, 2, 1, 132145, tzinfo=UTC)
|
||||
assert date == res.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3]
|
||||
assert date == "2018-04-10T18:02:01.132"
|
||||
res = datetime(2017, 12, 13, 8, 2, 1, 512321, tzinfo=timezone.utc)
|
||||
res = datetime(2017, 12, 13, 8, 2, 1, 512321, tzinfo=UTC)
|
||||
# Date 2017-12-13 08:02:01
|
||||
date_in_epoch_ms = 1513152121512
|
||||
assert format_ms_time_det(date_in_epoch_ms) == res.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3]
|
||||
|
||||
Reference in New Issue
Block a user