Add default_columns classmethod to Progress class

This commit is contained in:
ptmcg 2022-01-31 08:29:01 -06:00
parent 633faab16d
commit b0794522a6
2 changed files with 37 additions and 10 deletions

View file

@ -588,12 +588,7 @@ class Progress(JupyterMixin):
refresh_per_second is None or refresh_per_second > 0
), "refresh_per_second must be > 0"
self._lock = RLock()
self.columns = columns or (
TextColumn("[progress.description]{task.description}"),
BarColumn(),
TextColumn("[progress.percentage]{task.percentage:>3.0f}%"),
TimeRemainingColumn(),
)
self.columns = columns or self.default_columns()
self.speed_estimate_period = speed_estimate_period
self.disable = disable
@ -613,6 +608,15 @@ class Progress(JupyterMixin):
self.print = self.console.print
self.log = self.console.log
@classmethod
def default_columns(cls) -> Tuple[ProgressColumn, ...]:
return (
TextColumn("[progress.description]{task.description}"),
BarColumn(),
TextColumn("[progress.percentage]{task.percentage:>3.0f}%"),
TimeRemainingColumn(),
)
@property
def console(self) -> Console:
return self.live.console
@ -1015,10 +1019,7 @@ if __name__ == "__main__": # pragma: no coverage
with Progress(
SpinnerColumn(),
TextColumn("[progress.description]{task.description}"),
BarColumn(),
TextColumn("[progress.percentage]{task.percentage:>3.0f}%"),
TimeRemainingColumn(),
*Progress.default_columns(),
TimeElapsedColumn(),
console=console,
transient=True,

View file

@ -334,6 +334,32 @@ def test_columns() -> None:
assert result == expected
def test_using_default_columns() -> None:
# can only check types, as the instances do not '==' each other
expected_default_types = [
TextColumn,
BarColumn,
TextColumn,
TimeRemainingColumn,
]
progress = Progress()
assert [type(c) for c in progress.columns] == expected_default_types
progress = Progress(
SpinnerColumn(),
*Progress.default_columns(),
"Elapsed:",
TimeElapsedColumn(),
)
assert [type(c) for c in progress.columns] == [
SpinnerColumn,
*expected_default_types,
str,
TimeElapsedColumn,
]
def test_task_create() -> None:
task = Task(TaskID(1), "foo", 100, 0, _get_time=lambda: 1)
assert task.elapsed is None