_validator
Validador de Entrada
Este módulo define el validador de entrada para la aplicación AlphaCube. Incluye una clase Input
de Pydantic que valida los datos de entrada para las tareas de la aplicación. Los datos de entrada deben adherirse a un formato específico y a reglas de validación.
Reglas de Validación:
- El atributo
format
debe ser 'moves' o 'stickers'. - Para el formato 'moves', el atributo
scramble
debe consistir en movimientos válidos. - Para el formato 'stickers' (no implementado), se pueden realizar validaciones adicionales.
- El atributo
beam_width
debe ser un entero positivo. - El atributo
extra_depths
debe ser un entero no negativo.
La información de sesgo ergonómico es opcional y no se valida estrictamente.
input_data = {
'format': 'moves',
'scramble': "R U R' U'",
'beam_width': 256,
'extra_depths': 2,
'ergonomic_bias': None
}
validated_input = Input(**input_data)
Input
class Input(BaseModel)
Validador (y preprocesador) de entrada para AlphaCube.
format
El formato de los datos de entrada. Debe ser 'moves' o 'stickers'.
scramble
Los datos de mezcla en el formato especificado.
beam_width
El ancho del haz para la tarea. Debe ser un entero positivo.
extra_depths
El número de profundidades extra para la tarea. Debe ser un entero no negativo.
ergonomic_bias
Información opcional de sesgo ergonómico (no se valida estrictamente).
validate_format
@validator("format")
@classmethod
def validate_format(cls, value: str) -> str
Valida el formato de entrada.
Argumentos:
value
str - El valor del formato a validar.
Retorna:
str
- El valor del formato validado.
Lanza:
ValueError
- Si el formato no es 'moves' o 'stickers'.
validate_beam_width
@validator("beam_width")
@classmethod
def validate_beam_width(cls, value)
Valida el ancho del haz.
Argumentos:
value
- El valor del ancho del haz a validar.
Retorna:
int
- El valor del ancho del haz validado.
Lanza:
ValueError
- Si el ancho del haz no es un entero positivo.
validate_extra_depths
@validator("extra_depths")
@classmethod
def validate_extra_depths(cls, value)
Valida las profundidades extra.
Argumentos:
value
- El valor de las profundidades extra a validar.
Retorna:
int
- El valor de las profundidades extra validado.
Lanza:
ValueError
- Si el valor de las profundidades extra es negativo.
validate_scramble
@model_validator(mode="before")
@classmethod
def validate_scramble(cls, values)
Valida y preprocesa los datos de mezcla según el formato elegido.
Argumentos:
values
dict - Los valores de entrada.
Retorna:
dict
- Los valores de entrada con los datos de mezcla validados.
Lanza:
ValueError
- Si hay movimientos inválidos en 'scramble' para el formato 'moves'.ValueError
- Si hay una configuración inesperada de piezas centrales en 'scramble' para el formato 'stickers' (no implementado).