Aller au contenu principal

_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.
remarque

Les informations de biais ergonomique sont optionnelles et ne sont pas validées de manière stricte.

Exemple d'utilisation
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é).