Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ include = [
]

[tool.basedpyright]
include = ["robosystems_client/extensions"]
exclude = ["robosystems_client/extensions/tests"]
include = ["robosystems_client/clients"]
exclude = ["tests"]
extraPaths = ["."]
pythonVersion = "3.13"
venvPath = "."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ pip install httpx pandas # For SSE and DataFrame support
### Basic Usage

```python
from robosystems_client.extensions import create_production_extensions
from robosystems_client.clients import create_production_clients

# Initialize with API key
extensions = create_production_extensions("your-api-key-here")
extensions = create_production_clients("your-api-key-here")

# Execute a simple query
result = extensions.execute_query(
Expand Down Expand Up @@ -66,10 +66,10 @@ for transaction in extensions.stream_query("your_graph_id", query, chunk_size=10

```python
import asyncio
from robosystems_client.extensions import AsyncRoboSystemsExtensions
from robosystems_client.clients import AsyncRoboSystemsClients

async def main():
extensions = AsyncRoboSystemsExtensions(config)
extensions = AsyncRoboSystemsClients(config)

# Async query execution
result = await extensions.execute_query("graph_id", "MATCH (n) RETURN COUNT(n)")
Expand All @@ -89,9 +89,9 @@ asyncio.run(main())
### API Key Authentication (Recommended)

```python
from robosystems_client.extensions import AuthenticatedExtensions
from robosystems_client.clients import AuthenticatedClients

extensions = AuthenticatedExtensions(
extensions = AuthenticatedClients(
api_key="your-api-key-here",
base_url="https://api.robosystems.ai"
)
Expand All @@ -100,9 +100,9 @@ extensions = AuthenticatedExtensions(
### Cookie Authentication

```python
from robosystems_client.extensions import CookieAuthExtensions
from robosystems_client.clients import CookieAuthClients

extensions = CookieAuthExtensions(
extensions = CookieAuthClients(
cookies={"auth-token": "your-cookie-token"},
base_url="https://api.robosystems.ai"
)
Expand All @@ -111,9 +111,9 @@ extensions = CookieAuthExtensions(
### JWT Token Authentication

```python
from robosystems_client.extensions import TokenExtensions
from robosystems_client.clients import TokenClients

extensions = TokenExtensions(
extensions = TokenClients(
token="your-jwt-token",
base_url="https://api.robosystems.ai"
)
Expand All @@ -122,17 +122,17 @@ extensions = TokenExtensions(
### Environment-Specific Configurations

```python
from robosystems_client.extensions import create_extensions
from robosystems_client.clients import create_clients

# Production
prod_ext = create_extensions(
prod_ext = create_clients(
'api_key',
api_key=os.getenv('ROBOSYSTEMS_API_KEY'),
base_url="https://api.robosystems.ai"
)

# Development
dev_ext = create_extensions(
dev_ext = create_clients(
'api_key',
api_key="dev-key-123",
base_url="http://localhost:8000"
Expand All @@ -146,7 +146,7 @@ dev_ext = create_extensions(
Build complex Cypher queries programmatically:

```python
from robosystems_client.extensions import QueryBuilder
from robosystems_client.clients import QueryBuilder

builder = QueryBuilder()
query, params = (builder
Expand All @@ -169,7 +169,7 @@ print("Parameters:", params)
### Query Validation & Cost Estimation

```python
from robosystems_client.extensions import validate_cypher_query, estimate_query_cost
from robosystems_client.clients import validate_cypher_query, estimate_query_cost

# Validate syntax
validation = validate_cypher_query(query)
Expand All @@ -190,7 +190,7 @@ for rec in cost['recommendations']:
Convert results to different formats:

```python
from robosystems_client.extensions import ResultProcessor
from robosystems_client.clients import ResultProcessor

# Convert to JSON
json_output = ResultProcessor.to_json(result, pretty=True)
Expand All @@ -211,7 +211,7 @@ except ImportError:
Cache expensive queries automatically:

```python
from robosystems_client.extensions import CacheManager
from robosystems_client.clients import CacheManager

cache = CacheManager(max_size=100, ttl_seconds=300) # 5 minute TTL

Expand All @@ -232,7 +232,7 @@ print(cache.stats())
Monitor long-running operations:

```python
from robosystems_client.extensions import ProgressTracker
from robosystems_client.clients import ProgressTracker

def progress_handler(progress):
print(f"Step {progress.current_step}/{progress.total_steps}: {progress.message}")
Expand All @@ -249,7 +249,7 @@ print(f"Operation completed: {result.status}")
Direct SSE connection for real-time events:

```python
from robosystems_client.extensions import SSEClient, SSEConfig, EventType
from robosystems_client.clients import SSEClient, SSEConfig, EventType

config = SSEConfig(base_url="https://api.robosystems.ai")
client = SSEClient(config)
Expand All @@ -276,9 +276,9 @@ client.close()
### Financial Data Analysis

```python
from robosystems_client.extensions import create_production_extensions, QueryBuilder
from robosystems_client.clients import create_production_clients, QueryBuilder

extensions = create_production_extensions(api_key)
extensions = create_production_clients(api_key)

# Find top performing companies by revenue growth
builder = QueryBuilder()
Expand All @@ -303,7 +303,7 @@ for company in result.data:
### Batch Processing with Streaming

```python
from robosystems_client.extensions import DataBatcher, format_duration
from robosystems_client.clients import DataBatcher, format_duration
import time

# Process large transaction dataset in batches
Expand Down Expand Up @@ -338,7 +338,7 @@ print(f"Processed {total_processed:,} transactions total")
### Error Handling

```python
from robosystems_client.extensions import QueuedQueryError
from robosystems_client.clients import QueuedQueryError

try:
result = extensions.execute_query("graph_id", "COMPLEX LONG RUNNING QUERY")
Expand Down Expand Up @@ -369,21 +369,21 @@ Extensions automatically manage SSE connections with pooling:

```python
# Configure connection limits
config = RoboSystemsExtensionConfig(
config = RoboSystemsClientConfig(
max_retries=5,
retry_delay=2000, # 2 seconds
timeout=60
)

extensions = RoboSystemsExtensions(config)
extensions = RoboSystemsClients(config)
```

### Query Optimization

Use query analysis tools:

```python
from robosystems_client.extensions import estimate_query_cost, validate_cypher_query
from robosystems_client.clients import estimate_query_cost, validate_cypher_query

# Analyze before execution
query = "MATCH (c:Company) WHERE c.revenue > 1000000 RETURN c"
Expand Down Expand Up @@ -434,20 +434,20 @@ Run the test suite:
python run_tests.py

# Or individual test suites
python -c "from robosystems_client.extensions.tests.test_unit import run_unit_tests; run_unit_tests()"
python -c "from robosystems_client.extensions.tests.test_integration import run_integration_tests; run_integration_tests()"
python -c "from robosystems_client.clients.tests.test_unit import run_unit_tests; run_unit_tests()"
python -c "from robosystems_client.clients.tests.test_integration import run_integration_tests; run_integration_tests()"
```

### Writing Tests

```python
from robosystems_client.extensions import AuthenticatedExtensions
from robosystems_client.clients import AuthenticatedClients
from unittest.mock import Mock, patch

def test_query_execution():
extensions = AuthenticatedExtensions("test-key")
extensions = AuthenticatedClients("test-key")

with patch('robosystems_client.extensions.auth_integration.sync_detailed') as mock_query:
with patch('robosystems_client.clients.auth_integration.sync_detailed') as mock_query:
# Mock successful response
mock_response = Mock()
mock_response.parsed.data = [{"count": 100}]
Expand Down Expand Up @@ -476,9 +476,9 @@ export ROBOSYSTEMS_RETRY_DELAY="2000"
### Configuration Object

```python
from robosystems_client.extensions import RoboSystemsExtensionConfig
from robosystems_client.clients import RoboSystemsClientConfig

config = RoboSystemsExtensionConfig(
config = RoboSystemsClientConfig(
base_url="https://api.robosystems.ai",
headers={
"X-Custom-Header": "value",
Expand All @@ -489,18 +489,18 @@ config = RoboSystemsExtensionConfig(
timeout=45
)

extensions = RoboSystemsExtensions(config)
extensions = RoboSystemsClients(config)
```

## API Reference

### Core Classes

- **`RoboSystemsExtensions`** - Main extensions class
- **`AuthenticatedExtensions`** - API key authentication
- **`CookieAuthExtensions`** - Cookie authentication
- **`TokenExtensions`** - JWT token authentication
- **`AsyncRoboSystemsExtensions`** - Async version
- **`RoboSystemsClients`** - Main extensions class
- **`AuthenticatedClients`** - API key authentication
- **`CookieAuthClients`** - Cookie authentication
- **`TokenClients`** - JWT token authentication
- **`AsyncRoboSystemsClients`** - Async version

### SSE Components

Expand All @@ -526,7 +526,7 @@ extensions = RoboSystemsExtensions(config)
- **`validate_cypher_query(query)`** - Query syntax validation
- **`estimate_query_cost(query, params)`** - Complexity analysis
- **`format_duration(milliseconds)`** - Human-readable time formatting
- **`create_extensions(method, **kwargs)`** - Extensions factory
- **`create_clients(method, **kwargs)`** - Extensions factory

## Troubleshooting

Expand All @@ -542,7 +542,7 @@ pip install pandas # For DataFrame conversion (optional)
**Authentication Failures**
```python
# Verify API key is valid
extensions = AuthenticatedExtensions("your-api-key")
extensions = AuthenticatedClients("your-api-key")
try:
result = extensions.execute_query("graph_id", "MATCH (n) RETURN count(n) LIMIT 1")
print("Authentication successful")
Expand Down Expand Up @@ -582,7 +582,7 @@ import logging
logging.basicConfig(level=logging.DEBUG)

# This will show internal HTTP requests and SSE events
extensions = AuthenticatedExtensions("your-key")
extensions = AuthenticatedClients("your-key")
```

## Contributing
Expand Down
Loading
Loading