#!/usr/bin/env python3 """ 进度生成器工具 """ from .task import ProgressiveTask class ProgressGenerator: """进度生成器工具类""" @staticmethod def for_iterable(iterable, task: ProgressiveTask, description: str = "处理中"): """为可迭代对象添加进度报告""" total = len(iterable) if hasattr(iterable, '__len__') else 100 task.total_steps = total for i, item in enumerate(iterable): task.update(i, f"{description} {i+1}/{total}") yield item task.finish(f"{description}完成") @staticmethod def for_range(start: int, end: int, task: ProgressiveTask, description: str = "处理中"): """为范围添加进度报告""" total = end - start task.total_steps = total for i in range(start, end): task.update(i - start, f"{description} {i+1}/{total}") yield i task.finish(f"{description}完成") @staticmethod def for_steps(steps: int, task: ProgressiveTask, description: str = "处理中"): """为步数添加进度报告""" task.total_steps = steps for i in range(steps): task.update(i, f"{description} {i+1}/{steps}") yield i task.finish(f"{description}完成")