"""Custom input types for Flask-RESTX request parsing.""" import re def time_duration(value: str) -> str: """ Validate and return time duration string. Accepts formats: d (days), h (hours), m (minutes), s (seconds) Examples: 7d, 4h, 30m, 30s Args: value: The time duration string Returns: The validated time duration string Raises: ValueError: If the format is invalid """ if not value: raise ValueError("Time duration cannot be empty") pattern = r"^(\d+)([dhms])$" if not re.match(pattern, value.lower()): raise ValueError( "Invalid time duration format. Use: d (days), h (hours), " "m (minutes), or s (seconds). Examples: 7d, 4h, 30m, 30s" ) return value.lower()