Source code for deode.formatters

"""Define format validators used in the JSON schema validation."""

from datetime import timedelta

import isodate


[docs] def duration_format_validator(duration: str) -> bool: """Validate the format of a duration string against ISO8601. Args: duration: The duration string to validate. Returns: True if the duration string is valid, False otherwise. """ # Try convert duration to timedelta try: converted = isodate.parse_duration(str(duration)) # Allow for zero duration if converted == timedelta(seconds=0): return True except ValueError: # If not success, let parent know return False return True
[docs] def duration_slice_format_validator(duration_slice: str) -> bool: """Validate the format of a duration slice string against ISO8601. Each part of the slice is validated using duration_format_validator. Args: duration_slice: The duration slice string to validate. Returns: True if the duration slice string is valid, False otherwise. """ splitted = duration_slice.split(":") if len(splitted) == 0: return False result = [duration_format_validator(item) for item in splitted] # Check if all items in the result list passed validation if all(result) and len(result) <= 3: return True return False