prelude-python-sdk 0.9.0__tar.gz → 0.11.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 (120) hide show
  1. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/.gitignore +1 -0
  2. prelude_python_sdk-0.11.0/.release-please-manifest.json +3 -0
  3. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/CHANGELOG.md +77 -0
  4. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/CONTRIBUTING.md +2 -3
  5. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/LICENSE +1 -1
  6. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/PKG-INFO +5 -3
  7. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/README.md +2 -1
  8. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/api.md +26 -0
  9. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/pyproject.toml +12 -9
  10. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/requirements-dev.lock +63 -51
  11. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/requirements.lock +21 -20
  12. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_base_client.py +145 -13
  13. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_client.py +303 -60
  14. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_compat.py +11 -4
  15. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_models.py +16 -1
  16. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_response.py +3 -0
  17. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_streaming.py +20 -13
  18. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_types.py +12 -2
  19. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/__init__.py +1 -0
  20. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/_compat.py +1 -1
  21. prelude_python_sdk-0.11.0/src/prelude_python_sdk/_utils/_json.py +35 -0
  22. prelude_python_sdk-0.11.0/src/prelude_python_sdk/_utils/_path.py +127 -0
  23. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_version.py +1 -1
  24. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/resources/__init__.py +14 -0
  25. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/resources/lookup.py +11 -3
  26. prelude_python_sdk-0.11.0/src/prelude_python_sdk/resources/notify.py +1015 -0
  27. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/resources/transactional.py +14 -0
  28. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/resources/verification.py +4 -0
  29. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/resources/verification_management.py +11 -7
  30. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/resources/watch.py +4 -0
  31. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/__init__.py +28 -0
  32. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/lookup_lookup_response.py +4 -0
  33. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_get_subscription_config_response.py +55 -0
  34. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_get_subscription_phone_number_response.py +39 -0
  35. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_list_subscription_configs_params.py +15 -0
  36. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_list_subscription_configs_response.py +66 -0
  37. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_list_subscription_phone_number_events_params.py +17 -0
  38. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_list_subscription_phone_number_events_response.py +50 -0
  39. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_list_subscription_phone_numbers_params.py +18 -0
  40. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_list_subscription_phone_numbers_response.py +50 -0
  41. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_send_batch_params.py +69 -0
  42. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_send_batch_response.py +104 -0
  43. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_send_params.py +82 -0
  44. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/notify_send_response.py +62 -0
  45. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/transactional_send_params.py +20 -1
  46. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_check_params.py +5 -0
  47. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_check_response.py +2 -0
  48. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_create_params.py +48 -21
  49. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_create_response.py +14 -2
  50. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_management_list_sender_ids_response.py +2 -0
  51. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/watch_predict_params.py +24 -9
  52. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/watch_predict_response.py +65 -0
  53. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/watch_send_events_params.py +2 -0
  54. prelude_python_sdk-0.11.0/src/prelude_python_sdk/types/watch_send_feedbacks_params.py +45 -0
  55. prelude_python_sdk-0.11.0/tests/api_resources/test_notify.py +713 -0
  56. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/api_resources/test_transactional.py +8 -8
  57. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/api_resources/test_verification.py +2 -12
  58. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/api_resources/test_watch.py +2 -2
  59. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_client.py +201 -2
  60. prelude_python_sdk-0.11.0/tests/test_utils/test_json.py +126 -0
  61. prelude_python_sdk-0.11.0/tests/test_utils/test_path.py +89 -0
  62. prelude_python_sdk-0.9.0/.release-please-manifest.json +0 -3
  63. prelude_python_sdk-0.9.0/src/prelude_python_sdk/types/watch_predict_response.py +0 -21
  64. prelude_python_sdk-0.9.0/src/prelude_python_sdk/types/watch_send_feedbacks_params.py +0 -98
  65. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/SECURITY.md +0 -0
  66. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/bin/check-release-environment +0 -0
  67. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/bin/publish-pypi +0 -0
  68. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/examples/.keep +0 -0
  69. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/noxfile.py +0 -0
  70. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/release-please-config.json +0 -0
  71. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude/lib/.keep +0 -0
  72. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/__init__.py +0 -0
  73. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_constants.py +0 -0
  74. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_exceptions.py +0 -0
  75. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_files.py +0 -0
  76. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_qs.py +0 -0
  77. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_resource.py +0 -0
  78. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/_datetime_parse.py +0 -0
  79. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/_logs.py +0 -0
  80. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/_proxy.py +0 -0
  81. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/_reflection.py +0 -0
  82. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/_resources_proxy.py +0 -0
  83. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/_streams.py +0 -0
  84. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/_sync.py +0 -0
  85. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/_transform.py +0 -0
  86. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/_typing.py +0 -0
  87. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/_utils/_utils.py +0 -0
  88. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/lib/.keep +0 -0
  89. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/py.typed +0 -0
  90. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/lookup_lookup_params.py +0 -0
  91. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/transactional_send_response.py +0 -0
  92. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_management_delete_phone_number_params.py +0 -0
  93. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_management_delete_phone_number_response.py +0 -0
  94. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_management_list_phone_numbers_response.py +0 -0
  95. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_management_set_phone_number_params.py +0 -0
  96. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_management_set_phone_number_response.py +0 -0
  97. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_management_submit_sender_id_params.py +0 -0
  98. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/verification_management_submit_sender_id_response.py +0 -0
  99. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/watch_send_events_response.py +0 -0
  100. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_python_sdk/types/watch_send_feedbacks_response.py +0 -0
  101. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/src/prelude_sdk/lib/.keep +0 -0
  102. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/__init__.py +0 -0
  103. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/api_resources/__init__.py +0 -0
  104. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/api_resources/test_lookup.py +0 -0
  105. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/api_resources/test_verification_management.py +0 -0
  106. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/conftest.py +0 -0
  107. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/sample_file.txt +0 -0
  108. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_deepcopy.py +0 -0
  109. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_extract_files.py +0 -0
  110. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_files.py +0 -0
  111. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_models.py +0 -0
  112. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_qs.py +0 -0
  113. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_required_args.py +0 -0
  114. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_response.py +0 -0
  115. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_streaming.py +0 -0
  116. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_transform.py +0 -0
  117. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_utils/test_datetime_parse.py +0 -0
  118. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_utils/test_proxy.py +0 -0
  119. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/test_utils/test_typing.py +0 -0
  120. {prelude_python_sdk-0.9.0 → prelude_python_sdk-0.11.0}/tests/utils.py +0 -0
@@ -1,4 +1,5 @@
1
1
  .prism.log
2
+ .stdy.log
2
3
  _dev
3
4
 
4
5
  __pycache__
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.11.0"
3
+ }
@@ -1,5 +1,82 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.11.0 (2026-03-23)
4
+
5
+ Full Changelog: [v0.10.0...v0.11.0](https://github.com/prelude-so/python-sdk/compare/v0.10.0...v0.11.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([859b8f0](https://github.com/prelude-so/python-sdk/commit/859b8f0cccf997852bc2d1911b1699da74741551))
10
+ * **api:** api update ([4c5c4e2](https://github.com/prelude-so/python-sdk/commit/4c5c4e253a4f490b338d5536201a0ae3d5bc64a7))
11
+ * **api:** api update ([24288cd](https://github.com/prelude-so/python-sdk/commit/24288cdaca292916fbb906003adcbb80f8315343))
12
+ * **api:** api update ([bc95591](https://github.com/prelude-so/python-sdk/commit/bc95591afd9e4e6e09a4c8f83a5730ad3a5ed051))
13
+ * **api:** api update ([c00e5f5](https://github.com/prelude-so/python-sdk/commit/c00e5f5f604a94604140731637d7fb975376188e))
14
+ * **api:** api update ([f7afece](https://github.com/prelude-so/python-sdk/commit/f7afece5c9ea5bb3f3420a8a1f543da1e136bcff))
15
+ * **api:** api update ([94f4fa9](https://github.com/prelude-so/python-sdk/commit/94f4fa9904573e950ae6d01d289cce34e9e70370))
16
+ * **api:** api update ([6ab992c](https://github.com/prelude-so/python-sdk/commit/6ab992cc4da735868c0aed05cd737ed33f2c8d68))
17
+ * **client:** add custom JSON encoder for extended type support ([7b89b88](https://github.com/prelude-so/python-sdk/commit/7b89b884402982ffc74e27f13bfccdff24b8ff75))
18
+ * **client:** add support for binary request streaming ([5cc25b3](https://github.com/prelude-so/python-sdk/commit/5cc25b3416e9fe458d27fb26a0f8ebca1c36312a))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * **deps:** bump minimum typing-extensions version ([b60ac10](https://github.com/prelude-so/python-sdk/commit/b60ac109b60c4ae2687087ff30a7544788da2869))
24
+ * **pydantic:** do not pass `by_alias` unless set ([244c7f4](https://github.com/prelude-so/python-sdk/commit/244c7f44d697be140916ba0f1f4abcafde65628f))
25
+ * sanitize endpoint path params ([8fca4f3](https://github.com/prelude-so/python-sdk/commit/8fca4f378aa9cfb72327acba67902fab1caac25c))
26
+ * **types:** allow pyright to infer TypedDict types within SequenceNotStr ([1197a12](https://github.com/prelude-so/python-sdk/commit/1197a1218644530a19719ab9866385a3155581d5))
27
+ * use async_to_httpx_files in patch method ([2a4c51a](https://github.com/prelude-so/python-sdk/commit/2a4c51aa40b31c9709fd482771a5eb1defd60786))
28
+
29
+
30
+ ### Chores
31
+
32
+ * add missing docstrings ([6fc2141](https://github.com/prelude-so/python-sdk/commit/6fc2141b36efba6d357336a36c1305864ffec8cb))
33
+ * **ci:** skip uploading artifacts on stainless-internal branches ([c6b3603](https://github.com/prelude-so/python-sdk/commit/c6b360343d0e2115be558ae6b17017235428206d))
34
+ * **ci:** upgrade `actions/github-script` ([37e674a](https://github.com/prelude-so/python-sdk/commit/37e674a17a76e2a0bb3a2f9b29439ea233830109))
35
+ * **docs:** add missing descriptions ([1a73fd8](https://github.com/prelude-so/python-sdk/commit/1a73fd80ad7b60fda2da8ad9746aede6b7d7bf1c))
36
+ * format all `api.md` files ([cafa350](https://github.com/prelude-so/python-sdk/commit/cafa350bb5651faa97e3d5b0ba520a24805e57ae))
37
+ * **internal:** add `--fix` argument to lint script ([aaa77d7](https://github.com/prelude-so/python-sdk/commit/aaa77d73edce4cc03a4cd203b90a7c6f9e145bbd))
38
+ * **internal:** add missing files argument to base client ([84ade2c](https://github.com/prelude-so/python-sdk/commit/84ade2c96740cc217646929248a0b4e60c2434f0))
39
+ * **internal:** add request options to SSE classes ([1d2f5ba](https://github.com/prelude-so/python-sdk/commit/1d2f5baf54ac0ed2e95c94c0c8a5ad97456d8db7))
40
+ * **internal:** bump dependencies ([cd147cc](https://github.com/prelude-so/python-sdk/commit/cd147cc674b99d1f42840dc8be4cbc50abe458cb))
41
+ * **internal:** codegen related update ([72f7709](https://github.com/prelude-so/python-sdk/commit/72f7709ffeae6b6b4ad835f0861136d713aa3ba5))
42
+ * **internal:** fix lint error on Python 3.14 ([6fa1e9a](https://github.com/prelude-so/python-sdk/commit/6fa1e9a65dd600399a33c4184b159693dc5f6fd2))
43
+ * **internal:** make `test_proxy_environment_variables` more resilient ([1ca0a6e](https://github.com/prelude-so/python-sdk/commit/1ca0a6ec1b01fc52bf7c02225a4a63873da0a75b))
44
+ * **internal:** make `test_proxy_environment_variables` more resilient to env ([0e5b065](https://github.com/prelude-so/python-sdk/commit/0e5b065a92f740de2a59ad94777ca4890b0aba13))
45
+ * **internal:** tweak CI branches ([9cc5168](https://github.com/prelude-so/python-sdk/commit/9cc516803d1e4844599d97adf21a65b2b367b83c))
46
+ * **internal:** update `actions/checkout` version ([34bf2ba](https://github.com/prelude-so/python-sdk/commit/34bf2ba6a9e133d5287719459da01be9289b115d))
47
+ * **internal:** update gitignore ([05489cd](https://github.com/prelude-so/python-sdk/commit/05489cd78aa65bde7c6769a8f5ce59ebb5a6d1dc))
48
+ * speedup initial import ([5300f18](https://github.com/prelude-so/python-sdk/commit/5300f18a10c0db7b222c1bb3e487402aab9d318e))
49
+ * **test:** do not count install time for mock server timeout ([73aaccf](https://github.com/prelude-so/python-sdk/commit/73aaccf6b2dde8d80b4ee5d090a9057f847b4bac))
50
+ * **tests:** bump steady to v0.19.4 ([9959df7](https://github.com/prelude-so/python-sdk/commit/9959df70122d8e68328b0c6c581c65b76e21aeb6))
51
+ * **tests:** bump steady to v0.19.5 ([3ed3d6b](https://github.com/prelude-so/python-sdk/commit/3ed3d6bc91e659dbd67b78e615c5f6d1c57bdb18))
52
+ * update mock server docs ([85a5da0](https://github.com/prelude-so/python-sdk/commit/85a5da01c2f04110317bd8a8c5a4cec4bd7be831))
53
+
54
+
55
+ ### Refactors
56
+
57
+ * **tests:** switch from prism to steady ([d28c377](https://github.com/prelude-so/python-sdk/commit/d28c377805db75b127ed2c1b090c2e481cc89ccd))
58
+
59
+ ## 0.10.0 (2025-12-05)
60
+
61
+ Full Changelog: [v0.9.0...v0.10.0](https://github.com/prelude-so/python-sdk/compare/v0.9.0...v0.10.0)
62
+
63
+ ### Features
64
+
65
+ * **api:** add Notify API methods ([c7a7b20](https://github.com/prelude-so/python-sdk/commit/c7a7b20977b74d76362e4aad805be06b7618f652))
66
+
67
+
68
+ ### Bug Fixes
69
+
70
+ * ensure streams are always closed ([b16816e](https://github.com/prelude-so/python-sdk/commit/b16816e137cdbe2814625782094d929f0c98705c))
71
+
72
+
73
+ ### Chores
74
+
75
+ * **deps:** mypy 1.18.1 has a regression, pin to 1.17 ([e2e5272](https://github.com/prelude-so/python-sdk/commit/e2e5272322db24cc9faa0b7176cefcc81e3daf48))
76
+ * **docs:** use environment variables for authentication in code snippets ([1d08cda](https://github.com/prelude-so/python-sdk/commit/1d08cda0dfca3a9e0adb3f548f6a4275bfc44efa))
77
+ * **internal:** codegen related update ([469e780](https://github.com/prelude-so/python-sdk/commit/469e7805bc68624a0768e1403c1fc637b256a698))
78
+ * update lockfile ([2ff2aee](https://github.com/prelude-so/python-sdk/commit/2ff2aee46c7b89093cdcd43dd293e9dc6f101ada))
79
+
3
80
  ## 0.9.0 (2025-11-17)
4
81
 
5
82
  Full Changelog: [v0.8.0...v0.9.0](https://github.com/prelude-so/python-sdk/compare/v0.8.0...v0.9.0)
@@ -85,11 +85,10 @@ $ pip install ./path-to-wheel-file.whl
85
85
 
86
86
  ## Running tests
87
87
 
88
- Most tests require you to [set up a mock server](https://github.com/stoplightio/prism) against the OpenAPI spec to run the tests.
88
+ Most tests require you to [set up a mock server](https://github.com/dgellow/steady) against the OpenAPI spec to run the tests.
89
89
 
90
90
  ```sh
91
- # you will need npm installed
92
- $ npx prism mock path/to/your/openapi.yml
91
+ $ ./scripts/mock
93
92
  ```
94
93
 
95
94
  ```sh
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2025 Prelude
189
+ Copyright 2026 Prelude
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: prelude-python-sdk
3
- Version: 0.9.0
3
+ Version: 0.11.0
4
4
  Summary: The official Python library for the Prelude API
5
5
  Project-URL: Homepage, https://github.com/prelude-so/python-sdk
6
6
  Project-URL: Repository, https://github.com/prelude-so/python-sdk
@@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.10
18
18
  Classifier: Programming Language :: Python :: 3.11
19
19
  Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
21
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
23
  Classifier: Typing :: Typed
23
24
  Requires-Python: >=3.9
@@ -26,7 +27,7 @@ Requires-Dist: distro<2,>=1.7.0
26
27
  Requires-Dist: httpx<1,>=0.23.0
27
28
  Requires-Dist: pydantic<3,>=1.9.0
28
29
  Requires-Dist: sniffio
29
- Requires-Dist: typing-extensions<5,>=4.10
30
+ Requires-Dist: typing-extensions<5,>=4.14
30
31
  Provides-Extra: aiohttp
31
32
  Requires-Dist: aiohttp; extra == 'aiohttp'
32
33
  Requires-Dist: httpx-aiohttp>=0.1.9; extra == 'aiohttp'
@@ -123,6 +124,7 @@ pip install prelude-python-sdk[aiohttp]
123
124
  Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
124
125
 
125
126
  ```python
127
+ import os
126
128
  import asyncio
127
129
  from prelude_python_sdk import DefaultAioHttpClient
128
130
  from prelude_python_sdk import AsyncPrelude
@@ -130,7 +132,7 @@ from prelude_python_sdk import AsyncPrelude
130
132
 
131
133
  async def main() -> None:
132
134
  async with AsyncPrelude(
133
- api_token="My API Token",
135
+ api_token=os.environ.get("API_TOKEN"), # This is the default and can be omitted
134
136
  http_client=DefaultAioHttpClient(),
135
137
  ) as client:
136
138
  verification = await client.verification.create(
@@ -89,6 +89,7 @@ pip install prelude-python-sdk[aiohttp]
89
89
  Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
90
90
 
91
91
  ```python
92
+ import os
92
93
  import asyncio
93
94
  from prelude_python_sdk import DefaultAioHttpClient
94
95
  from prelude_python_sdk import AsyncPrelude
@@ -96,7 +97,7 @@ from prelude_python_sdk import AsyncPrelude
96
97
 
97
98
  async def main() -> None:
98
99
  async with AsyncPrelude(
99
- api_token="My API Token",
100
+ api_token=os.environ.get("API_TOKEN"), # This is the default and can be omitted
100
101
  http_client=DefaultAioHttpClient(),
101
102
  ) as client:
102
103
  verification = await client.verification.create(
@@ -10,6 +10,32 @@ Methods:
10
10
 
11
11
  - <code title="get /v2/lookup/{phone_number}">client.lookup.<a href="./src/prelude_python_sdk/resources/lookup.py">lookup</a>(phone_number, \*\*<a href="src/prelude_python_sdk/types/lookup_lookup_params.py">params</a>) -> <a href="./src/prelude_python_sdk/types/lookup_lookup_response.py">LookupLookupResponse</a></code>
12
12
 
13
+ # Notify
14
+
15
+ Types:
16
+
17
+ ```python
18
+ from prelude_python_sdk.types import (
19
+ NotifyGetSubscriptionConfigResponse,
20
+ NotifyGetSubscriptionPhoneNumberResponse,
21
+ NotifyListSubscriptionConfigsResponse,
22
+ NotifyListSubscriptionPhoneNumberEventsResponse,
23
+ NotifyListSubscriptionPhoneNumbersResponse,
24
+ NotifySendResponse,
25
+ NotifySendBatchResponse,
26
+ )
27
+ ```
28
+
29
+ Methods:
30
+
31
+ - <code title="get /v2/notify/management/subscriptions/{config_id}">client.notify.<a href="./src/prelude_python_sdk/resources/notify.py">get_subscription_config</a>(config_id) -> <a href="./src/prelude_python_sdk/types/notify_get_subscription_config_response.py">NotifyGetSubscriptionConfigResponse</a></code>
32
+ - <code title="get /v2/notify/management/subscriptions/{config_id}/phone_numbers/{phone_number}">client.notify.<a href="./src/prelude_python_sdk/resources/notify.py">get_subscription_phone_number</a>(phone_number, \*, config_id) -> <a href="./src/prelude_python_sdk/types/notify_get_subscription_phone_number_response.py">NotifyGetSubscriptionPhoneNumberResponse</a></code>
33
+ - <code title="get /v2/notify/management/subscriptions">client.notify.<a href="./src/prelude_python_sdk/resources/notify.py">list_subscription_configs</a>(\*\*<a href="src/prelude_python_sdk/types/notify_list_subscription_configs_params.py">params</a>) -> <a href="./src/prelude_python_sdk/types/notify_list_subscription_configs_response.py">NotifyListSubscriptionConfigsResponse</a></code>
34
+ - <code title="get /v2/notify/management/subscriptions/{config_id}/phone_numbers/{phone_number}/events">client.notify.<a href="./src/prelude_python_sdk/resources/notify.py">list_subscription_phone_number_events</a>(phone_number, \*, config_id, \*\*<a href="src/prelude_python_sdk/types/notify_list_subscription_phone_number_events_params.py">params</a>) -> <a href="./src/prelude_python_sdk/types/notify_list_subscription_phone_number_events_response.py">NotifyListSubscriptionPhoneNumberEventsResponse</a></code>
35
+ - <code title="get /v2/notify/management/subscriptions/{config_id}/phone_numbers">client.notify.<a href="./src/prelude_python_sdk/resources/notify.py">list_subscription_phone_numbers</a>(config_id, \*\*<a href="src/prelude_python_sdk/types/notify_list_subscription_phone_numbers_params.py">params</a>) -> <a href="./src/prelude_python_sdk/types/notify_list_subscription_phone_numbers_response.py">NotifyListSubscriptionPhoneNumbersResponse</a></code>
36
+ - <code title="post /v2/notify">client.notify.<a href="./src/prelude_python_sdk/resources/notify.py">send</a>(\*\*<a href="src/prelude_python_sdk/types/notify_send_params.py">params</a>) -> <a href="./src/prelude_python_sdk/types/notify_send_response.py">NotifySendResponse</a></code>
37
+ - <code title="post /v2/notify/batch">client.notify.<a href="./src/prelude_python_sdk/resources/notify.py">send_batch</a>(\*\*<a href="src/prelude_python_sdk/types/notify_send_batch_params.py">params</a>) -> <a href="./src/prelude_python_sdk/types/notify_send_batch_response.py">NotifySendBatchResponse</a></code>
38
+
13
39
  # Transactional
14
40
 
15
41
  Types:
@@ -1,20 +1,22 @@
1
1
  [project]
2
2
  name = "prelude-python-sdk"
3
- version = "0.9.0"
3
+ version = "0.11.0"
4
4
  description = "The official Python library for the Prelude API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
7
7
  authors = [
8
8
  { name = "Prelude", email = "hello@prelude.so" },
9
9
  ]
10
+
10
11
  dependencies = [
11
- "httpx>=0.23.0, <1",
12
- "pydantic>=1.9.0, <3",
13
- "typing-extensions>=4.10, <5",
14
- "anyio>=3.5.0, <5",
15
- "distro>=1.7.0, <2",
16
- "sniffio",
12
+ "httpx>=0.23.0, <1",
13
+ "pydantic>=1.9.0, <3",
14
+ "typing-extensions>=4.14, <5",
15
+ "anyio>=3.5.0, <5",
16
+ "distro>=1.7.0, <2",
17
+ "sniffio",
17
18
  ]
19
+
18
20
  requires-python = ">= 3.9"
19
21
  classifiers = [
20
22
  "Typing :: Typed",
@@ -24,6 +26,7 @@ classifiers = [
24
26
  "Programming Language :: Python :: 3.11",
25
27
  "Programming Language :: Python :: 3.12",
26
28
  "Programming Language :: Python :: 3.13",
29
+ "Programming Language :: Python :: 3.14",
27
30
  "Operating System :: OS Independent",
28
31
  "Operating System :: POSIX",
29
32
  "Operating System :: MacOS",
@@ -45,7 +48,7 @@ managed = true
45
48
  # version pins are in requirements-dev.lock
46
49
  dev-dependencies = [
47
50
  "pyright==1.1.399",
48
- "mypy",
51
+ "mypy==1.17",
49
52
  "respx",
50
53
  "pytest",
51
54
  "pytest-asyncio",
@@ -66,7 +69,7 @@ format = { chain = [
66
69
  # run formatting again to fix any inconsistencies when imports are stripped
67
70
  "format:ruff",
68
71
  ]}
69
- "format:docs" = "python scripts/utils/ruffen-docs.py README.md api.md"
72
+ "format:docs" = "bash -c 'python scripts/utils/ruffen-docs.py README.md $(find . -type f -name api.md)'"
70
73
  "format:ruff" = "ruff format"
71
74
 
72
75
  "lint" = { chain = [
@@ -12,40 +12,45 @@
12
12
  -e file:.
13
13
  aiohappyeyeballs==2.6.1
14
14
  # via aiohttp
15
- aiohttp==3.12.8
15
+ aiohttp==3.13.3
16
16
  # via httpx-aiohttp
17
17
  # via prelude-python-sdk
18
- aiosignal==1.3.2
18
+ aiosignal==1.4.0
19
19
  # via aiohttp
20
- annotated-types==0.6.0
20
+ annotated-types==0.7.0
21
21
  # via pydantic
22
- anyio==4.4.0
22
+ anyio==4.12.1
23
23
  # via httpx
24
24
  # via prelude-python-sdk
25
- argcomplete==3.1.2
25
+ argcomplete==3.6.3
26
26
  # via nox
27
27
  async-timeout==5.0.1
28
28
  # via aiohttp
29
- attrs==25.3.0
29
+ attrs==25.4.0
30
30
  # via aiohttp
31
- certifi==2023.7.22
31
+ # via nox
32
+ backports-asyncio-runner==1.2.0
33
+ # via pytest-asyncio
34
+ certifi==2026.1.4
32
35
  # via httpcore
33
36
  # via httpx
34
- colorlog==6.7.0
37
+ colorlog==6.10.1
38
+ # via nox
39
+ dependency-groups==1.3.1
35
40
  # via nox
36
- dirty-equals==0.6.0
37
- distlib==0.3.7
41
+ dirty-equals==0.11
42
+ distlib==0.4.0
38
43
  # via virtualenv
39
- distro==1.8.0
44
+ distro==1.9.0
40
45
  # via prelude-python-sdk
41
- exceptiongroup==1.2.2
46
+ exceptiongroup==1.3.1
42
47
  # via anyio
43
48
  # via pytest
44
- execnet==2.1.1
49
+ execnet==2.1.2
45
50
  # via pytest-xdist
46
- filelock==3.12.4
51
+ filelock==3.19.1
47
52
  # via virtualenv
48
- frozenlist==1.6.2
53
+ frozenlist==1.8.0
49
54
  # via aiohttp
50
55
  # via aiosignal
51
56
  h11==0.16.0
@@ -56,82 +61,89 @@ httpx==0.28.1
56
61
  # via httpx-aiohttp
57
62
  # via prelude-python-sdk
58
63
  # via respx
59
- httpx-aiohttp==0.1.9
64
+ httpx-aiohttp==0.1.12
60
65
  # via prelude-python-sdk
61
- idna==3.4
66
+ humanize==4.13.0
67
+ # via nox
68
+ idna==3.11
62
69
  # via anyio
63
70
  # via httpx
64
71
  # via yarl
65
- importlib-metadata==7.0.0
66
- iniconfig==2.0.0
72
+ importlib-metadata==8.7.1
73
+ iniconfig==2.1.0
67
74
  # via pytest
68
75
  markdown-it-py==3.0.0
69
76
  # via rich
70
77
  mdurl==0.1.2
71
78
  # via markdown-it-py
72
- multidict==6.4.4
79
+ multidict==6.7.0
73
80
  # via aiohttp
74
81
  # via yarl
75
- mypy==1.14.1
76
- mypy-extensions==1.0.0
82
+ mypy==1.17.0
83
+ mypy-extensions==1.1.0
77
84
  # via mypy
78
- nodeenv==1.8.0
85
+ nodeenv==1.10.0
79
86
  # via pyright
80
- nox==2023.4.22
81
- packaging==23.2
87
+ nox==2025.11.12
88
+ packaging==25.0
89
+ # via dependency-groups
82
90
  # via nox
83
91
  # via pytest
84
- platformdirs==3.11.0
92
+ pathspec==1.0.3
93
+ # via mypy
94
+ platformdirs==4.4.0
85
95
  # via virtualenv
86
- pluggy==1.5.0
96
+ pluggy==1.6.0
87
97
  # via pytest
88
- propcache==0.3.1
98
+ propcache==0.4.1
89
99
  # via aiohttp
90
100
  # via yarl
91
- pydantic==2.11.9
101
+ pydantic==2.12.5
92
102
  # via prelude-python-sdk
93
- pydantic-core==2.33.2
103
+ pydantic-core==2.41.5
94
104
  # via pydantic
95
- pygments==2.18.0
105
+ pygments==2.19.2
106
+ # via pytest
96
107
  # via rich
97
108
  pyright==1.1.399
98
- pytest==8.3.3
109
+ pytest==8.4.2
99
110
  # via pytest-asyncio
100
111
  # via pytest-xdist
101
- pytest-asyncio==0.24.0
102
- pytest-xdist==3.7.0
103
- python-dateutil==2.8.2
112
+ pytest-asyncio==1.2.0
113
+ pytest-xdist==3.8.0
114
+ python-dateutil==2.9.0.post0
104
115
  # via time-machine
105
- pytz==2023.3.post1
106
- # via dirty-equals
107
116
  respx==0.22.0
108
- rich==13.7.1
109
- ruff==0.9.4
110
- setuptools==68.2.2
111
- # via nodeenv
112
- six==1.16.0
117
+ rich==14.2.0
118
+ ruff==0.14.13
119
+ six==1.17.0
113
120
  # via python-dateutil
114
- sniffio==1.3.0
115
- # via anyio
121
+ sniffio==1.3.1
116
122
  # via prelude-python-sdk
117
- time-machine==2.9.0
118
- tomli==2.0.2
123
+ time-machine==2.19.0
124
+ tomli==2.4.0
125
+ # via dependency-groups
119
126
  # via mypy
127
+ # via nox
120
128
  # via pytest
121
- typing-extensions==4.12.2
129
+ typing-extensions==4.15.0
130
+ # via aiosignal
122
131
  # via anyio
132
+ # via exceptiongroup
123
133
  # via multidict
124
134
  # via mypy
125
135
  # via prelude-python-sdk
126
136
  # via pydantic
127
137
  # via pydantic-core
128
138
  # via pyright
139
+ # via pytest-asyncio
129
140
  # via typing-inspection
130
- typing-inspection==0.4.1
141
+ # via virtualenv
142
+ typing-inspection==0.4.2
131
143
  # via pydantic
132
- virtualenv==20.24.5
144
+ virtualenv==20.36.1
133
145
  # via nox
134
- yarl==1.20.0
146
+ yarl==1.22.0
135
147
  # via aiohttp
136
- zipp==3.17.0
148
+ zipp==3.23.0
137
149
  # via importlib-metadata
@@ -12,28 +12,28 @@
12
12
  -e file:.
13
13
  aiohappyeyeballs==2.6.1
14
14
  # via aiohttp
15
- aiohttp==3.12.8
15
+ aiohttp==3.13.3
16
16
  # via httpx-aiohttp
17
17
  # via prelude-python-sdk
18
- aiosignal==1.3.2
18
+ aiosignal==1.4.0
19
19
  # via aiohttp
20
- annotated-types==0.6.0
20
+ annotated-types==0.7.0
21
21
  # via pydantic
22
- anyio==4.4.0
22
+ anyio==4.12.1
23
23
  # via httpx
24
24
  # via prelude-python-sdk
25
25
  async-timeout==5.0.1
26
26
  # via aiohttp
27
- attrs==25.3.0
27
+ attrs==25.4.0
28
28
  # via aiohttp
29
- certifi==2023.7.22
29
+ certifi==2026.1.4
30
30
  # via httpcore
31
31
  # via httpx
32
- distro==1.8.0
32
+ distro==1.9.0
33
33
  # via prelude-python-sdk
34
- exceptiongroup==1.2.2
34
+ exceptiongroup==1.3.1
35
35
  # via anyio
36
- frozenlist==1.6.2
36
+ frozenlist==1.8.0
37
37
  # via aiohttp
38
38
  # via aiosignal
39
39
  h11==0.16.0
@@ -43,33 +43,34 @@ httpcore==1.0.9
43
43
  httpx==0.28.1
44
44
  # via httpx-aiohttp
45
45
  # via prelude-python-sdk
46
- httpx-aiohttp==0.1.9
46
+ httpx-aiohttp==0.1.12
47
47
  # via prelude-python-sdk
48
- idna==3.4
48
+ idna==3.11
49
49
  # via anyio
50
50
  # via httpx
51
51
  # via yarl
52
- multidict==6.4.4
52
+ multidict==6.7.0
53
53
  # via aiohttp
54
54
  # via yarl
55
- propcache==0.3.1
55
+ propcache==0.4.1
56
56
  # via aiohttp
57
57
  # via yarl
58
- pydantic==2.11.9
58
+ pydantic==2.12.5
59
59
  # via prelude-python-sdk
60
- pydantic-core==2.33.2
60
+ pydantic-core==2.41.5
61
61
  # via pydantic
62
- sniffio==1.3.0
63
- # via anyio
62
+ sniffio==1.3.1
64
63
  # via prelude-python-sdk
65
- typing-extensions==4.12.2
64
+ typing-extensions==4.15.0
65
+ # via aiosignal
66
66
  # via anyio
67
+ # via exceptiongroup
67
68
  # via multidict
68
69
  # via prelude-python-sdk
69
70
  # via pydantic
70
71
  # via pydantic-core
71
72
  # via typing-inspection
72
- typing-inspection==0.4.1
73
+ typing-inspection==0.4.2
73
74
  # via pydantic
74
- yarl==1.20.0
75
+ yarl==1.22.0
75
76
  # via aiohttp