Source code for torchpack.utils.humanize

__all__ = ['naturaldelta']


[docs]def naturaldelta(seconds: float) -> str: if seconds < 0: raise ValueError('`seconds` needs to be >= 0.') elif seconds == 0: return '0 second' if seconds < 60: values = [0, 0, 0, seconds] else: values = [] for divisor in [86400, 3600, 60, 1]: value = int(seconds // divisor) seconds -= value * divisor values.append(value) texts = [] for k, unit in enumerate(['day', 'hour', 'minute', 'second']): if values[k] == 0: continue if values[k] > 1: unit += 's' texts.append('{:.3g} {}'.format(values[k], unit)) return ' '.join(texts)