Files
freqtrade/freqtrade/util/progress_tracker.py
2024-11-22 15:06:57 +01:00

45 lines
1.1 KiB
Python

from contextlib import AbstractContextManager
from typing import Optional, Protocol
from rich.progress import (
BarColumn,
MofNCompleteColumn,
TaskID,
TaskProgressColumn,
TextColumn,
TimeElapsedColumn,
TimeRemainingColumn,
)
from freqtrade.util.rich_progress import CustomProgress
class ProgressLike(Protocol, AbstractContextManager["ProgressLike"]):
def add_task(self, description: str, *args, **kwargs) -> TaskID: ...
def update(self, task_id: TaskID, *, advance: float | None = None, **kwargs): ...
def retrieve_progress_tracker(pt: Optional[ProgressLike]) -> ProgressLike:
if pt is None:
return get_progress_tracker()
return pt
def get_progress_tracker(**kwargs) -> ProgressLike:
"""
Get progress Bar with custom columns.
"""
return CustomProgress(
TextColumn("[progress.description]{task.description}"),
BarColumn(bar_width=None),
MofNCompleteColumn(),
TaskProgressColumn(),
"",
TimeElapsedColumn(),
"",
TimeRemainingColumn(),
expand=True,
**kwargs,
)