Skip to content

Commit 754ff71

Browse files
authored
fix: ensure 100% progress is logged exactly once (#276)
The progress tracker was logging 100% multiple times - once from _record_completion() and again from log_final(). Now _record_completion() skips logging at 100%, leaving that responsibility to log_final(). Also refactors tests from class-based to flat functions and adds explicit tests for the 100% logging behavior.
1 parent 9e1c6ec commit 754ff71

2 files changed

Lines changed: 213 additions & 141 deletions

File tree

packages/data-designer-engine/src/data_designer/engine/dataset_builders/utils/progress_tracker.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,9 @@ def record_failure(self) -> None:
7777
self._record_completion(success=False)
7878

7979
def log_final(self) -> None:
80-
"""Log final progress if not already logged at completion."""
80+
"""Log final progress summary."""
8181
with self.lock:
82-
if self.completed > 0 and self.completed == self.total_records:
83-
self._log_progress_unlocked() # always log 100%
84-
elif self.total_records > 0 and self.completed < self.total_records:
85-
self._log_progress_unlocked()
86-
elif self.completed > 0 and self.completed >= self.next_log_at - self.log_interval:
87-
pass # Already logged at the last interval
88-
elif self.completed > 0:
82+
if self.completed > 0:
8983
self._log_progress_unlocked()
9084

9185
def _record_completion(self, *, success: bool) -> None:
@@ -97,7 +91,7 @@ def _record_completion(self, *, success: bool) -> None:
9791
else:
9892
self.failed += 1
9993

100-
if self.completed >= self.next_log_at:
94+
if self.completed >= self.next_log_at and self.completed < self.total_records:
10195
should_log = True
10296
while self.next_log_at <= self.completed:
10397
self.next_log_at += self.log_interval

0 commit comments

Comments
 (0)