Config
The Config class handles validation and storage of SDK configuration parameters. It’s used internally by ClioMonitor but can be useful for advanced configuration scenarios.
Constructor
Section titled “Constructor”Config(api_key, **kwargs)
Section titled “Config(api_key, **kwargs)”Creates a new configuration object with validation.
from clio.config import Config
config = Config( api_key="clio_your_api_key", base_url="https://api.cliomonitoring.com", retry_attempts=3, raise_on_error=False, timeout=30, verify_ssl=True)Parameters
Section titled “Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
api_key | str | Required | Clio API key (must start with clio_) |
base_url | str | "https://api.cliomonitoring.com" | API server URL |
retry_attempts | int | 3 | Upload retry attempts (1-10) |
raise_on_error | bool | False | Raise exceptions on errors |
timeout | int | 30 | HTTP request timeout in seconds |
verify_ssl | bool | True | Verify SSL certificates |
Validation
Section titled “Validation”The constructor performs comprehensive validation:
API Key Validation:
- Must not be empty
- Must start with
clio_ - Should be at least 20 characters long
URL Validation:
- Must be a valid URL format
- Must use
httporhttpsscheme - Issues security warning for non-localhost HTTP URLs
Parameter Validation:
retry_attemptsshould be between 1-10timeoutshould be positive- All required parameters must be provided
Raises
Section titled “Raises”ValueError- Invalid API key format or empty keyValueError- Invalid base_url format or unsupported schemeSecurityWarning- HTTP URL used with non-localhost host
Examples
Section titled “Examples”# Basic configurationconfig = Config(api_key="clio_abc123...")
# Development configurationconfig = Config( api_key="clio_abc123...", base_url="http://localhost:8000", raise_on_error=True, timeout=60)
# Production configuration with retriesconfig = Config( api_key="clio_abc123...", base_url="https://api.cliomonitoring.com", retry_attempts=5, verify_ssl=True, timeout=120)Properties
Section titled “Properties”api_key
Section titled “api_key”The API key used for authentication. Never logged or exposed in error messages.
config = Config(api_key="clio_secret123")print(config.api_key) # "clio_secret123" (only in direct access)base_url
Section titled “base_url”The API server URL, normalized to remove trailing slashes.
config = Config(api_key="clio_abc123", base_url="https://api.cliomonitoring.com/")print(config.base_url) # "https://api.cliomonitoring.com" (trailing slash removed)retry_attempts
Section titled “retry_attempts”Number of times to retry failed operations.
config = Config(api_key="clio_abc123", retry_attempts=5)print(config.retry_attempts) # 5raise_on_error
Section titled “raise_on_error”Whether exceptions should be raised on errors.
# Silent mode - logs errors but continuesconfig = Config(api_key="clio_abc123", raise_on_error=False)
# Strict mode - raises exceptionsconfig = Config(api_key="clio_abc123", raise_on_error=True)timeout
Section titled “timeout”HTTP request timeout in seconds.
config = Config(api_key="clio_abc123", timeout=60)print(config.timeout) # 60verify_ssl
Section titled “verify_ssl”Whether to verify SSL certificates.
# Production - verify SSL (default)config = Config(api_key="clio_abc123", verify_ssl=True)
# Development - skip SSL verification (not recommended)config = Config(api_key="clio_abc123", verify_ssl=False)headers
Section titled “headers”Property that returns HTTP headers for API requests. The API key is included in the Authorization header.
config = Config(api_key="clio_abc123")headers = config.headersprint(headers)# {# "Authorization": "Bearer clio_abc123...",# "Content-Type": "application/json"# }Methods
Section titled “Methods”__repr__()
Section titled “__repr__()”Returns a safe string representation with masked sensitive data.
config = Config( api_key="clio_very_secret_api_key_12345", base_url="https://api.cliomonitoring.com", retry_attempts=3)
print(repr(config))# Config(api_key='clio_****', base_url='https://api.cliomonitoring.com', retry_attempts=3)The API key is automatically masked to prevent accidental exposure in logs or debug output.
URL Validation
Section titled “URL Validation”The Config class performs thorough URL validation:
Valid URLs
Section titled “Valid URLs”# HTTPS (recommended)Config(api_key="clio_abc123", base_url="https://api.cliomonitoring.com")
# HTTP localhost (development)Config(api_key="clio_abc123", base_url="http://localhost:8000")Config(api_key="clio_abc123", base_url="http://127.0.0.1:3000")
# Custom portsConfig(api_key="clio_abc123", base_url="https://api.example.com:8443")Invalid URLs
Section titled “Invalid URLs”# Missing schemeConfig(api_key="clio_abc123", base_url="api.cliomonitoring.com") # ❌ ValueError
# Invalid schemeConfig(api_key="clio_abc123", base_url="ftp://api.cliomonitoring.com") # ❌ ValueError
# Empty URLConfig(api_key="clio_abc123", base_url="") # ❌ ValueErrorSecurity Warnings
Section titled “Security Warnings”# This will issue a SecurityWarningConfig(api_key="clio_abc123", base_url="http://api.cliomonitoring.com")# Warning: Using HTTP for non-localhost connections is insecureAdvanced Usage
Section titled “Advanced Usage”Custom Timeout Configuration
Section titled “Custom Timeout Configuration”Different timeout values for different use cases:
# Quick timeout for fast networksconfig = Config(api_key="clio_abc123", timeout=10)
# Extended timeout for large uploadsconfig = Config(api_key="clio_abc123", timeout=300) # 5 minutes
# CI/CD environment with network restrictionsconfig = Config(api_key="clio_abc123", timeout=120) # 2 minutesRetry Configuration
Section titled “Retry Configuration”Configure retry behavior based on your environment:
# Development - fail fastconfig = Config(api_key="clio_abc123", retry_attempts=1)
# Production - be resilientconfig = Config(api_key="clio_abc123", retry_attempts=5)
# Critical workflows - maximum retriesconfig = Config(api_key="clio_abc123", retry_attempts=10)SSL Configuration
Section titled “SSL Configuration”Handle different SSL scenarios:
# Production - strict SSLconfig = Config(api_key="clio_abc123", verify_ssl=True)
# Development with self-signed certificatesconfig = Config(api_key="clio_abc123", verify_ssl=False)
# Corporate proxy with custom CAconfig = Config( api_key="clio_abc123", verify_ssl=True, # Note: Custom CA configuration would require additional setup)Integration with ClioMonitor
Section titled “Integration with ClioMonitor”The Config class is typically used indirectly through ClioMonitor:
from clio import ClioMonitor
# ClioMonitor creates a Config internallymonitor = ClioMonitor( api_key="clio_abc123", base_url="https://api.cliomonitoring.com", retry_attempts=3)
# Access the config if neededprint(monitor.config.base_url) # "https://api.cliomonitoring.com"print(monitor.config) # Config(api_key='clio_****', ...)Error Handling
Section titled “Error Handling”The Config class provides detailed error messages:
try: config = Config(api_key="invalid_key")except ValueError as e: print(e) # "Invalid API key format"
try: config = Config(api_key="clio_abc123", base_url="not-a-url")except ValueError as e: print(e) # "Invalid base_url format: not-a-url"Best Practices
Section titled “Best Practices”-
Use environment variables for API keys:
import osconfig = Config(api_key=os.getenv("CLIO_API_KEY")) -
Enable SSL verification in production:
config = Config(api_key="clio_abc123", verify_ssl=True) -
Adjust timeouts based on your network:
# Fast local networkconfig = Config(api_key="clio_abc123", timeout=15)# Slow or unreliable networkconfig = Config(api_key="clio_abc123", timeout=180) -
Configure retries for your use case:
# Interactive developmentconfig = Config(api_key="clio_abc123", retry_attempts=1)# Automated CI/CDconfig = Config(api_key="clio_abc123", retry_attempts=5) -
Use raise_on_error during development:
# Developmentconfig = Config(api_key="clio_abc123", raise_on_error=True)# Productionconfig = Config(api_key="clio_abc123", raise_on_error=False)