Przejdź do głównej zawartości

Walidator danych wejściowych

Ten moduł definiuje walidator danych wejściowych dla aplikacji AlphaCube. Zawiera klasę Input z biblioteki Pydantic, która waliduje dane wejściowe dla zadań aplikacji. Dane wejściowe muszą być zgodne z określonym formatem i regułami walidacji.

Reguły walidacji:

  • Atrybut format musi mieć wartość 'moves' lub 'stickers'.
  • Dla formatu 'moves', atrybut scramble musi składać się z prawidłowych ruchów.
  • Dla formatu 'stickers' (nieimplementowane), może być przeprowadzona dodatkowa walidacja.
  • Atrybut beam_width musi być dodatnią liczbą całkowitą.
  • Atrybut extra_depths musi być nieujemną liczbą całkowitą.
notatka

Informacje o ergonomicznym obciążeniu są opcjonalne i nie są ściśle walidowane.

Przykład użycia
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)

Walidator (i preprocesor) danych wejściowych dla AlphaCube.

format

Format danych wejściowych. Musi być 'moves' lub 'stickers'.

scramble

Dane pomieszania w określonym formacie.

beam_width

Szerokość wiązki dla zadania. Musi być dodatnią liczbą całkowitą.

extra_depths

Liczba dodatkowych głębokości dla zadania. Musi być nieujemną liczbą całkowitą.

ergonomic_bias

Opcjonalne informacje o ergonomicznym obciążeniu (nie są ściśle walidowane).

validate_format

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

Waliduje format danych wejściowych.

Argumenty:

  • value str - Wartość formatu do walidacji.

Zwraca:

  • str - Zwalidowana wartość formatu.

Podnosi:

  • ValueError - Jeśli format nie jest 'moves' lub 'stickers'.

validate_beam_width

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

Waliduje szerokość wiązki.

Argumenty:

  • value - Wartość szerokości wiązki do walidacji.

Zwraca:

  • int - Zwalidowana wartość szerokości wiązki.

Podnosi:

  • ValueError - Jeśli szerokość wiązki nie jest dodatnią liczbą całkowitą.

validate_extra_depths

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

Waliduje dodatkowe głębokości.

Argumenty:

  • value - Wartość dodatkowych głębokości do walidacji.

Zwraca:

  • int - Zwalidowana wartość dodatkowych głębokości.

Podnosi:

  • ValueError - Jeśli wartość dodatkowych głębokości jest ujemna.

validate_scramble

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

Waliduje i przetwarza dane pomieszania na podstawie wybranego formatu.

Argumenty:

  • values dict - Wartości wejściowe.

Zwraca:

  • dict - Wartości wejściowe ze zwalidowanymi danymi pomieszania.

Podnosi:

  • ValueError - Jeśli są nieprawidłowe ruchy w 'scramble' dla formatu 'moves'.
  • ValueError - Jeśli nieoczekiwana konfiguracja środkowych elementów w 'scramble' dla formatu 'stickers' (nieimplementowane).