Saltar al contenido principal

_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.
note

La información de sesgo ergonómico es opcional y no se valida estrictamente.

Ejemplo de Uso
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).