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ą.
Informacje o ergonomicznym obciążeniu są opcjonalne i nie są ściśle walidowane.
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).