mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-01-07 17:16:08 +00:00
[utils] Improve int_or_none and float_or_none (#20403)
This commit is contained in:
parent
050afa60c6
commit
5e1271c56d
|
@ -33,11 +33,13 @@ from youtube_dl.utils import (
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
find_xpath_attr,
|
find_xpath_attr,
|
||||||
fix_xml_ampersands,
|
fix_xml_ampersands,
|
||||||
|
float_or_none,
|
||||||
get_element_by_class,
|
get_element_by_class,
|
||||||
get_element_by_attribute,
|
get_element_by_attribute,
|
||||||
get_elements_by_class,
|
get_elements_by_class,
|
||||||
get_elements_by_attribute,
|
get_elements_by_attribute,
|
||||||
InAdvancePagedList,
|
InAdvancePagedList,
|
||||||
|
int_or_none,
|
||||||
intlist_to_bytes,
|
intlist_to_bytes,
|
||||||
is_html,
|
is_html,
|
||||||
js_to_json,
|
js_to_json,
|
||||||
|
@ -468,6 +470,21 @@ class TestUtil(unittest.TestCase):
|
||||||
shell_quote(args),
|
shell_quote(args),
|
||||||
"""ffmpeg -i 'ñ€ß'"'"'.mp4'""" if compat_os_name != 'nt' else '''ffmpeg -i "ñ€ß'.mp4"''')
|
"""ffmpeg -i 'ñ€ß'"'"'.mp4'""" if compat_os_name != 'nt' else '''ffmpeg -i "ñ€ß'.mp4"''')
|
||||||
|
|
||||||
|
def test_float_or_none(self):
|
||||||
|
self.assertEqual(float_or_none('42.42'), 42.42)
|
||||||
|
self.assertEqual(float_or_none('42'), 42.0)
|
||||||
|
self.assertEqual(float_or_none(''), None)
|
||||||
|
self.assertEqual(float_or_none(None), None)
|
||||||
|
self.assertEqual(float_or_none([]), None)
|
||||||
|
self.assertEqual(float_or_none(set()), None)
|
||||||
|
|
||||||
|
def test_int_or_none(self):
|
||||||
|
self.assertEqual(int_or_none('42'), 42)
|
||||||
|
self.assertEqual(int_or_none(''), None)
|
||||||
|
self.assertEqual(int_or_none(None), None)
|
||||||
|
self.assertEqual(int_or_none([]), None)
|
||||||
|
self.assertEqual(int_or_none(set()), None)
|
||||||
|
|
||||||
def test_str_to_int(self):
|
def test_str_to_int(self):
|
||||||
self.assertEqual(str_to_int('123,456'), 123456)
|
self.assertEqual(str_to_int('123,456'), 123456)
|
||||||
self.assertEqual(str_to_int('123.456'), 123456)
|
self.assertEqual(str_to_int('123.456'), 123456)
|
||||||
|
|
|
@ -1922,7 +1922,7 @@ def int_or_none(v, scale=1, default=None, get_attr=None, invscale=1):
|
||||||
return default
|
return default
|
||||||
try:
|
try:
|
||||||
return int(v) * invscale // scale
|
return int(v) * invscale // scale
|
||||||
except ValueError:
|
except (ValueError, TypeError):
|
||||||
return default
|
return default
|
||||||
|
|
||||||
|
|
||||||
|
@ -1943,7 +1943,7 @@ def float_or_none(v, scale=1, invscale=1, default=None):
|
||||||
return default
|
return default
|
||||||
try:
|
try:
|
||||||
return float(v) * invscale / scale
|
return float(v) * invscale / scale
|
||||||
except ValueError:
|
except (ValueError, TypeError):
|
||||||
return default
|
return default
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue