HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Python311/Lib/site-packages/isoduration/formatter/__init__.py
from __future__ import annotations

from typing import TYPE_CHECKING

from isoduration.constants import PERIOD_PREFIX
from isoduration.formatter.checking import check_global_sign
from isoduration.formatter.formatting import format_date, format_time

if TYPE_CHECKING:  # pragma: no cover
    from isoduration.types import Duration


def format_duration(duration: Duration) -> str:
    global_sign = check_global_sign(duration)
    date_duration_str = format_date(duration.date, global_sign)
    time_duration_str = format_time(duration.time, global_sign)

    duration_str = f"{date_duration_str}{time_duration_str}"
    sign_str = "-" if global_sign < 0 else ""

    if duration_str == PERIOD_PREFIX:
        return f"{PERIOD_PREFIX}0D"

    return f"{sign_str}{duration_str}"