"""Storage exception types — import from here, never redefine elsewhere.""" from __future__ import annotations class CloudConnectionError(Exception): """Raised when a cloud provider signals a non-retryable connection problem. Attributes: reason: "token_expired" — access token expired. "invalid_grant" — refresh token revoked; user must reconnect. """ def __init__(self, msg: str = "", *, reason: str = "") -> None: super().__init__(msg) self.reason = reason # "token_expired" | "invalid_grant"