]> jfr.im git - yt-dlp.git/commitdiff
[utils] Fix `format_bytes` output for Bytes (#2132)
authorPierre Mdawar <redacted>
Mon, 27 Dec 2021 22:08:31 +0000 (03:38 +0530)
committerpukkandan <redacted>
Mon, 27 Dec 2021 22:12:19 +0000 (03:42 +0530)
Authored by: pukkandan, mdawar

test/test_utils.py
yt_dlp/utils.py

index 4edf4e1b1b677765865f109b4647a779d3a92be3..2e33308c759764df462c827b9769324a10d9fe2e 100644 (file)
@@ -37,6 +37,7 @@
     ExtractorError,
     find_xpath_attr,
     fix_xml_ampersands,
+    format_bytes,
     float_or_none,
     get_element_by_class,
     get_element_by_attribute,
@@ -1688,6 +1689,18 @@ def test(ll, idx, val, cache):
         ll = reversed(ll)
         test(ll, -15, 14, range(15))
 
+    def test_format_bytes(self):
+        self.assertEqual(format_bytes(0), '0.00B')
+        self.assertEqual(format_bytes(1000), '1000.00B')
+        self.assertEqual(format_bytes(1024), '1.00KiB')
+        self.assertEqual(format_bytes(1024**2), '1.00MiB')
+        self.assertEqual(format_bytes(1024**3), '1.00GiB')
+        self.assertEqual(format_bytes(1024**4), '1.00TiB')
+        self.assertEqual(format_bytes(1024**5), '1.00PiB')
+        self.assertEqual(format_bytes(1024**6), '1.00EiB')
+        self.assertEqual(format_bytes(1024**7), '1.00ZiB')
+        self.assertEqual(format_bytes(1024**8), '1.00YiB')
+
 
 if __name__ == '__main__':
     unittest.main()
index cdc9a0ecf2fdc2ffe480904a7548d0f0026e94cd..5ce6df7ac2417c5aa73acc929b36934ed6775956 100644 (file)
@@ -2118,11 +2118,11 @@ def format_decimal_suffix(num, fmt='%d%s', *, factor=1000):
     exponent = 0 if num == 0 else int(math.log(num, factor))
     suffix = ['', *'KMGTPEZY'][exponent]
     converted = num / (factor ** exponent)
-    return fmt % (converted, suffix)
+    return fmt % (converted, f'{suffix}i' if suffix and factor == 1024 else suffix)
 
 
 def format_bytes(bytes):
-    return format_decimal_suffix(bytes, '%.2f%siB', factor=1024) or 'N/A'
+    return format_decimal_suffix(bytes, '%.2f%sB', factor=1024) or 'N/A'
 
 
 def lookup_unit_table(unit_table, s):