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

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

14 statements  

1from __future__ import annotations 

2 

3from typing import TYPE_CHECKING 

4 

5from isoduration.constants import PERIOD_PREFIX 

6from isoduration.formatter.checking import check_global_sign 

7from isoduration.formatter.formatting import format_date, format_time 

8 

9if TYPE_CHECKING: # pragma: no cover 

10 from isoduration.types import Duration 

11 

12 

13def format_duration(duration: Duration) -> str: 

14 global_sign = check_global_sign(duration) 

15 date_duration_str = format_date(duration.date, global_sign) 

16 time_duration_str = format_time(duration.time, global_sign) 

17 

18 duration_str = f"{date_duration_str}{time_duration_str}" 

19 sign_str = "-" if global_sign < 0 else "" 

20 

21 if duration_str == PERIOD_PREFIX: 

22 return f"{PERIOD_PREFIX}0D" 

23 

24 return f"{sign_str}{duration_str}"