import re TEMPLATE_NAME_PATTERN = re.compile(r"^[A-Z0-9_]{3,40}$") DLT_TEMPLATE_ID_PATTERN = re.compile(r"^\d{12,25}$") VARIABLE_TOKEN = "{#var#}" def normalize_template_name(value: str) -> str: return value.strip().upper().replace(" ", "_") def validate_template_name(value: str) -> str: name = normalize_template_name(value) if not TEMPLATE_NAME_PATTERN.match(name): raise ValueError("Template name must be 3–40 uppercase letters, numbers, or underscores") return name def validate_template_text(value: str) -> str: text = value.strip() if len(text) < 10: raise ValueError("Template must be at least 10 characters") if len(text) > 1000: raise ValueError("Template must be 1000 characters or fewer") return text def validate_dlt_template_id(value: str) -> str: template_id = value.strip() if not DLT_TEMPLATE_ID_PATTERN.match(template_id): raise ValueError("DLT Template ID must be 12–25 digits") return template_id