diff options
| -rw-r--r-- | packages/openai-sdk-python/src/supermemory_openai/__init__.py | 9 | ||||
| -rw-r--r-- | packages/openai-sdk-python/src/supermemory_openai/memory_client.py | 28 |
2 files changed, 31 insertions, 6 deletions
diff --git a/packages/openai-sdk-python/src/supermemory_openai/__init__.py b/packages/openai-sdk-python/src/supermemory_openai/__init__.py index 8207c66d..3186710b 100644 --- a/packages/openai-sdk-python/src/supermemory_openai/__init__.py +++ b/packages/openai-sdk-python/src/supermemory_openai/__init__.py @@ -19,6 +19,11 @@ from .wrapper import ( with_supermemory, WithSupermemoryOptions, ) +from .memory_client import ( + SupermemoryAPIError, + SupermemoryTimeoutError, + SupermemoryRequestError, +) __all__ = [ # Tools @@ -38,4 +43,8 @@ __all__ = [ # Wrapper "with_supermemory", "WithSupermemoryOptions", + # Exceptions + "SupermemoryAPIError", + "SupermemoryTimeoutError", + "SupermemoryRequestError", ] diff --git a/packages/openai-sdk-python/src/supermemory_openai/memory_client.py b/packages/openai-sdk-python/src/supermemory_openai/memory_client.py index fa30ca0a..97c77c6a 100644 --- a/packages/openai-sdk-python/src/supermemory_openai/memory_client.py +++ b/packages/openai-sdk-python/src/supermemory_openai/memory_client.py @@ -5,6 +5,21 @@ from typing import Dict, List, Optional, TypedDict import httpx +class SupermemoryAPIError(Exception): + """Base exception for Supermemory API errors.""" + pass + + +class SupermemoryTimeoutError(SupermemoryAPIError): + """Timeout error for Supermemory API.""" + pass + + +class SupermemoryRequestError(SupermemoryAPIError): + """Request error for Supermemory API.""" + pass + + class ProfileStructure(TypedDict, total=False): """Structure for profile response from Supermemory API.""" @@ -111,7 +126,7 @@ class MemoryClient: "status": response.status_code, "error": error_text, }) - raise Exception( + raise SupermemoryRequestError( f"Supermemory profile search failed: {response.status_code} {response.reason_phrase}. {error_text}" ) @@ -130,11 +145,12 @@ class MemoryClient: return result - except httpx.TimeoutException: + except httpx.TimeoutException as e: self._log("Profile search timed out") - raise Exception("Supermemory API request timed out") + raise SupermemoryTimeoutError("Supermemory API request timed out") from e + except SupermemoryAPIError: + # Re-raise our custom exceptions + raise except Exception as error: self._log("Profile search error", {"error": str(error)}) - if isinstance(error, Exception) and "Supermemory" in str(error): - raise error - raise Exception(f"Supermemory API request failed: {error}")
\ No newline at end of file + raise SupermemoryAPIError(f"Supermemory API request failed: {error}") from error
\ No newline at end of file |