mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[utils] Improve int_or_none and float_or_none (#20403)
This commit is contained in:
		| @@ -33,11 +33,13 @@ from youtube_dl.utils import ( | ||||
|     ExtractorError, | ||||
|     find_xpath_attr, | ||||
|     fix_xml_ampersands, | ||||
|     float_or_none, | ||||
|     get_element_by_class, | ||||
|     get_element_by_attribute, | ||||
|     get_elements_by_class, | ||||
|     get_elements_by_attribute, | ||||
|     InAdvancePagedList, | ||||
|     int_or_none, | ||||
|     intlist_to_bytes, | ||||
|     is_html, | ||||
|     js_to_json, | ||||
| @@ -468,6 +470,21 @@ class TestUtil(unittest.TestCase): | ||||
|             shell_quote(args), | ||||
|             """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): | ||||
|         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 | ||||
|     try: | ||||
|         return int(v) * invscale // scale | ||||
|     except ValueError: | ||||
|     except (ValueError, TypeError): | ||||
|         return default | ||||
|  | ||||
|  | ||||
| @@ -1943,7 +1943,7 @@ def float_or_none(v, scale=1, invscale=1, default=None): | ||||
|         return default | ||||
|     try: | ||||
|         return float(v) * invscale / scale | ||||
|     except ValueError: | ||||
|     except (ValueError, TypeError): | ||||
|         return default | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user