API Reference
Facade client qui regroupe les clients spécifiques par ressource.
Fournit un accès simple aux sous-clients : dataset, analysis, configuration, et des méthodes pour l’authentification (login/logout) et l’accès à l’utilisateur courant.
- class pygroundedweb.client.client.GroundedWebClient(base_url, check_connection=True)[source]
Client principal à utiliser par les consommateurs de la bibliothèque.
- Exemple d’utilisation :
client = GroundedWebClient( »http://example.com ») client.login(email, password) ds = client.dataset.create(« Mon dataset », photos_before=[« a.jpg »])
- Attributs exposés :
dataset: DatasetClient analysis: AnalysisClient configuration: ConfigurationClient
Client HTTP de base et clients de modèles pour l’API Grounded Web.
Ce module expose : - BaseAPIClient : client HTTP basique qui gère la session et les appels REST. - APIModelClient : base abstraite pour les clients de ressources (create/retrieve/update/delete).
Les docstrings détaillent les paramètres et le comportement attendu pour faciliter la génération de documentation.
- class pygroundedweb.client.base.BaseAPIClient(base_url, default_headers=None, check_connection=True)[source]
Client HTTP générique qui conserve une session persistante et fournit des utilitaires pour effectuer des requêtes vers l’API Grounded Web.
Ce client gère : - la construction des URLs (ajoute « /api » si nécessaire), - la ré-essai automatique sur erreurs réseau, - le rafraîchissement de tokens lorsque nécessaire, - la sérialisation/désérialisation minimale des réponses JSON.
Params
- base_url: str
URL de base de l’API (ex: « http://localhost:8000 » ou « http://localhost:8000/api »).
- default_headers: Optional[Dict[str, str]]
Headers par défaut pour chaque requête (Accept/Content-Type par défaut si None).
- check_connection: bool
Si True, effectue une validation initiale de l’API en interrogeant l’endpoint /schema.
- request(method, endpoint='', *, params=None, json=None, data=None, headers=None, allow_refresh=True, max_retries=3, full_url=None, **kwargs)[source]
Effectue une requête HTTP vers l’API en gérant les erreurs communes.
- Paramètres:
method (
str) – Méthode HTTP (GET, POST, PATCH, …).endpoint (
str) – Chemin relatif de la ressource (ex: “datasets”).params (
Optional[Dict[str,Any]]) – Paramètres de requête (querystring).headers (
Optional[Dict[str,str]]) – En-têtes supplémentaires pour cette requête.allow_refresh (
bool) – Si True, tentera un rafraîchissement du token sur 401.max_retries (
int) – Nombre maximal de tentatives en cas d’erreur réseau.full_url (
Optional[str]) – Utiliser une URL absolue plutôt que base_url/endpoint.
- Renvoie:
objet Response déjà vérifié et sans status HTTP erreur.
- Type renvoyé:
requests.Response
- Lève:
APIError, NetworkError, PermissionDenied –
- get(endpoint, **kwargs)[source]
Raccourci pour effectuer une requête GET.
- Lève:
APIError, NetworkError, PermissionDenied –
- Type renvoyé:
Response- Paramètres:
endpoint (str)
- post(endpoint, **kwargs)[source]
Raccourci pour effectuer une requête POST.
- Lève:
APIError, NetworkError, PermissionDenied –
- Type renvoyé:
Response- Paramètres:
endpoint (str)
- patch(endpoint, **kwargs)[source]
Raccourci pour effectuer une requête PATCH.
- Lève:
APIError, NetworkError, PermissionDenied –
- Type renvoyé:
Response- Paramètres:
endpoint (str)
- put(endpoint, **kwargs)[source]
Raccourci pour effectuer une requête PUT.
- Lève:
APIError, NetworkError, PermissionDenied –
- Type renvoyé:
Response- Paramètres:
endpoint (str)
- delete(endpoint, **kwargs)[source]
Raccourci pour effectuer une requête DELETE.
- Lève:
APIError, NetworkError, PermissionDenied –
- Type renvoyé:
Response- Paramètres:
endpoint (str)
- refresh()[source]
Tente de rafraîchir le token d’authentification via l’endpoint standard.
Retourne True si le rafraîchissement a réussi, False sinon.
- Type renvoyé:
- property is_authenticated: bool
Indique si une session est actuellement authentifiée (user chargé).
- update(resource, model)[source]
Met à jour une ressource en envoyant un PATCH avec le model.serialized.
- class pygroundedweb.client.base.APIModelClient(client)[source]
Base abstraite pour les clients de ressources CRUD.
Les implémentations doivent exposer les méthodes create/retrieve/update/delete.
- Paramètres:
client (BaseAPIClient)
Client pour la gestion des datasets (création, lecture, mise à jour, suppression)
Ce module contient DatasetClient qui offre des helpers pour créer un dataset en uploadant les photos (avec gestion de l’upload multi-thread et de la confirmation serveur).
- class pygroundedweb.client.dataset.DatasetClient(client)[source]
Client CRUD pour les datasets.
Fournit des helpers pour créer, récupérer, mettre à jour et supprimer des datasets, y compris l’upload des photos associé (upload parallèle et confirmation côté serveur).
Notes
Les méthodes publiques peuvent lever : APIError, NetworkError, PermissionDenied, UploadError ou pydantic.ValidationError selon le contexte.
- Paramètres:
client (BaseAPIClient)
- create(dataset_name, photos_before=None, photos_after=None, max_workers=5, progress_callback=None)[source]
Crée un dataset et upload les photos associées.
- Paramètres:
dataset_name (
str) – nom du dataset à créer.photos_before (
List[str]) – liste de chemins vers les photos « before ».photos_after (
List[str]) – liste de chemins vers les photos « after ».max_workers (
int) – nombre maximum de threads pour l’upload parallèle.progress_callback (
Optional[Callable[[int,int],None]]) – fonction(optionnelle) appelée avec (uploaded, total) pour suivre la progression.
- Type renvoyé:
- Renvoie:
Instance Dataset représentant l’objet créé côté serveur.
- Lève:
ValueError – si aucune photo n’est fournie.
FileNotFoundError – si un chemin de photo est introuvable.
UploadError – si l’upload de l’un des fichiers échoue.
APIError, NetworkError, PermissionDenied – pour les erreurs HTTP retournées par le serveur.
- retrieve(dataset_id)[source]
Récupère un dataset par son identifiant et le convertit en objet Dataset.
- Lève:
APIError, NetworkError, PermissionDenied, pydantic.ValidationError –
- Paramètres:
dataset_id (int)
Client pour gérer les analyses (création, lecture, mise à jour, suppression).
Fournit des helpers pour créer une analyse à partir d’une configuration et d’un dataset.
- class pygroundedweb.client.analysis.AnalysisClient(client)[source]
Client CRUD pour les ressources Analysis côté API.
Les méthodes exposées effectuent les appels réseau via BaseAPIClient et peuvent propager APIError, NetworkError, PermissionDenied ou pydantic.ValidationError en cas d’erreur.
- Paramètres:
client (BaseAPIClient)
- create(analysis_name, configuration, dataset=None, dataset_id=None, selected_photos_id=None, notify_by_email=False)[source]
Crée une analyse côté API.
- Paramètres:
analysis_name (
str) – nom de l’analyse.configuration (
Configuration) – instance de Configuration à utiliser.dataset (
Optional[Dataset]) – (optionnel) instance de Dataset.dataset_id (
Optional[int]) – (optionnel) identifiant du dataset (alternative à dataset).selected_photos_id (
Optional[List[int]]) – liste d’IDs de photos sélectionnées pour l’analyse.notify_by_email (
Optional[bool]) – si True, le serveur enverra une notification par e-mail en fin de traitement.
- Type renvoyé:
- Renvoie:
Instance Analysis correspondant à la ressource créée.
- Lève:
ValueError – si ni dataset ni dataset_id ne sont fournis ou si les deux le sont.
APIError, NetworkError, PermissionDenied, pydantic.ValidationError –
- retrieve(analysis_id)[source]
Récupère une analyse par son identifiant et renvoie une instance Analysis.
- Lève:
APIError, NetworkError, PermissionDenied, pydantic.ValidationError –
- Paramètres:
analysis_id (int)
- class pygroundedweb.client.configuration.ConfigurationClient(client)[source]
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.
- Paramètres:
client (BaseAPIClient)
- create(configuration)[source]
Crée une configuration côté API.
- Paramètres:
configuration (
Configuration) – instance Configuration à envoyer.- Type renvoyé:
- Renvoie:
L’instance Configuration créée telle que renvoyée par l’API.
- Lève:
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.
- retrieve(config_id)[source]
Récupère une configuration par son identifiant.
- Paramètres:
config_id (
int) – identifiant numérique de la configuration.- Type renvoyé:
- Renvoie:
Instance Configuration correspondant à la ressource distante.
- Lève:
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.
- update(configuration)[source]
Met à jour une configuration existante.
- Paramètres:
configuration (
Configuration) – instance Configuration contenant les modifications.- Type renvoyé:
- Renvoie:
Instance Configuration mise à jour.
- Lève:
APIError, NetworkError, PermissionDenied, pydantic.ValidationError –
Classes de base pour les modèles Pydantic utilisés par le client.
Contient la classe APIModel qui étend pydantic.BaseModel avec : - gestion des champs mutables/immuables par instance, - référence vers le client API pour opérations (refresh).
Ces docstrings servent à produire une documentation claire des comportements attendus lors de l’utilisation des objets retournés par l’API.
- class pygroundedweb.models.base.APIModel(*, mutable_fields=None, immutable_fields=None, **data)[source]
Base pour les modèles sérialisés provenant de l’API Grounded Web.
- Attributs principaux :
pk: identifiant numérique si présent. _mutable_fields: ensemble des noms de champs modifiables pour cette instance. _client: référence (privée) vers le client API permettant d’effectuer des opérations serveur.
- Comportement important :
Le constructeur accepte mutable_fields ou immutable_fields dans les données pour contrôler quels attributs peuvent être modifiés localement via setattr.
La méthode refresh() permet de rafraîchir l’objet à partir du serveur en utilisant le client attaché.
- refresh()[source]
Rafraîchit l’instance actuelle avec les données du serveur.
Cette méthode utilise le client attaché (_client) et l’attribut pk pour récupérer la version la plus récente du serveur et mettre à jour l’objet local.
- Lève:
RuntimeError – si le client n’est pas attaché ou si pk est None.
- Type renvoyé:
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_post_init(context, /)
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.
Modèle représentant un Dataset retourné par l’API.
Contient le validateur de champ date pour accepter str/datetime.
- class pygroundedweb.models.dataset.Dataset(*, mutable_fields=None, immutable_fields=None, **data)[source]
Représente un dataset côté client.
Attributs
- name: str
Nom du dataset.
- date: date
Date associée au dataset (convertie depuis str/datetime si nécessaire).
- user: Union[User, str]
Utilisateur propriétaire (ou identifiant string).
- photos: Optional[List[DatasetPhoto]]
Liste facultative des photos associées.
- classmethod parse_date(value)[source]
Accepte une datetime ou une chaîne ISO et renvoie une date.
Lève ValueError si la chaîne n’est pas un ISO date valide.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_post_init(context, /)
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.
Modèles relatifs aux analyses (Analysis, Hole, AnalysisStatus).
Ces modèles décrivent l’état et les résultats (liens point cloud, logs) d’une analyse.
- class pygroundedweb.models.analysis.Hole(*, mutable_fields=None, immutable_fields=None, **data)[source]
Représente un trou détecté avec numéro et volume.
- Paramètres:
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_post_init(context, /)
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.
- class pygroundedweb.models.analysis.Analysis(*, mutable_fields=None, immutable_fields=None, **data)[source]
Modèle représentant une analyse.
- Champs importants :
name, date, user, status, selection, configuration, holes, et URLs vers les artefacts produits (point_cloud, logs).
- Paramètres:
pk (int | None)
name (str)
date (datetime)
user (str)
status (AnalysisStatus | None)
point_cloud_before (HttpUrl | None)
point_cloud_after (HttpUrl | None)
result (HttpUrl | None)
logs (HttpUrl | None)
selection (Selection)
notify_by_email (bool)
configuration (Configuration)
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_post_init(context, /)
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.
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.
- class pygroundedweb.models.configuration.Configuration(*, mutable_fields=None, immutable_fields=None, **data)[source]
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.
- Paramètres:
- model_dump(**kwargs)[source]
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.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_post_init(context, /)
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.
Modèle pour une photo attachée à un dataset.
Contient le type (before/after) et les URLs vers différentes résolutions/artefacts.
- class pygroundedweb.models.dataset_photo.TypePhoto(*values)[source]
Types possibles pour une photo: BEFORE ou AFTER.
- class pygroundedweb.models.dataset_photo.DatasetPhoto(*, mutable_fields=None, immutable_fields=None, **data)[source]
Représente une photo de dataset avec différentes URL de rendus.
- Champs:
name: nom/fichier de la photo. type: TypePhoto indiquant si c’est « before » ou « after ». thumb/preview/full_compressed/original: URLs optionnelles.
- Paramètres:
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_post_init(context, /)
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.
Modèle représentant un utilisateur retourné par l’API.
- class pygroundedweb.models.user.User(*, mutable_fields=None, immutable_fields=None, **data)[source]
Représentation minimale d’un utilisateur.
- Champs:
first_name: prénom. last_name: nom. email: adresse email.
- Paramètres:
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_post_init(context, /)
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.