]> jfr.im git - yt-dlp.git/commitdiff
[utils] `format_decimal_suffix`: Fix for very large numbers (#3109)
authors0u1h <redacted>
Fri, 18 Mar 2022 21:03:09 +0000 (17:03 -0400)
committerGitHub <redacted>
Fri, 18 Mar 2022 21:03:09 +0000 (14:03 -0700)
Authored by: s0u1h

test/test_utils.py
yt_dlp/utils.py

index 6be5bb642e79b1ae7a331f921bd231d06f7946fd..a7f1b0e94698c7b79ebe8957c5a81acd6482a3ed 100644 (file)
@@ -1780,6 +1780,7 @@ def test_format_bytes(self):
         self.assertEqual(format_bytes(1024**6), '1.00EiB')
         self.assertEqual(format_bytes(1024**7), '1.00ZiB')
         self.assertEqual(format_bytes(1024**8), '1.00YiB')
+        self.assertEqual(format_bytes(1024**9), '1024.00YiB')
 
     def test_hide_login_info(self):
         self.assertEqual(Config.hide_login_info(['-u', 'foo', '-p', 'bar']),
index c9b57c2f02fc64c1e743c26d77ba7f9be8e76106..da6f27801f4dd8d02b755554aad9a19261af40ca 100644 (file)
@@ -2279,8 +2279,9 @@ def format_decimal_suffix(num, fmt='%d%s', *, factor=1000):
     num, factor = float_or_none(num), float(factor)
     if num is None or num < 0:
         return None
-    exponent = 0 if num == 0 else int(math.log(num, factor))
-    suffix = ['', *'kMGTPEZY'][exponent]
+    POSSIBLE_SUFFIXES = 'kMGTPEZY'
+    exponent = 0 if num == 0 else min(int(math.log(num, factor)), len(POSSIBLE_SUFFIXES))
+    suffix = ['', *POSSIBLE_SUFFIXES][exponent]
     if factor == 1024:
         suffix = {'k': 'Ki', '': ''}.get(suffix, f'{suffix}i')
     converted = num / (factor ** exponent)