Pular para o conteúdo principal

_validator

Input Validator

Este módulo define o validador de entrada para a aplicação AlphaCube. Ele inclui uma classe Pydantic Input que valida os dados de entrada para as tarefas da aplicação. Os dados de entrada devem seguir regras específicas de formato e validação.

Regras de Validação:

  • O atributo format deve ser 'moves' ou 'stickers'.
  • Para o formato 'moves', o atributo scramble deve consistir em movimentos válidos.
  • Para o formato 'stickers' (não implementado), validação adicional pode ser realizada.
  • O atributo beam_width deve ser um número inteiro positivo.
  • O atributo extra_depths deve ser um número inteiro não negativo.
nota

A informação de viés ergonômico é opcional e não é estritamente validada.

Exemplo 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 (& pré-processador) de entrada para o AlphaCube.

format

O formato dos dados de entrada. Deve ser 'moves' ou 'stickers'.

scramble

Os dados do embaralhamento no formato especificado.

beam_width

A largura do feixe (beam width) para a tarefa. Deve ser um número inteiro positivo.

extra_depths

O número de profundidades extras para a tarefa. Deve ser um número inteiro não negativo.

ergonomic_bias

Informação opcional de viés ergonômico (não estritamente validada).

validate_format

@validator("format")
@classmethod
def validate_format(cls, value: str) -> str

Valida o formato da entrada.

Argumentos:

  • value str - O valor do formato a ser validado.

Retorna:

  • str - O valor do formato validado.

Lança:

  • ValueError - Se o formato não for 'moves' ou 'stickers'.

validate_beam_width

@validator("beam_width")
@classmethod
def validate_beam_width(cls, value)

Valida a largura do feixe (beam width).

Argumentos:

  • value - O valor da largura do feixe a ser validado.

Retorna:

  • int - O valor da largura do feixe validado.

Lança:

  • ValueError - Se a largura do feixe não for um número inteiro positivo.

validate_extra_depths

@validator("extra_depths")
@classmethod
def validate_extra_depths(cls, value)

Valida as profundidades extras.

Argumentos:

  • value - O valor das profundidades extras a ser validado.

Retorna:

  • int - O valor das profundidades extras validado.

Lança:

  • ValueError - Se o valor das profundidades extras for negativo.

validate_scramble

@model_validator(mode="before")
@classmethod
def validate_scramble(cls, values)

Valida e pré-processa os dados do embaralhamento com base no formato escolhido.

Argumentos:

  • values dict - Os valores de entrada.

Retorna:

  • dict - Os valores de entrada com os dados do embaralhamento validados.

Lança:

  • ValueError - Se houver movimentos inválidos em 'scramble' para o formato 'moves'.
  • ValueError - Se houver uma configuração inesperada das peças de centro em 'scramble' para o formato 'stickers' (não implementado).