[utils] Improve int_or_none and float_or_none (#20403)
This commit is contained in:
		
							parent
							
								
									050afa60c6
								
							
						
					
					
						commit
						5e1271c56d
					
				
					 2 changed files with 19 additions and 2 deletions
				
			
		| 
						 | 
					@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue