Code source de pygroundedweb.models.configuration

"""Modèle de configuration d'analyse et utilitaires de sérialisation.

Ce modèle inclut les sous-modèles pour les detecteurs, cloud-processor et SFM.
"""

from __future__ import annotations

from typing import List, Optional

from .base import APIModel
from .scalebar import ScaleBar
from .tools.cloud_processor import CloudProcessor
from .tools.detector import Detector
from .tools.sfm import SFM


[docs] class Configuration(APIModel): """Configuration complète utilisée pour lancer une analyse. Champs: name: nom optionnel de la configuration. scale_bars: liste de ScaleBar. detector: configuration du détecteur. cloud_processor: configuration du traitement du nuage. sfm: configuration SFM. display_padding: option d'affichage facultative. """ name: Optional[str] = None scale_bars: List[ScaleBar] detector: Detector cloud_processor: CloudProcessor sfm: SFM display_padding: Optional[bool] = None
[docs] def model_dump(self, **kwargs): """Sérialise le modèle en dict en appliquant une logique pour les sous-modèles. Cette méthode garantit que `detector`, `cloud_processor` et `sfm` sont eux-mêmes sérialisés via leur `model_dump` avant d'être envoyés à l'API. """ data = super().model_dump(**kwargs) data["detector"] = self.detector.model_dump(**kwargs) data["cloud_processor"] = self.cloud_processor.model_dump(**kwargs) data["sfm"] = self.sfm.model_dump(**kwargs) if self.display_padding is not None: data["display_padding"] = self.display_padding else: data.pop("display_padding") return data