Code source de pygroundedweb.client.configuration

from typing import List

from .base import APIModelClient
from ..models.configuration import Configuration


[docs] class ConfigurationClient(APIModelClient): """Client CRUD pour les configurations d'analyse. Fournit les opérations de création, lecture, mise à jour, suppression et liste des `Configuration` côté API. Les méthodes peuvent lever des exceptions liées aux appels HTTP ou à la validation des modèles côté client. """ def _parse_json(self, config_json: dict) -> Configuration: config_json["mutable_fields"] = ["name", "scale_bars", "detector", "cloud_processor", "sfm", "display_padding"] instance = Configuration.model_validate(config_json) object.__setattr__(instance, "_client", self) return instance
[docs] def create(self, configuration: Configuration) -> Configuration: """Crée une configuration côté API. Args: configuration: instance `Configuration` à envoyer. Returns: L'instance `Configuration` créée telle que renvoyée par l'API. Raises: APIError: si l'API retourne une erreur lors de la création. NetworkError: en cas de problème réseau persistant. PermissionDenied: si les droits sont insuffisants. pydantic.ValidationError: si la validation du modèle côté client échoue. """ data = configuration.model_dump() config_json = self._client.create("configurations", data) return self._parse_json(config_json)
[docs] def retrieve(self, config_id: int) -> Configuration: """Récupère une configuration par son identifiant. Args: config_id: identifiant numérique de la configuration. Returns: Instance `Configuration` correspondant à la ressource distante. Raises: APIError: si l'API retourne une erreur. NetworkError: en cas de problème réseau. PermissionDenied: si l'accès est interdit. pydantic.ValidationError: si la réponse ne peut être validée en `Configuration`. """ config_json = self._client.get_by_id("configurations", config_id) return self._parse_json(config_json)
[docs] def update(self, configuration: Configuration) -> Configuration: """Met à jour une configuration existante. Args: configuration: instance `Configuration` contenant les modifications. Returns: Instance `Configuration` mise à jour. Raises: APIError, NetworkError, PermissionDenied, pydantic.ValidationError """ config_json = self._client.update("configurations", configuration) return self._parse_json(config_json)
[docs] def delete(self, config_id: int) -> None: """Supprime une configuration par identifiant. Raises: APIError, NetworkError, PermissionDenied """ self._client.delete_by_id("configurations", config_id)
[docs] def list(self) -> List[Configuration]: """Liste toutes les configurations disponibles côté API. Returns: Liste d'instances `Configuration`. Raises: APIError, NetworkError, PermissionDenied, pydantic.ValidationError """ configs_data = self._client.get_all("configurations") return [self._parse_json(c) for c in configs_data]