_validator
Validateur d'entrée
Ce module définit le validateur d'entrée pour l'application AlphaCube. Il comprend une classe Input
de Pydantic qui valide les données d'entrée pour les tâches de l'application. Les données d'entrée doivent respecter un format spécifique et des règles de validation.
Règles de validation :
- L'attribut
format
doit être soit 'moves' (mouvements) soit 'stickers' (autocollants). - Pour le format 'moves', l'attribut
scramble
doit être composé de mouvements valides. - Pour le format 'stickers' (non implémenté), des validations supplémentaires peuvent être effectuées.
- L'attribut
beam_width
doit être un entier positif. - L'attribut
extra_depths
doit être un entier non négatif.
Les informations de biais ergonomique sont optionnelles et ne sont pas strictement validées.
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)
Validateur (et préprocesseur) d'entrée pour AlphaCube.
format
Le format des données d'entrée. Doit être soit 'moves' soit 'stickers'.
scramble
Les données de mélange dans le format spécifié.
beam_width
La largeur de faisceau pour la tâche. Doit être un entier positif.
extra_depths
Le nombre de profondeurs supplémentaires pour la tâche. Doit être un entier non négatif.
ergonomic_bias
Informations optionnelles sur le biais ergonomique (non strictement validées).
validate_format
@validator("format")
@classmethod
def validate_format(cls, value: str) -> str
Valide le format d'entrée.
Arguments:
value
str - La valeur du format à valider.
Renvoie:
str
- La valeur du format validée.
Lève:
ValueError
- Si le format n'est ni 'moves' ni 'stickers'.
validate_beam_width
@validator("beam_width")
@classmethod
def validate_beam_width(cls, value)
Valide la largeur de faisceau.
Arguments:
value
- La valeur de la largeur de faisceau à valider.
Renvoie:
int
- La valeur de la largeur de faisceau validée.
Lève:
ValueError
- Si la largeur de faisceau n'est pas un entier positif.
validate_extra_depths
@validator("extra_depths")
@classmethod
def validate_extra_depths(cls, value)
Valide les profondeurs supplémentaires.
Arguments:
value
- La valeur des profondeurs supplémentaires à valider.
Renvoie:
int
- La valeur des profondeurs supplémentaires validée.
Lève:
ValueError
- Si la valeur des profondeurs supplémentaires est négative.
validate_scramble
@model_validator(mode="before")
@classmethod
def validate_scramble(cls, values)
Valide et prétraite les données de mélange en fonction du format choisi.
Arguments:
values
dict - Les valeurs d'entrée.
Renvoie:
dict
- Les valeurs d'entrée avec les données de mélange validées.
Lève:
ValueError
- S'il y a des mouvements invalides dans 'scramble' pour le format 'moves'.ValueError
- Si configuration inattendue des pièces centrales dans 'scramble' pour le format 'stickers' (non implémenté).