PHP 8.2.30
Preview: filesize.py Size: 2.45 KB
/proc/thread-self/root/opt/alt/python313/lib/python3.13/site-packages/pip/_vendor/rich/filesize.py

# coding: utf-8
"""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>`_

"""

__all__ = ["decimal"]

from typing import Iterable, List, Optional, Tuple


def _to_str(
    size: int,
    suffixes: Iterable[str],
    base: int,
    *,
    precision: Optional[int] = 1,
    separator: Optional[str] = " ",
) -> str:
    if size == 1:
        return "1 byte"
    elif size < base:
        return "{:,} bytes".format(size)

    for i, suffix in enumerate(suffixes, 2):  # noqa: B007
        unit = base**i
        if size < unit:
            break
    return "{:,.{precision}f}{separator}{}".format(
        (base * size / unit),
        suffix,
        precision=precision,
        separator=separator,
    )


def pick_unit_and_suffix(size: int, suffixes: List[str], base: int) -> Tuple[int, str]:
    """Pick a suffix and base for the given size."""
    for i, suffix in enumerate(suffixes):
        unit = base**i
        if size < unit * base:
            break
    return unit, suffix


def decimal(
    size: int,
    *,
    precision: Optional[int] = 1,
    separator: Optional[str] = " ",
) -> str:
    """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'

    """
    return _to_str(
        size,
        ("kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"),
        1000,
        precision=precision,
        separator=separator,
    )

Directory Contents

Dirs: 1 × Files: 78

Name Size Perms Modified Actions
- drwxr-xr-x 2026-02-10 08:09:26
Edit Download
890 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
10.13 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
6.74 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
3.19 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
9.61 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
4.40 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
17.80 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
1.03 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
6.96 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
96.89 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
1.26 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
5.37 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
6.47 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
7.89 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
972 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
2.44 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
642 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
2.45 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
1.64 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
9.36 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
4.91 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
3.18 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
13.68 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
13.94 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
3.58 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
11.62 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
8.01 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
5.18 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
4.85 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
828 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
3.32 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
10.33 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
35.01 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
58.31 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
7.97 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
11.04 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
1.36 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
0 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
166 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
4.33 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
4.49 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
2.78 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
1.55 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
23.68 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
4.24 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
4.32 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
26.44 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
1.23 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
34.35 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
38.75 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
3.29 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
44.46 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
3.69 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
102 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
28.91 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
8.95 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
9.86 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
136.95 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
1.04 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
2.05 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
265 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
799 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
9.47 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
3.15 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
1.21 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
1.35 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
6.90 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
423 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
5.34 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
19.45 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
351 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
417 B lrw-r--r-- 2026-01-10 11:03:59
Edit Download
22.29 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
1.88 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
2.72 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
1.80 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
5.95 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download
8.28 KB lrw-r--r-- 2026-01-10 11:03:59
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).