paid-python 0.6.0__py3-none-any.whl → 1.0.0a1__py3-none-any.whl

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 (140) hide show
  1. paid/__init__.py +65 -95
  2. paid/client.py +17 -494
  3. paid/contacts/client.py +415 -133
  4. paid/contacts/raw_client.py +1046 -118
  5. paid/core/client_wrapper.py +9 -10
  6. paid/customers/client.py +270 -566
  7. paid/customers/raw_client.py +731 -537
  8. paid/environment.py +1 -1
  9. paid/errors/bad_request_error.py +2 -2
  10. paid/errors/forbidden_error.py +2 -2
  11. paid/errors/internal_server_error.py +2 -2
  12. paid/errors/not_found_error.py +2 -2
  13. paid/invoices/client.py +369 -0
  14. paid/invoices/raw_client.py +692 -0
  15. paid/orders/__init__.py +0 -3
  16. paid/orders/client.py +371 -128
  17. paid/orders/raw_client.py +829 -121
  18. paid/products/__init__.py +0 -3
  19. paid/products/client.py +129 -265
  20. paid/products/raw_client.py +563 -233
  21. paid/signals/client.py +130 -0
  22. paid/signals/raw_client.py +190 -0
  23. paid/tracing/autoinstrumentation.py +12 -6
  24. paid/tracing/context_manager.py +2 -6
  25. paid/tracing/distributed_tracing.py +3 -3
  26. paid/tracing/signal.py +3 -3
  27. paid/tracing/wrappers/openai_agents/openaiAgentsHook.py +1 -1
  28. paid/types/__init__.py +62 -86
  29. paid/types/attribution.py +8 -0
  30. paid/types/{agent_attribute.py → bulk_signals_response.py} +4 -5
  31. paid/types/contact.py +12 -20
  32. paid/types/{address.py → contact_billing_address.py} +6 -7
  33. paid/types/{traces_response.py → contact_list_response.py} +5 -9
  34. paid/types/customer.py +15 -22
  35. paid/types/customer_attribution.py +8 -0
  36. paid/types/customer_billing_address.py +26 -0
  37. paid/types/{usage_summary_order.py → customer_by_external_id.py} +3 -5
  38. paid/types/{usage_summary_order_line.py → customer_by_id.py} +3 -5
  39. paid/types/customer_creation_state.py +5 -0
  40. paid/types/customer_list_response.py +22 -0
  41. paid/types/empty_response.py +17 -0
  42. paid/types/{error.py → error_response.py} +4 -7
  43. paid/types/invoice.py +57 -0
  44. paid/types/invoice_line.py +42 -0
  45. paid/types/invoice_line_payment_status.py +7 -0
  46. paid/types/invoice_lines_response.py +22 -0
  47. paid/types/invoice_list_response.py +22 -0
  48. paid/types/invoice_payment_status.py +5 -0
  49. paid/types/invoice_source.py +5 -0
  50. paid/types/invoice_status.py +7 -0
  51. paid/types/invoice_tax_status.py +7 -0
  52. paid/types/order.py +30 -29
  53. paid/types/order_creation_state.py +5 -0
  54. paid/types/order_line.py +6 -24
  55. paid/types/order_lines_response.py +22 -0
  56. paid/types/order_list_response.py +22 -0
  57. paid/types/pagination.py +24 -0
  58. paid/types/product.py +4 -29
  59. paid/types/{tier.py → product_by_external_id.py} +5 -4
  60. paid/types/{cost_amount.py → product_by_id.py} +5 -12
  61. paid/types/product_list_response.py +22 -0
  62. paid/types/signal.py +8 -34
  63. paid/types/{agent.py → update_contact_request.py} +10 -11
  64. paid/types/update_customer_request.py +38 -0
  65. paid/types/{product_update.py → update_product_request.py} +2 -12
  66. {paid_python-0.6.0.dist-info → paid_python-1.0.0a1.dist-info}/METADATA +27 -11
  67. paid_python-1.0.0a1.dist-info/RECORD +110 -0
  68. opentelemetry/instrumentation/openai/__init__.py +0 -54
  69. opentelemetry/instrumentation/openai/shared/__init__.py +0 -399
  70. opentelemetry/instrumentation/openai/shared/audio_wrappers.py +0 -247
  71. opentelemetry/instrumentation/openai/shared/chat_wrappers.py +0 -1192
  72. opentelemetry/instrumentation/openai/shared/completion_wrappers.py +0 -292
  73. opentelemetry/instrumentation/openai/shared/config.py +0 -15
  74. opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py +0 -311
  75. opentelemetry/instrumentation/openai/shared/event_emitter.py +0 -108
  76. opentelemetry/instrumentation/openai/shared/event_models.py +0 -41
  77. opentelemetry/instrumentation/openai/shared/image_gen_wrappers.py +0 -68
  78. opentelemetry/instrumentation/openai/shared/span_utils.py +0 -0
  79. opentelemetry/instrumentation/openai/utils.py +0 -213
  80. opentelemetry/instrumentation/openai/v0/__init__.py +0 -176
  81. opentelemetry/instrumentation/openai/v1/__init__.py +0 -394
  82. opentelemetry/instrumentation/openai/v1/assistant_wrappers.py +0 -329
  83. opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py +0 -134
  84. opentelemetry/instrumentation/openai/v1/responses_wrappers.py +0 -1113
  85. opentelemetry/instrumentation/openai/version.py +0 -1
  86. paid/agents/client.py +0 -880
  87. paid/agents/raw_client.py +0 -785
  88. paid/orders/lines/client.py +0 -144
  89. paid/orders/lines/raw_client.py +0 -129
  90. paid/plans/__init__.py +0 -4
  91. paid/plans/client.py +0 -332
  92. paid/plans/raw_client.py +0 -464
  93. paid/products/types/__init__.py +0 -7
  94. paid/products/types/product_create_type.py +0 -5
  95. paid/traces/__init__.py +0 -4
  96. paid/traces/client.py +0 -218
  97. paid/traces/raw_client.py +0 -226
  98. paid/types/agent_price_point.py +0 -27
  99. paid/types/agent_price_point_tiers.py +0 -23
  100. paid/types/agent_update.py +0 -29
  101. paid/types/api_error.py +0 -29
  102. paid/types/billing_frequency.py +0 -5
  103. paid/types/charge_type.py +0 -5
  104. paid/types/cost_trace.py +0 -55
  105. paid/types/cost_traces_response.py +0 -26
  106. paid/types/creation_source.py +0 -5
  107. paid/types/creation_state.py +0 -5
  108. paid/types/customer_update.py +0 -40
  109. paid/types/entitlement_usage.py +0 -48
  110. paid/types/order_line_attribute.py +0 -27
  111. paid/types/order_line_attribute_create_one.py +0 -5
  112. paid/types/order_line_attribute_pricing.py +0 -33
  113. paid/types/order_line_create.py +0 -72
  114. paid/types/pagination_meta.py +0 -84
  115. paid/types/plan.py +0 -81
  116. paid/types/plan_group.py +0 -60
  117. paid/types/plan_plan_products_item.py +0 -35
  118. paid/types/plan_plan_products_item_plan_product_attribute_item.py +0 -34
  119. paid/types/price_point.py +0 -25
  120. paid/types/pricing.py +0 -31
  121. paid/types/pricing_model_type.py +0 -7
  122. paid/types/product_type.py +0 -5
  123. paid/types/product_update_type.py +0 -5
  124. paid/types/salutation.py +0 -5
  125. paid/types/signal_v_2.py +0 -56
  126. paid/types/tax_exempt_status.py +0 -5
  127. paid/types/trace.py +0 -69
  128. paid/types/usage_pagination_meta.py +0 -43
  129. paid/types/usage_summaries_response.py +0 -26
  130. paid/types/usage_summary.py +0 -121
  131. paid/usage/__init__.py +0 -7
  132. paid/usage/client.py +0 -321
  133. paid/usage/raw_client.py +0 -387
  134. paid/usage/types/__init__.py +0 -7
  135. paid/usage/types/usage_check_usage_response.py +0 -53
  136. paid_python-0.6.0.dist-info/RECORD +0 -153
  137. /paid/{agents → invoices}/__init__.py +0 -0
  138. /paid/{orders/lines → signals}/__init__.py +0 -0
  139. {paid_python-0.6.0.dist-info → paid_python-1.0.0a1.dist-info}/LICENSE +0 -0
  140. {paid_python-0.6.0.dist-info → paid_python-1.0.0a1.dist-info}/WHEEL +0 -0
@@ -1,394 +0,0 @@
1
- from typing import Collection
2
-
3
- from opentelemetry._logs import get_logger
4
- from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
5
- from opentelemetry.instrumentation.openai.shared.chat_wrappers import (
6
- achat_wrapper,
7
- chat_wrapper,
8
- )
9
- from opentelemetry.instrumentation.openai.shared.completion_wrappers import (
10
- acompletion_wrapper,
11
- completion_wrapper,
12
- )
13
- from opentelemetry.instrumentation.openai.shared.config import Config
14
- from opentelemetry.instrumentation.openai.shared.embeddings_wrappers import (
15
- aembeddings_wrapper,
16
- embeddings_wrapper,
17
- )
18
- from opentelemetry.instrumentation.openai.shared.image_gen_wrappers import (
19
- image_gen_metrics_wrapper,
20
- )
21
- from opentelemetry.instrumentation.openai.shared.audio_wrappers import (
22
- atranscription_wrapper,
23
- transcription_wrapper,
24
- )
25
- from opentelemetry.instrumentation.openai.utils import is_metrics_enabled
26
- from opentelemetry.instrumentation.openai.v1.assistant_wrappers import (
27
- assistants_create_wrapper,
28
- messages_list_wrapper,
29
- runs_create_and_stream_wrapper,
30
- runs_create_wrapper,
31
- runs_retrieve_wrapper,
32
- )
33
-
34
- from opentelemetry.instrumentation.openai.v1.responses_wrappers import (
35
- async_responses_cancel_wrapper,
36
- async_responses_get_or_create_wrapper,
37
- responses_cancel_wrapper,
38
- responses_get_or_create_wrapper,
39
- )
40
-
41
- from opentelemetry.instrumentation.openai.version import __version__
42
- from opentelemetry.instrumentation.utils import unwrap
43
- from opentelemetry.metrics import get_meter
44
- from opentelemetry.semconv._incubating.metrics import gen_ai_metrics as GenAIMetrics
45
- from opentelemetry.semconv_ai import Meters
46
- from opentelemetry.trace import get_tracer
47
- from wrapt import wrap_function_wrapper
48
-
49
-
50
- _instruments = ("openai >= 1.0.0",)
51
-
52
-
53
- class OpenAIV1Instrumentor(BaseInstrumentor):
54
- def instrumentation_dependencies(self) -> Collection[str]:
55
- return _instruments
56
-
57
- def _try_wrap(self, module, function, wrapper):
58
- """
59
- Wrap a function if it exists, otherwise do nothing.
60
- This is useful for handling cases where the function is not available in
61
- the older versions of the library.
62
-
63
- Args:
64
- module (str): The module to wrap, e.g. "openai.resources.chat.completions"
65
- function (str): "Object.function" to wrap, e.g. "Completions.parse"
66
- wrapper (callable): The wrapper to apply to the function.
67
- """
68
- try:
69
- wrap_function_wrapper(module, function, wrapper)
70
- except (AttributeError, ModuleNotFoundError):
71
- pass
72
-
73
- def _instrument(self, **kwargs):
74
- tracer_provider = kwargs.get("tracer_provider")
75
- tracer = get_tracer(__name__, __version__, tracer_provider)
76
-
77
- # meter and counters are inited here
78
- meter_provider = kwargs.get("meter_provider")
79
- meter = get_meter(__name__, __version__, meter_provider)
80
-
81
- if not Config.use_legacy_attributes:
82
- logger_provider = kwargs.get("logger_provider")
83
- Config.event_logger = get_logger(
84
- __name__, __version__, logger_provider=logger_provider
85
- )
86
-
87
- if is_metrics_enabled():
88
- tokens_histogram = meter.create_histogram(
89
- name=Meters.LLM_TOKEN_USAGE,
90
- unit="token",
91
- description="Measures number of input and output tokens used",
92
- )
93
-
94
- chat_choice_counter = meter.create_counter(
95
- name=Meters.LLM_GENERATION_CHOICES,
96
- unit="choice",
97
- description="Number of choices returned by chat completions call",
98
- )
99
-
100
- duration_histogram = meter.create_histogram(
101
- name=Meters.LLM_OPERATION_DURATION,
102
- unit="s",
103
- description="GenAI operation duration",
104
- )
105
-
106
- chat_exception_counter = meter.create_counter(
107
- name=Meters.LLM_COMPLETIONS_EXCEPTIONS,
108
- unit="time",
109
- description="Number of exceptions occurred during chat completions",
110
- )
111
-
112
- streaming_time_to_first_token = meter.create_histogram(
113
- name=GenAIMetrics.GEN_AI_SERVER_TIME_TO_FIRST_TOKEN,
114
- unit="s",
115
- description="Time to first token in streaming chat completions",
116
- )
117
- streaming_time_to_generate = meter.create_histogram(
118
- name=Meters.LLM_STREAMING_TIME_TO_GENERATE,
119
- unit="s",
120
- description="Time between first token and completion in streaming chat completions",
121
- )
122
- else:
123
- (
124
- tokens_histogram,
125
- chat_choice_counter,
126
- duration_histogram,
127
- chat_exception_counter,
128
- streaming_time_to_first_token,
129
- streaming_time_to_generate,
130
- ) = (None, None, None, None, None, None)
131
-
132
- wrap_function_wrapper(
133
- "openai.resources.chat.completions",
134
- "Completions.create",
135
- chat_wrapper(
136
- tracer,
137
- tokens_histogram,
138
- chat_choice_counter,
139
- duration_histogram,
140
- chat_exception_counter,
141
- streaming_time_to_first_token,
142
- streaming_time_to_generate,
143
- ),
144
- )
145
-
146
- wrap_function_wrapper(
147
- "openai.resources.completions",
148
- "Completions.create",
149
- completion_wrapper(tracer),
150
- )
151
-
152
- if is_metrics_enabled():
153
- embeddings_vector_size_counter = meter.create_counter(
154
- name=Meters.LLM_EMBEDDINGS_VECTOR_SIZE,
155
- unit="element",
156
- description="he size of returned vector",
157
- )
158
- embeddings_exception_counter = meter.create_counter(
159
- name=Meters.LLM_EMBEDDINGS_EXCEPTIONS,
160
- unit="time",
161
- description="Number of exceptions occurred during embeddings operation",
162
- )
163
- else:
164
- (
165
- tokens_histogram,
166
- embeddings_vector_size_counter,
167
- embeddings_exception_counter,
168
- ) = (None, None, None)
169
-
170
- wrap_function_wrapper(
171
- "openai.resources.embeddings",
172
- "Embeddings.create",
173
- embeddings_wrapper(
174
- tracer,
175
- tokens_histogram,
176
- embeddings_vector_size_counter,
177
- duration_histogram,
178
- embeddings_exception_counter,
179
- ),
180
- )
181
-
182
- wrap_function_wrapper(
183
- "openai.resources.chat.completions",
184
- "AsyncCompletions.create",
185
- achat_wrapper(
186
- tracer,
187
- tokens_histogram,
188
- chat_choice_counter,
189
- duration_histogram,
190
- chat_exception_counter,
191
- streaming_time_to_first_token,
192
- streaming_time_to_generate,
193
- ),
194
- )
195
- wrap_function_wrapper(
196
- "openai.resources.completions",
197
- "AsyncCompletions.create",
198
- acompletion_wrapper(tracer),
199
- )
200
- wrap_function_wrapper(
201
- "openai.resources.embeddings",
202
- "AsyncEmbeddings.create",
203
- aembeddings_wrapper(
204
- tracer,
205
- tokens_histogram,
206
- embeddings_vector_size_counter,
207
- duration_histogram,
208
- embeddings_exception_counter,
209
- ),
210
- )
211
- # in newer versions, Completions.parse are out of beta
212
- self._try_wrap(
213
- "openai.resources.chat.completions",
214
- "Completions.parse",
215
- chat_wrapper(
216
- tracer,
217
- tokens_histogram,
218
- chat_choice_counter,
219
- duration_histogram,
220
- chat_exception_counter,
221
- streaming_time_to_first_token,
222
- streaming_time_to_generate,
223
- ),
224
- )
225
- self._try_wrap(
226
- "openai.resources.chat.completions",
227
- "AsyncCompletions.parse",
228
- achat_wrapper(
229
- tracer,
230
- tokens_histogram,
231
- chat_choice_counter,
232
- duration_histogram,
233
- chat_exception_counter,
234
- streaming_time_to_first_token,
235
- streaming_time_to_generate,
236
- ),
237
- )
238
-
239
- if is_metrics_enabled():
240
- image_gen_exception_counter = meter.create_counter(
241
- name=Meters.LLM_IMAGE_GENERATIONS_EXCEPTIONS,
242
- unit="time",
243
- description="Number of exceptions occurred during image generations operation",
244
- )
245
- else:
246
- image_gen_exception_counter = None
247
-
248
- wrap_function_wrapper(
249
- "openai.resources.images",
250
- "Images.generate",
251
- image_gen_metrics_wrapper(duration_histogram, image_gen_exception_counter),
252
- )
253
-
254
- if is_metrics_enabled():
255
- audio_transcription_exception_counter = meter.create_counter(
256
- # name=Meters.LLM_AUDIO_TRANSCRIPTIONS_EXCEPTIONS, # TODO(Ata): come back here later when semconv is published
257
- name='llm.openai.audio.transcriptions.exceptions',
258
- unit="time",
259
- description="Number of exceptions occurred during audio transcriptions operation",
260
- )
261
- else:
262
- audio_transcription_exception_counter = None
263
-
264
- wrap_function_wrapper(
265
- "openai.resources.audio.transcriptions",
266
- "Transcriptions.create",
267
- transcription_wrapper(
268
- tracer,
269
- duration_histogram,
270
- audio_transcription_exception_counter,
271
- ),
272
- )
273
-
274
- wrap_function_wrapper(
275
- "openai.resources.audio.transcriptions",
276
- "AsyncTranscriptions.create",
277
- atranscription_wrapper(
278
- tracer,
279
- duration_histogram,
280
- audio_transcription_exception_counter,
281
- ),
282
- )
283
-
284
- # Beta APIs may not be available consistently in all versions
285
- self._try_wrap(
286
- "openai.resources.beta.assistants",
287
- "Assistants.create",
288
- assistants_create_wrapper(tracer),
289
- )
290
- self._try_wrap(
291
- "openai.resources.beta.chat.completions",
292
- "Completions.parse",
293
- chat_wrapper(
294
- tracer,
295
- tokens_histogram,
296
- chat_choice_counter,
297
- duration_histogram,
298
- chat_exception_counter,
299
- streaming_time_to_first_token,
300
- streaming_time_to_generate,
301
- ),
302
- )
303
- self._try_wrap(
304
- "openai.resources.beta.chat.completions",
305
- "AsyncCompletions.parse",
306
- achat_wrapper(
307
- tracer,
308
- tokens_histogram,
309
- chat_choice_counter,
310
- duration_histogram,
311
- chat_exception_counter,
312
- streaming_time_to_first_token,
313
- streaming_time_to_generate,
314
- ),
315
- )
316
- self._try_wrap(
317
- "openai.resources.beta.threads.runs",
318
- "Runs.create",
319
- runs_create_wrapper(tracer),
320
- )
321
- self._try_wrap(
322
- "openai.resources.beta.threads.runs",
323
- "Runs.retrieve",
324
- runs_retrieve_wrapper(tracer),
325
- )
326
- self._try_wrap(
327
- "openai.resources.beta.threads.runs",
328
- "Runs.create_and_stream",
329
- runs_create_and_stream_wrapper(tracer),
330
- )
331
- self._try_wrap(
332
- "openai.resources.beta.threads.messages",
333
- "Messages.list",
334
- messages_list_wrapper(tracer),
335
- )
336
- self._try_wrap(
337
- "openai.resources.responses",
338
- "Responses.create",
339
- responses_get_or_create_wrapper(tracer),
340
- )
341
- self._try_wrap(
342
- "openai.resources.responses",
343
- "Responses.retrieve",
344
- responses_get_or_create_wrapper(tracer),
345
- )
346
- self._try_wrap(
347
- "openai.resources.responses",
348
- "Responses.cancel",
349
- responses_cancel_wrapper(tracer),
350
- )
351
- self._try_wrap(
352
- "openai.resources.responses",
353
- "AsyncResponses.create",
354
- async_responses_get_or_create_wrapper(tracer),
355
- )
356
- self._try_wrap(
357
- "openai.resources.responses",
358
- "AsyncResponses.retrieve",
359
- async_responses_get_or_create_wrapper(tracer),
360
- )
361
- self._try_wrap(
362
- "openai.resources.responses",
363
- "AsyncResponses.cancel",
364
- async_responses_cancel_wrapper(tracer),
365
- )
366
-
367
- def _uninstrument(self, **kwargs):
368
- unwrap("openai.resources.chat.completions", "Completions.create")
369
- unwrap("openai.resources.completions", "Completions.create")
370
- unwrap("openai.resources.embeddings", "Embeddings.create")
371
- unwrap("openai.resources.chat.completions", "AsyncCompletions.create")
372
- unwrap("openai.resources.completions", "AsyncCompletions.create")
373
- unwrap("openai.resources.embeddings", "AsyncEmbeddings.create")
374
- unwrap("openai.resources.images", "Images.generate")
375
- unwrap("openai.resources.audio.transcriptions", "Transcriptions.create")
376
- unwrap("openai.resources.audio.transcriptions", "AsyncTranscriptions.create")
377
-
378
- # Beta APIs may not be available consistently in all versions
379
- try:
380
- unwrap("openai.resources.beta.assistants", "Assistants.create")
381
- unwrap("openai.resources.beta.chat.completions", "Completions.parse")
382
- unwrap("openai.resources.beta.chat.completions", "AsyncCompletions.parse")
383
- unwrap("openai.resources.beta.threads.runs", "Runs.create")
384
- unwrap("openai.resources.beta.threads.runs", "Runs.retrieve")
385
- unwrap("openai.resources.beta.threads.runs", "Runs.create_and_stream")
386
- unwrap("openai.resources.beta.threads.messages", "Messages.list")
387
- unwrap("openai.resources.responses", "Responses.create")
388
- unwrap("openai.resources.responses", "Responses.retrieve")
389
- unwrap("openai.resources.responses", "Responses.cancel")
390
- unwrap("openai.resources.responses", "AsyncResponses.create")
391
- unwrap("openai.resources.responses", "AsyncResponses.retrieve")
392
- unwrap("openai.resources.responses", "AsyncResponses.cancel")
393
- except ImportError:
394
- pass