def format_percentage(part, total): return int((part / total) * 100) def format_bytes(bytes_to_format): units = ['B', 'KB', 'MB', 'GB', 'TB'] i = 0 while bytes_to_format >= 1024 and i < len(units) - 1: bytes_to_format /= 1024 i += 1 return f"{bytes_to_format:.2f} {units[i]}" def format_kilobytes(bytes_to_format): units = ['KB', 'MB', 'GB', 'TB'] i = 0 while bytes_to_format >= 1024 and i < len(units) - 1: bytes_to_format /= 1024 i += 1 return f"{bytes_to_format:.2f} {units[i]}" def format_time(seconds): m, s = divmod(seconds, 60) h, m = divmod(m, 60) if h > 0: return f"{int(h):02d}:{int(m):02d}:{int(s):02d}" else: return f"{int(m):02d}:{int(s):02d}" def format_download_speed(speed): if speed is None: return 'Undefined' units = ['B/s', 'KB/s', 'MB/s', 'GB/s', 'TB/s'] unit_index = 0 while speed >= 1000 and unit_index < len(units) - 1: speed /= 1000.0 unit_index += 1 return '{:.2f}{}'.format(speed, units[unit_index]) def format_exception(ex): return f"{type(ex).__name__}: {str(ex)}".replace('"', '\\"').replace("'", "\\'")