dodopayments 1.75.2__py3-none-any.whl → 1.78.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.
@@ -86,6 +86,7 @@ from ._exceptions import (
86
86
  APIConnectionError,
87
87
  APIResponseValidationError,
88
88
  )
89
+ from ._utils._json import openapi_dumps
89
90
 
90
91
  log: logging.Logger = logging.getLogger(__name__)
91
92
 
@@ -554,8 +555,10 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
554
555
  kwargs["content"] = options.content
555
556
  elif isinstance(json_data, bytes):
556
557
  kwargs["content"] = json_data
557
- else:
558
- kwargs["json"] = json_data if is_given(json_data) else None
558
+ elif not files:
559
+ # Don't set content when JSON is sent as multipart/form-data,
560
+ # since httpx's content param overrides other body arguments
561
+ kwargs["content"] = openapi_dumps(json_data) if is_given(json_data) and json_data is not None else None
559
562
  kwargs["files"] = files
560
563
  else:
561
564
  headers.pop("Content-Type", None)
dodopayments/_compat.py CHANGED
@@ -139,6 +139,7 @@ def model_dump(
139
139
  exclude_defaults: bool = False,
140
140
  warnings: bool = True,
141
141
  mode: Literal["json", "python"] = "python",
142
+ by_alias: bool | None = None,
142
143
  ) -> dict[str, Any]:
143
144
  if (not PYDANTIC_V1) or hasattr(model, "model_dump"):
144
145
  return model.model_dump(
@@ -148,13 +149,12 @@ def model_dump(
148
149
  exclude_defaults=exclude_defaults,
149
150
  # warnings are not supported in Pydantic v1
150
151
  warnings=True if PYDANTIC_V1 else warnings,
152
+ by_alias=by_alias,
151
153
  )
152
154
  return cast(
153
155
  "dict[str, Any]",
154
156
  model.dict( # pyright: ignore[reportDeprecated, reportUnnecessaryCast]
155
- exclude=exclude,
156
- exclude_unset=exclude_unset,
157
- exclude_defaults=exclude_defaults,
157
+ exclude=exclude, exclude_unset=exclude_unset, exclude_defaults=exclude_defaults, by_alias=bool(by_alias)
158
158
  ),
159
159
  )
160
160
 
@@ -0,0 +1,35 @@
1
+ import json
2
+ from typing import Any
3
+ from datetime import datetime
4
+ from typing_extensions import override
5
+
6
+ import pydantic
7
+
8
+ from .._compat import model_dump
9
+
10
+
11
+ def openapi_dumps(obj: Any) -> bytes:
12
+ """
13
+ Serialize an object to UTF-8 encoded JSON bytes.
14
+
15
+ Extends the standard json.dumps with support for additional types
16
+ commonly used in the SDK, such as `datetime`, `pydantic.BaseModel`, etc.
17
+ """
18
+ return json.dumps(
19
+ obj,
20
+ cls=_CustomEncoder,
21
+ # Uses the same defaults as httpx's JSON serialization
22
+ ensure_ascii=False,
23
+ separators=(",", ":"),
24
+ allow_nan=False,
25
+ ).encode()
26
+
27
+
28
+ class _CustomEncoder(json.JSONEncoder):
29
+ @override
30
+ def default(self, o: Any) -> Any:
31
+ if isinstance(o, datetime):
32
+ return o.isoformat()
33
+ if isinstance(o, pydantic.BaseModel):
34
+ return model_dump(o, exclude_unset=True, mode="json", by_alias=True)
35
+ return super().default(o)
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.75.2" # x-release-please-version
4
+ __version__ = "1.78.0" # x-release-please-version
@@ -19,6 +19,9 @@ __all__ = [
19
19
  "BillingAddress",
20
20
  "CustomField",
21
21
  "Customization",
22
+ "CustomizationThemeConfig",
23
+ "CustomizationThemeConfigDark",
24
+ "CustomizationThemeConfigLight",
22
25
  "FeatureFlags",
23
26
  "SubscriptionData",
24
27
  ]
@@ -141,7 +144,7 @@ class BillingAddress(TypedDict, total=False):
141
144
  class CustomField(TypedDict, total=False):
142
145
  """Definition of a custom field for checkout"""
143
146
 
144
- field_type: Required[Literal["text", "number", "email", "url", "phone", "date", "datetime", "dropdown", "boolean"]]
147
+ field_type: Required[Literal["text", "number", "email", "url", "date", "dropdown", "boolean"]]
145
148
  """Type of field determining validation rules"""
146
149
 
147
150
  key: Required[str]
@@ -160,6 +163,138 @@ class CustomField(TypedDict, total=False):
160
163
  """Whether this field is required"""
161
164
 
162
165
 
166
+ class CustomizationThemeConfigDark(TypedDict, total=False):
167
+ """Dark mode color configuration"""
168
+
169
+ bg_primary: Optional[str]
170
+ """Background primary color
171
+
172
+ Examples: `"#ffffff"`, `"rgb(255, 255, 255)"`, `"white"`
173
+ """
174
+
175
+ bg_secondary: Optional[str]
176
+ """Background secondary color"""
177
+
178
+ border_primary: Optional[str]
179
+ """Border primary color"""
180
+
181
+ border_secondary: Optional[str]
182
+ """Border secondary color"""
183
+
184
+ button_primary: Optional[str]
185
+ """Primary button background color"""
186
+
187
+ button_primary_hover: Optional[str]
188
+ """Primary button hover color"""
189
+
190
+ button_secondary: Optional[str]
191
+ """Secondary button background color"""
192
+
193
+ button_secondary_hover: Optional[str]
194
+ """Secondary button hover color"""
195
+
196
+ button_text_primary: Optional[str]
197
+ """Primary button text color"""
198
+
199
+ button_text_secondary: Optional[str]
200
+ """Secondary button text color"""
201
+
202
+ input_focus_border: Optional[str]
203
+ """Input focus border color"""
204
+
205
+ text_error: Optional[str]
206
+ """Text error color"""
207
+
208
+ text_placeholder: Optional[str]
209
+ """Text placeholder color"""
210
+
211
+ text_primary: Optional[str]
212
+ """Text primary color"""
213
+
214
+ text_secondary: Optional[str]
215
+ """Text secondary color"""
216
+
217
+ text_success: Optional[str]
218
+ """Text success color"""
219
+
220
+
221
+ class CustomizationThemeConfigLight(TypedDict, total=False):
222
+ """Light mode color configuration"""
223
+
224
+ bg_primary: Optional[str]
225
+ """Background primary color
226
+
227
+ Examples: `"#ffffff"`, `"rgb(255, 255, 255)"`, `"white"`
228
+ """
229
+
230
+ bg_secondary: Optional[str]
231
+ """Background secondary color"""
232
+
233
+ border_primary: Optional[str]
234
+ """Border primary color"""
235
+
236
+ border_secondary: Optional[str]
237
+ """Border secondary color"""
238
+
239
+ button_primary: Optional[str]
240
+ """Primary button background color"""
241
+
242
+ button_primary_hover: Optional[str]
243
+ """Primary button hover color"""
244
+
245
+ button_secondary: Optional[str]
246
+ """Secondary button background color"""
247
+
248
+ button_secondary_hover: Optional[str]
249
+ """Secondary button hover color"""
250
+
251
+ button_text_primary: Optional[str]
252
+ """Primary button text color"""
253
+
254
+ button_text_secondary: Optional[str]
255
+ """Secondary button text color"""
256
+
257
+ input_focus_border: Optional[str]
258
+ """Input focus border color"""
259
+
260
+ text_error: Optional[str]
261
+ """Text error color"""
262
+
263
+ text_placeholder: Optional[str]
264
+ """Text placeholder color"""
265
+
266
+ text_primary: Optional[str]
267
+ """Text primary color"""
268
+
269
+ text_secondary: Optional[str]
270
+ """Text secondary color"""
271
+
272
+ text_success: Optional[str]
273
+ """Text success color"""
274
+
275
+
276
+ class CustomizationThemeConfig(TypedDict, total=False):
277
+ """Optional custom theme configuration with colors for light and dark modes"""
278
+
279
+ dark: Optional[CustomizationThemeConfigDark]
280
+ """Dark mode color configuration"""
281
+
282
+ font_size: Optional[Literal["xs", "sm", "md", "lg", "xl", "2xl"]]
283
+ """Font size for the checkout UI"""
284
+
285
+ font_weight: Optional[Literal["normal", "medium", "bold", "extraBold"]]
286
+ """Font weight for the checkout UI"""
287
+
288
+ light: Optional[CustomizationThemeConfigLight]
289
+ """Light mode color configuration"""
290
+
291
+ pay_button_text: Optional[str]
292
+ """Custom text for the pay button (e.g., "Complete Purchase", "Subscribe Now")"""
293
+
294
+ radius: Optional[str]
295
+ """Border radius for UI elements (e.g., "4px", "0.5rem", "8px")"""
296
+
297
+
163
298
  class Customization(TypedDict, total=False):
164
299
  """Customization for the checkout session page"""
165
300
 
@@ -179,11 +314,14 @@ class Customization(TypedDict, total=False):
179
314
  """
180
315
 
181
316
  theme: Literal["dark", "light", "system"]
182
- """Theme of the page
317
+ """Theme of the page (determines which mode - light/dark/system - to use)
183
318
 
184
319
  Default is `System`.
185
320
  """
186
321
 
322
+ theme_config: Optional[CustomizationThemeConfig]
323
+ """Optional custom theme configuration with colors for light and dark modes"""
324
+
187
325
 
188
326
  class FeatureFlags(TypedDict, total=False):
189
327
  allow_currency_selection: bool
@@ -19,6 +19,9 @@ __all__ = [
19
19
  "BillingAddress",
20
20
  "CustomField",
21
21
  "Customization",
22
+ "CustomizationThemeConfig",
23
+ "CustomizationThemeConfigDark",
24
+ "CustomizationThemeConfigLight",
22
25
  "FeatureFlags",
23
26
  "SubscriptionData",
24
27
  ]
@@ -141,7 +144,7 @@ class BillingAddress(TypedDict, total=False):
141
144
  class CustomField(TypedDict, total=False):
142
145
  """Definition of a custom field for checkout"""
143
146
 
144
- field_type: Required[Literal["text", "number", "email", "url", "phone", "date", "datetime", "dropdown", "boolean"]]
147
+ field_type: Required[Literal["text", "number", "email", "url", "date", "dropdown", "boolean"]]
145
148
  """Type of field determining validation rules"""
146
149
 
147
150
  key: Required[str]
@@ -160,6 +163,138 @@ class CustomField(TypedDict, total=False):
160
163
  """Whether this field is required"""
161
164
 
162
165
 
166
+ class CustomizationThemeConfigDark(TypedDict, total=False):
167
+ """Dark mode color configuration"""
168
+
169
+ bg_primary: Optional[str]
170
+ """Background primary color
171
+
172
+ Examples: `"#ffffff"`, `"rgb(255, 255, 255)"`, `"white"`
173
+ """
174
+
175
+ bg_secondary: Optional[str]
176
+ """Background secondary color"""
177
+
178
+ border_primary: Optional[str]
179
+ """Border primary color"""
180
+
181
+ border_secondary: Optional[str]
182
+ """Border secondary color"""
183
+
184
+ button_primary: Optional[str]
185
+ """Primary button background color"""
186
+
187
+ button_primary_hover: Optional[str]
188
+ """Primary button hover color"""
189
+
190
+ button_secondary: Optional[str]
191
+ """Secondary button background color"""
192
+
193
+ button_secondary_hover: Optional[str]
194
+ """Secondary button hover color"""
195
+
196
+ button_text_primary: Optional[str]
197
+ """Primary button text color"""
198
+
199
+ button_text_secondary: Optional[str]
200
+ """Secondary button text color"""
201
+
202
+ input_focus_border: Optional[str]
203
+ """Input focus border color"""
204
+
205
+ text_error: Optional[str]
206
+ """Text error color"""
207
+
208
+ text_placeholder: Optional[str]
209
+ """Text placeholder color"""
210
+
211
+ text_primary: Optional[str]
212
+ """Text primary color"""
213
+
214
+ text_secondary: Optional[str]
215
+ """Text secondary color"""
216
+
217
+ text_success: Optional[str]
218
+ """Text success color"""
219
+
220
+
221
+ class CustomizationThemeConfigLight(TypedDict, total=False):
222
+ """Light mode color configuration"""
223
+
224
+ bg_primary: Optional[str]
225
+ """Background primary color
226
+
227
+ Examples: `"#ffffff"`, `"rgb(255, 255, 255)"`, `"white"`
228
+ """
229
+
230
+ bg_secondary: Optional[str]
231
+ """Background secondary color"""
232
+
233
+ border_primary: Optional[str]
234
+ """Border primary color"""
235
+
236
+ border_secondary: Optional[str]
237
+ """Border secondary color"""
238
+
239
+ button_primary: Optional[str]
240
+ """Primary button background color"""
241
+
242
+ button_primary_hover: Optional[str]
243
+ """Primary button hover color"""
244
+
245
+ button_secondary: Optional[str]
246
+ """Secondary button background color"""
247
+
248
+ button_secondary_hover: Optional[str]
249
+ """Secondary button hover color"""
250
+
251
+ button_text_primary: Optional[str]
252
+ """Primary button text color"""
253
+
254
+ button_text_secondary: Optional[str]
255
+ """Secondary button text color"""
256
+
257
+ input_focus_border: Optional[str]
258
+ """Input focus border color"""
259
+
260
+ text_error: Optional[str]
261
+ """Text error color"""
262
+
263
+ text_placeholder: Optional[str]
264
+ """Text placeholder color"""
265
+
266
+ text_primary: Optional[str]
267
+ """Text primary color"""
268
+
269
+ text_secondary: Optional[str]
270
+ """Text secondary color"""
271
+
272
+ text_success: Optional[str]
273
+ """Text success color"""
274
+
275
+
276
+ class CustomizationThemeConfig(TypedDict, total=False):
277
+ """Optional custom theme configuration with colors for light and dark modes"""
278
+
279
+ dark: Optional[CustomizationThemeConfigDark]
280
+ """Dark mode color configuration"""
281
+
282
+ font_size: Optional[Literal["xs", "sm", "md", "lg", "xl", "2xl"]]
283
+ """Font size for the checkout UI"""
284
+
285
+ font_weight: Optional[Literal["normal", "medium", "bold", "extraBold"]]
286
+ """Font weight for the checkout UI"""
287
+
288
+ light: Optional[CustomizationThemeConfigLight]
289
+ """Light mode color configuration"""
290
+
291
+ pay_button_text: Optional[str]
292
+ """Custom text for the pay button (e.g., "Complete Purchase", "Subscribe Now")"""
293
+
294
+ radius: Optional[str]
295
+ """Border radius for UI elements (e.g., "4px", "0.5rem", "8px")"""
296
+
297
+
163
298
  class Customization(TypedDict, total=False):
164
299
  """Customization for the checkout session page"""
165
300
 
@@ -179,11 +314,14 @@ class Customization(TypedDict, total=False):
179
314
  """
180
315
 
181
316
  theme: Literal["dark", "light", "system"]
182
- """Theme of the page
317
+ """Theme of the page (determines which mode - light/dark/system - to use)
183
318
 
184
319
  Default is `System`.
185
320
  """
186
321
 
322
+ theme_config: Optional[CustomizationThemeConfig]
323
+ """Optional custom theme configuration with colors for light and dark modes"""
324
+
187
325
 
188
326
  class FeatureFlags(TypedDict, total=False):
189
327
  allow_currency_selection: bool
@@ -27,4 +27,9 @@ WebhookEventType: TypeAlias = Literal[
27
27
  "subscription.plan_changed",
28
28
  "subscription.updated",
29
29
  "license_key.created",
30
+ "payout.not_initiated",
31
+ "payout.on_hold",
32
+ "payout.in_progress",
33
+ "payout.failed",
34
+ "payout.success",
30
35
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dodopayments
3
- Version: 1.75.2
3
+ Version: 1.78.0
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,7 +1,7 @@
1
1
  dodopayments/__init__.py,sha256=2xJKiprm_9ZM1vNCz4XbkawiAAH1CV_cWN1AOCQ_AJs,2821
2
- dodopayments/_base_client.py,sha256=R7O1iSXNSRZRuQHIGykCgmI1oFjhUAWX8TEIswSyB04,73415
2
+ dodopayments/_base_client.py,sha256=hSkfA9tmPNP11sRXCdeZ5mvZxfcFwKJpsl37idYf4jc,73664
3
3
  dodopayments/_client.py,sha256=R1BtEfijnrRUG9aZDuXmTsikN1enjOYpnCytyOHmApo,46952
4
- dodopayments/_compat.py,sha256=DQBVORjFb33zch24jzkhM14msvnzY7mmSmgDLaVFUM8,6562
4
+ dodopayments/_compat.py,sha256=teO44AYozpv2wFRrUi7brcZfGPpFSERQZ4fcdX6zVvs,6627
5
5
  dodopayments/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
6
6
  dodopayments/_exceptions.py,sha256=z1Na53suP0aScGHS0XLqMAFTi8Zoibw9TpWGOMybCqA,3286
7
7
  dodopayments/_files.py,sha256=KnEzGi_O756MvKyJ4fOCW_u3JhOeWPQ4RsmDvqihDQU,3545
@@ -11,12 +11,13 @@ dodopayments/_resource.py,sha256=Jfh17Q3kKzAhO-dlfIwYlueN9t1edaaY_vmnC9vErpA,113
11
11
  dodopayments/_response.py,sha256=PDvrSN3E3IkXVw2GvyOCTNB8ch0Xn9yaWQz4w1nHZEQ,28854
12
12
  dodopayments/_streaming.py,sha256=PiCwMSq2vajVRGk_VsBRXdTFJ2-ZCAJUcmDMLPf4KKA,10245
13
13
  dodopayments/_types.py,sha256=Q23DQvQrrOqKQx6cOZPbk6m99MXo4flduLba8vvvsek,7600
14
- dodopayments/_version.py,sha256=GmH4Ik0Ic799gAvDtQE7uMFMsDJscAGrJKbGb6D3jbw,165
14
+ dodopayments/_version.py,sha256=gTwjs2_IdLmDjbUgm7wMoPDd9iIVUOk_YSKBE4m9bcw,165
15
15
  dodopayments/pagination.py,sha256=gaS62u_b_92OYnUHmstLAFL5AF2_cr3Z6VpzSHd0mMw,2796
16
16
  dodopayments/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  dodopayments/_utils/__init__.py,sha256=7fch0GT9zpNnErbciSpUNa-SjTxxjY6kxHxKMOM4AGs,2305
18
18
  dodopayments/_utils/_compat.py,sha256=D8gtAvjJQrDWt9upS0XaG9Rr5l1QhiAx_I_1utT_tt0,1195
19
19
  dodopayments/_utils/_datetime_parse.py,sha256=bABTs0Bc6rabdFvnIwXjEhWL15TcRgWZ_6XGTqN8xUk,4204
20
+ dodopayments/_utils/_json.py,sha256=bl95uuIWwgSfXX-gP1trK_lDAPwJujYfJ05Cxo2SEC4,962
20
21
  dodopayments/_utils/_logs.py,sha256=wS-wfjlRVqO9Na43iwXZXBQ3Vm0dbZRPyOl9xYum580,793
21
22
  dodopayments/_utils/_proxy.py,sha256=aglnj2yBTDyGX9Akk2crZHrl10oqRmceUy2Zp008XEs,1975
22
23
  dodopayments/_utils/_reflection.py,sha256=ZmGkIgT_PuwedyNBrrKGbxoWtkpytJNU1uU4QHnmEMU,1364
@@ -77,8 +78,8 @@ dodopayments/types/brand_create_params.py,sha256=13_JT-ln66wgbGLhFrWyzaM9-FG3-fP
77
78
  dodopayments/types/brand_list_response.py,sha256=UTjYrMm32TaMtVR61jWJMCi2-JKY0FHJjhctYOtzDNk,306
78
79
  dodopayments/types/brand_update_images_response.py,sha256=QEt_87f6YTRqgN1Wu0NL_zJ96jl6SeUSiBLh8Hpc0pw,350
79
80
  dodopayments/types/brand_update_params.py,sha256=_LfGrAU8piWwKeSvSFjN9PPJ3QZSB4_BHRkAhZ-GFAI,524
80
- dodopayments/types/checkout_session_create_params.py,sha256=cP70cK--TNBuYUNuOpAYzke6_N_FwQngGdJ4lMi13Qg,6971
81
- dodopayments/types/checkout_session_preview_params.py,sha256=DS7Aqtyv6AzRVuC-kZeVvOIP59_f7hJ2MJDa-4FO72Y,6973
81
+ dodopayments/types/checkout_session_create_params.py,sha256=nA8y3QbHW-5axbLTWnkKmNmpUYvOjfvhlBp23rVaoyI,10635
82
+ dodopayments/types/checkout_session_preview_params.py,sha256=WOEI9pis9CRbA2I7rdeAfezSuy6DrEnT5VbWNK4euBQ,10637
82
83
  dodopayments/types/checkout_session_preview_response.py,sha256=GvDgyeQu7vJYgJn3gmlVUKdbF_i7Vkx4msRndiS2taw,3585
83
84
  dodopayments/types/checkout_session_response.py,sha256=xihZKGFVLaiwmyJHQ4l_9B6VjX4Z4Igv9rzsRXR2rko,405
84
85
  dodopayments/types/checkout_session_status.py,sha256=_VUEFrP1Gq1XEm6yZ_0p4NczseZ_SE43-DK3d--w3Y0,977
@@ -224,7 +225,7 @@ dodopayments/types/usage_event_ingest_response.py,sha256=9vqpDOdLHTIEbyKc_Xy2ima
224
225
  dodopayments/types/usage_event_list_params.py,sha256=4igrzFkmjDNokKkIy5XV3DriurmVXZG590gosc1RZN8,1155
225
226
  dodopayments/types/webhook_create_params.py,sha256=JsM7wcpIzfmLiFWG9rJ17SsdYFH5e8vXixU6VgDdpqI,974
226
227
  dodopayments/types/webhook_details.py,sha256=rnQ0JLG2Vm-AexrIdZkPcMHNnzdWXPoAA1ud2jX0tBc,873
227
- dodopayments/types/webhook_event_type.py,sha256=cU_jBHa5nOi9BL56mJ8EQp-FFaO-oUndAdSjBPehc2Y,768
228
+ dodopayments/types/webhook_event_type.py,sha256=Jx1uqy-Vv2Gek0CiQOyngVp039D1pPM5KPMYSE-k_o4,887
228
229
  dodopayments/types/webhook_list_params.py,sha256=SCrBT0s4VDOQdRvqgL6P5YDhqd3njW5rQlqOAnu3r40,430
229
230
  dodopayments/types/webhook_retrieve_secret_response.py,sha256=kkjb6oJp9SerqAhJjscOq3basHMKP95q3nvz_c1oIW8,230
230
231
  dodopayments/types/webhook_update_params.py,sha256=Gv-1jteNEm58ZevionMCv7xCUUZUJ1cxTKV4M23oQIw,807
@@ -247,7 +248,7 @@ dodopayments/types/products/short_link_list_response.py,sha256=madXuSkF9jocyjbGk
247
248
  dodopayments/types/webhooks/__init__.py,sha256=F_ZpQalnBiuXt_C2pUepZjgJZwiAGKNwaEB03ZB6sUM,285
248
249
  dodopayments/types/webhooks/header_retrieve_response.py,sha256=Tpo7Xw5MDIwxhKllUlsq8dpBwCySOV-3p7tIz1BTYWs,534
249
250
  dodopayments/types/webhooks/header_update_params.py,sha256=USiXP4oFllTJgOBcBZQrcLlEzEOB6RHH9Ugdxatyy3g,376
250
- dodopayments-1.75.2.dist-info/METADATA,sha256=eDPMHK451tkruCYsE_KVt8UpgghAqNjE2JKtnU75EbQ,19320
251
- dodopayments-1.75.2.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
252
- dodopayments-1.75.2.dist-info/licenses/LICENSE,sha256=4b-x2UvOUM8D3XvBTeMue0J2SB3hdbvDzD7chf46Was,11343
253
- dodopayments-1.75.2.dist-info/RECORD,,
251
+ dodopayments-1.78.0.dist-info/METADATA,sha256=WK7e-BgcW-UWFOC2lvlMcSHDAmLAVi64UyDqTAUEot4,19320
252
+ dodopayments-1.78.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
253
+ dodopayments-1.78.0.dist-info/licenses/LICENSE,sha256=4b-x2UvOUM8D3XvBTeMue0J2SB3hdbvDzD7chf46Was,11343
254
+ dodopayments-1.78.0.dist-info/RECORD,,