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.
- paid/__init__.py +65 -95
- paid/client.py +17 -494
- paid/contacts/client.py +415 -133
- paid/contacts/raw_client.py +1046 -118
- paid/core/client_wrapper.py +9 -10
- paid/customers/client.py +270 -566
- paid/customers/raw_client.py +731 -537
- paid/environment.py +1 -1
- paid/errors/bad_request_error.py +2 -2
- paid/errors/forbidden_error.py +2 -2
- paid/errors/internal_server_error.py +2 -2
- paid/errors/not_found_error.py +2 -2
- paid/invoices/client.py +369 -0
- paid/invoices/raw_client.py +692 -0
- paid/orders/__init__.py +0 -3
- paid/orders/client.py +371 -128
- paid/orders/raw_client.py +829 -121
- paid/products/__init__.py +0 -3
- paid/products/client.py +129 -265
- paid/products/raw_client.py +563 -233
- paid/signals/client.py +130 -0
- paid/signals/raw_client.py +190 -0
- paid/tracing/autoinstrumentation.py +12 -6
- paid/tracing/context_manager.py +2 -6
- paid/tracing/distributed_tracing.py +3 -3
- paid/tracing/signal.py +3 -3
- paid/tracing/wrappers/openai_agents/openaiAgentsHook.py +1 -1
- paid/types/__init__.py +62 -86
- paid/types/attribution.py +8 -0
- paid/types/{agent_attribute.py → bulk_signals_response.py} +4 -5
- paid/types/contact.py +12 -20
- paid/types/{address.py → contact_billing_address.py} +6 -7
- paid/types/{traces_response.py → contact_list_response.py} +5 -9
- paid/types/customer.py +15 -22
- paid/types/customer_attribution.py +8 -0
- paid/types/customer_billing_address.py +26 -0
- paid/types/{usage_summary_order.py → customer_by_external_id.py} +3 -5
- paid/types/{usage_summary_order_line.py → customer_by_id.py} +3 -5
- paid/types/customer_creation_state.py +5 -0
- paid/types/customer_list_response.py +22 -0
- paid/types/empty_response.py +17 -0
- paid/types/{error.py → error_response.py} +4 -7
- paid/types/invoice.py +57 -0
- paid/types/invoice_line.py +42 -0
- paid/types/invoice_line_payment_status.py +7 -0
- paid/types/invoice_lines_response.py +22 -0
- paid/types/invoice_list_response.py +22 -0
- paid/types/invoice_payment_status.py +5 -0
- paid/types/invoice_source.py +5 -0
- paid/types/invoice_status.py +7 -0
- paid/types/invoice_tax_status.py +7 -0
- paid/types/order.py +30 -29
- paid/types/order_creation_state.py +5 -0
- paid/types/order_line.py +6 -24
- paid/types/order_lines_response.py +22 -0
- paid/types/order_list_response.py +22 -0
- paid/types/pagination.py +24 -0
- paid/types/product.py +4 -29
- paid/types/{tier.py → product_by_external_id.py} +5 -4
- paid/types/{cost_amount.py → product_by_id.py} +5 -12
- paid/types/product_list_response.py +22 -0
- paid/types/signal.py +8 -34
- paid/types/{agent.py → update_contact_request.py} +10 -11
- paid/types/update_customer_request.py +38 -0
- paid/types/{product_update.py → update_product_request.py} +2 -12
- {paid_python-0.6.0.dist-info → paid_python-1.0.0a1.dist-info}/METADATA +27 -11
- paid_python-1.0.0a1.dist-info/RECORD +110 -0
- opentelemetry/instrumentation/openai/__init__.py +0 -54
- opentelemetry/instrumentation/openai/shared/__init__.py +0 -399
- opentelemetry/instrumentation/openai/shared/audio_wrappers.py +0 -247
- opentelemetry/instrumentation/openai/shared/chat_wrappers.py +0 -1192
- opentelemetry/instrumentation/openai/shared/completion_wrappers.py +0 -292
- opentelemetry/instrumentation/openai/shared/config.py +0 -15
- opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py +0 -311
- opentelemetry/instrumentation/openai/shared/event_emitter.py +0 -108
- opentelemetry/instrumentation/openai/shared/event_models.py +0 -41
- opentelemetry/instrumentation/openai/shared/image_gen_wrappers.py +0 -68
- opentelemetry/instrumentation/openai/shared/span_utils.py +0 -0
- opentelemetry/instrumentation/openai/utils.py +0 -213
- opentelemetry/instrumentation/openai/v0/__init__.py +0 -176
- opentelemetry/instrumentation/openai/v1/__init__.py +0 -394
- opentelemetry/instrumentation/openai/v1/assistant_wrappers.py +0 -329
- opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py +0 -134
- opentelemetry/instrumentation/openai/v1/responses_wrappers.py +0 -1113
- opentelemetry/instrumentation/openai/version.py +0 -1
- paid/agents/client.py +0 -880
- paid/agents/raw_client.py +0 -785
- paid/orders/lines/client.py +0 -144
- paid/orders/lines/raw_client.py +0 -129
- paid/plans/__init__.py +0 -4
- paid/plans/client.py +0 -332
- paid/plans/raw_client.py +0 -464
- paid/products/types/__init__.py +0 -7
- paid/products/types/product_create_type.py +0 -5
- paid/traces/__init__.py +0 -4
- paid/traces/client.py +0 -218
- paid/traces/raw_client.py +0 -226
- paid/types/agent_price_point.py +0 -27
- paid/types/agent_price_point_tiers.py +0 -23
- paid/types/agent_update.py +0 -29
- paid/types/api_error.py +0 -29
- paid/types/billing_frequency.py +0 -5
- paid/types/charge_type.py +0 -5
- paid/types/cost_trace.py +0 -55
- paid/types/cost_traces_response.py +0 -26
- paid/types/creation_source.py +0 -5
- paid/types/creation_state.py +0 -5
- paid/types/customer_update.py +0 -40
- paid/types/entitlement_usage.py +0 -48
- paid/types/order_line_attribute.py +0 -27
- paid/types/order_line_attribute_create_one.py +0 -5
- paid/types/order_line_attribute_pricing.py +0 -33
- paid/types/order_line_create.py +0 -72
- paid/types/pagination_meta.py +0 -84
- paid/types/plan.py +0 -81
- paid/types/plan_group.py +0 -60
- paid/types/plan_plan_products_item.py +0 -35
- paid/types/plan_plan_products_item_plan_product_attribute_item.py +0 -34
- paid/types/price_point.py +0 -25
- paid/types/pricing.py +0 -31
- paid/types/pricing_model_type.py +0 -7
- paid/types/product_type.py +0 -5
- paid/types/product_update_type.py +0 -5
- paid/types/salutation.py +0 -5
- paid/types/signal_v_2.py +0 -56
- paid/types/tax_exempt_status.py +0 -5
- paid/types/trace.py +0 -69
- paid/types/usage_pagination_meta.py +0 -43
- paid/types/usage_summaries_response.py +0 -26
- paid/types/usage_summary.py +0 -121
- paid/usage/__init__.py +0 -7
- paid/usage/client.py +0 -321
- paid/usage/raw_client.py +0 -387
- paid/usage/types/__init__.py +0 -7
- paid/usage/types/usage_check_usage_response.py +0 -53
- paid_python-0.6.0.dist-info/RECORD +0 -153
- /paid/{agents → invoices}/__init__.py +0 -0
- /paid/{orders/lines → signals}/__init__.py +0 -0
- {paid_python-0.6.0.dist-info → paid_python-1.0.0a1.dist-info}/LICENSE +0 -0
- {paid_python-0.6.0.dist-info → paid_python-1.0.0a1.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .order import Order
|
|
8
|
+
from .pagination import Pagination
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class OrderListResponse(UniversalBaseModel):
|
|
12
|
+
data: typing.List[Order]
|
|
13
|
+
pagination: Pagination
|
|
14
|
+
|
|
15
|
+
if IS_PYDANTIC_V2:
|
|
16
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
17
|
+
else:
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
frozen = True
|
|
21
|
+
smart_union = True
|
|
22
|
+
extra = pydantic.Extra.allow
|
paid/types/pagination.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
import typing_extensions
|
|
7
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
8
|
+
from ..core.serialization import FieldMetadata
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Pagination(UniversalBaseModel):
|
|
12
|
+
limit: int
|
|
13
|
+
offset: int
|
|
14
|
+
total: int
|
|
15
|
+
has_more: typing_extensions.Annotated[bool, FieldMetadata(alias="hasMore")]
|
|
16
|
+
|
|
17
|
+
if IS_PYDANTIC_V2:
|
|
18
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
19
|
+
else:
|
|
20
|
+
|
|
21
|
+
class Config:
|
|
22
|
+
frozen = True
|
|
23
|
+
smart_union = True
|
|
24
|
+
extra = pydantic.Extra.allow
|
paid/types/product.py
CHANGED
|
@@ -7,44 +7,19 @@ import pydantic
|
|
|
7
7
|
import typing_extensions
|
|
8
8
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
9
9
|
from ..core.serialization import FieldMetadata
|
|
10
|
-
from .agent_attribute import AgentAttribute
|
|
11
|
-
from .product_type import ProductType
|
|
12
10
|
|
|
13
11
|
|
|
14
12
|
class Product(UniversalBaseModel):
|
|
15
|
-
"""
|
|
16
|
-
A product in the Paid system (previously called Agent)
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
13
|
id: str
|
|
20
|
-
external_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="externalId")] = None
|
|
21
|
-
display_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="displayId")] = pydantic.Field(
|
|
22
|
-
default=None
|
|
23
|
-
)
|
|
24
|
-
"""
|
|
25
|
-
Human-readable display ID
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
organization_id: typing_extensions.Annotated[str, FieldMetadata(alias="organizationId")]
|
|
29
14
|
name: str
|
|
30
15
|
description: typing.Optional[str] = None
|
|
31
|
-
|
|
32
|
-
""
|
|
33
|
-
The type of product
|
|
34
|
-
"""
|
|
35
|
-
|
|
16
|
+
created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")]
|
|
17
|
+
updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")]
|
|
36
18
|
active: bool
|
|
37
19
|
product_code: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="productCode")] = None
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
] = pydantic.Field(default=None)
|
|
41
|
-
"""
|
|
42
|
-
Pricing attributes for this product
|
|
43
|
-
"""
|
|
44
|
-
|
|
20
|
+
external_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="externalId")] = None
|
|
21
|
+
archived_at: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="archivedAt")] = None
|
|
45
22
|
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
|
|
46
|
-
created_at: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="createdAt")] = None
|
|
47
|
-
updated_at: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="updatedAt")] = None
|
|
48
23
|
|
|
49
24
|
if IS_PYDANTIC_V2:
|
|
50
25
|
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
@@ -8,10 +8,11 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
|
8
8
|
from ..core.serialization import FieldMetadata
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
class ProductByExternalId(UniversalBaseModel):
|
|
12
|
+
external_product_id: typing_extensions.Annotated[str, FieldMetadata(alias="externalProductId")] = pydantic.Field()
|
|
13
|
+
"""
|
|
14
|
+
Your external product ID
|
|
15
|
+
"""
|
|
15
16
|
|
|
16
17
|
if IS_PYDANTIC_V2:
|
|
17
18
|
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
@@ -3,22 +3,15 @@
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
5
|
import pydantic
|
|
6
|
+
import typing_extensions
|
|
6
7
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
8
|
+
from ..core.serialization import FieldMetadata
|
|
7
9
|
|
|
8
10
|
|
|
9
|
-
class
|
|
11
|
+
class ProductById(UniversalBaseModel):
|
|
12
|
+
product_id: typing_extensions.Annotated[str, FieldMetadata(alias="productId")] = pydantic.Field()
|
|
10
13
|
"""
|
|
11
|
-
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
amount: float = pydantic.Field()
|
|
15
|
-
"""
|
|
16
|
-
The cost amount
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
currency: str = pydantic.Field()
|
|
20
|
-
"""
|
|
21
|
-
The currency code (e.g., "USD")
|
|
14
|
+
The Paid product ID
|
|
22
15
|
"""
|
|
23
16
|
|
|
24
17
|
if IS_PYDANTIC_V2:
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .pagination import Pagination
|
|
8
|
+
from .product import Product
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ProductListResponse(UniversalBaseModel):
|
|
12
|
+
data: typing.List[Product]
|
|
13
|
+
pagination: Pagination
|
|
14
|
+
|
|
15
|
+
if IS_PYDANTIC_V2:
|
|
16
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
17
|
+
else:
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
frozen = True
|
|
21
|
+
smart_union = True
|
|
22
|
+
extra = pydantic.Extra.allow
|
paid/types/signal.py
CHANGED
|
@@ -3,45 +3,19 @@
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
5
|
import pydantic
|
|
6
|
+
import typing_extensions
|
|
6
7
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
8
|
+
from ..core.serialization import FieldMetadata
|
|
9
|
+
from .attribution import Attribution
|
|
10
|
+
from .customer_attribution import CustomerAttribution
|
|
7
11
|
|
|
8
12
|
|
|
9
13
|
class Signal(UniversalBaseModel):
|
|
10
|
-
""
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
event_name: typing.Optional[str] = None
|
|
15
|
-
agent_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
16
|
-
"""
|
|
17
|
-
DEPRECATED: Use product_id in SignalV2 instead.
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
external_agent_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
21
|
-
"""
|
|
22
|
-
DEPRECATED: Use external_product_id in SignalV2 instead.
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
customer_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
26
|
-
"""
|
|
27
|
-
DEPRECATED: The external customer id. Use `external_customer_id` or `internal_customer_id` instead.
|
|
28
|
-
"""
|
|
29
|
-
|
|
14
|
+
event_name: typing_extensions.Annotated[str, FieldMetadata(alias="eventName")]
|
|
15
|
+
customer: CustomerAttribution
|
|
16
|
+
attribution: typing.Optional[Attribution] = None
|
|
30
17
|
data: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
|
|
31
|
-
idempotency_key: typing.Optional[str] =
|
|
32
|
-
"""
|
|
33
|
-
A unique key to ensure idempotent signal processing
|
|
34
|
-
"""
|
|
35
|
-
|
|
36
|
-
internal_customer_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
37
|
-
"""
|
|
38
|
-
DEPRECATED: Use customer_id in SignalV2 instead. This was Paid's internal customer ID.
|
|
39
|
-
"""
|
|
40
|
-
|
|
41
|
-
external_customer_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
42
|
-
"""
|
|
43
|
-
Your system's customer ID
|
|
44
|
-
"""
|
|
18
|
+
idempotency_key: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="idempotencyKey")] = None
|
|
45
19
|
|
|
46
20
|
if IS_PYDANTIC_V2:
|
|
47
21
|
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
@@ -6,20 +6,19 @@ import pydantic
|
|
|
6
6
|
import typing_extensions
|
|
7
7
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
8
8
|
from ..core.serialization import FieldMetadata
|
|
9
|
-
from .
|
|
9
|
+
from .contact_billing_address import ContactBillingAddress
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
class
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
agent_attributes: typing_extensions.Annotated[
|
|
21
|
-
typing.Optional[typing.List[AgentAttribute]], FieldMetadata(alias="agentAttributes")
|
|
12
|
+
class UpdateContactRequest(UniversalBaseModel):
|
|
13
|
+
customer_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="customerId")] = None
|
|
14
|
+
first_name: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="firstName")] = None
|
|
15
|
+
last_name: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="lastName")] = None
|
|
16
|
+
email: typing.Optional[str] = None
|
|
17
|
+
phone: typing.Optional[str] = None
|
|
18
|
+
billing_address: typing_extensions.Annotated[
|
|
19
|
+
typing.Optional[ContactBillingAddress], FieldMetadata(alias="billingAddress")
|
|
22
20
|
] = None
|
|
21
|
+
external_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="externalId")] = None
|
|
23
22
|
|
|
24
23
|
if IS_PYDANTIC_V2:
|
|
25
24
|
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import datetime as dt
|
|
4
|
+
import typing
|
|
5
|
+
|
|
6
|
+
import pydantic
|
|
7
|
+
import typing_extensions
|
|
8
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
9
|
+
from ..core.serialization import FieldMetadata
|
|
10
|
+
from .customer_billing_address import CustomerBillingAddress
|
|
11
|
+
from .customer_creation_state import CustomerCreationState
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class UpdateCustomerRequest(UniversalBaseModel):
|
|
15
|
+
name: typing.Optional[str] = None
|
|
16
|
+
legal_name: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="legalName")] = None
|
|
17
|
+
email: typing.Optional[str] = None
|
|
18
|
+
phone: typing.Optional[str] = None
|
|
19
|
+
website: typing.Optional[str] = None
|
|
20
|
+
external_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="externalId")] = None
|
|
21
|
+
billing_address: typing_extensions.Annotated[
|
|
22
|
+
typing.Optional[CustomerBillingAddress], FieldMetadata(alias="billingAddress")
|
|
23
|
+
] = None
|
|
24
|
+
creation_state: typing_extensions.Annotated[
|
|
25
|
+
typing.Optional[CustomerCreationState], FieldMetadata(alias="creationState")
|
|
26
|
+
] = None
|
|
27
|
+
churn_date: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="churnDate")] = None
|
|
28
|
+
vat_number: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="vatNumber")] = None
|
|
29
|
+
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
|
|
30
|
+
|
|
31
|
+
if IS_PYDANTIC_V2:
|
|
32
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
33
|
+
else:
|
|
34
|
+
|
|
35
|
+
class Config:
|
|
36
|
+
frozen = True
|
|
37
|
+
smart_union = True
|
|
38
|
+
extra = pydantic.Extra.allow
|
|
@@ -6,24 +6,14 @@ import pydantic
|
|
|
6
6
|
import typing_extensions
|
|
7
7
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
8
8
|
from ..core.serialization import FieldMetadata
|
|
9
|
-
from .agent_attribute import AgentAttribute
|
|
10
|
-
from .product_update_type import ProductUpdateType
|
|
11
9
|
|
|
12
10
|
|
|
13
|
-
class
|
|
11
|
+
class UpdateProductRequest(UniversalBaseModel):
|
|
14
12
|
name: typing.Optional[str] = None
|
|
15
13
|
description: typing.Optional[str] = None
|
|
16
|
-
external_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="externalId")] = None
|
|
17
|
-
type: typing.Optional[ProductUpdateType] = None
|
|
18
14
|
active: typing.Optional[bool] = None
|
|
19
15
|
product_code: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="productCode")] = None
|
|
20
|
-
|
|
21
|
-
typing.Optional[typing.List[AgentAttribute]], FieldMetadata(alias="ProductAttribute")
|
|
22
|
-
] = pydantic.Field(default=None)
|
|
23
|
-
"""
|
|
24
|
-
Pricing attributes for this product
|
|
25
|
-
"""
|
|
26
|
-
|
|
16
|
+
external_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="externalId")] = None
|
|
27
17
|
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
|
|
28
18
|
|
|
29
19
|
if IS_PYDANTIC_V2:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: paid-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0a1
|
|
4
4
|
Summary:
|
|
5
5
|
Requires-Python: >=3.9,<3.14
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -15,9 +15,10 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
18
19
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
20
|
Classifier: Typing :: Typed
|
|
20
|
-
Requires-Dist: httpx (>=0.21.
|
|
21
|
+
Requires-Dist: httpx (>=0.21.2)
|
|
21
22
|
Requires-Dist: mutagen (>=1.47.0)
|
|
22
23
|
Requires-Dist: openinference-instrumentation-bedrock (>=0.1.0)
|
|
23
24
|
Requires-Dist: openinference-instrumentation-google-genai (>=0.1.8)
|
|
@@ -26,9 +27,10 @@ Requires-Dist: openinference-instrumentation-openai-agents (>=1.0.0)
|
|
|
26
27
|
Requires-Dist: opentelemetry-api (>=1.23.0)
|
|
27
28
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http (>=1.23.0)
|
|
28
29
|
Requires-Dist: opentelemetry-instrumentation-anthropic (>=0.47.0)
|
|
30
|
+
Requires-Dist: opentelemetry-instrumentation-openai (>=0.50.0)
|
|
29
31
|
Requires-Dist: opentelemetry-sdk (>=1.23.0)
|
|
30
|
-
Requires-Dist: pydantic (>=1.9.
|
|
31
|
-
Requires-Dist: pydantic-core (>=2.18.0)
|
|
32
|
+
Requires-Dist: pydantic (>=1.9.2)
|
|
33
|
+
Requires-Dist: pydantic-core (>=2.18.2,<3.0.0)
|
|
32
34
|
Requires-Dist: python-dotenv (>=0.15.0)
|
|
33
35
|
Requires-Dist: typing_extensions (>=4.0.0)
|
|
34
36
|
Description-Content-Type: text/markdown
|
|
@@ -76,7 +78,7 @@ from paid import Paid
|
|
|
76
78
|
|
|
77
79
|
client = Paid(token="API_KEY")
|
|
78
80
|
|
|
79
|
-
client.customers.
|
|
81
|
+
client.customers.create_a_new_customer(
|
|
80
82
|
name="name"
|
|
81
83
|
)
|
|
82
84
|
```
|
|
@@ -87,7 +89,7 @@ The SDK provides Python classes for all request and response types. These are au
|
|
|
87
89
|
|
|
88
90
|
```python
|
|
89
91
|
# Example of creating a customer
|
|
90
|
-
response = client.customers.
|
|
92
|
+
response = client.customers.create_a_new_customer(
|
|
91
93
|
name="John Doe",
|
|
92
94
|
)
|
|
93
95
|
|
|
@@ -101,13 +103,21 @@ print(response.email)
|
|
|
101
103
|
When the API returns a non-success status code (4xx or 5xx response), the SDK will raise an appropriate error.
|
|
102
104
|
|
|
103
105
|
```python
|
|
106
|
+
from paid import BadRequestError, NotFoundError
|
|
107
|
+
from paid.core.api_error import ApiError
|
|
108
|
+
|
|
104
109
|
try:
|
|
105
|
-
client.customers.
|
|
106
|
-
except
|
|
110
|
+
client.customers.create_a_new_customer(name="John Doe")
|
|
111
|
+
except BadRequestError as e:
|
|
112
|
+
print(e.status_code) # 400
|
|
113
|
+
print(e.body) # ErrorResponse with error details
|
|
114
|
+
except NotFoundError as e:
|
|
115
|
+
print(e.status_code) # 404
|
|
116
|
+
print(e.body)
|
|
117
|
+
except ApiError as e:
|
|
118
|
+
# Catch-all for other API errors
|
|
107
119
|
print(e.status_code)
|
|
108
|
-
print(e.message)
|
|
109
120
|
print(e.body)
|
|
110
|
-
print(e.raw_response)
|
|
111
121
|
```
|
|
112
122
|
|
|
113
123
|
## Logging
|
|
@@ -152,6 +162,7 @@ export PAID_ENABLED=false
|
|
|
152
162
|
```
|
|
153
163
|
|
|
154
164
|
This is useful for:
|
|
165
|
+
|
|
155
166
|
- Development/testing environments where tracing isn't needed
|
|
156
167
|
- Temporarily disabling tracing without modifying code
|
|
157
168
|
- Feature flagging in different deployment environments
|
|
@@ -213,11 +224,13 @@ Both approaches:
|
|
|
213
224
|
- Support the same parameters: `external_customer_id`, `external_product_id`, `tracing_token`, `store_prompt`, `metadata`
|
|
214
225
|
|
|
215
226
|
* Note - if it happens that you're calling `paid_tracing` from non-main thread, then it's advised to initialize from main thread:
|
|
227
|
+
|
|
216
228
|
```python
|
|
217
229
|
from paid.tracing import initialize_tracing
|
|
218
230
|
initialize_tracing()
|
|
219
231
|
```
|
|
220
|
-
|
|
232
|
+
|
|
233
|
+
- `initialize_tracing` also accepts optional arguments like OTEL collector endpoint and api key if you want to reroute your tracing somewhere else :)
|
|
221
234
|
|
|
222
235
|
### Using the Paid wrappers
|
|
223
236
|
|
|
@@ -300,6 +313,7 @@ You can attach custom metadata to your traces by passing a `metadata` dictionary
|
|
|
300
313
|
|
|
301
314
|
process_event(incoming_event)
|
|
302
315
|
```
|
|
316
|
+
|
|
303
317
|
</Tab>
|
|
304
318
|
|
|
305
319
|
<Tab title="Python - Context Manager">
|
|
@@ -334,6 +348,7 @@ You can attach custom metadata to your traces by passing a `metadata` dictionary
|
|
|
334
348
|
):
|
|
335
349
|
process_event(incoming_event)
|
|
336
350
|
```
|
|
351
|
+
|
|
337
352
|
</Tab>
|
|
338
353
|
|
|
339
354
|
<Tab title="Node.js">
|
|
@@ -770,6 +785,7 @@ await do_work()
|
|
|
770
785
|
### Paid OTEL Tracer Provider
|
|
771
786
|
|
|
772
787
|
If you would like to use the Paid OTEL tracer provider:
|
|
788
|
+
|
|
773
789
|
```python
|
|
774
790
|
from paid.tracing import get_paid_tracer_provider
|
|
775
791
|
paid_tracer_provider = get_paid_tracer_provider()
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
paid/__init__.py,sha256=6m_GmocptMPX6LExm6-xQp_2lbd9eCWByLFVba6IwzU,2304
|
|
2
|
+
paid/client.py,sha256=WpVtnBUNu_olaiVatkwT9PzR9cnYbPSg1BnutTWqXNw,6508
|
|
3
|
+
paid/contacts/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
|
4
|
+
paid/contacts/client.py,sha256=8HUUdqHPy4U51jA-QIfO1t5rUvsQ7ffi4rz4GlRfJV8,20767
|
|
5
|
+
paid/contacts/raw_client.py,sha256=Qhxd2BnPZWATHg5osC-9pVYRcoHJDlHKzS9xOlcXk9k,53755
|
|
6
|
+
paid/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
|
|
7
|
+
paid/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
|
|
8
|
+
paid/core/client_wrapper.py,sha256=CW2IjYCun_HGBWN4cLY_Wq8XWqCbnH9cXkbyzpy9flI,2250
|
|
9
|
+
paid/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
|
10
|
+
paid/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
|
|
11
|
+
paid/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
|
|
12
|
+
paid/core/http_client.py,sha256=QurkBvCZZz2Z1d8znp4M2YbOXebBUPcPXRhPIS84Wvk,21214
|
|
13
|
+
paid/core/http_response.py,sha256=4uOAtXXFTyFXHLXeQWSfQST9PGcOCRAdHVgGTxdyg84,1334
|
|
14
|
+
paid/core/jsonable_encoder.py,sha256=hGgcEEeX11sqxxsll7h15pO3pTNVxk_n79Kcn0laoWA,3655
|
|
15
|
+
paid/core/pydantic_utilities.py,sha256=HxbbISfaP1XBvzbIkc0ZcF_GHKd9BfYsJAcFh9B126k,10787
|
|
16
|
+
paid/core/query_encoder.py,sha256=ekulqNd0j8TgD7ox-Qbz7liqX8-KP9blvT9DsRCenYM,2144
|
|
17
|
+
paid/core/remove_none_from_dict.py,sha256=EU9SGgYidWq7SexuJbNs4-PZ-5Bl3Vppd864mS6vQZw,342
|
|
18
|
+
paid/core/request_options.py,sha256=h0QUNCFVdCW_7GclVySCAY2w4NhtXVBUCmHgmzaxpcg,1681
|
|
19
|
+
paid/core/serialization.py,sha256=ECL3bvv_0i7U4uvPidZCNel--MUbA0iq0aGcNKi3kws,9818
|
|
20
|
+
paid/customers/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
|
21
|
+
paid/customers/client.py,sha256=_UDA71l--2cni1VAXYSB2MxJGZMqUjOaEWb2QSyOJ7o,24411
|
|
22
|
+
paid/customers/raw_client.py,sha256=xt-MESxwFXguTl1umEoFGzbCzIGFQaC7fjPwp_bFEBE,57785
|
|
23
|
+
paid/environment.py,sha256=ZD9ZhcWXkKDJ-gkIyv9k86w1-3Fy3o0Y1ivNao4-Oig,161
|
|
24
|
+
paid/errors/__init__.py,sha256=i1Cxfwfm2tL1DRuYRbTEXZ5MIhobgDE8zm38gqGSNKY,363
|
|
25
|
+
paid/errors/bad_request_error.py,sha256=8YeeU1pvrmePf-GsOtENIQY-X88pArGYskLDK0qPGn4,373
|
|
26
|
+
paid/errors/forbidden_error.py,sha256=S4-q7biEKqqZoY3vW0it49EeYkdR_u2p3DYzxD5A8fY,372
|
|
27
|
+
paid/errors/internal_server_error.py,sha256=qqVfFsLvs14COaHjgUUZv-_GKe2wIraZyHKMGMaMFtg,377
|
|
28
|
+
paid/errors/not_found_error.py,sha256=J4qzyBLJ3TMvRqxK65coEAoi7O7WHoufRSKi4aNtJ1s,371
|
|
29
|
+
paid/invoices/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
|
30
|
+
paid/invoices/client.py,sha256=0szLix_Wra0_IK3TM0SCyHtaS_uv_UlpWZz6-FZbTtQ,9112
|
|
31
|
+
paid/invoices/raw_client.py,sha256=Dfq-ZNlKNjUtrhODWuFFBNtaiyjILdKuRmp3ygdUcNE,25405
|
|
32
|
+
paid/logger.py,sha256=CIo_i2n2Azp4g57GkU9twb_GzJ7x9lZmURqPsq4379M,514
|
|
33
|
+
paid/orders/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
|
34
|
+
paid/orders/client.py,sha256=BZBH10iQ6vvJtpDbRa7W_WQZxkd0PBHM0-ty8nxD05Y,18947
|
|
35
|
+
paid/orders/raw_client.py,sha256=YDNbxM9ST0JRNNWEit4iDJah6v0VT1zodcca-Y5u0uA,43044
|
|
36
|
+
paid/products/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
|
37
|
+
paid/products/client.py,sha256=uoQ2cJi_AiOuIvKZdbtAIzEx-UzvZPELf2ZFPYgNBdE,16704
|
|
38
|
+
paid/products/raw_client.py,sha256=V4pc1PJa3azPYFo2WjJE8s2e9LvYrYz5ac3x5nFk3tQ,41489
|
|
39
|
+
paid/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
|
+
paid/signals/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
|
41
|
+
paid/signals/client.py,sha256=5SMcdrTxMTBrT6W_PDI1HCBunSli86YXYX8wLzjYuDI,4024
|
|
42
|
+
paid/signals/raw_client.py,sha256=2FiZLh1fQzrR1HCg-HJqKkDgvma-augsfTzroVA4maM,7649
|
|
43
|
+
paid/tracing/__init__.py,sha256=fwjE0SnDWxNZKpYFnLB9IfTMa5ZIfLejs1aM4UA57yY,564
|
|
44
|
+
paid/tracing/autoinstrumentation.py,sha256=hbmJgf2vv769gs2IBxX_dpI9RWO0Cepy8qybiY1mL08,8152
|
|
45
|
+
paid/tracing/context_data.py,sha256=oiLocz-9qDqB5nQzJlrLsc2Mkr9MaNt_yF_hjppobKc,3298
|
|
46
|
+
paid/tracing/context_manager.py,sha256=8UISHMxNI-FNSzPvmeeC7fdkmxBIeYCVl-HkJwQoJzQ,8562
|
|
47
|
+
paid/tracing/distributed_tracing.py,sha256=VJZbg6t6sNTEw4kX3BhvKWUbIzLp-ao-M7K7Pqfrqmo,4003
|
|
48
|
+
paid/tracing/signal.py,sha256=Tbg-ebGoNsFCW7GyY1pSAclBEmEGDudcj1kNembDNGs,3264
|
|
49
|
+
paid/tracing/tracing.py,sha256=MCIqzRELFB6VbvFrnpIp7bLX7HYfpHnmUapDLcAEioE,16478
|
|
50
|
+
paid/tracing/wrappers/__init__.py,sha256=IIleLB_JUbzLw7FshrU2VHZAKF3dZHMGy1O5zCBwwqM,1588
|
|
51
|
+
paid/tracing/wrappers/anthropic/__init__.py,sha256=_x1fjySAQxuT5cIGO_jU09LiGcZH-WQLqKg8mUFAu2w,115
|
|
52
|
+
paid/tracing/wrappers/anthropic/anthropicWrapper.py,sha256=pGchbOb41CbTxc7H8xXoM-LjR085spqrzXqCVC_rrFk,4913
|
|
53
|
+
paid/tracing/wrappers/bedrock/__init__.py,sha256=HSeZYbslJuWU5xWJm2rAHz4sL_Hxb70iJjTyAOoJj3s,67
|
|
54
|
+
paid/tracing/wrappers/bedrock/bedrockWrapper.py,sha256=aKfGpbkGqJfI-9QX7O-3vkf15Fi35pPyDxOjydTNpQk,1962
|
|
55
|
+
paid/tracing/wrappers/gemini/__init__.py,sha256=6tzEaxuuYcJEtQHlxzjPLqJuEDY2cZe6QC_ZvZCHMS4,64
|
|
56
|
+
paid/tracing/wrappers/gemini/geminiWrapper.py,sha256=xXp8gJyT4k39CWCni_Whnua4dEdyFLtYPK9Wqa9ZByU,3837
|
|
57
|
+
paid/tracing/wrappers/langchain/__init__.py,sha256=LDNPT9UoZen-8f5K0-FO2-Bau7jpeM0Ht3FxctfWW3w,101
|
|
58
|
+
paid/tracing/wrappers/langchain/paidLangChainCallback.py,sha256=2wKFGsYaHwBl24o0UtBZsGne5SGObbaZH54nKvIP3wI,12794
|
|
59
|
+
paid/tracing/wrappers/llamaindex/__init__.py,sha256=bM2bibDwbb_cmvQehb8i-fi9XwSx2HAk6qpGee7wnu8,88
|
|
60
|
+
paid/tracing/wrappers/llamaindex/llamaIndexWrapper.py,sha256=p4Ft7PhZ5cQ_QWeKmdJlYEH75u0seNVBMiXfki8O7sU,3271
|
|
61
|
+
paid/tracing/wrappers/mistral/__init__.py,sha256=_Z1DVul6JBG9vYSXSc9mpm0M4l8GebBWSxwBodGQnew,74
|
|
62
|
+
paid/tracing/wrappers/mistral/mistralWrapper.py,sha256=IgK_N5tEj4HDLKxw3uwJYiXB9BQyxLNF-04uiNHMD5Y,8265
|
|
63
|
+
paid/tracing/wrappers/openai/__init__.py,sha256=pfaL3O4f4WOS47UUcdZbDbZSNB9fsTyE_WLqqBahVzs,100
|
|
64
|
+
paid/tracing/wrappers/openai/openAiWrapper.py,sha256=DIMOGdQTjpFaiKV-JeJvNH_cxHsfmzu2wIrKXDwRkbw,22148
|
|
65
|
+
paid/tracing/wrappers/openai_agents/__init__.py,sha256=-xX5HPhYYX6hDWbn5FpFw-P6M2h0k1X9Qjrg0Bkv7cc,94
|
|
66
|
+
paid/tracing/wrappers/openai_agents/openaiAgentsHook.py,sha256=pORdteM-Cm0NYTfxl8-YcEbNVhSafomKmig3u8jvycA,6672
|
|
67
|
+
paid/tracing/wrappers/utils.py,sha256=_0FCF3BC2wK5cU8suEvo_mXm6Jn8ULkyeEhnYPUlO2Y,2347
|
|
68
|
+
paid/types/__init__.py,sha256=7d2MnglOazCm10Wjisp8HsQU32LkfZJfLJ6ZAf2fJQ4,2709
|
|
69
|
+
paid/types/attribution.py,sha256=T8x9BW63O0X0bCa5eq_8GZwE7rWArVruarx5Bdx5yT0,237
|
|
70
|
+
paid/types/bulk_signals_response.py,sha256=-VfR56UTa8M2OOmevFy-0EKgcz5RLNXAE_1iqD0PW1Y,566
|
|
71
|
+
paid/types/contact.py,sha256=aqRs3cdleq40efjs9kGVTRieKu9LgHqC0eDaYOhFdTc,1408
|
|
72
|
+
paid/types/contact_billing_address.py,sha256=Rw_7GH-SSMM-5YfpAISwrbTbLYW2nxvvHmBqD3CbBJc,847
|
|
73
|
+
paid/types/contact_list_response.py,sha256=d1jOsCIDjAWOTu0t2HJBts3jAOCAlZc_fZgHpO_LZ3U,634
|
|
74
|
+
paid/types/customer.py,sha256=Ejwk8YugtQTNiK6dDM0Dot2r4DMoRoxI5LuK0JTSyR4,1751
|
|
75
|
+
paid/types/customer_attribution.py,sha256=A8iObOJOUD1h5Wf7sqlB8ppcJUuKD2X6SRpBnjYOYxM,251
|
|
76
|
+
paid/types/customer_billing_address.py,sha256=PCbuRjCOsPmKQF_SLvCJac__0xO5gpWnXp6A0IYb_fo,886
|
|
77
|
+
paid/types/customer_by_external_id.py,sha256=V8sTJeFOIbMQnfJCaMdxJlEStHtAgxGy0CHlNQu6pzA,752
|
|
78
|
+
paid/types/customer_by_id.py,sha256=WEHYyLbYWJ9Fp2GlvR2KJhuVAMFmL18jxU5Xiri13ek,722
|
|
79
|
+
paid/types/customer_creation_state.py,sha256=ZeExJagYbOJRpzxByRT7ChjhD1dFrnqt7gdiT5XzU8I,164
|
|
80
|
+
paid/types/customer_list_response.py,sha256=dMvmbPuxXxIc67vgPWXKS6bwJeOpXmw8nt6r7momJuU,638
|
|
81
|
+
paid/types/empty_response.py,sha256=niHKOAeq0SX4JfJOn1sAoNhpaK4DSNtK9OBeoZqOz7I,505
|
|
82
|
+
paid/types/error_response.py,sha256=TvU6N8sVWRy-w9blHymiKvvSbbfZZ43Gr9rjhCNDPBQ,600
|
|
83
|
+
paid/types/invoice.py,sha256=RSsa_BM0UVzBUElBvywipniL8V6iegAZeALf1Icg6uM,3465
|
|
84
|
+
paid/types/invoice_line.py,sha256=g4UeS3g3_F9Y5AhUhFlaPT37aOfxEop6XiryJ1dltKY,2061
|
|
85
|
+
paid/types/invoice_line_payment_status.py,sha256=kH5xrnjpzDXcO7gAAyUaI1Y2exN1zdH40q8dxbt3eZo,210
|
|
86
|
+
paid/types/invoice_lines_response.py,sha256=DLY8Sjdkfv1K0eA1uukf7N5XZnidGYq3hvWpZcXg8Q0,648
|
|
87
|
+
paid/types/invoice_list_response.py,sha256=4prBgJ1PAn84CxQk_kG4iHaX2feydG_lQxi0fEynt8I,634
|
|
88
|
+
paid/types/invoice_payment_status.py,sha256=Cj64SVR1J8SYytq08I0gdhcfgf2NHYAFWvvNDVOxnqs,200
|
|
89
|
+
paid/types/invoice_source.py,sha256=IUziukxKnI_GcMneos0O-52J89ZD7xrTxtjYD6S-2W0,162
|
|
90
|
+
paid/types/invoice_status.py,sha256=G-oLWOZebE9TB8GIqp_Stne9EulV-OgpxpVpnNCHUdQ,216
|
|
91
|
+
paid/types/invoice_tax_status.py,sha256=3Y3wBVT5-H3hbhGK27ovrSAvyTwItgwq4fmIVqL49RM,211
|
|
92
|
+
paid/types/order.py,sha256=EbiOaHi8K4kxtZsJ2Jvn3eP_iCCF8NIJZCQHI-bxo_w,2779
|
|
93
|
+
paid/types/order_creation_state.py,sha256=J4vpCsxVWZhSrwN6Qo_k7NTZTIQJKYlUGLDw6cpJHrE,161
|
|
94
|
+
paid/types/order_line.py,sha256=h7DYFWnrKsABOKVomBlvgKn6j0Afb2XqVJqYCEHuO8s,952
|
|
95
|
+
paid/types/order_lines_response.py,sha256=udjqlD4ChJKWMtCKAO5YZI7NkR-kJkcxtTveXntSV-w,640
|
|
96
|
+
paid/types/order_list_response.py,sha256=4QmdROgg-8n6ei6b0MMCu_aW9p0-1gLyQj4wJrmCWSU,626
|
|
97
|
+
paid/types/pagination.py,sha256=CCwgTYMJUJxgz6I7cu1n4-4ZfOl0X0H3NBGTYF_MGE0,701
|
|
98
|
+
paid/types/product.py,sha256=WscwCcoHJ4gFWHtxRhsWVBXgJk3GkQ2u8dMI2Sh3kUw,1285
|
|
99
|
+
paid/types/product_by_external_id.py,sha256=MOvHBdETwsZNY2hOBWkNtLpFIWKFAJbRVu9zziOAUW0,748
|
|
100
|
+
paid/types/product_by_id.py,sha256=O_NSPpCewmwGUCbIpqtw8WVmHg8TB1dsEMILinfTJuc,718
|
|
101
|
+
paid/types/product_list_response.py,sha256=9EDZkJF9Gwl4GPTV_vFWVNWeyfeTG5wkvuX5BMUttGA,634
|
|
102
|
+
paid/types/signal.py,sha256=vtKEUY2o9PS0SYst7qcxFgHN7MWMwR6ps03XOJB1Xcs,1029
|
|
103
|
+
paid/types/update_contact_request.py,sha256=JCLZ8wfOweFr4x3dW9Kx2bpKGNLDsjIImjfdvslOcxQ,1301
|
|
104
|
+
paid/types/update_customer_request.py,sha256=jfBLDFD50CG69OmIUm9G-V73xJ1cQNItmFrpO-e_ggE,1704
|
|
105
|
+
paid/types/update_product_request.py,sha256=y8-8up2EEIoNqtWN1x3Z_E29CjAJKTSS6XASK0hezXA,1013
|
|
106
|
+
paid/version.py,sha256=QIpDFnOrxMxrs86eL0iNH0mSZ1DO078wWHYY9TYAoew,78
|
|
107
|
+
paid_python-1.0.0a1.dist-info/LICENSE,sha256=Nz4baY1zvv0Qy7lqrQtbaiMhmEeGr2Q7A93aqzpml4c,1071
|
|
108
|
+
paid_python-1.0.0a1.dist-info/METADATA,sha256=ixOGvZHL2-Ewj67taaV_K7Bm604LvJ_fvWLrBwiKfRI,24550
|
|
109
|
+
paid_python-1.0.0a1.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
|
110
|
+
paid_python-1.0.0a1.dist-info/RECORD,,
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
from typing import Callable, Collection, Optional
|
|
2
|
-
|
|
3
|
-
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
|
4
|
-
from opentelemetry.instrumentation.openai.shared.config import Config
|
|
5
|
-
from opentelemetry.instrumentation.openai.utils import is_openai_v1
|
|
6
|
-
from typing_extensions import Coroutine
|
|
7
|
-
|
|
8
|
-
_instruments = ("openai >= 0.27.0",)
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class OpenAIInstrumentor(BaseInstrumentor):
|
|
12
|
-
"""An instrumentor for OpenAI's client library."""
|
|
13
|
-
|
|
14
|
-
def __init__(
|
|
15
|
-
self,
|
|
16
|
-
enrich_assistant: bool = False,
|
|
17
|
-
exception_logger=None,
|
|
18
|
-
get_common_metrics_attributes: Callable[[], dict] = lambda: {},
|
|
19
|
-
upload_base64_image: Optional[
|
|
20
|
-
Callable[[str, str, str, str], Coroutine[None, None, str]]
|
|
21
|
-
] = lambda *args: "",
|
|
22
|
-
enable_trace_context_propagation: bool = True,
|
|
23
|
-
use_legacy_attributes: bool = True,
|
|
24
|
-
):
|
|
25
|
-
super().__init__()
|
|
26
|
-
Config.enrich_assistant = enrich_assistant
|
|
27
|
-
Config.exception_logger = exception_logger
|
|
28
|
-
Config.get_common_metrics_attributes = get_common_metrics_attributes
|
|
29
|
-
Config.upload_base64_image = upload_base64_image
|
|
30
|
-
Config.enable_trace_context_propagation = enable_trace_context_propagation
|
|
31
|
-
Config.use_legacy_attributes = use_legacy_attributes
|
|
32
|
-
|
|
33
|
-
def instrumentation_dependencies(self) -> Collection[str]:
|
|
34
|
-
return _instruments
|
|
35
|
-
|
|
36
|
-
def _instrument(self, **kwargs):
|
|
37
|
-
if is_openai_v1():
|
|
38
|
-
from opentelemetry.instrumentation.openai.v1 import OpenAIV1Instrumentor
|
|
39
|
-
|
|
40
|
-
OpenAIV1Instrumentor().instrument(**kwargs)
|
|
41
|
-
else:
|
|
42
|
-
from opentelemetry.instrumentation.openai.v0 import OpenAIV0Instrumentor
|
|
43
|
-
|
|
44
|
-
OpenAIV0Instrumentor().instrument(**kwargs)
|
|
45
|
-
|
|
46
|
-
def _uninstrument(self, **kwargs):
|
|
47
|
-
if is_openai_v1():
|
|
48
|
-
from opentelemetry.instrumentation.openai.v1 import OpenAIV1Instrumentor
|
|
49
|
-
|
|
50
|
-
OpenAIV1Instrumentor().uninstrument(**kwargs)
|
|
51
|
-
else:
|
|
52
|
-
from opentelemetry.instrumentation.openai.v0 import OpenAIV0Instrumentor
|
|
53
|
-
|
|
54
|
-
OpenAIV0Instrumentor().uninstrument(**kwargs)
|