(seconds: float)
| 58 | |
| 59 | |
| 60 | def format_duration(seconds: float) -> str: |
| 61 | ms = math.ceil(seconds * 1e3) |
| 62 | seconds, ms = divmod(ms, 1000) |
| 63 | minutes, seconds = divmod(seconds, 60) |
| 64 | hours, minutes = divmod(minutes, 60) |
| 65 | |
| 66 | parts = [] |
| 67 | if hours: |
| 68 | parts.append('%s hour' % hours) |
| 69 | if minutes: |
| 70 | parts.append('%s min' % minutes) |
| 71 | if seconds: |
| 72 | if parts: |
| 73 | # 2 min 1 sec |
| 74 | parts.append('%s sec' % seconds) |
| 75 | else: |
| 76 | # 1.0 sec |
| 77 | parts.append('%.1f sec' % (seconds + ms / 1000)) |
| 78 | if not parts: |
| 79 | return '%s ms' % ms |
| 80 | |
| 81 | parts = parts[:2] |
| 82 | return ' '.join(parts) |
| 83 | |
| 84 | |
| 85 | def strip_py_suffix(names: list[str] | None) -> None: |
no test coverage detected
searching dependent graphs…