Перейти к основному содержимому

_validator

Валидатор ввода

Этот модуль определяет валидатор ввода для приложения AlphaCube. Он включает класс Pydantic Input, который проверяет входные данные для задач приложения. Входные данные должны соответствовать определенным правилам формата и валидации.

Правила валидации:

  • Атрибут format должен быть либо 'moves', либо 'stickers'.
  • Для формата 'moves' атрибут scramble должен состоять из допустимых ходов.
  • Для формата 'stickers' (не реализовано) может выполняться дополнительная проверка.
  • Атрибут beam_width должен быть положительным целым числом.
  • Атрибут extra_depths должен быть неотрицательным целым числом.
примечание

Информация об эргономическом смещении является необязательной и строго не проверяется.

Пример использования
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)

Валидатор (и препроцессор) ввода для AlphaCube.

format

Формат входных данных. Должен быть либо 'moves', либо 'stickers'.

scramble

Данные скрамбла в указанном формате.

beam_width

Ширина луча для задачи. Должно быть положительным целым числом.

extra_depths

Количество дополнительных глубин для задачи. Должно быть неотрицательным целым числом.

ergonomic_bias

Необязательная информация об эргономическом смещении (строго не проверяется).

validate_format

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

Проверяет формат ввода.

Аргументы:

  • value str - Значение формата для проверки.

Возвращает:

  • str - Проверенное значение формата.

Вызывает:

  • ValueError - Если формат не является 'moves' или 'stickers'.

validate_beam_width

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

Проверяет ширину луча.

Аргументы:

  • value - Значение ширины луча для проверки.

Возвращает:

  • int - Проверенное значение ширины луча.

Вызывает:

  • ValueError - Если ширина луча не является положительным целым числом.

validate_extra_depths

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

Проверяет количество дополнительных глубин.

Аргументы:

  • value - Значение дополнительных глубин для проверки.

Возвращает:

  • int - Проверенное значение дополнительных глубин.

Вызывает:

  • ValueError - Если значение дополнительных глубин отрицательное.

validate_scramble

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

Проверяет и предварительно обрабатывает данные скрамбла в соответствии с выбранным форматом.

Аргументы:

  • values dict - Входные значения.

Возвращает:

  • dict - Входные значения с проверенными данными скрамбла.

Вызывает:

  • ValueError - Если в 'scramble' для формата 'moves' есть недопустимые ходы.
  • ValueError - Если в 'scramble' для формата 'stickers' обнаружена неожиданная конфигурация центральных элементов (не реализовано).