3 ft` @ s8 d dl mZ d dlmZ dddZdddZdd Zd S ) )unicode_literals)long c C s ddddddddd g }|r d }nd}d}d }t |d }| dkrDd} x$| |krh||k rh|d }| | } qFW t| ts~t| trd}n| dk rd}nd}|t| pd ||| f S )a Return a human-readable metric-like string representation of a number. :param number: the number to be converted to a human-readable form :param SI: If is 0, this function will use the convention that 1 kilobyte = 1024 bytes, otherwise, the convention that 1 kilobyte = 1000 bytes will be used :param space: string that will be placed between the number and the SI prefix :return: a human-readable metric-like string representation of *number* r kMGTPEZYg @@g @i r Ng z%i%s%sgfffff#@z%.1f%s%sz%.0f%s%s)len isinstanceintr float) ZnumberZSIZspaceZsymbolsstepZthreshdepthZ max_depthformat r /usr/lib/python3.6/format.py format_number s4 r c C sx | dks| dk r|rdS dS nV| t dkr.dS t| } | d }| d } |rh|d }|d }d||| f S d || f S dS ) a Return a human-readable string representation of a number of seconds. The string will show seconds, minutes, and optionally hours. :param seconds: the number of seconds to convert to a human-readable form :param use_hours: If use_hours is 0, the representation will be in minutes and seconds. Otherwise, it will be in hours, minutes, and seconds :return: a human-readable string representation of *seconds* Nr z--:--:--z--:--infZInfinite<