Coverage for bioimageio/spec/_internal/progress.py: 100%
28 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-27 09:20 +0000
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-27 09:20 +0000
1from typing import Any, Optional, Protocol
3from rich.progress import Progress
6class Progressbar(Protocol):
7 """Progressbar protocol modeled after tqdm"""
9 total: Optional[int]
11 def update(self, increment: int, /) -> Any: ...
13 def reset(self): ...
15 def close(self): ...
17 def set_description(self, description: str, /, refresh: bool = True): ...
20class RichTaskBar:
21 def __init__(self, description: str, *, parent: Progress, total: Optional[int]):
22 super().__init__()
23 self.task_id = parent.add_task(description, total=total)
24 self.parent = parent
25 self.total = total
27 def update(self, increment: int, /):
28 self.parent.advance(self.task_id, increment)
30 def reset(self):
31 self.parent.reset(self.task_id)
33 def close(self):
34 self.parent.remove_task(self.task_id)
36 def set_description(self, description: str, /, refresh: bool = True):
37 self.parent.update(self.task_id, description=description, refresh=refresh)
40class RichOverallProgress:
41 def __init__(self):
42 super().__init__()
43 self.progress = Progress()
45 def __call__(self, description: str = "", *, total: Optional[int] = None):
46 return RichTaskBar(description, parent=self.progress, total=total)