[utils] Fix format_bytes output for Bytes (#2132)

Authored by: pukkandan, mdawar
This commit is contained in:
Pierre Mdawar 2021-12-28 03:38:31 +05:30 committed by pukkandan
parent ceb98323f2
commit f02d24d8d2
No known key found for this signature in database
GPG Key ID: 0F00D95A001F4698
2 changed files with 15 additions and 2 deletions

View File

@ -37,6 +37,7 @@
ExtractorError, ExtractorError,
find_xpath_attr, find_xpath_attr,
fix_xml_ampersands, fix_xml_ampersands,
format_bytes,
float_or_none, float_or_none,
get_element_by_class, get_element_by_class,
get_element_by_attribute, get_element_by_attribute,
@ -1688,6 +1689,18 @@ def test(ll, idx, val, cache):
ll = reversed(ll) ll = reversed(ll)
test(ll, -15, 14, range(15)) 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__': if __name__ == '__main__':
unittest.main() unittest.main()

View 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)) exponent = 0 if num == 0 else int(math.log(num, factor))
suffix = ['', *'KMGTPEZY'][exponent] suffix = ['', *'KMGTPEZY'][exponent]
converted = num / (factor ** 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): 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): def lookup_unit_table(unit_table, s):