aboutsummaryrefslogtreecommitdiff
path: root/packages/docs-test/tests/python/sdk.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/docs-test/tests/python/sdk.py')
-rw-r--r--packages/docs-test/tests/python/sdk.py152
1 files changed, 152 insertions, 0 deletions
diff --git a/packages/docs-test/tests/python/sdk.py b/packages/docs-test/tests/python/sdk.py
new file mode 100644
index 00000000..a083ede2
--- /dev/null
+++ b/packages/docs-test/tests/python/sdk.py
@@ -0,0 +1,152 @@
+import os
+import time
+from pathlib import Path
+from dotenv import load_dotenv
+import httpx
+import supermemory
+from supermemory import Supermemory
+
+load_dotenv()
+
+client = Supermemory()
+
+
+def test_documents_crud():
+ """Test document CRUD operations"""
+ print("\n=== Document CRUD Operations ===")
+
+ # Create
+ doc = client.documents.add(content=f"Test content - {time.time()}")
+ print(f"✓ documents.add: {doc.id}")
+
+ # Read
+ fetched = client.documents.get(doc.id)
+ print(f"✓ documents.get: {fetched.id}")
+
+ # Update
+ updated = client.documents.update(doc.id, content=f"Updated - {time.time()}")
+ print(f"✓ documents.update: {updated.id}")
+
+ # Wait for processing
+ time.sleep(10)
+
+ # Delete
+ client.documents.delete(doc.id)
+ print("✓ documents.delete")
+
+
+def test_batch_operations():
+ """Test batch operations"""
+ print("\n=== Batch Operations ===")
+
+ batch = client.documents.batch_add(
+ documents=[
+ {"content": f"Batch 1 - {time.time()}"},
+ {"content": f"Batch 2 - {time.time()}"},
+ ]
+ )
+ print(f"✓ documents.batch_add: {batch}")
+
+
+def test_search():
+ """Test search"""
+ print("\n=== Search ===")
+
+ results = client.search.execute(q="test content")
+ print(f"✓ search.execute: {len(results.results) if results.results else 0} results")
+
+
+def test_file_uploads():
+ """Test file uploads"""
+ print("\n=== File Uploads ===")
+
+ test_path = Path("/tmp/test-py-upload.txt")
+ test_path.write_text(f"Test content {time.time()}")
+ client.documents.upload_file(file=test_path)
+ print("✓ documents.upload_file with Path")
+ test_path.unlink()
+
+
+def test_error_handling():
+ """Test error handling patterns"""
+ print("\n=== Error Handling ===")
+
+ try:
+ client.documents.add(content="Test content")
+ print("✓ Error handling pattern works")
+ except supermemory.APIConnectionError:
+ print("APIConnectionError handled")
+ except supermemory.RateLimitError:
+ print("RateLimitError handled")
+ except supermemory.APIStatusError:
+ print("APIStatusError handled")
+
+
+def test_client_config():
+ """Test client configuration"""
+ print("\n=== Client Configuration ===")
+
+ # Retries
+ client2 = Supermemory(max_retries=0)
+ print("✓ max_retries config")
+
+ # Timeout
+ client3 = Supermemory(timeout=20.0)
+ print("✓ timeout config")
+
+ # Granular timeout
+ client4 = Supermemory(timeout=httpx.Timeout(60.0, read=5.0, write=10.0, connect=2.0))
+ print("✓ granular timeout config")
+
+ # Per-request options
+ client.with_options(max_retries=5).documents.add(content="Test content")
+ print("✓ per-request options")
+
+
+def test_raw_response():
+ """Test raw response access"""
+ print("\n=== Raw Response ===")
+
+ response = client.documents.with_raw_response.add(content="Test content")
+ print(f"✓ with_raw_response: has headers={hasattr(response, 'headers')}")
+
+ memory = response.parse()
+ print(f"✓ parse(): {memory.id}")
+
+
+def test_streaming_response():
+ """Test streaming response"""
+ print("\n=== Streaming Response ===")
+
+ with client.documents.with_streaming_response.add(content="Test content") as response:
+ print(f"✓ with_streaming_response: has headers={hasattr(response, 'headers')}")
+
+
+def test_context_manager():
+ """Test context manager"""
+ print("\n=== Context Manager ===")
+
+ with Supermemory() as temp_client:
+ print("✓ Context manager works")
+
+
+def main():
+ print("Python SDK Tests")
+ print("================")
+
+ test_documents_crud()
+ test_batch_operations()
+ test_search()
+ test_file_uploads()
+ test_error_handling()
+ test_client_config()
+ test_raw_response()
+ test_streaming_response()
+ test_context_manager()
+
+ print("\n================")
+ print("✅ All Python SDK tests passed!")
+
+
+if __name__ == "__main__":
+ main()