File size: 739 Bytes
d1ceb73 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
from isoduration.parser.exceptions import EmptyDuration
from isoduration.parser.parsing import parse_date_duration
from isoduration.parser.util import is_period
from isoduration.types import Duration
def parse_duration(duration_str: str) -> Duration:
if len(duration_str) < 2:
raise EmptyDuration("No duration information provided")
beginning = 1
first = duration_str[beginning - 1]
sign = +1
if first == "+":
beginning += 1
if first == "-":
sign = -1
beginning += 1
prefix = duration_str[beginning - 1]
duration = duration_str[beginning:]
if not is_period(prefix):
raise EmptyDuration("No prefix provided")
return parse_date_duration(duration, sign)
|