
     c	                         d Z dgZddlmZmZmZmZ ddddedee         d	ed
ee         dee         defdZ	dedee         d	edeeef         fdZ
dddded
ee         dee         defdZdS )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                    | dk    rdS | |k     rd                     |           S t          |d          D ]\  }}||z  }| |k     r nd                     || z  |z  |||          S )Nr   z1 bytez
{:,} bytes   z{:,.{precision}f}{separator}{}r
   )format	enumerate)r   r   r   r   r   isuffixunits           //usr/lib/python3/dist-packages/rich/filesize.py_to_strr      s     qyyx	""4(((x++  	6Qw$;;E +22	t		 3       c                 T    t          |          D ]\  }}||z  }| ||z  k     r n||fS )z*Pick a suffix and base for the given size.)r   )r   r   r   r   r   r   s         r   pick_unit_and_suffixr   ,   sI    x((  	6Qw$+E <r   c                *    t          | d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   s      r   r   r   5   s*    < 8   r   N)__doc____all__typingr   r   r   r   intstrr   r   r    r   r   <module>r,      sA  
 
 + 2 2 2 2 2 2 2 2 2 2 2 2  !"  
sm 
 } } 	   2s d3i s uSRUX      !"	$ $ $
$ }$ }	$
 	$ $ $ $ $ $r   