human_rate() - Format Rates
- String Formatting – Converts raw byte or bit transfer rates into readable rate strings like
10 MiB/s,20 GB/s, or100 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) -> strOutput Unit Hierarchy Scale
| Base | Divisor | Unit Escalation Order |
|---|---|---|
| Base 2 (Binary) | 1024 | B/s → KiB/s → MiB/s → GiB/s → TiB/s → PiB/s → EiB/s → ZiB/s → YiB/s |
| Base 10 (Decimal) | 1000 | B/s → KB/s → MB/s → GB/s → TB/s → PB/s → EB/s → ZB/s → YB/s |
| Base 2, bits=True | 1024 | bps → Kibps → Mibps → Gibps → Tibps → Pibps → Eibps → Zibps → Yibps |
| Base 10, bits=True | 1000 | bps → 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