lucidicai 3.2.0__tar.gz → 3.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. {lucidicai-3.2.0 → lucidicai-3.3.0}/PKG-INFO +1 -1
  2. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/__init__.py +1 -1
  3. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/client.py +11 -0
  4. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/core/config.py +34 -7
  5. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai.egg-info/PKG-INFO +1 -1
  6. {lucidicai-3.2.0 → lucidicai-3.3.0}/setup.py +1 -1
  7. {lucidicai-3.2.0 → lucidicai-3.3.0}/README.md +0 -0
  8. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/api/__init__.py +0 -0
  9. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/api/client.py +0 -0
  10. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/api/resources/__init__.py +0 -0
  11. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/api/resources/dataset.py +0 -0
  12. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/api/resources/evals.py +0 -0
  13. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/api/resources/event.py +0 -0
  14. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/api/resources/experiment.py +0 -0
  15. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/api/resources/feature_flag.py +0 -0
  16. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/api/resources/prompt.py +0 -0
  17. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/api/resources/session.py +0 -0
  18. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/core/__init__.py +0 -0
  19. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/core/errors.py +0 -0
  20. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/core/types.py +0 -0
  21. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/integrations/__init__.py +0 -0
  22. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/integrations/livekit.py +0 -0
  23. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/__init__.py +0 -0
  24. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/context.py +0 -0
  25. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/decorators.py +0 -0
  26. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/error_boundary.py +0 -0
  27. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/event.py +0 -0
  28. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/event_builder.py +0 -0
  29. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/features/__init__.py +0 -0
  30. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/features/dataset.py +0 -0
  31. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/features/feature_flag.py +0 -0
  32. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/init.py +0 -0
  33. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/session.py +0 -0
  34. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/sdk/shutdown_manager.py +0 -0
  35. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/session_obj.py +0 -0
  36. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/__init__.py +0 -0
  37. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/context_bridge.py +0 -0
  38. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/context_capture_processor.py +0 -0
  39. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/extract.py +0 -0
  40. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/litellm_bridge.py +0 -0
  41. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/lucidic_exporter.py +0 -0
  42. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/openai_agents_instrumentor.py +0 -0
  43. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/openai_patch.py +0 -0
  44. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/openai_uninstrument.py +0 -0
  45. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/telemetry_init.py +0 -0
  46. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/telemetry_manager.py +0 -0
  47. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/utils/__init__.py +0 -0
  48. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/utils/model_pricing.py +0 -0
  49. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/telemetry/utils/provider.py +0 -0
  50. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/utils/__init__.py +0 -0
  51. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/utils/logger.py +0 -0
  52. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai/utils/serialization.py +0 -0
  53. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai.egg-info/SOURCES.txt +0 -0
  54. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai.egg-info/dependency_links.txt +0 -0
  55. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai.egg-info/requires.txt +0 -0
  56. {lucidicai-3.2.0 → lucidicai-3.3.0}/lucidicai.egg-info/top_level.txt +0 -0
  57. {lucidicai-3.2.0 → lucidicai-3.3.0}/setup.cfg +0 -0
  58. {lucidicai-3.2.0 → lucidicai-3.3.0}/tests/test_event_creation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lucidicai
3
- Version: 3.2.0
3
+ Version: 3.3.0
4
4
  Summary: Lucidic AI Python SDK
5
5
  Author: Andy Liang
6
6
  Author-email: andy@lucidic.ai
@@ -38,7 +38,7 @@ from .core.errors import (
38
38
  from .integrations.livekit import setup_livekit
39
39
 
40
40
  # Version
41
- __version__ = "3.2.0"
41
+ __version__ = "3.3.0"
42
42
 
43
43
  # All exports
44
44
  __all__ = [
@@ -64,6 +64,8 @@ class LucidicAI:
64
64
  auto_end: Whether sessions auto-end on context exit or process shutdown.
65
65
  production: If True, suppress SDK errors. If None, checks LUCIDIC_PRODUCTION env var.
66
66
  region: Deployment region ("us", "india"). Falls back to LUCIDIC_REGION env var.
67
+ base_url: Custom base URL for API requests. Takes precedence over region.
68
+ Falls back to LUCIDIC_BASE_URL env var.
67
69
  **kwargs: Additional configuration options passed to SDKConfig.
68
70
 
69
71
  Raises:
@@ -93,6 +95,13 @@ class LucidicAI:
93
95
  agent_id="...",
94
96
  region="india"
95
97
  )
98
+
99
+ # Custom base URL (e.g., self-hosted deployment)
100
+ client = LucidicAI(
101
+ api_key="...",
102
+ agent_id="...",
103
+ base_url="https://custom.example.com/api"
104
+ )
96
105
  """
97
106
 
98
107
  def __init__(
@@ -103,6 +112,7 @@ class LucidicAI:
103
112
  auto_end: bool = True,
104
113
  production: Optional[bool] = None,
105
114
  region: Optional[str] = None,
115
+ base_url: Optional[str] = None,
106
116
  **kwargs,
107
117
  ):
108
118
  # Generate unique client ID for telemetry routing
@@ -119,6 +129,7 @@ class LucidicAI:
119
129
  agent_id=agent_id,
120
130
  auto_end=auto_end,
121
131
  region=region,
132
+ base_url=base_url,
122
133
  **kwargs,
123
134
  )
124
135
 
@@ -53,16 +53,20 @@ class NetworkConfig:
53
53
  connection_pool_maxsize: int = 100
54
54
 
55
55
  @classmethod
56
- def from_env(cls, region: Optional[str] = None, debug: bool = False) -> 'NetworkConfig':
56
+ def from_env(cls, region: Optional[str] = None, base_url: Optional[str] = None, debug: bool = False) -> 'NetworkConfig':
57
57
  """Load network configuration from environment variables.
58
58
 
59
- Priority: debug > region argument > LUCIDIC_REGION env var > default
59
+ Priority: debug > base_url argument > LUCIDIC_BASE_URL > region argument > LUCIDIC_REGION > default
60
60
 
61
61
  Args:
62
62
  region: Region string override (e.g., "us", "india")
63
- debug: If True, use localhost URL regardless of region
63
+ base_url: Custom base URL override (takes precedence over region)
64
+ debug: If True, use localhost URL regardless of other settings
64
65
  """
65
- # If debug mode, use localhost (ignores region)
66
+ import logging
67
+ logger = logging.getLogger("Lucidic")
68
+
69
+ # If debug mode, use localhost (highest priority)
66
70
  if debug:
67
71
  return cls(
68
72
  base_url=DEBUG_URL,
@@ -74,7 +78,28 @@ class NetworkConfig:
74
78
  connection_pool_maxsize=int(os.getenv("LUCIDIC_CONNECTION_POOL_MAXSIZE", "100"))
75
79
  )
76
80
 
77
- # Resolve region: argument > env var > default
81
+ # Resolve base_url: argument > env var
82
+ resolved_base_url = base_url or os.getenv("LUCIDIC_BASE_URL")
83
+
84
+ if resolved_base_url:
85
+ # base_url takes precedence over region
86
+ region_str = region or os.getenv("LUCIDIC_REGION")
87
+ if region_str:
88
+ logger.warning(
89
+ f"[LucidicAI] Both base_url and region specified. "
90
+ f"Using base_url '{resolved_base_url}', ignoring region '{region_str}'."
91
+ )
92
+ return cls(
93
+ base_url=resolved_base_url,
94
+ region=None, # Custom deployment, no region
95
+ timeout=int(os.getenv("LUCIDIC_TIMEOUT", "30")),
96
+ max_retries=int(os.getenv("LUCIDIC_MAX_RETRIES", "3")),
97
+ backoff_factor=float(os.getenv("LUCIDIC_BACKOFF_FACTOR", "0.5")),
98
+ connection_pool_size=int(os.getenv("LUCIDIC_CONNECTION_POOL_SIZE", "20")),
99
+ connection_pool_maxsize=int(os.getenv("LUCIDIC_CONNECTION_POOL_MAXSIZE", "100"))
100
+ )
101
+
102
+ # Fall back to region-based URL resolution
78
103
  region_str = region or os.getenv("LUCIDIC_REGION")
79
104
  resolved_region = Region.from_string(region_str) if region_str else DEFAULT_REGION
80
105
 
@@ -147,11 +172,13 @@ class SDKConfig:
147
172
  debug: bool = False
148
173
 
149
174
  @classmethod
150
- def from_env(cls, region: Optional[str] = None, **overrides) -> 'SDKConfig':
175
+ def from_env(cls, region: Optional[str] = None, base_url: Optional[str] = None, **overrides) -> 'SDKConfig':
151
176
  """Create configuration from environment variables with optional overrides.
152
177
 
153
178
  Args:
154
179
  region: Region string (e.g., "us", "india"). Priority: arg > env var > default
180
+ base_url: Custom base URL override. Takes precedence over region.
181
+ Falls back to LUCIDIC_BASE_URL env var.
155
182
  **overrides: Additional configuration overrides
156
183
  """
157
184
  from dotenv import load_dotenv
@@ -165,7 +192,7 @@ class SDKConfig:
165
192
  auto_end=os.getenv("LUCIDIC_AUTO_END", "true").lower() == "true",
166
193
  production_monitoring=False,
167
194
  blob_threshold=int(os.getenv("LUCIDIC_BLOB_THRESHOLD", "65536")),
168
- network=NetworkConfig.from_env(region=region, debug=debug),
195
+ network=NetworkConfig.from_env(region=region, base_url=base_url, debug=debug),
169
196
  error_handling=ErrorHandlingConfig.from_env(),
170
197
  telemetry=TelemetryConfig.from_env(),
171
198
  environment=Environment.DEBUG if debug else Environment.PRODUCTION,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lucidicai
3
- Version: 3.2.0
3
+ Version: 3.3.0
4
4
  Summary: Lucidic AI Python SDK
5
5
  Author: Andy Liang
6
6
  Author-email: andy@lucidic.ai
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="lucidicai",
5
- version="3.2.0",
5
+ version="3.3.0",
6
6
  packages=find_packages(),
7
7
  install_requires=[
8
8
  "requests>=2.25.1",
File without changes
File without changes