o
�J�h� �
@ s� d Z dgZddlmZmZmZmZ ddd�dedee d ed
ee dee defd
d�Z dedee d edeeef fdd�Z
ddd�ded
ee dee defdd�ZdS )a� Functions for reporting filesizes. Borrowed from https://github.com/PyFilesystem/pyfilesystem2
The functions declared in this module should cover the different
use cases needed to generate a string representation of a file size
using several different units. Since there are many standards regarding
file size units, three different functions have been implemented.
See Also:
* `Wikipedia: Binary prefix <https://en.wikipedia.org/wiki/Binary_prefix>`_
�decimal� )�Iterable�List�Optional�Tuple� � �� precision� separator�size�suffixes�baser
r �returnc C sb | dkrdS | |k r| d�d�S t |d�D ]\}}|| }| |k r# nqdj|| | |||d�S )Nr z1 byte�,z bytes� z{:,.{precision}f}{separator}{}r )� enumerate�format)r r
r r
r �i�suffix�unit� r �KC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\rich\filesize.py�_to_str s �
�r c C s8 t |�D ]\}}|| }| || k r ||fS q||fS )z*Pick a suffix and base for the given size.)r )r r
r r r r r r r �pick_unit_and_suffix+ s �r c C s t | dd||d�S )a3 Convert a filesize in to a string (powers of 1000, SI prefixes).
In this convention, ``1000 B = 1 kB``.
This is typically the format used to advertise the storage
capacity of USB flash drives and the like (*256 MB* meaning
actually a storage capacity of more than *256 000 000 B*),
or used by **Mac OS X** since v10.6 to report file sizes.
Arguments:
int (size): A file size.
int (precision): The number of decimal places to include (default = 1).
str (separator): The string to separate the value from the units (default = " ").
Returns:
`str`: A string containing a abbreviated file size and units.
Example:
>>> filesize.decimal(30000)
'30.0 kB'
>>> filesize.decimal(30000, precision=2, separator="")
'30.00kB'
)�kB�MB�GB�TB�PB�EB�ZB�YBi� r )r )r r
r r r r r 4 s �N)�__doc__�__all__�typingr r r r �int�strr r r r r r r �<module> s<