human_rate() - Format Rates

  • String Formatting – Converts raw byte or bit transfer rates into readable rate strings like 10 MiB/s, 20 GB/s, or 100 Mbps.
  • Smart Decimal Precision – Auto-rounds and formats fractional rates cleanly up to 2 decimal places.
  • Dual Bases & Bitrate Modes – Supports binary bytes (KiB/s), decimal bytes (KB/s), binary bits (Kibps), and decimal bits (kbps).
Signature
sizelib.human_rate(rate_val: int | float, base: int | None = None, bits: bool = False) -> str

Output Unit Hierarchy Scale

BaseDivisorUnit Escalation Order
Base 2 (Binary)1024B/s → KiB/s → MiB/s → GiB/s → TiB/s → PiB/s → EiB/s → ZiB/s → YiB/s
Base 10 (Decimal)1000B/s → KB/s → MB/s → GB/s → TB/s → PB/s → EB/s → ZB/s → YB/s
Base 2, bits=True1024bps → Kibps → Mibps → Gibps → Tibps → Pibps → Eibps → Zibps → Yibps
Base 10, bits=True1000bps → kbps → Mbps → Gbps → Tbps → Pbps → Ebps → Zbps → Ybps
human_rate() - Usage
from sizelib import human_rate, rate

# Default binary formatting (base 2 / 1024)
print(human_rate(10485760))                         # Output: 10 MiB/s
print(human_rate(1500000))                          # Output: 1.43 MiB/s
print(human_rate(rate.gib_s(2.5)))                  # Output: 2.50 GiB/s

# Decimal formatting (base 10 / 1000)
print(human_rate(20000000000, base=10))             # Output: 20 GB/s
print(human_rate(1500000, base=10))                 # Output: 1.50 MB/s
print(human_rate(rate.kb_s(5), base=10))            # Output: 5 KB/s

# Decimal bit rate formatting (bits=True)
print(human_rate(rate.mbps(100), bits=True))        # Output: 100 Mbps
print(human_rate(rate.gbps(1.5), bits=True))        # Output: 1.50 Gbps

# Binary bit rate formatting (bits=True, base=2)
print(human_rate(rate.mibps(2), base=2, bits=True)) # Output: 2 Mibps
human_rate() - Edge Cases & Exceptions
from sizelib import human_rate

# Zero rate inputs
print(human_rate(0))                                # Output: 0 B/s
print(human_rate(0, bits=True))                     # Output: 0 bps

# Negative values raise ValueError
try:
    human_rate(-5)
except ValueError as e:
    print(e)                                        # Output: Rate cannot be negative

# Invalid base parameter raises ValueError
try:
    human_rate(100, base=5)
except ValueError as e:
    print(e)                                        # Output: Base must be 2 or 10