Input-Validator
Dieses Modul definiert den Input-Validator für die AlphaCube-Anwendung. Es enthält eine Pydantic-Klasse Input
, die Eingabedaten für die Aufgaben der Anwendung validiert. Die Eingabedaten müssen bestimmten Format- und Validierungsregeln entsprechen.
Validierungsregeln:
- Das Attribut
format
muss entweder 'moves' oder 'stickers' sein. - Für das Format 'moves' muss das Attribut
scramble
aus gültigen Zügen bestehen. - Für das Format 'stickers' (nicht implementiert) können zusätzliche Validierungen durchgeführt werden.
- Das Attribut
beam_width
muss eine positive ganze Zahl sein. - Das Attribut
extra_depths
muss eine nicht-negative ganze Zahl sein.
Die Informationen zur ergonomischen Verzerrung sind optional und werden nicht streng validiert.
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)
Input-Validator (und Präprozessor) für AlphaCube.
format
Das Format der Eingabedaten. Muss entweder 'moves' oder 'stickers' sein.
scramble
Die Scramble-Daten im angegebenen Format.
beam_width
Die Beam-Breite für die Aufgabe. Muss eine positive ganze Zahl sein.
extra_depths
Die Anzahl der zusätzlichen Tiefen für die Aufgabe. Muss eine nicht-negative ganze Zahl sein.
ergonomic_bias
Optionale Informationen zur ergonomischen Verzerrung (nicht streng validiert).
validate_format
@validator("format")
@classmethod
def validate_format(cls, value: str) -> str
Validiert das Eingabeformat.
Argumente:
value
str - Der zu validierende Formatwert.
Rückgabe:
str
- Der validierte Formatwert.
Wirft:
ValueError
- Wenn das Format nicht 'moves' oder 'stickers' ist.
validate_beam_width
@validator("beam_width")
@classmethod
def validate_beam_width(cls, value)
Validiert die Beam-Breite.
Argumente:
value
- Der zu validierende Wert für die Beam-Breite.
Rückgabe:
int
- Der validierte Wert für die Beam-Breite.
Wirft:
ValueError
- Wenn die Beam-Breite keine positive ganze Zahl ist.
validate_extra_depths
@validator("extra_depths")
@classmethod
def validate_extra_depths(cls, value)
Validiert die zusätzlichen Tiefen.
Argumente:
value
- Der zu validierende Wert für die zusätzlichen Tiefen.
Rückgabe:
int
- Der validierte Wert für die zusätzlichen Tiefen.
Wirft:
ValueError
- Wenn der Wert für die zusätzlichen Tiefen negativ ist.
validate_scramble
@model_validator(mode="before")
@classmethod
def validate_scramble(cls, values)
Validiert und verarbeitet die Scramble-Daten basierend auf dem gewählten Format vor.
Argumente:
values
dict - Die Eingabewerte.
Rückgabe:
dict
- Die Eingabewerte mit validierten Scramble-Daten.
Wirft:
ValueError
- Wenn es ungültige Züge in 'scramble' für das Format 'moves' gibt.ValueError
- Bei unerwarteter Mittelstück-Konfiguration in 'scramble' für das Format 'stickers' (nicht implementiert).