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, |     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 | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user