def METHOD_NAME(
        duration: datetime.timedelta,
        profile='default',
) -> typing.Union[str, Decimal]:
    if profile == 'technical':
        return str(duration)
    seconds = duration.total_seconds()
    if profile == 'code':
        return round_decimal(
            Decimal((duration.days * 86400 + duration.seconds) * 10 ** 6 + duration.microseconds) / 10**6, min_digits=1
        )
    hours = int(seconds // 3600)
    seconds = seconds - (hours * 3600)
    minutes = int(seconds // 60)
    seconds = int(seconds - (minutes * 60))
    if profile == 'human':
        if hours > 0:
            return f'{hours} hours {minutes:02d} minutes { seconds:02d} seconds'
        if minutes > 0:
            return f'{minutes} minutes {seconds:02d} seconds'
        return f'{seconds} seconds'
    return f'{hours}:{minutes:02d}:{seconds:02d}'