[utils] Improve parse_duration
This commit is contained in:
		| @@ -510,6 +510,7 @@ class TestUtil(unittest.TestCase): | |||||||
|         self.assertEqual(parse_duration('1 hour 3 minutes'), 3780) |         self.assertEqual(parse_duration('1 hour 3 minutes'), 3780) | ||||||
|         self.assertEqual(parse_duration('87 Min.'), 5220) |         self.assertEqual(parse_duration('87 Min.'), 5220) | ||||||
|         self.assertEqual(parse_duration('PT1H0.040S'), 3600.04) |         self.assertEqual(parse_duration('PT1H0.040S'), 3600.04) | ||||||
|  |         self.assertEqual(parse_duration('PT00H03M30SZ'), 210) | ||||||
|  |  | ||||||
|     def test_fix_xml_ampersands(self): |     def test_fix_xml_ampersands(self): | ||||||
|         self.assertEqual( |         self.assertEqual( | ||||||
|   | |||||||
| @@ -1773,7 +1773,7 @@ def parse_duration(s): | |||||||
|     s = s.strip() |     s = s.strip() | ||||||
|  |  | ||||||
|     days, hours, mins, secs, ms = [None] * 5 |     days, hours, mins, secs, ms = [None] * 5 | ||||||
|     m = re.match(r'(?:(?:(?:(?P<days>[0-9]+):)?(?P<hours>[0-9]+):)?(?P<mins>[0-9]+):)?(?P<secs>[0-9]+)(?P<ms>\.[0-9]+)?$', s) |     m = re.match(r'(?:(?:(?:(?P<days>[0-9]+):)?(?P<hours>[0-9]+):)?(?P<mins>[0-9]+):)?(?P<secs>[0-9]+)(?P<ms>\.[0-9]+)?Z?$', s) | ||||||
|     if m: |     if m: | ||||||
|         days, hours, mins, secs, ms = m.groups() |         days, hours, mins, secs, ms = m.groups() | ||||||
|     else: |     else: | ||||||
| @@ -1790,11 +1790,11 @@ def parse_duration(s): | |||||||
|                 )? |                 )? | ||||||
|                 (?: |                 (?: | ||||||
|                     (?P<secs>[0-9]+)(?P<ms>\.[0-9]+)?\s*s(?:ec(?:ond)?s?)?\s* |                     (?P<secs>[0-9]+)(?P<ms>\.[0-9]+)?\s*s(?:ec(?:ond)?s?)?\s* | ||||||
|                 )?$''', s) |                 )?Z?$''', s) | ||||||
|         if m: |         if m: | ||||||
|             days, hours, mins, secs, ms = m.groups() |             days, hours, mins, secs, ms = m.groups() | ||||||
|         else: |         else: | ||||||
|             m = re.match(r'(?i)(?:(?P<hours>[0-9.]+)\s*(?:hours?)|(?P<mins>[0-9.]+)\s*(?:mins?\.?|minutes?)\s*)$', s) |             m = re.match(r'(?i)(?:(?P<hours>[0-9.]+)\s*(?:hours?)|(?P<mins>[0-9.]+)\s*(?:mins?\.?|minutes?)\s*)Z?$', s) | ||||||
|             if m: |             if m: | ||||||
|                 hours, mins = m.groups() |                 hours, mins = m.groups() | ||||||
|             else: |             else: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․