From 5b43aaac61ac94abe722bc98ae58468618f2f512 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 5 Jun 2024 06:45:14 +0200 Subject: Adding upstream version 3.0.46. Signed-off-by: Daniel Baumann --- src/prompt_toolkit/shortcuts/progress_bar/base.py | 1 + .../shortcuts/progress_bar/formatters.py | 34 ++++++++++++---------- 2 files changed, 19 insertions(+), 16 deletions(-) (limited to 'src/prompt_toolkit/shortcuts/progress_bar') diff --git a/src/prompt_toolkit/shortcuts/progress_bar/base.py b/src/prompt_toolkit/shortcuts/progress_bar/base.py index 21aa1be..a7c2a52 100644 --- a/src/prompt_toolkit/shortcuts/progress_bar/base.py +++ b/src/prompt_toolkit/shortcuts/progress_bar/base.py @@ -7,6 +7,7 @@ Progress bar implementation on top of prompt_toolkit. for item in pb(data): ... """ + from __future__ import annotations import contextvars diff --git a/src/prompt_toolkit/shortcuts/progress_bar/formatters.py b/src/prompt_toolkit/shortcuts/progress_bar/formatters.py index dd0339c..202949c 100644 --- a/src/prompt_toolkit/shortcuts/progress_bar/formatters.py +++ b/src/prompt_toolkit/shortcuts/progress_bar/formatters.py @@ -2,6 +2,7 @@ Formatter classes for the progress bar. Each progress bar consists of a list of these formatters. """ + from __future__ import annotations import datetime @@ -130,7 +131,7 @@ class Percentage(Formatter): Display the progress as a percentage. """ - template = "{percentage:>5}%" + template = HTML("{percentage:>5}%") def format( self, @@ -138,7 +139,7 @@ class Percentage(Formatter): progress: ProgressBarCounter[object], width: int, ) -> AnyFormattedText: - return HTML(self.template).format(percentage=round(progress.percentage, 1)) + return self.template.format(percentage=round(progress.percentage, 1)) def get_width(self, progress_bar: ProgressBar) -> AnyDimension: return D.exact(6) @@ -149,7 +150,9 @@ class Bar(Formatter): Display the progress bar itself. """ - template = "{start}{bar_a}{bar_b}{bar_c}{end}" + template = HTML( + "{start}{bar_a}{bar_b}{bar_c}{end}" + ) def __init__( self, @@ -202,7 +205,7 @@ class Bar(Formatter): bar_b = sym_b bar_c = sym_c * (width - pb_a) - return HTML(self.template).format( + return self.template.format( start=self.start, end=self.end, bar_a=bar_a, bar_b=bar_b, bar_c=bar_c ) @@ -215,7 +218,7 @@ class Progress(Formatter): Display the progress as text. E.g. "8/20" """ - template = "{current:>3}/{total:>3}" + template = HTML("{current:>3}/{total:>3}") def format( self, @@ -223,7 +226,7 @@ class Progress(Formatter): progress: ProgressBarCounter[object], width: int, ) -> AnyFormattedText: - return HTML(self.template).format( + return self.template.format( current=progress.items_completed, total=progress.total or "?" ) @@ -250,6 +253,8 @@ class TimeElapsed(Formatter): Display the elapsed time. """ + template = HTML("{time_elapsed}") + def format( self, progress_bar: ProgressBar, @@ -257,9 +262,7 @@ class TimeElapsed(Formatter): width: int, ) -> AnyFormattedText: text = _format_timedelta(progress.time_elapsed).rjust(width) - return HTML("{time_elapsed}").format( - time_elapsed=text - ) + return self.template.format(time_elapsed=text) def get_width(self, progress_bar: ProgressBar) -> AnyDimension: all_values = [ @@ -275,7 +278,7 @@ class TimeLeft(Formatter): Display the time left. """ - template = "{time_left}" + template = HTML("{time_left}") unknown = "?:??:??" def format( @@ -290,7 +293,7 @@ class TimeLeft(Formatter): else: formatted_time_left = self.unknown - return HTML(self.template).format(time_left=formatted_time_left.rjust(width)) + return self.template.format(time_left=formatted_time_left.rjust(width)) def get_width(self, progress_bar: ProgressBar) -> AnyDimension: all_values = [ @@ -307,7 +310,7 @@ class IterationsPerSecond(Formatter): Display the iterations per second. """ - template = ( + template = HTML( "{iterations_per_second:.2f}" ) @@ -318,7 +321,7 @@ class IterationsPerSecond(Formatter): width: int, ) -> AnyFormattedText: value = progress.items_completed / progress.time_elapsed.total_seconds() - return HTML(self.template.format(iterations_per_second=value)) + return self.template.format(iterations_per_second=value) def get_width(self, progress_bar: ProgressBar) -> AnyDimension: all_values = [ @@ -335,6 +338,7 @@ class SpinningWheel(Formatter): Display a spinning wheel. """ + template = HTML("{0}") characters = r"/-\|" def format( @@ -344,9 +348,7 @@ class SpinningWheel(Formatter): width: int, ) -> AnyFormattedText: index = int(time.time() * 3) % len(self.characters) - return HTML("{0}").format( - self.characters[index] - ) + return self.template.format(self.characters[index]) def get_width(self, progress_bar: ProgressBar) -> AnyDimension: return D.exact(1) -- cgit v1.2.3