1
0
Fork 0

avoid mutating existing progress objects

This commit is contained in:
Sean Sube 2024-01-12 22:59:08 -06:00
parent 26c1631709
commit 746f2f56cd
Signed by: ssube
GPG Key ID: 3EED7B957D362AF1
2 changed files with 11 additions and 8 deletions

View File

@ -51,13 +51,16 @@ class Progress:
"total": self.total, "total": self.total,
} }
def complete(self) -> bool: def is_complete(self) -> bool:
return self.current >= self.total return self.current >= self.total
def empty(self) -> bool: def is_empty(self) -> bool:
# TODO: what if total is also 0? # TODO: what if total is also 0?
return self.current == 0 return self.current == 0
def update(self, current: int) -> "Progress":
return Progress(current, self.total)
class ProgressCommand: class ProgressCommand:
device: str device: str

View File

@ -140,13 +140,13 @@ class WorkerContext:
raise CancelledException("job has been cancelled") raise CancelledException("job has been cancelled")
# update current progress counters # update current progress counters
self.steps.current = steps self.steps = self.steps.update(steps)
if stages is not None: if stages is not None:
self.stages.current = stages self.stages = self.stages.update(stages)
if tiles is not None: if tiles is not None:
self.tiles.current = tiles self.tiles = self.tiles.update(tiles)
# TODO: result should really be part of context at this point # TODO: result should really be part of context at this point
result = None result = None
@ -174,19 +174,19 @@ class WorkerContext:
if total > 0: if total > 0:
self.steps = Progress(current, total) self.steps = Progress(current, total)
else: else:
self.steps.current = current self.steps = self.steps.update(current)
def set_stages(self, current: int, total: int = 0) -> None: def set_stages(self, current: int, total: int = 0) -> None:
if total > 0: if total > 0:
self.stages = Progress(current, total) self.stages = Progress(current, total)
else: else:
self.stages.current = current self.stages = self.stages.update(current)
def set_tiles(self, current: int, total: int = 0) -> None: def set_tiles(self, current: int, total: int = 0) -> None:
if total > 0: if total > 0:
self.tiles = Progress(current, total) self.tiles = Progress(current, total)
else: else:
self.tiles.current = current self.tiles = self.tiles.update(current)
def set_totals(self, steps: int, stages: int = 0, tiles: int = 0) -> None: def set_totals(self, steps: int, stages: int = 0, tiles: int = 0) -> None:
self.steps.total = steps self.steps.total = steps