dub 0.34.0__tar.gz → 0.35.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. {dub-0.34.0 → dub-0.35.0}/PKG-INFO +10 -8
  2. {dub-0.34.0 → dub-0.35.0}/README-PYPI.md +8 -6
  3. {dub-0.34.0 → dub-0.35.0}/pyproject.toml +2 -2
  4. {dub-0.34.0 → dub-0.35.0}/src/dub/_version.py +3 -3
  5. {dub-0.34.0 → dub-0.35.0}/src/dub/basesdk.py +20 -6
  6. dub-0.35.0/src/dub/bounties.py +841 -0
  7. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/__init__.py +114 -26
  8. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticsbrowsers.py +18 -1
  9. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticscities.py +18 -1
  10. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticscontinents.py +18 -1
  11. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticscount.py +18 -1
  12. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticscountries.py +20 -1
  13. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticsdevices.py +18 -1
  14. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticsos.py +18 -1
  15. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticsreferers.py +18 -1
  16. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticsrefererurls.py +18 -1
  17. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticsregions.py +18 -1
  18. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticstimeseries.py +18 -1
  19. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticstoplinks.py +16 -26
  20. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticstopurls.py +18 -1
  21. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/analyticstriggers.py +18 -1
  22. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/commissioncreatedevent.py +123 -63
  23. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/domainschema.py +31 -50
  24. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/folderschema.py +18 -19
  25. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/leadcreatedevent.py +151 -134
  26. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/linkclickedevent.py +57 -70
  27. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/linkschema.py +63 -64
  28. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/linkwebhookevent.py +43 -51
  29. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/partneranalyticscount.py +18 -1
  30. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/partneranalyticstimeseries.py +18 -1
  31. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/partneranalyticstoplinks.py +16 -27
  32. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/partnerapplicationsubmittedevent.py +42 -75
  33. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/partnerenrolledevent.py +477 -83
  34. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/salecreatedevent.py +152 -151
  35. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/badrequest.py +18 -1
  36. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/conflict.py +18 -1
  37. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/forbidden.py +18 -1
  38. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/internalservererror.py +18 -1
  39. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/inviteexpired.py +18 -1
  40. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/notfound.py +18 -1
  41. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/ratelimitexceeded.py +18 -1
  42. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/unauthorized.py +18 -1
  43. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/unprocessableentity.py +18 -1
  44. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/__init__.py +323 -19
  45. dub-0.35.0/src/dub/models/operations/approvebountysubmission.py +211 -0
  46. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/banpartner.py +14 -19
  47. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/bulkcreatelinks.py +86 -87
  48. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/bulkupdatelinks.py +97 -82
  49. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/checkdomainstatus.py +1 -17
  50. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/createdomain.py +33 -34
  51. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/createfolder.py +18 -19
  52. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/createlink.py +86 -87
  53. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/createpartner.py +560 -168
  54. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/createpartnerlink.py +74 -85
  55. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/createreferralsembedtoken.py +99 -87
  56. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/createtag.py +18 -1
  57. dub-0.35.0/src/dub/models/operations/deactivatepartner.py +65 -0
  58. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/getcustomer.py +106 -105
  59. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/getcustomers.py +123 -105
  60. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/getlinkinfo.py +18 -1
  61. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/getlinks.py +36 -1
  62. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/getlinkscount.py +32 -1
  63. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/getqrcode.py +29 -1
  64. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/gettags.py +20 -1
  65. dub-0.35.0/src/dub/models/operations/listbountysubmissions.py +249 -0
  66. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/listcommissions.py +129 -64
  67. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/listdomains.py +18 -1
  68. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/listevents.py +414 -389
  69. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/listfolders.py +18 -1
  70. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/listpartners.py +510 -84
  71. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/registerdomain.py +1 -17
  72. dub-0.35.0/src/dub/models/operations/rejectbountysubmission.py +219 -0
  73. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/retrieveanalytics.py +65 -66
  74. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/retrievelinks.py +30 -19
  75. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/retrievepartneranalytics.py +25 -28
  76. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/tracklead.py +38 -83
  77. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/tracksale.py +52 -95
  78. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/updatecommission.py +126 -64
  79. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/updatecustomer.py +122 -131
  80. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/updatedomain.py +50 -35
  81. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/updatefolder.py +34 -19
  82. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/updatelink.py +101 -86
  83. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/updatetag.py +34 -1
  84. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/upsertlink.py +86 -87
  85. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/upsertpartnerlink.py +77 -90
  86. {dub-0.34.0 → dub-0.35.0}/src/dub/partners.py +288 -0
  87. {dub-0.34.0 → dub-0.35.0}/src/dub/sdk.py +3 -3
  88. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/__init__.py +10 -1
  89. dub-0.34.0/src/dub/models/components/workspaceschema.py +0 -328
  90. dub-0.34.0/src/dub/models/operations/getworkspace.py +0 -21
  91. dub-0.34.0/src/dub/models/operations/updateworkspace.py +0 -78
  92. dub-0.34.0/src/dub/workspaces.py +0 -561
  93. {dub-0.34.0 → dub-0.35.0}/LICENSE +0 -0
  94. {dub-0.34.0 → dub-0.35.0}/py.typed +0 -0
  95. {dub-0.34.0 → dub-0.35.0}/src/dub/__init__.py +0 -0
  96. {dub-0.34.0 → dub-0.35.0}/src/dub/_hooks/__init__.py +0 -0
  97. {dub-0.34.0 → dub-0.35.0}/src/dub/_hooks/registration.py +0 -0
  98. {dub-0.34.0 → dub-0.35.0}/src/dub/_hooks/sdkhooks.py +0 -0
  99. {dub-0.34.0 → dub-0.35.0}/src/dub/_hooks/types.py +0 -0
  100. {dub-0.34.0 → dub-0.35.0}/src/dub/analytics.py +0 -0
  101. {dub-0.34.0 → dub-0.35.0}/src/dub/commissions.py +0 -0
  102. {dub-0.34.0 → dub-0.35.0}/src/dub/customers.py +0 -0
  103. {dub-0.34.0 → dub-0.35.0}/src/dub/domains.py +0 -0
  104. {dub-0.34.0 → dub-0.35.0}/src/dub/embed_tokens.py +0 -0
  105. {dub-0.34.0 → dub-0.35.0}/src/dub/events.py +0 -0
  106. {dub-0.34.0 → dub-0.35.0}/src/dub/folders.py +0 -0
  107. {dub-0.34.0 → dub-0.35.0}/src/dub/httpclient.py +0 -0
  108. {dub-0.34.0 → dub-0.35.0}/src/dub/links.py +0 -0
  109. {dub-0.34.0 → dub-0.35.0}/src/dub/models/__init__.py +0 -0
  110. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/linkerrorschema.py +0 -0
  111. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/linktagschema.py +0 -0
  112. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/linktagschemaoutput.py +0 -0
  113. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/security.py +0 -0
  114. {dub-0.34.0 → dub-0.35.0}/src/dub/models/components/webhookevent.py +0 -0
  115. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/__init__.py +0 -0
  116. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/duberror.py +0 -0
  117. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/no_response_error.py +0 -0
  118. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/responsevalidationerror.py +0 -0
  119. {dub-0.34.0 → dub-0.35.0}/src/dub/models/errors/sdkerror.py +0 -0
  120. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/bulkdeletelinks.py +0 -0
  121. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/deletecustomer.py +0 -0
  122. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/deletedomain.py +0 -0
  123. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/deletefolder.py +0 -0
  124. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/deletelink.py +0 -0
  125. {dub-0.34.0 → dub-0.35.0}/src/dub/models/operations/deletetag.py +0 -0
  126. {dub-0.34.0 → dub-0.35.0}/src/dub/py.typed +0 -0
  127. {dub-0.34.0 → dub-0.35.0}/src/dub/qr_codes.py +0 -0
  128. {dub-0.34.0 → dub-0.35.0}/src/dub/sdkconfiguration.py +0 -0
  129. {dub-0.34.0 → dub-0.35.0}/src/dub/tags.py +0 -0
  130. {dub-0.34.0 → dub-0.35.0}/src/dub/track.py +0 -0
  131. {dub-0.34.0 → dub-0.35.0}/src/dub/types/__init__.py +0 -0
  132. {dub-0.34.0 → dub-0.35.0}/src/dub/types/basemodel.py +0 -0
  133. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/annotations.py +0 -0
  134. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/datetimes.py +0 -0
  135. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/enums.py +0 -0
  136. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/eventstreaming.py +0 -0
  137. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/forms.py +0 -0
  138. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/headers.py +0 -0
  139. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/logger.py +0 -0
  140. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/metadata.py +0 -0
  141. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/queryparams.py +0 -0
  142. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/requestbodies.py +0 -0
  143. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/retries.py +0 -0
  144. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/security.py +0 -0
  145. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/serializers.py +0 -0
  146. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/unmarshal_json_response.py +0 -0
  147. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/url.py +0 -0
  148. {dub-0.34.0 → dub-0.35.0}/src/dub/utils/values.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dub
3
- Version: 0.34.0
3
+ Version: 0.35.0
4
4
  Summary: Python Client SDK Generated by Speakeasy
5
5
  License-File: LICENSE
6
6
  Author: Speakeasy
7
- Requires-Python: >=3.9.2
7
+ Requires-Python: >=3.10
8
8
  Classifier: Programming Language :: Python :: 3
9
9
  Classifier: Programming Language :: Python :: 3.10
10
10
  Classifier: Programming Language :: Python :: 3.11
@@ -104,7 +104,7 @@ It's also possible to write a standalone Python script without needing to set up
104
104
  ```python
105
105
  #!/usr/bin/env -S uv run --script
106
106
  # /// script
107
- # requires-python = ">=3.9"
107
+ # requires-python = ">=3.10"
108
108
  # dependencies = [
109
109
  # "dub",
110
110
  # ]
@@ -281,6 +281,12 @@ asyncio.run(main())
281
281
 
282
282
  * [retrieve](https://github.com/dubinc/dub-python/blob/master/docs/sdks/analytics/README.md#retrieve) - Retrieve analytics for a link, a domain, or the authenticated workspace.
283
283
 
284
+ ### [Bounties](https://github.com/dubinc/dub-python/blob/master/docs/sdks/bounties/README.md)
285
+
286
+ * [list_submissions](https://github.com/dubinc/dub-python/blob/master/docs/sdks/bounties/README.md#list_submissions) - List bounty submissions
287
+ * [approve_submission](https://github.com/dubinc/dub-python/blob/master/docs/sdks/bounties/README.md#approve_submission) - Approve a bounty submission
288
+ * [reject_submission](https://github.com/dubinc/dub-python/blob/master/docs/sdks/bounties/README.md#reject_submission) - Reject a bounty submission
289
+
284
290
  ### [Commissions](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md)
285
291
 
286
292
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md#list) - Get commissions for a program.
@@ -339,6 +345,7 @@ asyncio.run(main())
339
345
  * [upsert_link](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#upsert_link) - Upsert a link for a partner
340
346
  * [analytics](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#analytics) - Retrieve analytics for a partner
341
347
  * [ban](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#ban) - Ban a partner
348
+ * [deactivate](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#deactivate) - Deactivate a partner
342
349
 
343
350
  ### [QRCodes](https://github.com/dubinc/dub-python/blob/master/docs/sdks/qrcodes/README.md)
344
351
 
@@ -356,11 +363,6 @@ asyncio.run(main())
356
363
  * [lead](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#lead) - Track a lead
357
364
  * [sale](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#sale) - Track a sale
358
365
 
359
- ### [Workspaces](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md)
360
-
361
- * [get](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#get) - Retrieve a workspace
362
- * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#update) - Update a workspace
363
-
364
366
  </details>
365
367
  <!-- End Available Resources and Operations [operations] -->
366
368
 
@@ -84,7 +84,7 @@ It's also possible to write a standalone Python script without needing to set up
84
84
  ```python
85
85
  #!/usr/bin/env -S uv run --script
86
86
  # /// script
87
- # requires-python = ">=3.9"
87
+ # requires-python = ">=3.10"
88
88
  # dependencies = [
89
89
  # "dub",
90
90
  # ]
@@ -261,6 +261,12 @@ asyncio.run(main())
261
261
 
262
262
  * [retrieve](https://github.com/dubinc/dub-python/blob/master/docs/sdks/analytics/README.md#retrieve) - Retrieve analytics for a link, a domain, or the authenticated workspace.
263
263
 
264
+ ### [Bounties](https://github.com/dubinc/dub-python/blob/master/docs/sdks/bounties/README.md)
265
+
266
+ * [list_submissions](https://github.com/dubinc/dub-python/blob/master/docs/sdks/bounties/README.md#list_submissions) - List bounty submissions
267
+ * [approve_submission](https://github.com/dubinc/dub-python/blob/master/docs/sdks/bounties/README.md#approve_submission) - Approve a bounty submission
268
+ * [reject_submission](https://github.com/dubinc/dub-python/blob/master/docs/sdks/bounties/README.md#reject_submission) - Reject a bounty submission
269
+
264
270
  ### [Commissions](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md)
265
271
 
266
272
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md#list) - Get commissions for a program.
@@ -319,6 +325,7 @@ asyncio.run(main())
319
325
  * [upsert_link](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#upsert_link) - Upsert a link for a partner
320
326
  * [analytics](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#analytics) - Retrieve analytics for a partner
321
327
  * [ban](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#ban) - Ban a partner
328
+ * [deactivate](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#deactivate) - Deactivate a partner
322
329
 
323
330
  ### [QRCodes](https://github.com/dubinc/dub-python/blob/master/docs/sdks/qrcodes/README.md)
324
331
 
@@ -336,11 +343,6 @@ asyncio.run(main())
336
343
  * [lead](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#lead) - Track a lead
337
344
  * [sale](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#sale) - Track a sale
338
345
 
339
- ### [Workspaces](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md)
340
-
341
- * [get](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#get) - Retrieve a workspace
342
- * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#update) - Update a workspace
343
-
344
346
  </details>
345
347
  <!-- End Available Resources and Operations [operations] -->
346
348
 
@@ -1,11 +1,11 @@
1
1
 
2
2
  [project]
3
3
  name = "dub"
4
- version = "0.34.0"
4
+ version = "0.35.0"
5
5
  description = "Python Client SDK Generated by Speakeasy"
6
6
  authors = [{ name = "Speakeasy" },]
7
7
  readme = "README-PYPI.md"
8
- requires-python = ">=3.9.2"
8
+ requires-python = ">=3.10"
9
9
  dependencies = [
10
10
  "httpcore >=1.0.9",
11
11
  "httpx >=0.28.1",
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "dub"
6
- __version__: str = "0.34.0"
6
+ __version__: str = "0.35.0"
7
7
  __openapi_doc_version__: str = "0.0.1"
8
- __gen_version__: str = "2.793.2"
9
- __user_agent__: str = "speakeasy-sdk/python 0.34.0 2.793.2 0.0.1 dub"
8
+ __gen_version__: str = "2.803.3"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.35.0 2.803.3 0.0.1 dub"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -4,7 +4,12 @@ from .sdkconfiguration import SDKConfiguration
4
4
  from dub import utils
5
5
  from dub._hooks import AfterErrorContext, AfterSuccessContext, BeforeRequestContext
6
6
  from dub.models import errors
7
- from dub.utils import RetryConfig, SerializedRequestBody, get_body_content
7
+ from dub.utils import (
8
+ RetryConfig,
9
+ SerializedRequestBody,
10
+ get_body_content,
11
+ run_sync_in_thread,
12
+ )
8
13
  import httpx
9
14
  from typing import Callable, List, Mapping, Optional, Tuple
10
15
  from urllib.parse import parse_qs, urlparse
@@ -308,7 +313,10 @@ class BaseSDK:
308
313
  async def do():
309
314
  http_res = None
310
315
  try:
311
- req = hooks.before_request(BeforeRequestContext(hook_ctx), request)
316
+ req = await run_sync_in_thread(
317
+ hooks.before_request, BeforeRequestContext(hook_ctx), request
318
+ )
319
+
312
320
  logger.debug(
313
321
  "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s",
314
322
  req.method,
@@ -322,7 +330,10 @@ class BaseSDK:
322
330
 
323
331
  http_res = await client.send(req, stream=stream)
324
332
  except Exception as e:
325
- _, e = hooks.after_error(AfterErrorContext(hook_ctx), None, e)
333
+ _, e = await run_sync_in_thread(
334
+ hooks.after_error, AfterErrorContext(hook_ctx), None, e
335
+ )
336
+
326
337
  if e is not None:
327
338
  logger.debug("Request Exception", exc_info=True)
328
339
  raise e
@@ -340,9 +351,10 @@ class BaseSDK:
340
351
  )
341
352
 
342
353
  if utils.match_status_codes(error_status_codes, http_res.status_code):
343
- result, err = hooks.after_error(
344
- AfterErrorContext(hook_ctx), http_res, None
354
+ result, err = await run_sync_in_thread(
355
+ hooks.after_error, AfterErrorContext(hook_ctx), http_res, None
345
356
  )
357
+
346
358
  if err is not None:
347
359
  logger.debug("Request Exception", exc_info=True)
348
360
  raise err
@@ -362,6 +374,8 @@ class BaseSDK:
362
374
  http_res = await do()
363
375
 
364
376
  if not utils.match_status_codes(error_status_codes, http_res.status_code):
365
- http_res = hooks.after_success(AfterSuccessContext(hook_ctx), http_res)
377
+ http_res = await run_sync_in_thread(
378
+ hooks.after_success, AfterSuccessContext(hook_ctx), http_res
379
+ )
366
380
 
367
381
  return http_res