_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 cumplir con un formato y reglas de validación específicos.
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 puede realizar una validación adicional.
- 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 (& preprocesador) de entrada para AlphaCube.
format
El formato de los datos de entrada. Debe ser 'moves' o 'stickers'.
scramble
Los datos del scramble 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 adicionales 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.
Devuelve:
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.
Devuelve:
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 adicionales.
Argumentos:
value
- El valor de las profundidades adicionales a validar.
Devuelve:
int
- El valor de las profundidades adicionales validado.
Lanza:
ValueError
- Si el valor de las profundidades adicionales es negativo.
validate_scramble
@model_validator(mode="before")
@classmethod
def validate_scramble(cls, values)
Valida y preprocesa los datos del scramble según el formato elegido.
Argumentos:
values
dict - Los valores de entrada.
Devuelve:
dict
- Los valores de entrada con los datos del scramble validados.
Lanza:
ValueError
- Si hay movimientos no válidos en 'scramble' para el formato 'moves'.ValueError
- Si hay una configuración inesperada de las piezas centrales en 'scramble' para el formato 'stickers' (no implementado).