From 6a2a39f892724b7b0b2737b82979c87012fbf051 Mon Sep 17 00:00:00 2001 From: Solanki Sumit <125974181+YAMRAJ13y@users.noreply.github.com> Date: Wed, 24 Jun 2026 20:20:07 +0530 Subject: [PATCH] refactor(exceptions): dedupe src/exceptions via core re-export (#4785) src/exceptions.py was a byte-for-byte duplicate of the canonical core/exceptions.py. Replace its class bodies with a re-export shim (mirroring the core/constants.py -> src/constants.py pattern) so the exception classes are defined in exactly one place. Also fix the stale "# src/exceptions.py" header comment in core/exceptions.py. No behavior change: both import paths resolve to the same class objects (verified by identity), so `except SessionNotFoundError` works regardless of which module it was imported from. Ran py_compile and pytest tests/test_app.py (12 passed). Co-authored-by: Claude Opus 4.8 (1M context) --- core/exceptions.py | 2 +- src/exceptions.py | 45 +++++++++++++++++++-------------------------- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/core/exceptions.py b/core/exceptions.py index 26a411e6d..1840b049e 100644 --- a/core/exceptions.py +++ b/core/exceptions.py @@ -1,4 +1,4 @@ -# src/exceptions.py +# core/exceptions.py """Custom exceptions for the application.""" class SessionNotFoundError(Exception): diff --git a/src/exceptions.py b/src/exceptions.py index 26a411e6d..e533408d9 100644 --- a/src/exceptions.py +++ b/src/exceptions.py @@ -1,29 +1,22 @@ # src/exceptions.py -"""Custom exceptions for the application.""" +"""Backward-compatible shim — the single source of truth is core/exceptions.py. -class SessionNotFoundError(Exception): - """Raised when a requested session is not found.""" - def __init__(self, session_id: str): - self.session_id = session_id - super().__init__(f"Session '{session_id}' not found") +Historically this module was a byte-for-byte duplicate of core/exceptions.py, +which is the canonical definition (imported by app.py, core/__init__.py, and +routes/chat_routes.py). To kill the drift, this now simply re-exports the +exception classes from core.exceptions so there is exactly one place that +defines them. Existing `from src.exceptions import ...` callers keep working. +""" +from core.exceptions import ( # noqa: F401 + SessionNotFoundError, + InvalidFileUploadError, + LLMServiceError, + WebSearchError, +) -class InvalidFileUploadError(Exception): - """Raised when a file upload fails validation.""" - def __init__(self, message: str, filename: str = None): - self.filename = filename - self.message = message - super().__init__(message) - -class LLMServiceError(Exception): - """Raised when there is an error communicating with the LLM service.""" - def __init__(self, message: str, endpoint: str = None): - self.endpoint = endpoint - self.message = message - super().__init__(message) - -class WebSearchError(Exception): - """Raised when there is an error with web search functionality.""" - def __init__(self, message: str, query: str = None): - self.query = query - self.message = message - super().__init__(message) +__all__ = [ + "SessionNotFoundError", + "InvalidFileUploadError", + "LLMServiceError", + "WebSearchError", +]