Spaces:
Building
Building
File size: 2,000 Bytes
2bfc495 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
import re
from utils import log
class ValidationEngine:
def __init__(self):
pass
def validate_parameters(self, intent_def, variables):
"""
Checks all parameters defined in the intent against provided variables.
Returns: (is_valid, error_messages)
"""
is_valid = True
error_messages = []
for param_def in intent_def.get("parameters", []):
name = param_def.get("name")
expected_type = param_def.get("type", "string")
regex = param_def.get("regex")
validation_message = param_def.get("validation_message", f"Invalid value for {name}.")
value = variables.get(name)
# Check existence
if value is None:
continue # Missing parameters are handled elsewhere
# Type check
if expected_type == "string":
if not isinstance(value, str):
is_valid = False
error_messages.append(f"{validation_message} Expected a string.")
continue
elif expected_type == "int":
if not isinstance(value, int):
is_valid = False
error_messages.append(f"{validation_message} Expected an integer.")
continue
elif expected_type == "float":
if not isinstance(value, float):
is_valid = False
error_messages.append(f"{validation_message} Expected a float.")
continue
# Regex check
if regex and isinstance(value, str):
if not re.match(regex, value):
is_valid = False
error_messages.append(validation_message)
if is_valid:
log("β
Parameter validation passed.")
else:
log(f"β Parameter validation failed: {error_messages}")
return is_valid, error_messages
|