paid-python 0.1.0__tar.gz → 0.1.1__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.
- {paid_python-0.1.0 → paid_python-0.1.1}/PKG-INFO +93 -1
- {paid_python-0.1.0 → paid_python-0.1.1}/README.md +92 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/pyproject.toml +1 -1
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/context_manager.py +1 -1
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/tracing.py +2 -8
- {paid_python-0.1.0 → paid_python-0.1.1}/LICENSE +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/agents/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/agents/client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/agents/raw_client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/contacts/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/contacts/client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/contacts/raw_client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/api_error.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/client_wrapper.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/datetime_utils.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/file.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/force_multipart.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/http_client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/http_response.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/jsonable_encoder.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/pydantic_utilities.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/query_encoder.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/remove_none_from_dict.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/request_options.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/core/serialization.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/customers/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/customers/client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/customers/raw_client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/environment.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/errors/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/errors/bad_request_error.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/errors/forbidden_error.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/errors/not_found_error.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/logger.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/orders/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/orders/client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/orders/lines/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/orders/lines/client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/orders/lines/raw_client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/orders/raw_client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/py.typed +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/autoinstrumentation.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/distributed_tracing.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/signal.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/anthropic/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/anthropic/anthropicWrapper.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/bedrock/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/bedrock/bedrockWrapper.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/gemini/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/gemini/geminiWrapper.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/langchain/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/langchain/paidLangChainCallback.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/llamaindex/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/llamaindex/llamaIndexWrapper.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/mistral/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/mistral/mistralWrapper.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/openai/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/openai/openAiWrapper.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/openai_agents/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/openai_agents/openaiAgentsHook.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/utils.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/address.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/agent.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/agent_attribute.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/agent_price_point.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/agent_price_point_tiers.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/agent_update.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/api_error.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/billing_frequency.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/charge_type.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/contact.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/cost_amount.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/cost_trace.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/cost_traces_response.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/creation_source.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/creation_state.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/customer.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/customer_update.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/entitlement_usage.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/error.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/order.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/order_line.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/order_line_attribute.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/order_line_attribute_create.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/order_line_attribute_pricing.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/order_line_create.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/pagination_meta.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/price_point.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/pricing.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/pricing_model_type.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/salutation.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/signal.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/tax_exempt_status.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/types/tier.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/usage/__init__.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/usage/client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/usage/raw_client.py +0 -0
- {paid_python-0.1.0 → paid_python-0.1.1}/src/paid/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: paid-python
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary:
|
|
5
5
|
Requires-Python: >=3.9,<3.14
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -205,6 +205,98 @@ def image_generate():
|
|
|
205
205
|
image_generate()
|
|
206
206
|
```
|
|
207
207
|
|
|
208
|
+
### Passing User Metadata
|
|
209
|
+
|
|
210
|
+
You can attach custom metadata to your traces by passing a `metadata` dictionary to the `paid_tracing()` decorator or context manager. This metadata will be stored with the trace and can be used to filter and query traces later.
|
|
211
|
+
|
|
212
|
+
<Tabs>
|
|
213
|
+
<Tab title="Python - Decorator">
|
|
214
|
+
```python
|
|
215
|
+
from paid.tracing import paid_tracing, signal
|
|
216
|
+
from paid.tracing.wrappers import PaidOpenAI
|
|
217
|
+
from openai import OpenAI
|
|
218
|
+
|
|
219
|
+
openai_client = PaidOpenAI(OpenAI(api_key="<OPENAI_API_KEY>"))
|
|
220
|
+
|
|
221
|
+
@paid_tracing(
|
|
222
|
+
"customer_123",
|
|
223
|
+
"agent_123",
|
|
224
|
+
metadata={
|
|
225
|
+
"campaign_id": "campaign_456",
|
|
226
|
+
"environment": "production",
|
|
227
|
+
"user_tier": "enterprise"
|
|
228
|
+
}
|
|
229
|
+
)
|
|
230
|
+
def process_event(event):
|
|
231
|
+
"""Process event with custom metadata"""
|
|
232
|
+
response = openai_client.chat.completions.create(
|
|
233
|
+
model="gpt-4",
|
|
234
|
+
messages=[{"role": "user", "content": event.content}]
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
signal("event_processed", enable_cost_tracing=True)
|
|
238
|
+
return response
|
|
239
|
+
|
|
240
|
+
process_event(incoming_event)
|
|
241
|
+
```
|
|
242
|
+
</Tab>
|
|
243
|
+
|
|
244
|
+
<Tab title="Python - Context Manager">
|
|
245
|
+
```python
|
|
246
|
+
from paid.tracing import paid_tracing, signal
|
|
247
|
+
from paid.tracing.wrappers import PaidOpenAI
|
|
248
|
+
from openai import OpenAI
|
|
249
|
+
|
|
250
|
+
openai_client = PaidOpenAI(OpenAI(api_key="<OPENAI_API_KEY>"))
|
|
251
|
+
|
|
252
|
+
def process_event(event):
|
|
253
|
+
"""Process event with custom metadata"""
|
|
254
|
+
response = openai_client.chat.completions.create(
|
|
255
|
+
model="gpt-4",
|
|
256
|
+
messages=[{"role": "user", "content": event.content}]
|
|
257
|
+
)
|
|
258
|
+
|
|
259
|
+
signal("event_processed", enable_cost_tracing=True)
|
|
260
|
+
return response
|
|
261
|
+
|
|
262
|
+
# Pass metadata to context manager
|
|
263
|
+
with paid_tracing(
|
|
264
|
+
"customer_123",
|
|
265
|
+
external_agent_id="agent_123",
|
|
266
|
+
metadata={
|
|
267
|
+
"campaign_id": "campaign_456",
|
|
268
|
+
"environment": "production",
|
|
269
|
+
"user_tier": "enterprise"
|
|
270
|
+
}
|
|
271
|
+
):
|
|
272
|
+
process_event(incoming_event)
|
|
273
|
+
```
|
|
274
|
+
</Tab>
|
|
275
|
+
|
|
276
|
+
<Tab title="Node.js">
|
|
277
|
+
```typescript
|
|
278
|
+
// Metadata support is not yet available in the Node.js SDK.
|
|
279
|
+
// Please use Python for passing custom metadata to traces.
|
|
280
|
+
```
|
|
281
|
+
</Tab>
|
|
282
|
+
</Tabs>
|
|
283
|
+
|
|
284
|
+
#### Querying Traces by Metadata
|
|
285
|
+
|
|
286
|
+
Once you've added metadata to your traces, you can filter traces using the metadata parameter in the traces API endpoint:
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
# Filter by single metadata field
|
|
290
|
+
curl -G "https://api.paid.ai/api/organizations/{orgId}/traces" \
|
|
291
|
+
--data-urlencode 'metadata={"campaign_id":"campaign_456"}' \
|
|
292
|
+
-H "Authorization: Bearer YOUR_API_KEY"
|
|
293
|
+
|
|
294
|
+
# Filter by multiple metadata fields (all must match)
|
|
295
|
+
curl -G "https://api.paid.ai/api/organizations/{orgId}/traces" \
|
|
296
|
+
--data-urlencode 'metadata={"campaign_id":"campaign_456","environment":"production"}' \
|
|
297
|
+
-H "Authorization: Bearer YOUR_API_KEY"
|
|
298
|
+
```
|
|
299
|
+
|
|
208
300
|
### Auto-Instrumentation (OpenTelemetry Instrumentors)
|
|
209
301
|
|
|
210
302
|
For maximum convenience, you can use OpenTelemetry auto-instrumentation to automatically track costs without modifying your AI library calls. This approach uses official OpenTelemetry instrumentors for supported AI libraries.
|
|
@@ -170,6 +170,98 @@ def image_generate():
|
|
|
170
170
|
image_generate()
|
|
171
171
|
```
|
|
172
172
|
|
|
173
|
+
### Passing User Metadata
|
|
174
|
+
|
|
175
|
+
You can attach custom metadata to your traces by passing a `metadata` dictionary to the `paid_tracing()` decorator or context manager. This metadata will be stored with the trace and can be used to filter and query traces later.
|
|
176
|
+
|
|
177
|
+
<Tabs>
|
|
178
|
+
<Tab title="Python - Decorator">
|
|
179
|
+
```python
|
|
180
|
+
from paid.tracing import paid_tracing, signal
|
|
181
|
+
from paid.tracing.wrappers import PaidOpenAI
|
|
182
|
+
from openai import OpenAI
|
|
183
|
+
|
|
184
|
+
openai_client = PaidOpenAI(OpenAI(api_key="<OPENAI_API_KEY>"))
|
|
185
|
+
|
|
186
|
+
@paid_tracing(
|
|
187
|
+
"customer_123",
|
|
188
|
+
"agent_123",
|
|
189
|
+
metadata={
|
|
190
|
+
"campaign_id": "campaign_456",
|
|
191
|
+
"environment": "production",
|
|
192
|
+
"user_tier": "enterprise"
|
|
193
|
+
}
|
|
194
|
+
)
|
|
195
|
+
def process_event(event):
|
|
196
|
+
"""Process event with custom metadata"""
|
|
197
|
+
response = openai_client.chat.completions.create(
|
|
198
|
+
model="gpt-4",
|
|
199
|
+
messages=[{"role": "user", "content": event.content}]
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
signal("event_processed", enable_cost_tracing=True)
|
|
203
|
+
return response
|
|
204
|
+
|
|
205
|
+
process_event(incoming_event)
|
|
206
|
+
```
|
|
207
|
+
</Tab>
|
|
208
|
+
|
|
209
|
+
<Tab title="Python - Context Manager">
|
|
210
|
+
```python
|
|
211
|
+
from paid.tracing import paid_tracing, signal
|
|
212
|
+
from paid.tracing.wrappers import PaidOpenAI
|
|
213
|
+
from openai import OpenAI
|
|
214
|
+
|
|
215
|
+
openai_client = PaidOpenAI(OpenAI(api_key="<OPENAI_API_KEY>"))
|
|
216
|
+
|
|
217
|
+
def process_event(event):
|
|
218
|
+
"""Process event with custom metadata"""
|
|
219
|
+
response = openai_client.chat.completions.create(
|
|
220
|
+
model="gpt-4",
|
|
221
|
+
messages=[{"role": "user", "content": event.content}]
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
signal("event_processed", enable_cost_tracing=True)
|
|
225
|
+
return response
|
|
226
|
+
|
|
227
|
+
# Pass metadata to context manager
|
|
228
|
+
with paid_tracing(
|
|
229
|
+
"customer_123",
|
|
230
|
+
external_agent_id="agent_123",
|
|
231
|
+
metadata={
|
|
232
|
+
"campaign_id": "campaign_456",
|
|
233
|
+
"environment": "production",
|
|
234
|
+
"user_tier": "enterprise"
|
|
235
|
+
}
|
|
236
|
+
):
|
|
237
|
+
process_event(incoming_event)
|
|
238
|
+
```
|
|
239
|
+
</Tab>
|
|
240
|
+
|
|
241
|
+
<Tab title="Node.js">
|
|
242
|
+
```typescript
|
|
243
|
+
// Metadata support is not yet available in the Node.js SDK.
|
|
244
|
+
// Please use Python for passing custom metadata to traces.
|
|
245
|
+
```
|
|
246
|
+
</Tab>
|
|
247
|
+
</Tabs>
|
|
248
|
+
|
|
249
|
+
#### Querying Traces by Metadata
|
|
250
|
+
|
|
251
|
+
Once you've added metadata to your traces, you can filter traces using the metadata parameter in the traces API endpoint:
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# Filter by single metadata field
|
|
255
|
+
curl -G "https://api.paid.ai/api/organizations/{orgId}/traces" \
|
|
256
|
+
--data-urlencode 'metadata={"campaign_id":"campaign_456"}' \
|
|
257
|
+
-H "Authorization: Bearer YOUR_API_KEY"
|
|
258
|
+
|
|
259
|
+
# Filter by multiple metadata fields (all must match)
|
|
260
|
+
curl -G "https://api.paid.ai/api/organizations/{orgId}/traces" \
|
|
261
|
+
--data-urlencode 'metadata={"campaign_id":"campaign_456","environment":"production"}' \
|
|
262
|
+
-H "Authorization: Bearer YOUR_API_KEY"
|
|
263
|
+
```
|
|
264
|
+
|
|
173
265
|
### Auto-Instrumentation (OpenTelemetry Instrumentors)
|
|
174
266
|
|
|
175
267
|
For maximum convenience, you can use OpenTelemetry auto-instrumentation to automatically track costs without modifying your AI library calls. This approach uses official OpenTelemetry instrumentors for supported AI libraries.
|
|
@@ -258,7 +258,7 @@ def get_paid_tracer() -> trace.Tracer:
|
|
|
258
258
|
|
|
259
259
|
|
|
260
260
|
def trace_sync_(
|
|
261
|
-
external_customer_id: str,
|
|
261
|
+
external_customer_id: Optional[str],
|
|
262
262
|
fn: Callable[..., T],
|
|
263
263
|
external_agent_id: Optional[str] = None,
|
|
264
264
|
tracing_token: Optional[int] = None,
|
|
@@ -316,9 +316,6 @@ def trace_sync_(
|
|
|
316
316
|
tracer = get_paid_tracer()
|
|
317
317
|
logger.info(f"Creating span for external_customer_id: {external_customer_id}")
|
|
318
318
|
with tracer.start_as_current_span("parent_span", context=ctx) as span:
|
|
319
|
-
span.set_attribute("external_customer_id", external_customer_id)
|
|
320
|
-
if external_agent_id:
|
|
321
|
-
span.set_attribute("external_agent_id", external_agent_id)
|
|
322
319
|
try:
|
|
323
320
|
result = fn(*args, **kwargs)
|
|
324
321
|
span.set_status(Status(StatusCode.OK))
|
|
@@ -335,7 +332,7 @@ def trace_sync_(
|
|
|
335
332
|
|
|
336
333
|
|
|
337
334
|
async def trace_async_(
|
|
338
|
-
external_customer_id: str,
|
|
335
|
+
external_customer_id: Optional[str],
|
|
339
336
|
fn: Callable[..., Union[T, Awaitable[T]]],
|
|
340
337
|
external_agent_id: Optional[str] = None,
|
|
341
338
|
tracing_token: Optional[int] = None,
|
|
@@ -393,9 +390,6 @@ async def trace_async_(
|
|
|
393
390
|
tracer = get_paid_tracer()
|
|
394
391
|
logger.info(f"Creating span for external_customer_id: {external_customer_id}")
|
|
395
392
|
with tracer.start_as_current_span("parent_span", context=ctx) as span:
|
|
396
|
-
span.set_attribute("external_customer_id", external_customer_id)
|
|
397
|
-
if external_agent_id:
|
|
398
|
-
span.set_attribute("external_agent_id", external_agent_id)
|
|
399
393
|
try:
|
|
400
394
|
if asyncio.iscoroutinefunction(fn):
|
|
401
395
|
result = await fn(*args, **kwargs)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/anthropic/anthropicWrapper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/langchain/paidLangChainCallback.py
RENAMED
|
File without changes
|
|
File without changes
|
{paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/llamaindex/llamaIndexWrapper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paid_python-0.1.0 → paid_python-0.1.1}/src/paid/tracing/wrappers/openai_agents/openaiAgentsHook.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|