from __future__ import annotations class ScoutingError(Exception): pass class SessionNotFoundError(ScoutingError): def __init__(self, session_id: str) -> None: super().__init__(f"session not found: {session_id}") self.session_id = session_id class RowNotFoundError(ScoutingError): def __init__(self, session_id: str, row_id: str) -> None: super().__init__(f"row not found: {row_id} (session {session_id})") self.session_id = session_id self.row_id = row_id