dodopayments 1.30.0__py3-none-any.whl → 1.30.2__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.

Potentially problematic release.


This version of dodopayments might be problematic. Click here for more details.

@@ -960,6 +960,9 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
960
960
  if self.custom_auth is not None:
961
961
  kwargs["auth"] = self.custom_auth
962
962
 
963
+ if options.follow_redirects is not None:
964
+ kwargs["follow_redirects"] = options.follow_redirects
965
+
963
966
  log.debug("Sending HTTP Request: %s %s", request.method, request.url)
964
967
 
965
968
  response = None
@@ -1460,6 +1463,9 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1460
1463
  if self.custom_auth is not None:
1461
1464
  kwargs["auth"] = self.custom_auth
1462
1465
 
1466
+ if options.follow_redirects is not None:
1467
+ kwargs["follow_redirects"] = options.follow_redirects
1468
+
1463
1469
  log.debug("Sending HTTP Request: %s %s", request.method, request.url)
1464
1470
 
1465
1471
  response = None
dodopayments/_models.py CHANGED
@@ -737,6 +737,7 @@ class FinalRequestOptionsInput(TypedDict, total=False):
737
737
  idempotency_key: str
738
738
  json_data: Body
739
739
  extra_json: AnyMapping
740
+ follow_redirects: bool
740
741
 
741
742
 
742
743
  @final
@@ -750,6 +751,7 @@ class FinalRequestOptions(pydantic.BaseModel):
750
751
  files: Union[HttpxRequestFiles, None] = None
751
752
  idempotency_key: Union[str, None] = None
752
753
  post_parser: Union[Callable[[Any], Any], NotGiven] = NotGiven()
754
+ follow_redirects: Union[bool, None] = None
753
755
 
754
756
  # It should be noted that we cannot use `json` here as that would override
755
757
  # a BaseModel method in an incompatible fashion.
dodopayments/_types.py CHANGED
@@ -100,6 +100,7 @@ class RequestOptions(TypedDict, total=False):
100
100
  params: Query
101
101
  extra_json: AnyMapping
102
102
  idempotency_key: str
103
+ follow_redirects: bool
103
104
 
104
105
 
105
106
  # Sentinel class used until PEP 0661 is accepted
@@ -215,3 +216,4 @@ class _GenericAlias(Protocol):
215
216
 
216
217
  class HttpxSendArgs(TypedDict, total=False):
217
218
  auth: httpx.Auth
219
+ follow_redirects: bool
dodopayments/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "dodopayments"
4
- __version__ = "1.30.0" # x-release-please-version
4
+ __version__ = "1.30.2" # x-release-please-version
@@ -6,7 +6,7 @@ from typing import Optional
6
6
 
7
7
  import httpx
8
8
 
9
- from ...types import customer_list_params, customer_create_params
9
+ from ...types import customer_list_params, customer_create_params, customer_update_params
10
10
  from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
11
11
  from ..._utils import maybe_transform, async_maybe_transform
12
12
  from ..._compat import cached_property
@@ -130,6 +130,8 @@ class CustomersResource(SyncAPIResource):
130
130
  self,
131
131
  customer_id: str,
132
132
  *,
133
+ name: Optional[str] | NotGiven = NOT_GIVEN,
134
+ phone_number: Optional[str] | NotGiven = NOT_GIVEN,
133
135
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
134
136
  # The extra values given here take precedence over values defined on the client or passed to this method.
135
137
  extra_headers: Headers | None = None,
@@ -151,6 +153,13 @@ class CustomersResource(SyncAPIResource):
151
153
  raise ValueError(f"Expected a non-empty value for `customer_id` but received {customer_id!r}")
152
154
  return self._patch(
153
155
  f"/customers/{customer_id}",
156
+ body=maybe_transform(
157
+ {
158
+ "name": name,
159
+ "phone_number": phone_number,
160
+ },
161
+ customer_update_params.CustomerUpdateParams,
162
+ ),
154
163
  options=make_request_options(
155
164
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
156
165
  ),
@@ -301,6 +310,8 @@ class AsyncCustomersResource(AsyncAPIResource):
301
310
  self,
302
311
  customer_id: str,
303
312
  *,
313
+ name: Optional[str] | NotGiven = NOT_GIVEN,
314
+ phone_number: Optional[str] | NotGiven = NOT_GIVEN,
304
315
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
305
316
  # The extra values given here take precedence over values defined on the client or passed to this method.
306
317
  extra_headers: Headers | None = None,
@@ -322,6 +333,13 @@ class AsyncCustomersResource(AsyncAPIResource):
322
333
  raise ValueError(f"Expected a non-empty value for `customer_id` but received {customer_id!r}")
323
334
  return await self._patch(
324
335
  f"/customers/{customer_id}",
336
+ body=await async_maybe_transform(
337
+ {
338
+ "name": name,
339
+ "phone_number": phone_number,
340
+ },
341
+ customer_update_params.CustomerUpdateParams,
342
+ ),
325
343
  options=make_request_options(
326
344
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
327
345
  ),
@@ -15,6 +15,7 @@ from ..types import (
15
15
  subscription_charge_params,
16
16
  subscription_create_params,
17
17
  subscription_update_params,
18
+ subscription_change_plan_params,
18
19
  )
19
20
  from .._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
20
21
  from .._utils import maybe_transform, async_maybe_transform
@@ -320,6 +321,10 @@ class SubscriptionsResource(SyncAPIResource):
320
321
  self,
321
322
  subscription_id: str,
322
323
  *,
324
+ product_id: str,
325
+ proration_billing_mode: Literal["prorated_immediately"],
326
+ quantity: int,
327
+ addons: Optional[Iterable[subscription_change_plan_params.Addon]] | NotGiven = NOT_GIVEN,
323
328
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
324
329
  # The extra values given here take precedence over values defined on the client or passed to this method.
325
330
  extra_headers: Headers | None = None,
@@ -329,6 +334,13 @@ class SubscriptionsResource(SyncAPIResource):
329
334
  ) -> None:
330
335
  """
331
336
  Args:
337
+ product_id: Unique identifier of the product to subscribe to
338
+
339
+ quantity: Number of units to subscribe for. Must be at least 1.
340
+
341
+ addons: Addons for the new plan. Note : Leaving this empty would remove any existing
342
+ addons
343
+
332
344
  extra_headers: Send extra headers
333
345
 
334
346
  extra_query: Add additional query parameters to the request
@@ -342,6 +354,15 @@ class SubscriptionsResource(SyncAPIResource):
342
354
  extra_headers = {"Accept": "*/*", **(extra_headers or {})}
343
355
  return self._post(
344
356
  f"/subscriptions/{subscription_id}/change-plan",
357
+ body=maybe_transform(
358
+ {
359
+ "product_id": product_id,
360
+ "proration_billing_mode": proration_billing_mode,
361
+ "quantity": quantity,
362
+ "addons": addons,
363
+ },
364
+ subscription_change_plan_params.SubscriptionChangePlanParams,
365
+ ),
345
366
  options=make_request_options(
346
367
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
347
368
  ),
@@ -673,6 +694,10 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
673
694
  self,
674
695
  subscription_id: str,
675
696
  *,
697
+ product_id: str,
698
+ proration_billing_mode: Literal["prorated_immediately"],
699
+ quantity: int,
700
+ addons: Optional[Iterable[subscription_change_plan_params.Addon]] | NotGiven = NOT_GIVEN,
676
701
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
677
702
  # The extra values given here take precedence over values defined on the client or passed to this method.
678
703
  extra_headers: Headers | None = None,
@@ -682,6 +707,13 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
682
707
  ) -> None:
683
708
  """
684
709
  Args:
710
+ product_id: Unique identifier of the product to subscribe to
711
+
712
+ quantity: Number of units to subscribe for. Must be at least 1.
713
+
714
+ addons: Addons for the new plan. Note : Leaving this empty would remove any existing
715
+ addons
716
+
685
717
  extra_headers: Send extra headers
686
718
 
687
719
  extra_query: Add additional query parameters to the request
@@ -695,6 +727,15 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
695
727
  extra_headers = {"Accept": "*/*", **(extra_headers or {})}
696
728
  return await self._post(
697
729
  f"/subscriptions/{subscription_id}/change-plan",
730
+ body=await async_maybe_transform(
731
+ {
732
+ "product_id": product_id,
733
+ "proration_billing_mode": proration_billing_mode,
734
+ "quantity": quantity,
735
+ "addons": addons,
736
+ },
737
+ subscription_change_plan_params.SubscriptionChangePlanParams,
738
+ ),
698
739
  options=make_request_options(
699
740
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
700
741
  ),
@@ -54,6 +54,7 @@ from .product_list_response import ProductListResponse as ProductListResponse
54
54
  from .product_update_params import ProductUpdateParams as ProductUpdateParams
55
55
  from .customer_create_params import CustomerCreateParams as CustomerCreateParams
56
56
  from .customer_request_param import CustomerRequestParam as CustomerRequestParam
57
+ from .customer_update_params import CustomerUpdateParams as CustomerUpdateParams
57
58
  from .discount_create_params import DiscountCreateParams as DiscountCreateParams
58
59
  from .discount_update_params import DiscountUpdateParams as DiscountUpdateParams
59
60
  from .brand_retrieve_response import BrandRetrieveResponse as BrandRetrieveResponse
@@ -82,6 +83,7 @@ from .brand_update_images_response import BrandUpdateImagesResponse as BrandUpda
82
83
  from .subscription_charge_response import SubscriptionChargeResponse as SubscriptionChargeResponse
83
84
  from .subscription_create_response import SubscriptionCreateResponse as SubscriptionCreateResponse
84
85
  from .attach_existing_customer_param import AttachExistingCustomerParam as AttachExistingCustomerParam
86
+ from .subscription_change_plan_params import SubscriptionChangePlanParams as SubscriptionChangePlanParams
85
87
  from .license_key_instance_list_params import LicenseKeyInstanceListParams as LicenseKeyInstanceListParams
86
88
  from .one_time_product_cart_item_param import OneTimeProductCartItemParam as OneTimeProductCartItemParam
87
89
  from .license_key_instance_update_params import LicenseKeyInstanceUpdateParams as LicenseKeyInstanceUpdateParams
@@ -0,0 +1,14 @@
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 Optional
6
+ from typing_extensions import TypedDict
7
+
8
+ __all__ = ["CustomerUpdateParams"]
9
+
10
+
11
+ class CustomerUpdateParams(TypedDict, total=False):
12
+ name: Optional[str]
13
+
14
+ phone_number: Optional[str]
@@ -0,0 +1,30 @@
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 Iterable, Optional
6
+ from typing_extensions import Literal, Required, TypedDict
7
+
8
+ __all__ = ["SubscriptionChangePlanParams", "Addon"]
9
+
10
+
11
+ class SubscriptionChangePlanParams(TypedDict, total=False):
12
+ product_id: Required[str]
13
+ """Unique identifier of the product to subscribe to"""
14
+
15
+ proration_billing_mode: Required[Literal["prorated_immediately"]]
16
+
17
+ quantity: Required[int]
18
+ """Number of units to subscribe for. Must be at least 1."""
19
+
20
+ addons: Optional[Iterable[Addon]]
21
+ """
22
+ Addons for the new plan. Note : Leaving this empty would remove any existing
23
+ addons
24
+ """
25
+
26
+
27
+ class Addon(TypedDict, total=False):
28
+ addon_id: Required[str]
29
+
30
+ quantity: Required[int]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dodopayments
3
- Version: 1.30.0
3
+ Version: 1.30.2
4
4
  Summary: The official Python library for the Dodo Payments API
5
5
  Project-URL: Homepage, https://github.com/dodopayments/dodopayments-python
6
6
  Project-URL: Repository, https://github.com/dodopayments/dodopayments-python
@@ -1,17 +1,17 @@
1
1
  dodopayments/__init__.py,sha256=0Tw56xhRmutF9qfrtOmmfar-Rzl_5LYcWgsdu73tt14,2661
2
- dodopayments/_base_client.py,sha256=L1uR4FGZPe2sXxx0nAXx3pGO7vH9BtQDEWWKJL2bGtQ,64850
2
+ dodopayments/_base_client.py,sha256=TL9C7-5v2Hhhkbvjt_OZefo3j1UMaI_gvdEBexsNxWg,65098
3
3
  dodopayments/_client.py,sha256=6gxmSa9iNmeNzmpy05mph0aAbrzFU8P0swS3oYc0dKY,27376
4
4
  dodopayments/_compat.py,sha256=VWemUKbj6DDkQ-O4baSpHVLJafotzeXmCQGJugfVTIw,6580
5
5
  dodopayments/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
6
6
  dodopayments/_exceptions.py,sha256=NgI0bxilB8xXOfjBWCzr-Y7t1aIJGMqCQRXvSyy29cM,3232
7
7
  dodopayments/_files.py,sha256=mf4dOgL4b0ryyZlbqLhggD3GVgDf6XxdGFAgce01ugE,3549
8
- dodopayments/_models.py,sha256=mB2r2VWQq49jG-F0RIXDrBxPp3v-Eg12wMOtVTNxtv4,29057
8
+ dodopayments/_models.py,sha256=G1vczEodX0vUySeVKbF-mbzlaObNL1oVAYH4c65agRk,29131
9
9
  dodopayments/_qs.py,sha256=AOkSz4rHtK4YI3ZU_kzea-zpwBUgEY8WniGmTPyEimc,4846
10
10
  dodopayments/_resource.py,sha256=Jfh17Q3kKzAhO-dlfIwYlueN9t1edaaY_vmnC9vErpA,1136
11
11
  dodopayments/_response.py,sha256=PDvrSN3E3IkXVw2GvyOCTNB8ch0Xn9yaWQz4w1nHZEQ,28854
12
12
  dodopayments/_streaming.py,sha256=U4D6MhotaUaGaHz32lBt0XM98IOPIpPbKHUfbb0HGCk,10124
13
- dodopayments/_types.py,sha256=xr6JCSMzA-ItAyUrj6yw3GuC5rwQFVUo-Uiw9OTOWyo,6149
14
- dodopayments/_version.py,sha256=Tg2SIr1bdPe6ehsD1iVxiOsu7yAbBXKBiKtVF4QhGtE,165
13
+ dodopayments/_types.py,sha256=gP0yR7AIegimhmZ6rYIjSHFCr9YWzvh-jZabbVcgtio,6203
14
+ dodopayments/_version.py,sha256=WNQfjniH6qOodG0nsBoBD7NPuX_aE7Mdx3pmW2Wu-zc,165
15
15
  dodopayments/pagination.py,sha256=WYDrAWHvGL58Fe6X2yYZyYTAFvzWOR63JAsKURk2ti4,1308
16
16
  dodopayments/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  dodopayments/_utils/__init__.py,sha256=PNZ_QJuzZEgyYXqkO1HVhGkj5IU9bglVUcw7H-Knjzw,2062
@@ -37,18 +37,18 @@ dodopayments/resources/misc.py,sha256=BRPUna3lLIrJ-gMGOOQL1-xYx_oMwVDzKL4d498C7p
37
37
  dodopayments/resources/payments.py,sha256=-eNGFfIH1y6OwJhLgu7b6WMHr7UrkJC6EZzZA6roHDk,24362
38
38
  dodopayments/resources/payouts.py,sha256=NjBQALlhMcbMDO5AdWLioSFrGdMvpqki_HydRl0XJyE,6995
39
39
  dodopayments/resources/refunds.py,sha256=zHDxUmpS1zlFcbuMRDTN0P2EKO2CYtqyWYMWigflMms,15094
40
- dodopayments/resources/subscriptions.py,sha256=MJAH0JqaC3143a938wWY5g6TQzfCahBouGceloZNLS0,34379
40
+ dodopayments/resources/subscriptions.py,sha256=mIu5LhdaG86hnm7YyeESuFH0sQwgp8N4WcbMBmvSVi0,36098
41
41
  dodopayments/resources/webhook_events.py,sha256=1OrWx7h4_Nb_yyl3ySCTz0QXM7LAYqVC2ipcveOvSdM,11726
42
42
  dodopayments/resources/customers/__init__.py,sha256=RIP1WYqO_PIq9b57tDaJWf9zIRxG_iFeFkOVhe3apAo,1146
43
43
  dodopayments/resources/customers/customer_portal.py,sha256=E967nei40PZfCRFDv5K0jxxVBEOFpmZsEIkseOGsUM0,7010
44
- dodopayments/resources/customers/customers.py,sha256=mZK-Vi9jw7FFg3Wy6X4HCOz_fQPimYQApJtnv1IgOZE,17403
44
+ dodopayments/resources/customers/customers.py,sha256=lfd11GpmGFSEMETRAMHP3M74LRK_ZqwX5BgAy8ProSo,18125
45
45
  dodopayments/resources/invoices/__init__.py,sha256=r81DwjI_F6B-ydnyJLSpowqPN0eTcROcPEvvzAkGPds,1054
46
46
  dodopayments/resources/invoices/invoices.py,sha256=-XZWHtZk92Wbbz5qO0DgiOCZGNKv4Slsd95feusnTnI,3761
47
47
  dodopayments/resources/invoices/payments.py,sha256=Kq32Cpzca3YuPdk8XjmF6wkRi6_BQ2aegyLf2FZ7KG8,6346
48
48
  dodopayments/resources/products/__init__.py,sha256=GKmDlI7Pw4UnnCRlnhb5WBh2Y3UYhqme7RqC35aztGo,1028
49
49
  dodopayments/resources/products/images.py,sha256=Dl-hxas2F6C30yhBifxCMy5xdLIgPSENHOhS8J6klJs,6388
50
50
  dodopayments/resources/products/products.py,sha256=gzsm2LyIUNNqTXkMa6u0xax8KbxMl-f3dJFLLRvLVjA,33139
51
- dodopayments/types/__init__.py,sha256=Is3Sts1qwgxRbw_xtwyEG07rzLxAmRV6gufY2qiubvM,6539
51
+ dodopayments/types/__init__.py,sha256=gfJAkYU3cdlQbI8UHXpLg_HB3rhcfVpFOCZkqpLOCmM,6726
52
52
  dodopayments/types/addon_cart_response_item.py,sha256=R-I8Zd2HJKn0DmXmv6Oyu4oo-oEC1-dud0Q6_yqDB7k,235
53
53
  dodopayments/types/addon_create_params.py,sha256=TxMBkJG5ZJXdLiyAzJ8YJPzMg98nGn6stXYQ7I1sH-A,731
54
54
  dodopayments/types/addon_list_params.py,sha256=M3CxvfBwcirkJeNAIaOF2c5JdRR3GpTBVAZUdlfctg0,412
@@ -74,6 +74,7 @@ dodopayments/types/customer_limited_details.py,sha256=Q9o6uDLx2-XXMqLf5r_c4BMPJg
74
74
  dodopayments/types/customer_list_params.py,sha256=a-YOlDGSvcsY-KGIlzQnX-mquupsjazOu_HgPU9-0xs,418
75
75
  dodopayments/types/customer_portal_session.py,sha256=XwfDZMfoaiuVoJ4OmulTfLrfGurjgaCDiBKbUxA6Q08,212
76
76
  dodopayments/types/customer_request_param.py,sha256=Y0a3YTcwB1JHIgTUcLIKWfVIfZljcYCnQu7YaP-0Qsg,453
77
+ dodopayments/types/customer_update_params.py,sha256=FRS6J8xSI4i6ZvZW72DIxZLm1CAYKZHnShzduGcwvu0,338
77
78
  dodopayments/types/discount.py,sha256=_EyxXQsnMGbTrHI-3DGAwnDuVmY1khrdCXAhkU71Ttg,1206
78
79
  dodopayments/types/discount_create_params.py,sha256=6eGm-CdPKVUnYKqhs6QqE_GntT7KIrfKT66LZMU5f4Q,1372
79
80
  dodopayments/types/discount_list_params.py,sha256=o0Ui9uqFxJHw-lxFLZmttW9SmJWDmEwmKf9HT_RNxAc,422
@@ -122,6 +123,7 @@ dodopayments/types/refund_create_params.py,sha256=hua-rUlW_5ZfKaPsh8O06yPgsj0gH7
122
123
  dodopayments/types/refund_list_params.py,sha256=oBgwuTJNhXpCOY0LKc-sItxPdOJUVYnS5KqcNqcXpgM,937
123
124
  dodopayments/types/refund_status.py,sha256=ftnBnLvslfMYcUg8t7nEvb6-m5NWyVVnNcgyVu9eZto,243
124
125
  dodopayments/types/subscription.py,sha256=8lcM-Yqn8uV2vpMABEEZPR3mT1bdCWgUTLyshuYn_B8,2238
126
+ dodopayments/types/subscription_change_plan_params.py,sha256=eE_PKfkf-LwHL3H94EKxDzSpfH3NJOzH6OJez_glH60,831
125
127
  dodopayments/types/subscription_charge_params.py,sha256=pgniOwmevUGAMPZIlzdVZEPjSGZ8nDZuMzHLIhbEhaE,541
126
128
  dodopayments/types/subscription_charge_response.py,sha256=aDFuOKqqQ-_v1szx9oUT89QaeM3nvwrlAExzZhF0O-Q,228
127
129
  dodopayments/types/subscription_create_params.py,sha256=vzr2_alFQKsbt5dzBLA_WWhOZdPBrf7faf8vsXxpbNE,3259
@@ -140,7 +142,7 @@ dodopayments/types/invoices/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekD
140
142
  dodopayments/types/products/__init__.py,sha256=-W2ETtkni8cZpsC4Eg1aRwuLg1plV1U429JFOR1U4Rw,273
141
143
  dodopayments/types/products/image_update_params.py,sha256=JmSZGjXI9uZgKdO9_7CINyIOmuphlmZr7-7P7kE-R5Q,308
142
144
  dodopayments/types/products/image_update_response.py,sha256=TcJyXjoJlONpwwR6yZdIuBTu2VNyLRZFELfstD9_V-o,273
143
- dodopayments-1.30.0.dist-info/METADATA,sha256=xKl_1ngCnL52XXkVl7hW_tB-596Ne9Aq5dBN4FKFgbA,17402
144
- dodopayments-1.30.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
145
- dodopayments-1.30.0.dist-info/licenses/LICENSE,sha256=3_sqrBb5J3AT3FsjMKEOBRZhweWVsl_s_RjFlclm1vQ,11343
146
- dodopayments-1.30.0.dist-info/RECORD,,
145
+ dodopayments-1.30.2.dist-info/METADATA,sha256=U5eMb8Jvf7xnooYrRot-5Y6YArD_BTpaPqJgJI57XrE,17402
146
+ dodopayments-1.30.2.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
147
+ dodopayments-1.30.2.dist-info/licenses/LICENSE,sha256=3_sqrBb5J3AT3FsjMKEOBRZhweWVsl_s_RjFlclm1vQ,11343
148
+ dodopayments-1.30.2.dist-info/RECORD,,