From b41cdfb68384f7e44f7e1270ad5beab2c637b6c0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 13 Jul 2024 15:47:50 +0200 Subject: [PATCH] Simplify by extracting progressbar definition --- freqtrade/data/history/history_utils.py | 24 ++------------------- freqtrade/optimize/hyperopt.py | 21 ++----------------- freqtrade/util/__init__.py | 1 + freqtrade/util/progress_tracker.py | 28 +++++++++++++++++++++++++ 4 files changed, 33 insertions(+), 41 deletions(-) create mode 100644 freqtrade/util/progress_tracker.py diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 6a4d796ea..141f4b500 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -5,14 +5,6 @@ from pathlib import Path from typing import Dict, List, Optional, Tuple from pandas import DataFrame, concat -from rich.progress import ( - BarColumn, - MofNCompleteColumn, - TaskProgressColumn, - TextColumn, - TimeElapsedColumn, - TimeRemainingColumn, -) from freqtrade.configuration import TimeRange from freqtrade.constants import ( @@ -34,10 +26,8 @@ from freqtrade.enums import CandleType, TradingMode from freqtrade.exceptions import OperationalException from freqtrade.exchange import Exchange from freqtrade.plugins.pairlist.pairlist_helpers import dynamic_expand_pairlist -from freqtrade.util import dt_ts, format_ms_time -from freqtrade.util.datetime_helpers import dt_now +from freqtrade.util import dt_now, dt_ts, format_ms_time, get_progress_tracker from freqtrade.util.migrations import migrate_data -from freqtrade.util.rich_progress import CustomProgress logger = logging.getLogger(__name__) @@ -351,17 +341,7 @@ def refresh_backtest_ohlcv_data( pairs_not_available = [] data_handler = get_datahandler(datadir, data_format) candle_type = CandleType.get_default(trading_mode) - with CustomProgress( - TextColumn("[progress.description]{task.description}"), - BarColumn(bar_width=None), - MofNCompleteColumn(), - TaskProgressColumn(), - "•", - TimeElapsedColumn(), - "•", - TimeRemainingColumn(), - expand=True, - ) as progress: + with get_progress_tracker() as progress: tf_length = len(timeframes) if trading_mode != "futures" else len(timeframes) + 2 timeframe_task = progress.add_task("Timeframe", total=tf_length) pair_task = progress.add_task("Downloading data...", total=len(pairs)) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index b411e7752..2006cee58 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -19,14 +19,6 @@ from joblib.externals import cloudpickle from pandas import DataFrame from rich.align import Align from rich.console import Console -from rich.progress import ( - BarColumn, - MofNCompleteColumn, - TaskProgressColumn, - TextColumn, - TimeElapsedColumn, - TimeRemainingColumn, -) from freqtrade.constants import DATETIME_PRINT_FORMAT, FTHYPT_FILEVERSION, LAST_BT_RESULT_FN, Config from freqtrade.data.converter import trim_dataframes @@ -48,7 +40,7 @@ from freqtrade.optimize.hyperopt_tools import ( ) from freqtrade.optimize.optimize_reports import generate_strategy_stats from freqtrade.resolvers.hyperopt_resolver import HyperOptLossResolver -from freqtrade.util import CustomProgress +from freqtrade.util import get_progress_tracker # Suppress scikit-learn FutureWarnings from skopt @@ -634,16 +626,7 @@ class Hyperopt: ) # Define progressbar - with CustomProgress( - TextColumn("[progress.description]{task.description}"), - BarColumn(bar_width=None), - MofNCompleteColumn(), - TaskProgressColumn(), - "•", - TimeElapsedColumn(), - "•", - TimeRemainingColumn(), - expand=True, + with get_progress_tracker( console=console, cust_objs=[Align.center(self._hyper_out.table)], ) as pbar: diff --git a/freqtrade/util/__init__.py b/freqtrade/util/__init__.py index 76902b176..8343790a0 100644 --- a/freqtrade/util/__init__.py +++ b/freqtrade/util/__init__.py @@ -15,6 +15,7 @@ from freqtrade.util.formatters import decimals_per_coin, fmt_coin, round_value from freqtrade.util.ft_precise import FtPrecise from freqtrade.util.measure_time import MeasureTime from freqtrade.util.periodic_cache import PeriodicCache +from freqtrade.util.progress_tracker import get_progress_tracker # noqa F401 from freqtrade.util.rich_progress import CustomProgress from freqtrade.util.rich_tables import print_df_rich_table, print_rich_table from freqtrade.util.template_renderer import render_template, render_template_with_fallback # noqa diff --git a/freqtrade/util/progress_tracker.py b/freqtrade/util/progress_tracker.py new file mode 100644 index 000000000..ca8f5d3e9 --- /dev/null +++ b/freqtrade/util/progress_tracker.py @@ -0,0 +1,28 @@ +from rich.progress import ( + BarColumn, + MofNCompleteColumn, + TaskProgressColumn, + TextColumn, + TimeElapsedColumn, + TimeRemainingColumn, +) + +from freqtrade.util.rich_progress import CustomProgress + + +def get_progress_tracker(**kwargs): + """ + Get progress Bar with custom columns. + """ + return CustomProgress( + TextColumn("[progress.description]{task.description}"), + BarColumn(bar_width=None), + MofNCompleteColumn(), + TaskProgressColumn(), + "•", + TimeElapsedColumn(), + "•", + TimeRemainingColumn(), + expand=True, + **kwargs, + )