Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/isoduration/parser/__init__.py: 25%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

20 statements  

1from isoduration.parser.exceptions import EmptyDuration 

2from isoduration.parser.parsing import parse_date_duration 

3from isoduration.parser.util import is_period 

4from isoduration.types import Duration 

5 

6 

7def parse_duration(duration_str: str) -> Duration: 

8 if len(duration_str) < 2: 

9 raise EmptyDuration("No duration information provided") 

10 

11 beginning = 1 

12 first = duration_str[beginning - 1] 

13 

14 sign = +1 

15 

16 if first == "+": 

17 beginning += 1 

18 if first == "-": 

19 sign = -1 

20 beginning += 1 

21 

22 prefix = duration_str[beginning - 1] 

23 duration = duration_str[beginning:] 

24 

25 if not is_period(prefix): 

26 raise EmptyDuration("No prefix provided") 

27 

28 return parse_date_duration(duration, sign)