__init__.py 739 B

12345678910111213141516171819202122232425262728
  1. from isoduration.parser.exceptions import EmptyDuration
  2. from isoduration.parser.parsing import parse_date_duration
  3. from isoduration.parser.util import is_period
  4. from isoduration.types import Duration
  5. def parse_duration(duration_str: str) -> Duration:
  6. if len(duration_str) < 2:
  7. raise EmptyDuration("No duration information provided")
  8. beginning = 1
  9. first = duration_str[beginning - 1]
  10. sign = +1
  11. if first == "+":
  12. beginning += 1
  13. if first == "-":
  14. sign = -1
  15. beginning += 1
  16. prefix = duration_str[beginning - 1]
  17. duration = duration_str[beginning:]
  18. if not is_period(prefix):
  19. raise EmptyDuration("No prefix provided")
  20. return parse_date_duration(duration, sign)