From cc534c50004233afb508f9671a71085c76041c63 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Apr 2024 15:29:11 +0200 Subject: [PATCH] switch from arrow to humanize --- freqtrade/exchange/exchange.py | 4 ++-- freqtrade/rpc/rpc.py | 10 +++++----- freqtrade/util/datetime_helpers.py | 8 ++++++++ tests/rpc/test_rpc.py | 8 ++++---- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 38c16ac22..eed852e7c 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -44,7 +44,7 @@ from freqtrade.misc import (chunks, deep_merge_dicts, file_dump_json, file_load_ safe_value_fallback2) from freqtrade.plugins.pairlist.pairlist_helpers import expand_pairlist from freqtrade.util import dt_from_ts, dt_now -from freqtrade.util.datetime_helpers import dt_humanize, dt_ts +from freqtrade.util.datetime_helpers import dt_humanize_delta, dt_ts from freqtrade.util.periodic_cache import PeriodicCache @@ -2008,7 +2008,7 @@ class Exchange: logger.debug( "one_call: %s msecs (%s)", one_call, - dt_humanize(dt_now() - timedelta(milliseconds=one_call), only_distance=True) + dt_humanize_delta(dt_now() - timedelta(milliseconds=one_call)) ) input_coroutines = [self._async_get_candle_history( pair, timeframe, candle_type, since) for since in diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index b8be473a7..43be0fd94 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -30,8 +30,8 @@ from freqtrade.persistence.models import PairLock from freqtrade.plugins.pairlist.pairlist_helpers import expand_pairlist from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.rpc.rpc_types import RPCSendMsg -from freqtrade.util import (decimals_per_coin, dt_humanize, dt_now, dt_ts_def, format_date, - shorten_date) +from freqtrade.util import decimals_per_coin, dt_now, dt_ts_def, format_date, shorten_date +from freqtrade.util.datetime_helpers import dt_humanize_delta from freqtrade.wallets import PositionWallet, Wallet @@ -307,7 +307,7 @@ class RPC: detail_trade = [ f'{trade.id} {direction_str}', trade.pair + active_attempt_side_symbols_str, - shorten_date(dt_humanize(trade.open_date, only_distance=True)), + shorten_date(dt_humanize_delta(trade.open_date_utc)), profit_str ] @@ -599,10 +599,10 @@ class RPC: 'trade_count': len(trades), 'closed_trade_count': closed_trade_count, 'first_trade_date': format_date(first_date), - 'first_trade_humanized': dt_humanize(first_date) if first_date else '', + 'first_trade_humanized': dt_humanize_delta(first_date) if first_date else '', 'first_trade_timestamp': dt_ts_def(first_date, 0), 'latest_trade_date': format_date(last_date), - 'latest_trade_humanized': dt_humanize(last_date) if last_date else '', + 'latest_trade_humanized': dt_humanize_delta(last_date) if last_date else '', 'latest_trade_timestamp': dt_ts_def(last_date, 0), 'avg_duration': str(timedelta(seconds=sum(durations) / num)).split('.')[0], 'best_pair': best_pair[0] if best_pair else '', diff --git a/freqtrade/util/datetime_helpers.py b/freqtrade/util/datetime_helpers.py index 2b288424a..f93186d63 100644 --- a/freqtrade/util/datetime_helpers.py +++ b/freqtrade/util/datetime_helpers.py @@ -3,6 +3,7 @@ from datetime import datetime, timezone from typing import Optional, Union import arrow +import humanize from freqtrade.constants import DATETIME_PRINT_FORMAT @@ -76,6 +77,13 @@ def shorten_date(_date: str) -> str: return new_date +def dt_humanize_delta(dt: datetime): + """ + Return a humanized string for the given timedelta. + """ + return humanize.naturaltime(dt) + + def dt_humanize(dt: datetime, **kwargs) -> str: """ Return a humanized string for the given datetime. diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 050c51fed..5c8602c2f 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -221,7 +221,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: result, headers, fiat_profit_sum = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') assert "Since" in headers assert "Pair" in headers - assert 'instantly' == result[0][2] + assert 'now' == result[0][2] assert 'ETH/BTC' in result[0][1] assert '0.00 (0.00)' == result[0][3] assert '0.00' == f'{fiat_profit_sum:.2f}' @@ -232,7 +232,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: result, headers, fiat_profit_sum = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') assert "Since" in headers assert "Pair" in headers - assert 'instantly' == result[0][2] + assert 'now' == result[0][2] assert 'ETH/BTC' in result[0][1] assert '-0.41% (-0.00)' == result[0][3] assert '-0.00' == f'{fiat_profit_sum:.2f}' @@ -243,7 +243,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: assert "Since" in headers assert "Pair" in headers assert len(result[0]) == 4 - assert 'instantly' == result[0][2] + assert 'now' == result[0][2] assert 'ETH/BTC' in result[0][1] assert '-0.41% (-0.06)' == result[0][3] assert '-0.06' == f'{fiat_profit_sum:.2f}' @@ -260,7 +260,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: mocker.patch(f'{EXMS}.get_rate', MagicMock(side_effect=ExchangeError("Pair 'ETH/BTC' not available"))) result, headers, fiat_profit_sum = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') - assert 'instantly' == result[0][2] + assert 'now' == result[0][2] assert 'ETH/BTC' in result[0][1] assert 'nan%' == result[0][3] assert isnan(fiat_profit_sum)