Spaces:
Runtime error
Runtime error
| # PATH: bot/core/progress.py | |
| import time | |
| class SpeedETA: | |
| def __init__(self): | |
| self.t0 = time.time() | |
| self.last_t = self.t0 | |
| self.last_bytes = 0 | |
| self.total = 0 | |
| def update(self, done_bytes: int, total_bytes: int) -> dict: | |
| now = time.time() | |
| self.total = total_bytes | |
| dt = max(1e-6, now - self.last_t) | |
| db = done_bytes - self.last_bytes | |
| speed = db / dt # bytes/sec | |
| remaining = max(0, total_bytes - done_bytes) | |
| eta = remaining / max(1e-6, speed) | |
| self.last_t = now | |
| self.last_bytes = done_bytes | |
| return {"done": done_bytes, "total": total_bytes, "speed_bps": speed, "eta_sec": eta} | |
| def human_bytes(n: float) -> str: | |
| units = ["B", "KB", "MB", "GB"] | |
| x = float(n) | |
| for u in units: | |
| if x < 1024 or u == units[-1]: | |
| return f"{x:.2f}{u}" | |
| x /= 1024 | |
| return f"{x:.2f}GB" | |
| def human_eta(sec: float) -> str: | |
| s = int(max(0, sec)) | |
| m, s = divmod(s, 60) | |
| h, m = divmod(m, 60) | |
| if h: return f"{h}h {m}m" | |
| if m: return f"{m}m {s}s" | |
| return f"{s}s" |