"""Erreurs metier du domaine partage. Elles sont converties en reponses HTTP propres par les handlers de `app.main` : aucune trace technique n'est exposee au client. """ from __future__ import annotations class ShareError(Exception): """Erreur metier generique.""" status_code = 400 message = "Requete invalide." def __init__(self, message: str | None = None) -> None: super().__init__(message or self.message) if message: self.message = message class ShareNotFoundError(ShareError): status_code = 404 message = "Ce partage n'existe pas ou a ete supprime." class ShareForbiddenError(ShareError): status_code = 403 message = "Jeton de gestion invalide." class SharePayloadTooLargeError(ShareError): status_code = 413 message = "La carte depasse la taille maximale autorisee."