_validator
Validateur d'entrée
Ce module définit le validateur d'entrée pour l'application AlphaCube. Il inclut une classe Pydantic Input
qui valide les données d'entrée pour les tâches de l'application. Les données d'entrée doivent respecter des règles de format et de validation spécifiques.
Règles de validation :
- L'attribut
format
doit être soit 'moves', soit 'stickers'. - Pour le format 'moves', l'attribut
scramble
doit être composé de mouvements valides. - Pour le format 'stickers' (non implémenté), une validation supplémentaire peut être effectuée.
- 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 validées de manière stricte.
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 d'entrée (& préprocesseur) pour AlphaCube.
format
Le format des données d'entrée. Doit être soit 'moves', soit 'stickers'.
scramble
Les données du mélange dans le format spécifié.
beam_width
La largeur du faisceau (beam width) 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 validées de manière stricte).
validate_format
@validator("format")
@classmethod
def validate_format(cls, value: str) -> str
Valider le format d'entrée.
Arguments:
value
str - La valeur du format à valider.
Retours:
str
- La valeur du format validée.
Lève:
ValueError
- Si le format n'est pas 'moves' ou 'stickers'.
validate_beam_width
@validator("beam_width")
@classmethod
def validate_beam_width(cls, value)
Valider la largeur du faisceau (beam width).
Arguments:
value
- La valeur de la largeur du faisceau à valider.
Retours:
int
- La valeur de la largeur du faisceau validée.
Lève:
ValueError
- Si la largeur du faisceau n'est pas un entier positif.
validate_extra_depths
@validator("extra_depths")
@classmethod
def validate_extra_depths(cls, value)
Valider les profondeurs supplémentaires.
Arguments:
value
- La valeur des profondeurs supplémentaires à valider.
Retours:
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)
Valider & pré-traiter les données du mélange en fonction du format choisi.
Arguments:
values
dict - Les valeurs d'entrée.
Retours:
dict
- Les valeurs d'entrée avec les données du mélange validées.
Lève:
ValueError
- S'il y a des mouvements invalides dans 'scramble' pour le format 'moves'.ValueError
- Si la configuration des pièces centrales est inattendue dans 'scramble' pour le format 'stickers' (non implémenté).