Documentation Index
Fetch the complete documentation index at: https://docs.contextbase.dev/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Contextbase Python SDK provides comprehensive error handling to help you build robust applications. Understanding the different types of errors and how to handle them is crucial for production use.
Error types
ContextbaseError
Raised when the API returns an error response:
from contextbase import ContextbaseError
try:
response = cb.publish("component", body={"data": "value"})
response.raise_for_status()
except ContextbaseError as e:
print(f"API Error: {e.message}")
print(f"Status Code: {e.status_code}")
print(f"Details: {e.errors}")
ValueError
Raised for client-side validation errors:
try:
# Missing both body and file
cb.publish("context")
except ValueError as e:
print(f"Validation Error: {e}")
try:
# Invalid file path
ContextbaseFile.from_path("/nonexistent/file.txt")
except ValueError as e:
print(f"File Error: {e}")
RequestException
Network and connection errors:
import requests
from contextbase import ContextbaseError
try:
response = cb.publish("context", body={"data": "value"})
except requests.RequestException as e:
print(f"Network Error: {e}")
except ContextbaseError as e:
print(f"API Error: {e}")
Response-based error handling
Checking response status
# Method 1: Check response.ok
response = cb.publish("context", body={"data": "value"})
if response.ok:
print("✅ Success!")
data = response.json
else:
print(f"❌ Error: {response.error.message}")
for error in response.errors:
print(f" - {error}")
Using raise_for_status()
# Method 2: Use raise_for_status() for exception-based handling
try:
response = cb.publish("context", body={"data": "value"})
response.raise_for_status() # Raises ContextbaseError if failed
print("✅ Success!")
data = response.json
except ContextbaseError as e:
print(f"❌ API Error: {e.message}")
if e.status_code == 400:
print("Bad request - check your data")
elif e.status_code == 401:
print("Unauthorized - check your API key")
elif e.status_code == 422:
print("Validation error - check required fields")
Common error scenarios
Authentication errors
try:
client = Contextbase(api_key="invalid-key")
response = cb.publish("context", body={"data": "value"})
response.raise_for_status()
except ContextbaseError as e:
if e.status_code == 401:
print("❌ Invalid API key. Please check your credentials.")
elif e.status_code == 403:
print("❌ Access forbidden. Check your permissions.")
Validation errors
try:
# Missing required context_name
response = cb.publish("", body={"data": "value"})
response.raise_for_status()
except ContextbaseError as e:
if e.status_code == 422:
print("❌ Validation failed:")
for error in e.errors:
print(f" - {error}")
File upload errors
from contextbase import ContextbaseFile
# Handle file creation errors
try:
file = ContextbaseFile.from_path("nonexistent.pdf")
except ValueError as e:
print(f"❌ File error: {e}")
# Handle upload errors
try:
file = ContextbaseFile.from_path("document.pdf")
response = cb.publish("context", file=file)
response.raise_for_status()
except ValueError as e:
print(f"❌ File validation error: {e}")
except ContextbaseError as e:
if e.status_code == 413:
print("❌ File too large")
elif e.status_code == 415:
print("❌ Unsupported file type")
else:
print(f"❌ Upload failed: {e.message}")
Network errors
import requests
from requests.exceptions import ConnectionError, Timeout, RequestException
try:
response = cb.publish("context", body={"data": "value"})
except ConnectionError:
print("❌ Network connection failed. Please check your internet connection.")
except Timeout:
print("❌ Request timed out. Please try again.")
except RequestException as e:
print(f"❌ Network error: {e}")