checkout-intents 0.1.0__py3-none-any.whl → 0.3.0__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.
@@ -13,6 +13,7 @@ from .base_checkout_intent import BaseCheckoutIntent as BaseCheckoutIntent
13
13
  from .payment_method_param import PaymentMethodParam as PaymentMethodParam
14
14
  from .brand_retrieve_response import BrandRetrieveResponse as BrandRetrieveResponse
15
15
  from .variant_selection_param import VariantSelectionParam as VariantSelectionParam
16
+ from .checkout_intent_list_params import CheckoutIntentListParams as CheckoutIntentListParams
16
17
  from .checkout_intent_create_params import CheckoutIntentCreateParams as CheckoutIntentCreateParams
17
18
  from .checkout_intent_confirm_params import CheckoutIntentConfirmParams as CheckoutIntentConfirmParams
18
19
  from .checkout_intent_add_payment_params import CheckoutIntentAddPaymentParams as CheckoutIntentAddPaymentParams
@@ -30,6 +30,8 @@ class AwaitingConfirmationCheckoutIntent(BaseCheckoutIntent):
30
30
 
31
31
  state: Literal["awaiting_confirmation"]
32
32
 
33
+ payment_method: Optional[PaymentMethod] = FieldInfo(alias="paymentMethod", default=None)
34
+
33
35
 
34
36
  class PlacingOrderCheckoutIntent(BaseCheckoutIntent):
35
37
  offer: Offer
@@ -42,6 +44,8 @@ class PlacingOrderCheckoutIntent(BaseCheckoutIntent):
42
44
  class CompletedCheckoutIntent(BaseCheckoutIntent):
43
45
  offer: Offer
44
46
 
47
+ order_id: Optional[str] = FieldInfo(alias="orderId", default=None)
48
+
45
49
  payment_method: PaymentMethod = FieldInfo(alias="paymentMethod")
46
50
 
47
51
  state: Literal["completed"]
@@ -58,6 +62,7 @@ class FailedCheckoutIntentFailureReason(BaseModel):
58
62
  "developer_not_found",
59
63
  "missing_shipping_method",
60
64
  "unsupported_currency",
65
+ "invalid_input",
61
66
  "unsupported_store_no_guest_checkout",
62
67
  ]
63
68
 
@@ -0,0 +1,22 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import List
6
+ from typing_extensions import Literal, TypedDict
7
+
8
+ from .._types import SequenceNotStr
9
+
10
+ __all__ = ["CheckoutIntentListParams"]
11
+
12
+
13
+ class CheckoutIntentListParams(TypedDict, total=False):
14
+ id: SequenceNotStr[str]
15
+
16
+ after: str
17
+
18
+ before: str
19
+
20
+ limit: float
21
+
22
+ state: List[Literal["retrieving_offer", "awaiting_confirmation", "placing_order", "completed", "failed"]]
@@ -1,15 +1,34 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- from typing_extensions import Literal
3
+ from typing import Dict, Union, Optional
4
+ from typing_extensions import Literal, TypeAlias
4
5
 
5
6
  from pydantic import Field as FieldInfo
6
7
 
7
8
  from .._models import BaseModel
8
9
 
9
- __all__ = ["PaymentMethod"]
10
+ __all__ = ["PaymentMethod", "StripeTokenPaymentMethod", "BasisTheoryPaymentMethod", "NekudaPaymentMethod"]
10
11
 
11
12
 
12
- class PaymentMethod(BaseModel):
13
+ class StripeTokenPaymentMethod(BaseModel):
13
14
  stripe_token: str = FieldInfo(alias="stripeToken")
14
15
 
15
16
  type: Literal["stripe_token"]
17
+
18
+
19
+ class BasisTheoryPaymentMethod(BaseModel):
20
+ basis_theory_token: str = FieldInfo(alias="basisTheoryToken")
21
+
22
+ type: Literal["basis_theory_token"]
23
+
24
+
25
+ class NekudaPaymentMethod(BaseModel):
26
+ nekuda_user_id: str = FieldInfo(alias="nekudaUserId")
27
+
28
+ type: Literal["nekuda_token"]
29
+
30
+ nekuda_mandate_data: Optional[Dict[str, Union[str, float]]] = FieldInfo(alias="nekudaMandateData", default=None)
31
+ """Construct a type with a set of properties K of type T"""
32
+
33
+
34
+ PaymentMethod: TypeAlias = Union[StripeTokenPaymentMethod, BasisTheoryPaymentMethod, NekudaPaymentMethod]
@@ -2,14 +2,33 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing_extensions import Literal, Required, Annotated, TypedDict
5
+ from typing import Dict, Union
6
+ from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict
6
7
 
7
8
  from .._utils import PropertyInfo
8
9
 
9
- __all__ = ["PaymentMethodParam"]
10
+ __all__ = ["PaymentMethodParam", "StripeTokenPaymentMethod", "BasisTheoryPaymentMethod", "NekudaPaymentMethod"]
10
11
 
11
12
 
12
- class PaymentMethodParam(TypedDict, total=False):
13
+ class StripeTokenPaymentMethod(TypedDict, total=False):
13
14
  stripe_token: Required[Annotated[str, PropertyInfo(alias="stripeToken")]]
14
15
 
15
16
  type: Required[Literal["stripe_token"]]
17
+
18
+
19
+ class BasisTheoryPaymentMethod(TypedDict, total=False):
20
+ basis_theory_token: Required[Annotated[str, PropertyInfo(alias="basisTheoryToken")]]
21
+
22
+ type: Required[Literal["basis_theory_token"]]
23
+
24
+
25
+ class NekudaPaymentMethod(TypedDict, total=False):
26
+ nekuda_user_id: Required[Annotated[str, PropertyInfo(alias="nekudaUserId")]]
27
+
28
+ type: Required[Literal["nekuda_token"]]
29
+
30
+ nekuda_mandate_data: Annotated[Dict[str, Union[str, float]], PropertyInfo(alias="nekudaMandateData")]
31
+ """Construct a type with a set of properties K of type T"""
32
+
33
+
34
+ PaymentMethodParam: TypeAlias = Union[StripeTokenPaymentMethod, BasisTheoryPaymentMethod, NekudaPaymentMethod]
@@ -9,13 +9,5 @@ __all__ = ["VariantSelection"]
9
9
 
10
10
  class VariantSelection(BaseModel):
11
11
  label: str
12
- """The label of the variant being selected.
13
-
14
- Match this label with what is used on the product page.
15
- """
16
12
 
17
13
  value: Union[str, float]
18
- """The value of the variant being selected.
19
-
20
- Match this value with what is used on the product page.
21
- """
@@ -10,13 +10,5 @@ __all__ = ["VariantSelectionParam"]
10
10
 
11
11
  class VariantSelectionParam(TypedDict, total=False):
12
12
  label: Required[str]
13
- """The label of the variant being selected.
14
-
15
- Match this label with what is used on the product page.
16
- """
17
13
 
18
14
  value: Required[Union[str, float]]
19
- """The value of the variant being selected.
20
-
21
- Match this value with what is used on the product page.
22
- """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: checkout-intents
3
- Version: 0.1.0
3
+ Version: 0.3.0
4
4
  Summary: The official Python library for the Checkout Intents API
5
5
  Project-URL: Homepage, https://github.com/rye-com/checkout-intents-python
6
6
  Project-URL: Repository, https://github.com/rye-com/checkout-intents-python
@@ -59,9 +59,11 @@ pip install checkout-intents
59
59
  The full API of this library can be found in [api.md](https://github.com/rye-com/checkout-intents-python/tree/main/api.md).
60
60
 
61
61
  ```python
62
+ import os
62
63
  from checkout_intents import CheckoutIntents
63
64
 
64
65
  client = CheckoutIntents(
66
+ api_key=os.environ.get("CHECKOUT_INTENTS_API_KEY"), # This is the default and can be omitted
65
67
  # defaults to "staging".
66
68
  environment="production",
67
69
  )
@@ -74,7 +76,7 @@ checkout_intent = client.checkout_intents.create(
74
76
  "email": "john.doe@example.com",
75
77
  "first_name": "John",
76
78
  "last_name": "Doe",
77
- "phone": "5555555555",
79
+ "phone": "1234567890",
78
80
  "postal_code": "10001",
79
81
  "province": "NY",
80
82
  },
@@ -88,15 +90,109 @@ we recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)
88
90
  to add `CHECKOUT_INTENTS_API_KEY="My API Key"` to your `.env` file
89
91
  so that your API Key is not stored in source control.
90
92
 
93
+ ### Polling Helpers
94
+
95
+ This SDK includes helper methods for the asynchronous checkout flow. The recommended pattern follows Rye's two-phase checkout:
96
+
97
+ ```python
98
+ from checkout_intents import CheckoutIntents
99
+
100
+ client = CheckoutIntents()
101
+
102
+ # Phase 1: Create and wait for offer
103
+ intent = client.checkout_intents.create_and_poll(
104
+ buyer={
105
+ "address1": "123 Main St",
106
+ "city": "New York",
107
+ "country": "US",
108
+ "email": "john.doe@example.com",
109
+ "first_name": "John",
110
+ "last_name": "Doe",
111
+ "phone": "1234567890",
112
+ "postal_code": "10001",
113
+ "province": "NY",
114
+ },
115
+ product_url="https://example.com/product",
116
+ quantity=1,
117
+ )
118
+
119
+ # Handle failure during offer retrieval
120
+ if intent.state == "failed":
121
+ print(f"Failed: {intent.failure_reason}")
122
+ else:
123
+ # Review pricing with user
124
+ print(f"Total: {intent.offer.cost.total}")
125
+
126
+ # Phase 2: Confirm and wait for completion
127
+ completed = client.checkout_intents.confirm_and_poll(
128
+ intent.id,
129
+ payment_method={
130
+ "type": "stripe_token",
131
+ "stripe_token": "tok_visa",
132
+ },
133
+ )
134
+
135
+ print(f"Status: {completed.state}")
136
+ ```
137
+
138
+ For more examples, see the [`examples/`](https://github.com/rye-com/checkout-intents-python/tree/main/./examples) directory:
139
+
140
+ - [`complete-checkout-intent.py`](https://github.com/rye-com/checkout-intents-python/tree/main/./examples/complete-checkout-intent.py) - Recommended two-phase flow
141
+ - [`error-handling.py`](https://github.com/rye-com/checkout-intents-python/tree/main/./examples/error-handling.py) - Timeout and error handling with `PollTimeoutError`
142
+
143
+ Available polling methods:
144
+
145
+ - `create_and_poll()` - Create and poll until offer is ready (awaiting_confirmation or failed)
146
+ - `confirm_and_poll()` - Confirm and poll until completion (completed or failed)
147
+ - `poll_until_completed()` - Poll until completed or failed
148
+ - `poll_until_awaiting_confirmation()` - Poll until offer is ready or failed
149
+
150
+ All polling methods support customizable timeouts:
151
+
152
+ ```python
153
+ # Configure polling behavior
154
+ intent = client.checkout_intents.poll_until_completed(
155
+ intent_id,
156
+ poll_interval=5.0, # Poll every 5 seconds (default)
157
+ max_attempts=120, # Try up to 120 times, ~10 minutes (default)
158
+ )
159
+ ```
160
+
161
+ #### Handling Polling Timeouts
162
+
163
+ When polling operations exceed `max_attempts`, a `PollTimeoutError` is raised with helpful context:
164
+
165
+ ```python
166
+ from checkout_intents import CheckoutIntents, PollTimeoutError
167
+
168
+ client = CheckoutIntents()
169
+
170
+ try:
171
+ intent = client.checkout_intents.poll_until_completed(
172
+ intent_id,
173
+ poll_interval=5.0,
174
+ max_attempts=60,
175
+ )
176
+ except PollTimeoutError as e:
177
+ print(f"Polling timed out for intent: {e.intent_id}")
178
+ print(f"Attempted {e.attempts} times over {(e.attempts * e.poll_interval) / 1000}s")
179
+
180
+ # You can retrieve the current state manually
181
+ current_intent = client.checkout_intents.retrieve(e.intent_id)
182
+ print(f"Current state: {current_intent.state}")
183
+ ```
184
+
91
185
  ## Async usage
92
186
 
93
187
  Simply import `AsyncCheckoutIntents` instead of `CheckoutIntents` and use `await` with each API call:
94
188
 
95
189
  ```python
190
+ import os
96
191
  import asyncio
97
192
  from checkout_intents import AsyncCheckoutIntents
98
193
 
99
194
  client = AsyncCheckoutIntents(
195
+ api_key=os.environ.get("CHECKOUT_INTENTS_API_KEY"), # This is the default and can be omitted
100
196
  # defaults to "staging".
101
197
  environment="production",
102
198
  )
@@ -111,7 +207,7 @@ async def main() -> None:
111
207
  "email": "john.doe@example.com",
112
208
  "first_name": "John",
113
209
  "last_name": "Doe",
114
- "phone": "5555555555",
210
+ "phone": "1234567890",
115
211
  "postal_code": "10001",
116
212
  "province": "NY",
117
213
  },
@@ -146,6 +242,7 @@ from checkout_intents import AsyncCheckoutIntents
146
242
 
147
243
  async def main() -> None:
148
244
  async with AsyncCheckoutIntents(
245
+ api_key="My API Key",
149
246
  http_client=DefaultAioHttpClient(),
150
247
  ) as client:
151
248
  checkout_intent = await client.checkout_intents.create(
@@ -156,7 +253,7 @@ async def main() -> None:
156
253
  "email": "john.doe@example.com",
157
254
  "first_name": "John",
158
255
  "last_name": "Doe",
159
- "phone": "5555555555",
256
+ "phone": "1234567890",
160
257
  "postal_code": "10001",
161
258
  "province": "NY",
162
259
  },
@@ -177,6 +274,77 @@ Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typ
177
274
 
178
275
  Typed requests and responses provide autocomplete and documentation within your editor. If you would like to see type errors in VS Code to help catch bugs earlier, set `python.analysis.typeCheckingMode` to `basic`.
179
276
 
277
+ ## Pagination
278
+
279
+ List methods in the Checkout Intents API are paginated.
280
+
281
+ This library provides auto-paginating iterators with each list response, so you do not have to request successive pages manually:
282
+
283
+ ```python
284
+ from checkout_intents import CheckoutIntents
285
+
286
+ client = CheckoutIntents()
287
+
288
+ all_checkout_intents = []
289
+ # Automatically fetches more pages as needed.
290
+ for checkout_intent in client.checkout_intents.list(
291
+ limit=20,
292
+ ):
293
+ # Do something with checkout_intent here
294
+ all_checkout_intents.append(checkout_intent)
295
+ print(all_checkout_intents)
296
+ ```
297
+
298
+ Or, asynchronously:
299
+
300
+ ```python
301
+ import asyncio
302
+ from checkout_intents import AsyncCheckoutIntents
303
+
304
+ client = AsyncCheckoutIntents()
305
+
306
+
307
+ async def main() -> None:
308
+ all_checkout_intents = []
309
+ # Iterate through items across all pages, issuing requests as needed.
310
+ async for checkout_intent in client.checkout_intents.list(
311
+ limit=20,
312
+ ):
313
+ all_checkout_intents.append(checkout_intent)
314
+ print(all_checkout_intents)
315
+
316
+
317
+ asyncio.run(main())
318
+ ```
319
+
320
+ Alternatively, you can use the `.has_next_page()`, `.next_page_info()`, or `.get_next_page()` methods for more granular control working with pages:
321
+
322
+ ```python
323
+ first_page = await client.checkout_intents.list(
324
+ limit=20,
325
+ )
326
+ if first_page.has_next_page():
327
+ print(f"will fetch next page using these details: {first_page.next_page_info()}")
328
+ next_page = await first_page.get_next_page()
329
+ print(f"number of items we just fetched: {len(next_page.data)}")
330
+
331
+ # Remove `await` for non-async usage.
332
+ ```
333
+
334
+ Or just work directly with the returned data:
335
+
336
+ ```python
337
+ first_page = await client.checkout_intents.list(
338
+ limit=20,
339
+ )
340
+
341
+ print(f"next page cursor: {first_page.page_info.end_cursor}") # => "next page cursor: ..."
342
+ for checkout_intent in first_page.data:
343
+ print(checkout_intent)
344
+
345
+ # Remove `await` for non-async usage.
346
+ ```
347
+
180
348
  ## Nested params
181
349
 
182
350
  Nested parameters are dictionaries, typed using `TypedDict`, for example:
@@ -194,12 +362,12 @@ checkout_intent = client.checkout_intents.create(
194
362
  "email": "john.doe@example.com",
195
363
  "first_name": "John",
196
364
  "last_name": "Doe",
197
- "phone": "5555555555",
365
+ "phone": "1234567890",
198
366
  "postal_code": "10001",
199
367
  "province": "NY",
200
368
  },
201
369
  product_url="productUrl",
202
- quantity=0,
370
+ quantity=1,
203
371
  )
204
372
  print(checkout_intent.buyer)
205
373
  ```
@@ -228,7 +396,7 @@ try:
228
396
  "email": "john.doe@example.com",
229
397
  "first_name": "John",
230
398
  "last_name": "Doe",
231
- "phone": "5555555555",
399
+ "phone": "1234567890",
232
400
  "postal_code": "10001",
233
401
  "province": "NY",
234
402
  },
@@ -258,6 +426,26 @@ Error codes are as follows:
258
426
  | 429 | `RateLimitError` |
259
427
  | >=500 | `InternalServerError` |
260
428
  | N/A | `APIConnectionError` |
429
+ | N/A | `PollTimeoutError` |
430
+
431
+ ### Polling Timeout Errors
432
+
433
+ When using polling helper methods, if the operation exceeds the configured `max_attempts`, a `PollTimeoutError` is raised. This error includes detailed context about the timeout:
434
+
435
+ ```python
436
+ from checkout_intents import CheckoutIntents, PollTimeoutError
437
+
438
+ try:
439
+ intent = client.checkout_intents.poll_until_completed("intent_id")
440
+ except PollTimeoutError as e:
441
+ # Access timeout details
442
+ print(f"Intent ID: {e.intent_id}")
443
+ print(f"Attempts: {e.attempts}")
444
+ print(f"Poll interval: {e.poll_interval}s")
445
+ print(f"Max attempts: {e.max_attempts}")
446
+ ```
447
+
448
+ See the [error-handling.py example](https://github.com/rye-com/checkout-intents-python/tree/main/./examples/error-handling.py) for more detailed timeout handling patterns.
261
449
 
262
450
  ### Retries
263
451
 
@@ -285,7 +473,7 @@ client.with_options(max_retries=5).checkout_intents.create(
285
473
  "email": "john.doe@example.com",
286
474
  "first_name": "John",
287
475
  "last_name": "Doe",
288
- "phone": "5555555555",
476
+ "phone": "1234567890",
289
477
  "postal_code": "10001",
290
478
  "province": "NY",
291
479
  },
@@ -322,7 +510,7 @@ client.with_options(timeout=5.0).checkout_intents.create(
322
510
  "email": "john.doe@example.com",
323
511
  "first_name": "John",
324
512
  "last_name": "Doe",
325
- "phone": "5555555555",
513
+ "phone": "1234567890",
326
514
  "postal_code": "10001",
327
515
  "province": "NY",
328
516
  },
@@ -377,7 +565,7 @@ response = client.checkout_intents.with_raw_response.create(
377
565
  "email": "john.doe@example.com",
378
566
  "first_name": "John",
379
567
  "last_name": "Doe",
380
- "phone": "5555555555",
568
+ "phone": "1234567890",
381
569
  "postal_code": "10001",
382
570
  "province": "NY",
383
571
  },
@@ -409,7 +597,7 @@ with client.checkout_intents.with_streaming_response.create(
409
597
  "email": "john.doe@example.com",
410
598
  "first_name": "John",
411
599
  "last_name": "Doe",
412
- "phone": "5555555555",
600
+ "phone": "1234567890",
413
601
  "postal_code": "10001",
414
602
  "province": "NY",
415
603
  },
@@ -1,20 +1,21 @@
1
- checkout_intents/__init__.py,sha256=_Y4Qxqr-oIONV3M6jqtFF1yMOaH_iOT7Em7EmCroKAY,2787
1
+ checkout_intents/__init__.py,sha256=5m0_Ktnyya4CJ0vdWZbAv7qZMeR1VnXqN_MJtH3RJTM,2833
2
2
  checkout_intents/_base_client.py,sha256=eB43s-6F0_5tyH_e9uX-HAovJJu6D9DdMGVcI2zP4qc,67057
3
- checkout_intents/_client.py,sha256=jzpmFQeUmVwWQRYy5r2q77OAaO74BSghPPfR5FVrOPs,18814
3
+ checkout_intents/_client.py,sha256=px36nDPT8_lNISKkVjZhI_AZvFJ5KwRyVjQjPycia0s,21798
4
4
  checkout_intents/_compat.py,sha256=DQBVORjFb33zch24jzkhM14msvnzY7mmSmgDLaVFUM8,6562
5
5
  checkout_intents/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
6
- checkout_intents/_exceptions.py,sha256=hwQX-kTpgIyHAc2zsdnyNU1h8fxQN_O4nw5srxROooU,3238
6
+ checkout_intents/_exceptions.py,sha256=oQn7Y6LzccgRDOtdg20l68bXtgf2tgVNKIrufJPDsuk,4252
7
7
  checkout_intents/_files.py,sha256=KnEzGi_O756MvKyJ4fOCW_u3JhOeWPQ4RsmDvqihDQU,3545
8
- checkout_intents/_models.py,sha256=_jpXNYoIJGzLCqeD4LcmiD4UgZKYMLg4cZ8TcWUn94I,30559
8
+ checkout_intents/_models.py,sha256=m6hDet9vdfyY7TuzbLCBYhMPoIN6hddOZp9qDZ-zfVU,31995
9
9
  checkout_intents/_qs.py,sha256=craIKyvPktJ94cvf9zn8j8ekG9dWJzhWv0ob34lIOv4,4828
10
10
  checkout_intents/_resource.py,sha256=X-eWffEBAgzTZvakLqNUjwgidMKfBFRmCeeOiuko4lg,1154
11
11
  checkout_intents/_response.py,sha256=sLqxWBxzmVqPsdr2x5z6d87h8jb1U-Huvh2YFg-U6nE,28876
12
12
  checkout_intents/_streaming.py,sha256=XOY20ljJEmOSf-nT8_KvPZipmgllR5sO400ePyMVLIY,10185
13
13
  checkout_intents/_types.py,sha256=4l2pVH65co-2pua9stzq-WV2VcGg9Hl4nRHd0lz5cko,7246
14
- checkout_intents/_version.py,sha256=EAZcX0kAfIydwo7T3jYb_O2Svh_deoksAmQGQqT2ytw,168
14
+ checkout_intents/_version.py,sha256=b6f1sszRV4F0XFdxyUsIskPuEMW3RU89IL3iY4K3_gk,168
15
+ checkout_intents/pagination.py,sha256=VMe3ftq-qqAku2ERRTOz7iZOoMQ_KKp2HIUl_I8oAXE,2908
15
16
  checkout_intents/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
17
  checkout_intents/_utils/__init__.py,sha256=7fch0GT9zpNnErbciSpUNa-SjTxxjY6kxHxKMOM4AGs,2305
17
- checkout_intents/_utils/_compat.py,sha256=D8gtAvjJQrDWt9upS0XaG9Rr5l1QhiAx_I_1utT_tt0,1195
18
+ checkout_intents/_utils/_compat.py,sha256=rN17SSvjMoQE1GmKFTLniRuG1sKj2WAD5VjdLPeRlF0,1231
18
19
  checkout_intents/_utils/_datetime_parse.py,sha256=bABTs0Bc6rabdFvnIwXjEhWL15TcRgWZ_6XGTqN8xUk,4204
19
20
  checkout_intents/_utils/_logs.py,sha256=dw1slZVPfWp0Z_jBGEQvr8TDY0uu3V7pJuexM_MG4pk,804
20
21
  checkout_intents/_utils/_proxy.py,sha256=aglnj2yBTDyGX9Akk2crZHrl10oqRmceUy2Zp008XEs,1975
@@ -24,27 +25,28 @@ checkout_intents/_utils/_streams.py,sha256=SMC90diFFecpEg_zgDRVbdR3hSEIgVVij4taD
24
25
  checkout_intents/_utils/_sync.py,sha256=HBnZkkBnzxtwOZe0212C4EyoRvxhTVtTrLFDz2_xVCg,1589
25
26
  checkout_intents/_utils/_transform.py,sha256=NjCzmnfqYrsAikUHQig6N9QfuTVbKipuP3ur9mcNF-E,15951
26
27
  checkout_intents/_utils/_typing.py,sha256=N_5PPuFNsaygbtA_npZd98SVN1LQQvFTKL6bkWPBZGU,4786
27
- checkout_intents/_utils/_utils.py,sha256=ugfUaneOK7I8h9b3656flwf5u_kthY0gvNuqvgOLoSU,12252
28
+ checkout_intents/_utils/_utils.py,sha256=g9ftElB09kVT6EVfCIlD_nUfANhDX5_vZO61FDWoIQI,12334
28
29
  checkout_intents/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
29
30
  checkout_intents/resources/__init__.py,sha256=sHRW0nwo1GnFBFPoTNohkEbvOk7au-R3MdfVn_yb8Ds,1120
30
- checkout_intents/resources/brands.py,sha256=LylMXefUeP4G540jtG8QHRAKwTMZHKI7vJhWnACS5Dc,6349
31
- checkout_intents/resources/checkout_intents.py,sha256=lqkOZkvAW-dMzcyReRaLllczKQG4WmIDCnZ9uTsUzH0,19054
32
- checkout_intents/types/__init__.py,sha256=QHuqIegrR01arvPOp6GI2C8VUw3o37KNxr2KDtjh0eE,1098
31
+ checkout_intents/resources/brands.py,sha256=jJ5Jn2GG3MPkdKSg6_OG89dSQTaSGM9e7lBtovn-ABE,6389
32
+ checkout_intents/resources/checkout_intents.py,sha256=C59jKLf-FxbtNfuSSxxCtp6Ona7hP4S26kV342xAlic,54375
33
+ checkout_intents/types/__init__.py,sha256=bcfwLNTB5CbPquNwxpMRoJkL5LM6HckISeGRPlVX2js,1192
33
34
  checkout_intents/types/base_checkout_intent.py,sha256=56Qp3ssWYmcdu6A9Z0pvL3ewm1LTvQHiboiJ7Aogx2M,644
34
35
  checkout_intents/types/brand_retrieve_response.py,sha256=1Z7yjrXl3NO1u9NFO5lDBJ-sucpEH501MUfUS_XeqbY,550
35
36
  checkout_intents/types/buyer.py,sha256=Ov6mVD-Hjm9A-i9p2dWCXtniLhYpG_6jvy9DReC54YQ,530
36
37
  checkout_intents/types/buyer_param.py,sha256=DAtEoK4VSzv2qDBBlC4RRE4FbHd87pieTOlfRntbjqg,695
37
- checkout_intents/types/checkout_intent.py,sha256=7Wv8rv3bU_C7dZYqzgJoBEKFHyKQQrXhQJ1nm2ByIjk,2124
38
+ checkout_intents/types/checkout_intent.py,sha256=Vkn0Q3fXr5a776luw06mjl6AkL8geBOdpIVTIvO7Quk,2315
38
39
  checkout_intents/types/checkout_intent_add_payment_params.py,sha256=s8KKWVM3XainGTLCwdfUjb5vgS80o2_W0wwUwRCFbk0,479
39
40
  checkout_intents/types/checkout_intent_confirm_params.py,sha256=v_fcmuH5GoEwUJLbV7N9BDti63dg8z1nmhpcr4-1qcs,473
40
41
  checkout_intents/types/checkout_intent_create_params.py,sha256=nQ5l74ABrn7t-nE7Hnw50hQ8VKyvu54LYia2hnp1twE,693
42
+ checkout_intents/types/checkout_intent_list_params.py,sha256=zc8_xwBHChOcl7bTMSjU7ZbHKIyQGYeUy5UrxeloJj0,521
41
43
  checkout_intents/types/money.py,sha256=-AfFFrfnUy6cAaFykF_gWZQxDGlzA1r_dJzJZRxhUto,328
42
44
  checkout_intents/types/offer.py,sha256=pxem4nhE9pMd-o9sfKipPuxyZg5WWur1w46oBfwHpB8,809
43
- checkout_intents/types/payment_method.py,sha256=Mw85dZNa0z7Sr5FoQ9_nOUOjjKEHoE2xCHa2PCwn-Qc,352
44
- checkout_intents/types/payment_method_param.py,sha256=jbqAao2w7wxEHd_nshOthmZ53Ww7I4EiFmddpa_ejis,437
45
- checkout_intents/types/variant_selection.py,sha256=M8O6CpcpIlFqfPlQW_wFcJ6rwt459n6dJkjLkLB1klk,493
46
- checkout_intents/types/variant_selection_param.py,sha256=CMz4y1bDpuHNpnUmCcyeiYs6uwLBS9CJwo9iSpGMu-Q,589
47
- checkout_intents-0.1.0.dist-info/METADATA,sha256=5IyIauLcYzfpz0EOC7OHMBCH2x-_F9lvP1o7wHWh6hM,17734
48
- checkout_intents-0.1.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
49
- checkout_intents-0.1.0.dist-info/licenses/LICENSE,sha256=dRDmL6lFnLaphTaman8kAc21qY1IQ_qsAETk1F-b6jY,1056
50
- checkout_intents-0.1.0.dist-info/RECORD,,
45
+ checkout_intents/types/payment_method.py,sha256=-v5-L5RPojm8IDrdAhIMGmhVb89vwqT1jhgb-ZWOG7Q,1069
46
+ checkout_intents/types/payment_method_param.py,sha256=_yzwZ5nw7bStK4U2-1ybtpjdJz5funCOMN7MALtF0xk,1225
47
+ checkout_intents/types/variant_selection.py,sha256=y6mlU-qGwDfE77mU-x1GTXkDsmn6vuPpy5lBYXqXCBw,259
48
+ checkout_intents/types/variant_selection_param.py,sha256=ahwTmDVIUMV8jvpggEo2jDUTIm9xvXbntDxmIZqT2_k,355
49
+ checkout_intents-0.3.0.dist-info/METADATA,sha256=XeHU9g_6C9ySd22J3buv63o9uk16Rsd67yBf8Bh80Pk,23626
50
+ checkout_intents-0.3.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
51
+ checkout_intents-0.3.0.dist-info/licenses/LICENSE,sha256=dRDmL6lFnLaphTaman8kAc21qY1IQ_qsAETk1F-b6jY,1056
52
+ checkout_intents-0.3.0.dist-info/RECORD,,