aboutsummaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/openai-sdk-python/src/supermemory_openai/__init__.py9
-rw-r--r--packages/openai-sdk-python/src/supermemory_openai/memory_client.py28
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