Skip to content

Commit

Permalink
[utils] Improve str_to_int
Browse files Browse the repository at this point in the history
  • Loading branch information
dstftw committed Dec 15, 2019
1 parent 73d8f3a commit 42db58e
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
5 changes: 5 additions & 0 deletions test/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -500,6 +500,11 @@ 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(523), 523)
# Python 3 has no long
if sys.version_info < (3, 0):
eval('self.assertEqual(str_to_int(123456L), 123456)')
self.assertEqual(str_to_int('noninteger'), None)
self.assertEqual(str_to_int([]), None)

def test_url_basename(self):
self.assertEqual(url_basename('http://foo.de/'), '')
Expand Down
8 changes: 5 additions & 3 deletions youtube_dl/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
compat_html_entities,
compat_html_entities_html5,
compat_http_client,
compat_integer_types,
compat_kwargs,
compat_os_name,
compat_parse_qs,
Expand Down Expand Up @@ -3519,10 +3520,11 @@ def str_or_none(v, default=None):

def str_to_int(int_str):
""" A more relaxed version of int_or_none """
if not isinstance(int_str, compat_str):
if isinstance(int_str, compat_integer_types):
return int_str
int_str = re.sub(r'[,\.\+]', '', int_str)
return int(int_str)
elif isinstance(int_str, compat_str):
int_str = re.sub(r'[,\.\+]', '', int_str)
return int_or_none(int_str)


def float_or_none(v, scale=1, invscale=1, default=None):
Expand Down

0 comments on commit 42db58e

Please sign in to comment.