payi 0.1.0a23__tar.gz → 0.1.0a25__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.

Potentially problematic release.


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

Files changed (139) hide show
  1. payi-0.1.0a25/.release-please-manifest.json +3 -0
  2. {payi-0.1.0a23 → payi-0.1.0a25}/CHANGELOG.md +28 -0
  3. {payi-0.1.0a23 → payi-0.1.0a25}/CONTRIBUTING.md +4 -4
  4. {payi-0.1.0a23 → payi-0.1.0a25}/PKG-INFO +12 -1
  5. {payi-0.1.0a23 → payi-0.1.0a25}/README.md +11 -0
  6. {payi-0.1.0a23 → payi-0.1.0a25}/api.md +25 -5
  7. {payi-0.1.0a23 → payi-0.1.0a25}/pyproject.toml +1 -5
  8. {payi-0.1.0a23 → payi-0.1.0a25}/requirements-dev.lock +3 -3
  9. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_base_client.py +60 -48
  10. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_client.py +8 -0
  11. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_compat.py +2 -0
  12. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_utils.py +4 -3
  13. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_version.py +1 -1
  14. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/__init__.py +14 -0
  15. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/budgets/budgets.py +24 -2
  16. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/budgets/tags.py +22 -0
  17. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/categories/categories.py +22 -0
  18. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/categories/resources.py +22 -0
  19. payi-0.1.0a25/src/payi/resources/evaluations/__init__.py +47 -0
  20. payi-0.1.0a25/src/payi/resources/evaluations/evaluations.py +134 -0
  21. payi-0.1.0a25/src/payi/resources/evaluations/experiences.py +188 -0
  22. payi-0.1.0a25/src/payi/resources/evaluations/requests.py +200 -0
  23. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/experiences/experiences.py +32 -10
  24. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/experiences/types.py +93 -51
  25. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/ingest.py +22 -0
  26. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/__init__.py +1 -0
  27. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_delete_response.py +2 -2
  28. payi-0.1.0a25/src/payi/types/evaluations/__init__.py +6 -0
  29. payi-0.1.0a25/src/payi/types/evaluations/experience_create_params.py +14 -0
  30. payi-0.1.0a25/src/payi/types/evaluations/request_create_params.py +14 -0
  31. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experiences/__init__.py +1 -0
  32. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experiences/experience_type.py +0 -2
  33. payi-0.1.0a25/src/payi/types/experiences/type_list_params.py +12 -0
  34. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experiences/type_update_params.py +2 -5
  35. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/requests_data.py +8 -4
  36. payi-0.1.0a25/src/payi/types/shared/__init__.py +3 -0
  37. payi-0.1.0a25/src/payi/types/shared/evaluation_response.py +11 -0
  38. payi-0.1.0a25/src/payi/types/total_cost_data.py +15 -0
  39. payi-0.1.0a25/tests/api_resources/evaluations/test_experiences.py +124 -0
  40. payi-0.1.0a25/tests/api_resources/evaluations/test_requests.py +124 -0
  41. payi-0.1.0a25/tests/api_resources/experiences/__init__.py +1 -0
  42. {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/experiences/test_types.py +52 -45
  43. {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/test_experiences.py +8 -8
  44. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_client.py +2 -0
  45. payi-0.1.0a23/.release-please-manifest.json +0 -3
  46. payi-0.1.0a23/src/payi/types/total_cost_data.py +0 -31
  47. {payi-0.1.0a23 → payi-0.1.0a25}/.gitignore +0 -0
  48. {payi-0.1.0a23 → payi-0.1.0a25}/LICENSE +0 -0
  49. {payi-0.1.0a23 → payi-0.1.0a25}/SECURITY.md +0 -0
  50. {payi-0.1.0a23 → payi-0.1.0a25}/bin/check-release-environment +0 -0
  51. {payi-0.1.0a23 → payi-0.1.0a25}/bin/publish-pypi +0 -0
  52. {payi-0.1.0a23 → payi-0.1.0a25}/examples/.keep +0 -0
  53. {payi-0.1.0a23 → payi-0.1.0a25}/mypy.ini +0 -0
  54. {payi-0.1.0a23 → payi-0.1.0a25}/noxfile.py +0 -0
  55. {payi-0.1.0a23 → payi-0.1.0a25}/release-please-config.json +0 -0
  56. {payi-0.1.0a23 → payi-0.1.0a25}/requirements.lock +0 -0
  57. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/__init__.py +0 -0
  58. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_constants.py +0 -0
  59. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_exceptions.py +0 -0
  60. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_files.py +0 -0
  61. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_models.py +0 -0
  62. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_qs.py +0 -0
  63. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_resource.py +0 -0
  64. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_response.py +0 -0
  65. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_streaming.py +0 -0
  66. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_types.py +0 -0
  67. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/__init__.py +0 -0
  68. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_logs.py +0 -0
  69. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_proxy.py +0 -0
  70. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_reflection.py +0 -0
  71. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_streams.py +0 -0
  72. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_sync.py +0 -0
  73. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_transform.py +0 -0
  74. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_typing.py +0 -0
  75. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/lib/.keep +0 -0
  76. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/lib/helpers.py +0 -0
  77. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/py.typed +0 -0
  78. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/budgets/__init__.py +0 -0
  79. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/categories/__init__.py +0 -0
  80. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/experiences/__init__.py +0 -0
  81. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budget_create_params.py +0 -0
  82. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budget_history_response.py +0 -0
  83. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budget_list_params.py +0 -0
  84. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budget_response.py +0 -0
  85. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budget_update_params.py +0 -0
  86. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/__init__.py +0 -0
  87. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/budget_tags.py +0 -0
  88. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_create_params.py +0 -0
  89. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_create_response.py +0 -0
  90. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_delete_response.py +0 -0
  91. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_list_response.py +0 -0
  92. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_remove_params.py +0 -0
  93. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_remove_response.py +0 -0
  94. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_update_params.py +0 -0
  95. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_update_response.py +0 -0
  96. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/bulk_ingest_response.py +0 -0
  97. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/categories/__init__.py +0 -0
  98. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/categories/resource_create_params.py +0 -0
  99. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/categories/resource_list_response.py +0 -0
  100. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_delete_resource_response.py +0 -0
  101. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_list_resources_response.py +0 -0
  102. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_list_response.py +0 -0
  103. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_resource_response.py +0 -0
  104. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_response.py +0 -0
  105. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/cost_data.py +0 -0
  106. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/cost_details.py +0 -0
  107. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/default_response.py +0 -0
  108. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experience_instance.py +0 -0
  109. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experiences/type_create_params.py +0 -0
  110. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experiences/type_list_response.py +0 -0
  111. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/ingest_bulk_params.py +0 -0
  112. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/ingest_event_param.py +0 -0
  113. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/ingest_response.py +0 -0
  114. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/ingest_units_params.py +0 -0
  115. {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/paged_budget_list.py +0 -0
  116. {payi-0.1.0a23 → payi-0.1.0a25}/tests/__init__.py +0 -0
  117. {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/__init__.py +0 -0
  118. {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/budgets/__init__.py +0 -0
  119. {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/budgets/test_tags.py +0 -0
  120. {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/categories/__init__.py +0 -0
  121. {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/categories/test_resources.py +0 -0
  122. {payi-0.1.0a23/tests/api_resources/experiences → payi-0.1.0a25/tests/api_resources/evaluations}/__init__.py +0 -0
  123. {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/test_budgets.py +0 -0
  124. {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/test_categories.py +0 -0
  125. {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/test_ingest.py +0 -0
  126. {payi-0.1.0a23 → payi-0.1.0a25}/tests/conftest.py +0 -0
  127. {payi-0.1.0a23 → payi-0.1.0a25}/tests/sample_file.txt +0 -0
  128. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_deepcopy.py +0 -0
  129. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_extract_files.py +0 -0
  130. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_files.py +0 -0
  131. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_models.py +0 -0
  132. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_qs.py +0 -0
  133. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_required_args.py +0 -0
  134. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_response.py +0 -0
  135. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_streaming.py +0 -0
  136. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_transform.py +0 -0
  137. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_utils/test_proxy.py +0 -0
  138. {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_utils/test_typing.py +0 -0
  139. {payi-0.1.0a23 → payi-0.1.0a25}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.25"
3
+ }
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.25 (2024-09-25)
4
+
5
+ Full Changelog: [v0.1.0-alpha.24...v0.1.0-alpha.25](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.24...v0.1.0-alpha.25)
6
+
7
+ ### Features
8
+
9
+ * **api:** add Evaluations ([#114](https://github.com/Pay-i/pay-i-python/issues/114)) ([6352b8d](https://github.com/Pay-i/pay-i-python/commit/6352b8d8d69a8e2d636e7fd43745dae02b8c7fc9))
10
+
11
+
12
+ ### Chores
13
+
14
+ * **internal:** codegen related update ([#115](https://github.com/Pay-i/pay-i-python/issues/115)) ([17c1b4d](https://github.com/Pay-i/pay-i-python/commit/17c1b4d89f6b54d87bc9e8dbceea2d6f4bd4f30a))
15
+ * **internal:** update pydantic v1 compat helpers ([#117](https://github.com/Pay-i/pay-i-python/issues/117)) ([e4a11c5](https://github.com/Pay-i/pay-i-python/commit/e4a11c5d2ad7baf3920d5608d07a31d9649ff570))
16
+
17
+ ## 0.1.0-alpha.24 (2024-09-03)
18
+
19
+ Full Changelog: [v0.1.0-alpha.23...v0.1.0-alpha.24](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.23...v0.1.0-alpha.24)
20
+
21
+ ### Features
22
+
23
+ * **api:** update via SDK Studio ([#109](https://github.com/Pay-i/pay-i-python/issues/109)) ([0655739](https://github.com/Pay-i/pay-i-python/commit/0655739af5c05d7dc0a906cba9c9ca6981c5c5c4))
24
+ * **api:** update via SDK Studio ([#111](https://github.com/Pay-i/pay-i-python/issues/111)) ([ac5c8a1](https://github.com/Pay-i/pay-i-python/commit/ac5c8a15234a1894d05e71bf7242ccaaa8ce81a7))
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * **api:** manual update ([#112](https://github.com/Pay-i/pay-i-python/issues/112)) ([e384406](https://github.com/Pay-i/pay-i-python/commit/e38440680eec95f16d2344b0185cd6752e522093))
30
+
3
31
  ## 0.1.0-alpha.23 (2024-09-03)
4
32
 
5
33
  Full Changelog: [v0.1.0-alpha.22...v0.1.0-alpha.23](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.22...v0.1.0-alpha.23)
@@ -31,13 +31,13 @@ $ pip install -r requirements-dev.lock
31
31
 
32
32
  ## Modifying/Adding code
33
33
 
34
- Most of the SDK is generated code, and any modified code will be overridden on the next generation. The
35
- `src/payi/lib/` and `examples/` directories are exceptions and will never be overridden.
34
+ Most of the SDK is generated code. Modifications to code will be persisted between generations, but may
35
+ result in merge conflicts between manual patches and changes from the generator. The generator will never
36
+ modify the contents of the `src/payi/lib/` and `examples/` directories.
36
37
 
37
38
  ## Adding and running examples
38
39
 
39
- All files in the `examples/` directory are not modified by the Stainless generator and can be freely edited or
40
- added to.
40
+ All files in the `examples/` directory are not modified by the generator and can be freely edited or added to.
41
41
 
42
42
  ```bash
43
43
  # add an example to examples/<your-example>.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: payi
3
- Version: 0.1.0a23
3
+ Version: 0.1.0a25
4
4
  Summary: The official Python library for the payi API
5
5
  Project-URL: Homepage, https://github.com/Pay-i/pay-i-python
6
6
  Project-URL: Repository, https://github.com/Pay-i/pay-i-python
@@ -356,6 +356,17 @@ We take backwards-compatibility seriously and work hard to ensure you can rely o
356
356
 
357
357
  We are keen for your feedback; please open an [issue](https://www.github.com/Pay-i/pay-i-python/issues) with questions, bugs, or suggestions.
358
358
 
359
+ ### Determining the installed version
360
+
361
+ If you've upgraded to the latest version but aren't seeing any new features you were expecting then your python environment is likely still using an older version.
362
+
363
+ You can determine the version that is being used at runtime with:
364
+
365
+ ```py
366
+ import payi
367
+ print(payi.__version__)
368
+ ```
369
+
359
370
  ## Requirements
360
371
 
361
372
  Python 3.7 or higher.
@@ -322,6 +322,17 @@ We take backwards-compatibility seriously and work hard to ensure you can rely o
322
322
 
323
323
  We are keen for your feedback; please open an [issue](https://www.github.com/Pay-i/pay-i-python/issues) with questions, bugs, or suggestions.
324
324
 
325
+ ### Determining the installed version
326
+
327
+ If you've upgraded to the latest version but aren't seeing any new features you were expecting then your python environment is likely still using an older version.
328
+
329
+ You can determine the version that is being used at runtime with:
330
+
331
+ ```py
332
+ import payi
333
+ print(payi.__version__)
334
+ ```
335
+
325
336
  ## Requirements
326
337
 
327
338
  Python 3.7 or higher.
@@ -1,3 +1,9 @@
1
+ # Shared Types
2
+
3
+ ```python
4
+ from payi.types import EvaluationResponse
5
+ ```
6
+
1
7
  # Budgets
2
8
 
3
9
  Types:
@@ -107,7 +113,7 @@ from payi.types import ExperienceInstance
107
113
 
108
114
  Methods:
109
115
 
110
- - <code title="post /api/v1/experiences/instances/{experience_type_id}">client.experiences.<a href="./src/payi/resources/experiences/experiences.py">create</a>(experience_type_id) -> <a href="./src/payi/types/experience_instance.py">ExperienceInstance</a></code>
116
+ - <code title="post /api/v1/experiences/instances/{experience_name}">client.experiences.<a href="./src/payi/resources/experiences/experiences.py">create</a>(experience_name) -> <a href="./src/payi/types/experience_instance.py">ExperienceInstance</a></code>
111
117
  - <code title="get /api/v1/experiences/instances/{experience_id}">client.experiences.<a href="./src/payi/resources/experiences/experiences.py">retrieve</a>(experience_id) -> <a href="./src/payi/types/experience_instance.py">ExperienceInstance</a></code>
112
118
  - <code title="delete /api/v1/experiences/instances/{experience_id}">client.experiences.<a href="./src/payi/resources/experiences/experiences.py">delete</a>(experience_id) -> <a href="./src/payi/types/experience_instance.py">ExperienceInstance</a></code>
113
119
 
@@ -122,7 +128,21 @@ from payi.types.experiences import ExperienceType, TypeListResponse
122
128
  Methods:
123
129
 
124
130
  - <code title="post /api/v1/experiences/types">client.experiences.types.<a href="./src/payi/resources/experiences/types.py">create</a>(\*\*<a href="src/payi/types/experiences/type_create_params.py">params</a>) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
125
- - <code title="get /api/v1/experiences/types/{experience_type_id}">client.experiences.types.<a href="./src/payi/resources/experiences/types.py">retrieve</a>(experience_type_id) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
126
- - <code title="patch /api/v1/experiences/types/{experience_type_id}">client.experiences.types.<a href="./src/payi/resources/experiences/types.py">update</a>(experience_type_id, \*\*<a href="src/payi/types/experiences/type_update_params.py">params</a>) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
127
- - <code title="get /api/v1/experiences/types">client.experiences.types.<a href="./src/payi/resources/experiences/types.py">list</a>() -> <a href="./src/payi/types/experiences/type_list_response.py">TypeListResponse</a></code>
128
- - <code title="delete /api/v1/experiences/types/{experience_type_id}">client.experiences.types.<a href="./src/payi/resources/experiences/types.py">delete</a>(experience_type_id) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
131
+ - <code title="get /api/v1/experiences/types/{experience_name}">client.experiences.types.<a href="./src/payi/resources/experiences/types.py">retrieve</a>(experience_name) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
132
+ - <code title="patch /api/v1/experiences/types/{experience_name}">client.experiences.types.<a href="./src/payi/resources/experiences/types.py">update</a>(experience_name, \*\*<a href="src/payi/types/experiences/type_update_params.py">params</a>) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
133
+ - <code title="get /api/v1/experiences/types">client.experiences.types.<a href="./src/payi/resources/experiences/types.py">list</a>(\*\*<a href="src/payi/types/experiences/type_list_params.py">params</a>) -> <a href="./src/payi/types/experiences/type_list_response.py">TypeListResponse</a></code>
134
+ - <code title="delete /api/v1/experiences/types/{experience_name}">client.experiences.types.<a href="./src/payi/resources/experiences/types.py">delete</a>(experience_name) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
135
+
136
+ # Evaluations
137
+
138
+ ## Experiences
139
+
140
+ Methods:
141
+
142
+ - <code title="post /api/v1/evaluations/experiences/{experience_id}">client.evaluations.experiences.<a href="./src/payi/resources/evaluations/experiences.py">create</a>(experience_id, \*\*<a href="src/payi/types/evaluations/experience_create_params.py">params</a>) -> <a href="./src/payi/types/shared/evaluation_response.py">EvaluationResponse</a></code>
143
+
144
+ ## Requests
145
+
146
+ Methods:
147
+
148
+ - <code title="post /api/v1/evaluations/requests/{request_id}">client.evaluations.requests.<a href="./src/payi/resources/evaluations/requests.py">create</a>(request_id, \*\*<a href="src/payi/types/evaluations/request_create_params.py">params</a>) -> <a href="./src/payi/types/shared/evaluation_response.py">EvaluationResponse</a></code>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "payi"
3
- version = "0.1.0-alpha.23"
3
+ version = "0.1.0-alpha.25"
4
4
  description = "The official Python library for the payi API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -15,7 +15,6 @@ dependencies = [
15
15
  "distro>=1.7.0, <2",
16
16
  "sniffio",
17
17
  "cached-property; python_version < '3.8'",
18
-
19
18
  ]
20
19
  requires-python = ">= 3.7"
21
20
  classifiers = [
@@ -36,8 +35,6 @@ classifiers = [
36
35
  "License :: OSI Approved :: Apache Software License"
37
36
  ]
38
37
 
39
-
40
-
41
38
  [project.urls]
42
39
  Homepage = "https://github.com/Pay-i/pay-i-python"
43
40
  Repository = "https://github.com/Pay-i/pay-i-python"
@@ -59,7 +56,6 @@ dev-dependencies = [
59
56
  "dirty-equals>=0.6.0",
60
57
  "importlib-metadata>=6.7.0",
61
58
  "rich>=13.7.1",
62
-
63
59
  ]
64
60
 
65
61
  [tool.rye.scripts]
@@ -49,7 +49,7 @@ markdown-it-py==3.0.0
49
49
  # via rich
50
50
  mdurl==0.1.2
51
51
  # via markdown-it-py
52
- mypy==1.10.1
52
+ mypy==1.11.2
53
53
  mypy-extensions==1.0.0
54
54
  # via mypy
55
55
  nodeenv==1.8.0
@@ -70,7 +70,7 @@ pydantic-core==2.18.2
70
70
  # via pydantic
71
71
  pygments==2.18.0
72
72
  # via rich
73
- pyright==1.1.374
73
+ pyright==1.1.380
74
74
  pytest==7.1.1
75
75
  # via pytest-asyncio
76
76
  pytest-asyncio==0.21.1
@@ -80,7 +80,7 @@ pytz==2023.3.post1
80
80
  # via dirty-equals
81
81
  respx==0.20.2
82
82
  rich==13.7.1
83
- ruff==0.5.6
83
+ ruff==0.6.5
84
84
  setuptools==68.2.2
85
85
  # via nodeenv
86
86
  six==1.16.0
@@ -400,14 +400,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
400
400
  ) -> _exceptions.APIStatusError:
401
401
  raise NotImplementedError()
402
402
 
403
- def _remaining_retries(
404
- self,
405
- remaining_retries: Optional[int],
406
- options: FinalRequestOptions,
407
- ) -> int:
408
- return remaining_retries if remaining_retries is not None else options.get_max_retries(self.max_retries)
409
-
410
- def _build_headers(self, options: FinalRequestOptions) -> httpx.Headers:
403
+ def _build_headers(self, options: FinalRequestOptions, *, retries_taken: int = 0) -> httpx.Headers:
411
404
  custom_headers = options.headers or {}
412
405
  headers_dict = _merge_mappings(self.default_headers, custom_headers)
413
406
  self._validate_headers(headers_dict, custom_headers)
@@ -419,6 +412,8 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
419
412
  if idempotency_header and options.method.lower() != "get" and idempotency_header not in headers:
420
413
  headers[idempotency_header] = options.idempotency_key or self._idempotency_key()
421
414
 
415
+ headers.setdefault("x-stainless-retry-count", str(retries_taken))
416
+
422
417
  return headers
423
418
 
424
419
  def _prepare_url(self, url: str) -> URL:
@@ -440,6 +435,8 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
440
435
  def _build_request(
441
436
  self,
442
437
  options: FinalRequestOptions,
438
+ *,
439
+ retries_taken: int = 0,
443
440
  ) -> httpx.Request:
444
441
  if log.isEnabledFor(logging.DEBUG):
445
442
  log.debug("Request options: %s", model_dump(options, exclude_unset=True))
@@ -455,7 +452,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
455
452
  else:
456
453
  raise RuntimeError(f"Unexpected JSON data type, {type(json_data)}, cannot merge with `extra_body`")
457
454
 
458
- headers = self._build_headers(options)
455
+ headers = self._build_headers(options, retries_taken=retries_taken)
459
456
  params = _merge_mappings(self.default_query, options.params)
460
457
  content_type = headers.get("Content-Type")
461
458
  files = options.files
@@ -489,12 +486,17 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
489
486
  if not files:
490
487
  files = cast(HttpxRequestFiles, ForceMultipartDict())
491
488
 
489
+ prepared_url = self._prepare_url(options.url)
490
+ if "_" in prepared_url.host:
491
+ # work around https://github.com/encode/httpx/discussions/2880
492
+ kwargs["extensions"] = {"sni_hostname": prepared_url.host.replace("_", "-")}
493
+
492
494
  # TODO: report this error to httpx
493
495
  return self._client.build_request( # pyright: ignore[reportUnknownMemberType]
494
496
  headers=headers,
495
497
  timeout=self.timeout if isinstance(options.timeout, NotGiven) else options.timeout,
496
498
  method=options.method,
497
- url=self._prepare_url(options.url),
499
+ url=prepared_url,
498
500
  # the `Query` type that we use is incompatible with qs'
499
501
  # `Params` type as it needs to be typed as `Mapping[str, object]`
500
502
  # so that passing a `TypedDict` doesn't cause an error.
@@ -933,12 +935,17 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
933
935
  stream: bool = False,
934
936
  stream_cls: type[_StreamT] | None = None,
935
937
  ) -> ResponseT | _StreamT:
938
+ if remaining_retries is not None:
939
+ retries_taken = options.get_max_retries(self.max_retries) - remaining_retries
940
+ else:
941
+ retries_taken = 0
942
+
936
943
  return self._request(
937
944
  cast_to=cast_to,
938
945
  options=options,
939
946
  stream=stream,
940
947
  stream_cls=stream_cls,
941
- remaining_retries=remaining_retries,
948
+ retries_taken=retries_taken,
942
949
  )
943
950
 
944
951
  def _request(
@@ -946,7 +953,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
946
953
  *,
947
954
  cast_to: Type[ResponseT],
948
955
  options: FinalRequestOptions,
949
- remaining_retries: int | None,
956
+ retries_taken: int,
950
957
  stream: bool,
951
958
  stream_cls: type[_StreamT] | None,
952
959
  ) -> ResponseT | _StreamT:
@@ -958,8 +965,8 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
958
965
  cast_to = self._maybe_override_cast_to(cast_to, options)
959
966
  options = self._prepare_options(options)
960
967
 
961
- retries = self._remaining_retries(remaining_retries, options)
962
- request = self._build_request(options)
968
+ remaining_retries = options.get_max_retries(self.max_retries) - retries_taken
969
+ request = self._build_request(options, retries_taken=retries_taken)
963
970
  self._prepare_request(request)
964
971
 
965
972
  kwargs: HttpxSendArgs = {}
@@ -977,11 +984,11 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
977
984
  except httpx.TimeoutException as err:
978
985
  log.debug("Encountered httpx.TimeoutException", exc_info=True)
979
986
 
980
- if retries > 0:
987
+ if remaining_retries > 0:
981
988
  return self._retry_request(
982
989
  input_options,
983
990
  cast_to,
984
- retries,
991
+ retries_taken=retries_taken,
985
992
  stream=stream,
986
993
  stream_cls=stream_cls,
987
994
  response_headers=None,
@@ -992,11 +999,11 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
992
999
  except Exception as err:
993
1000
  log.debug("Encountered Exception", exc_info=True)
994
1001
 
995
- if retries > 0:
1002
+ if remaining_retries > 0:
996
1003
  return self._retry_request(
997
1004
  input_options,
998
1005
  cast_to,
999
- retries,
1006
+ retries_taken=retries_taken,
1000
1007
  stream=stream,
1001
1008
  stream_cls=stream_cls,
1002
1009
  response_headers=None,
@@ -1019,13 +1026,13 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1019
1026
  except httpx.HTTPStatusError as err: # thrown on 4xx and 5xx status code
1020
1027
  log.debug("Encountered httpx.HTTPStatusError", exc_info=True)
1021
1028
 
1022
- if retries > 0 and self._should_retry(err.response):
1029
+ if remaining_retries > 0 and self._should_retry(err.response):
1023
1030
  err.response.close()
1024
1031
  return self._retry_request(
1025
1032
  input_options,
1026
1033
  cast_to,
1027
- retries,
1028
- err.response.headers,
1034
+ retries_taken=retries_taken,
1035
+ response_headers=err.response.headers,
1029
1036
  stream=stream,
1030
1037
  stream_cls=stream_cls,
1031
1038
  )
@@ -1044,26 +1051,26 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1044
1051
  response=response,
1045
1052
  stream=stream,
1046
1053
  stream_cls=stream_cls,
1047
- retries_taken=options.get_max_retries(self.max_retries) - retries,
1054
+ retries_taken=retries_taken,
1048
1055
  )
1049
1056
 
1050
1057
  def _retry_request(
1051
1058
  self,
1052
1059
  options: FinalRequestOptions,
1053
1060
  cast_to: Type[ResponseT],
1054
- remaining_retries: int,
1055
- response_headers: httpx.Headers | None,
1056
1061
  *,
1062
+ retries_taken: int,
1063
+ response_headers: httpx.Headers | None,
1057
1064
  stream: bool,
1058
1065
  stream_cls: type[_StreamT] | None,
1059
1066
  ) -> ResponseT | _StreamT:
1060
- remaining = remaining_retries - 1
1061
- if remaining == 1:
1067
+ remaining_retries = options.get_max_retries(self.max_retries) - retries_taken
1068
+ if remaining_retries == 1:
1062
1069
  log.debug("1 retry left")
1063
1070
  else:
1064
- log.debug("%i retries left", remaining)
1071
+ log.debug("%i retries left", remaining_retries)
1065
1072
 
1066
- timeout = self._calculate_retry_timeout(remaining, options, response_headers)
1073
+ timeout = self._calculate_retry_timeout(remaining_retries, options, response_headers)
1067
1074
  log.info("Retrying request to %s in %f seconds", options.url, timeout)
1068
1075
 
1069
1076
  # In a synchronous context we are blocking the entire thread. Up to the library user to run the client in a
@@ -1073,7 +1080,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1073
1080
  return self._request(
1074
1081
  options=options,
1075
1082
  cast_to=cast_to,
1076
- remaining_retries=remaining,
1083
+ retries_taken=retries_taken + 1,
1077
1084
  stream=stream,
1078
1085
  stream_cls=stream_cls,
1079
1086
  )
@@ -1491,12 +1498,17 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1491
1498
  stream_cls: type[_AsyncStreamT] | None = None,
1492
1499
  remaining_retries: Optional[int] = None,
1493
1500
  ) -> ResponseT | _AsyncStreamT:
1501
+ if remaining_retries is not None:
1502
+ retries_taken = options.get_max_retries(self.max_retries) - remaining_retries
1503
+ else:
1504
+ retries_taken = 0
1505
+
1494
1506
  return await self._request(
1495
1507
  cast_to=cast_to,
1496
1508
  options=options,
1497
1509
  stream=stream,
1498
1510
  stream_cls=stream_cls,
1499
- remaining_retries=remaining_retries,
1511
+ retries_taken=retries_taken,
1500
1512
  )
1501
1513
 
1502
1514
  async def _request(
@@ -1506,7 +1518,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1506
1518
  *,
1507
1519
  stream: bool,
1508
1520
  stream_cls: type[_AsyncStreamT] | None,
1509
- remaining_retries: int | None,
1521
+ retries_taken: int,
1510
1522
  ) -> ResponseT | _AsyncStreamT:
1511
1523
  if self._platform is None:
1512
1524
  # `get_platform` can make blocking IO calls so we
@@ -1521,8 +1533,8 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1521
1533
  cast_to = self._maybe_override_cast_to(cast_to, options)
1522
1534
  options = await self._prepare_options(options)
1523
1535
 
1524
- retries = self._remaining_retries(remaining_retries, options)
1525
- request = self._build_request(options)
1536
+ remaining_retries = options.get_max_retries(self.max_retries) - retries_taken
1537
+ request = self._build_request(options, retries_taken=retries_taken)
1526
1538
  await self._prepare_request(request)
1527
1539
 
1528
1540
  kwargs: HttpxSendArgs = {}
@@ -1538,11 +1550,11 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1538
1550
  except httpx.TimeoutException as err:
1539
1551
  log.debug("Encountered httpx.TimeoutException", exc_info=True)
1540
1552
 
1541
- if retries > 0:
1553
+ if remaining_retries > 0:
1542
1554
  return await self._retry_request(
1543
1555
  input_options,
1544
1556
  cast_to,
1545
- retries,
1557
+ retries_taken=retries_taken,
1546
1558
  stream=stream,
1547
1559
  stream_cls=stream_cls,
1548
1560
  response_headers=None,
@@ -1553,11 +1565,11 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1553
1565
  except Exception as err:
1554
1566
  log.debug("Encountered Exception", exc_info=True)
1555
1567
 
1556
- if retries > 0:
1568
+ if retries_taken > 0:
1557
1569
  return await self._retry_request(
1558
1570
  input_options,
1559
1571
  cast_to,
1560
- retries,
1572
+ retries_taken=retries_taken,
1561
1573
  stream=stream,
1562
1574
  stream_cls=stream_cls,
1563
1575
  response_headers=None,
@@ -1575,13 +1587,13 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1575
1587
  except httpx.HTTPStatusError as err: # thrown on 4xx and 5xx status code
1576
1588
  log.debug("Encountered httpx.HTTPStatusError", exc_info=True)
1577
1589
 
1578
- if retries > 0 and self._should_retry(err.response):
1590
+ if remaining_retries > 0 and self._should_retry(err.response):
1579
1591
  await err.response.aclose()
1580
1592
  return await self._retry_request(
1581
1593
  input_options,
1582
1594
  cast_to,
1583
- retries,
1584
- err.response.headers,
1595
+ retries_taken=retries_taken,
1596
+ response_headers=err.response.headers,
1585
1597
  stream=stream,
1586
1598
  stream_cls=stream_cls,
1587
1599
  )
@@ -1600,26 +1612,26 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1600
1612
  response=response,
1601
1613
  stream=stream,
1602
1614
  stream_cls=stream_cls,
1603
- retries_taken=options.get_max_retries(self.max_retries) - retries,
1615
+ retries_taken=retries_taken,
1604
1616
  )
1605
1617
 
1606
1618
  async def _retry_request(
1607
1619
  self,
1608
1620
  options: FinalRequestOptions,
1609
1621
  cast_to: Type[ResponseT],
1610
- remaining_retries: int,
1611
- response_headers: httpx.Headers | None,
1612
1622
  *,
1623
+ retries_taken: int,
1624
+ response_headers: httpx.Headers | None,
1613
1625
  stream: bool,
1614
1626
  stream_cls: type[_AsyncStreamT] | None,
1615
1627
  ) -> ResponseT | _AsyncStreamT:
1616
- remaining = remaining_retries - 1
1617
- if remaining == 1:
1628
+ remaining_retries = options.get_max_retries(self.max_retries) - retries_taken
1629
+ if remaining_retries == 1:
1618
1630
  log.debug("1 retry left")
1619
1631
  else:
1620
- log.debug("%i retries left", remaining)
1632
+ log.debug("%i retries left", remaining_retries)
1621
1633
 
1622
- timeout = self._calculate_retry_timeout(remaining, options, response_headers)
1634
+ timeout = self._calculate_retry_timeout(remaining_retries, options, response_headers)
1623
1635
  log.info("Retrying request to %s in %f seconds", options.url, timeout)
1624
1636
 
1625
1637
  await anyio.sleep(timeout)
@@ -1627,7 +1639,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1627
1639
  return await self._request(
1628
1640
  options=options,
1629
1641
  cast_to=cast_to,
1630
- remaining_retries=remaining,
1642
+ retries_taken=retries_taken + 1,
1631
1643
  stream=stream,
1632
1644
  stream_cls=stream_cls,
1633
1645
  )
@@ -50,6 +50,7 @@ class Payi(SyncAPIClient):
50
50
  ingest: resources.IngestResource
51
51
  categories: resources.CategoriesResource
52
52
  experiences: resources.ExperiencesResource
53
+ evaluations: resources.EvaluationsResource
53
54
  with_raw_response: PayiWithRawResponse
54
55
  with_streaming_response: PayiWithStreamedResponse
55
56
 
@@ -111,6 +112,7 @@ class Payi(SyncAPIClient):
111
112
  self.ingest = resources.IngestResource(self)
112
113
  self.categories = resources.CategoriesResource(self)
113
114
  self.experiences = resources.ExperiencesResource(self)
115
+ self.evaluations = resources.EvaluationsResource(self)
114
116
  self.with_raw_response = PayiWithRawResponse(self)
115
117
  self.with_streaming_response = PayiWithStreamedResponse(self)
116
118
 
@@ -224,6 +226,7 @@ class AsyncPayi(AsyncAPIClient):
224
226
  ingest: resources.AsyncIngestResource
225
227
  categories: resources.AsyncCategoriesResource
226
228
  experiences: resources.AsyncExperiencesResource
229
+ evaluations: resources.AsyncEvaluationsResource
227
230
  with_raw_response: AsyncPayiWithRawResponse
228
231
  with_streaming_response: AsyncPayiWithStreamedResponse
229
232
 
@@ -285,6 +288,7 @@ class AsyncPayi(AsyncAPIClient):
285
288
  self.ingest = resources.AsyncIngestResource(self)
286
289
  self.categories = resources.AsyncCategoriesResource(self)
287
290
  self.experiences = resources.AsyncExperiencesResource(self)
291
+ self.evaluations = resources.AsyncEvaluationsResource(self)
288
292
  self.with_raw_response = AsyncPayiWithRawResponse(self)
289
293
  self.with_streaming_response = AsyncPayiWithStreamedResponse(self)
290
294
 
@@ -399,6 +403,7 @@ class PayiWithRawResponse:
399
403
  self.ingest = resources.IngestResourceWithRawResponse(client.ingest)
400
404
  self.categories = resources.CategoriesResourceWithRawResponse(client.categories)
401
405
  self.experiences = resources.ExperiencesResourceWithRawResponse(client.experiences)
406
+ self.evaluations = resources.EvaluationsResourceWithRawResponse(client.evaluations)
402
407
 
403
408
 
404
409
  class AsyncPayiWithRawResponse:
@@ -407,6 +412,7 @@ class AsyncPayiWithRawResponse:
407
412
  self.ingest = resources.AsyncIngestResourceWithRawResponse(client.ingest)
408
413
  self.categories = resources.AsyncCategoriesResourceWithRawResponse(client.categories)
409
414
  self.experiences = resources.AsyncExperiencesResourceWithRawResponse(client.experiences)
415
+ self.evaluations = resources.AsyncEvaluationsResourceWithRawResponse(client.evaluations)
410
416
 
411
417
 
412
418
  class PayiWithStreamedResponse:
@@ -415,6 +421,7 @@ class PayiWithStreamedResponse:
415
421
  self.ingest = resources.IngestResourceWithStreamingResponse(client.ingest)
416
422
  self.categories = resources.CategoriesResourceWithStreamingResponse(client.categories)
417
423
  self.experiences = resources.ExperiencesResourceWithStreamingResponse(client.experiences)
424
+ self.evaluations = resources.EvaluationsResourceWithStreamingResponse(client.evaluations)
418
425
 
419
426
 
420
427
  class AsyncPayiWithStreamedResponse:
@@ -423,6 +430,7 @@ class AsyncPayiWithStreamedResponse:
423
430
  self.ingest = resources.AsyncIngestResourceWithStreamingResponse(client.ingest)
424
431
  self.categories = resources.AsyncCategoriesResourceWithStreamingResponse(client.categories)
425
432
  self.experiences = resources.AsyncExperiencesResourceWithStreamingResponse(client.experiences)
433
+ self.evaluations = resources.AsyncEvaluationsResourceWithStreamingResponse(client.evaluations)
426
434
 
427
435
 
428
436
  Client = Payi
@@ -136,12 +136,14 @@ def model_dump(
136
136
  exclude: IncEx = None,
137
137
  exclude_unset: bool = False,
138
138
  exclude_defaults: bool = False,
139
+ warnings: bool = True,
139
140
  ) -> dict[str, Any]:
140
141
  if PYDANTIC_V2:
141
142
  return model.model_dump(
142
143
  exclude=exclude,
143
144
  exclude_unset=exclude_unset,
144
145
  exclude_defaults=exclude_defaults,
146
+ warnings=warnings,
145
147
  )
146
148
  return cast(
147
149
  "dict[str, Any]",
@@ -363,12 +363,13 @@ def file_from_path(path: str) -> FileTypes:
363
363
 
364
364
  def get_required_header(headers: HeadersLike, header: str) -> str:
365
365
  lower_header = header.lower()
366
- if isinstance(headers, Mapping):
367
- for k, v in headers.items():
366
+ if is_mapping_t(headers):
367
+ # mypy doesn't understand the type narrowing here
368
+ for k, v in headers.items(): # type: ignore
368
369
  if k.lower() == lower_header and isinstance(v, str):
369
370
  return v
370
371
 
371
- """ to deal with the case where the header looks like Stainless-Event-Id """
372
+ # to deal with the case where the header looks like Stainless-Event-Id
372
373
  intercaps_header = re.sub(r"([^\w])(\w)", lambda pat: pat.group(1) + pat.group(2).upper(), header.capitalize())
373
374
 
374
375
  for normalized_header in [header, lower_header, header.upper(), intercaps_header]:
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "payi"
4
- __version__ = "0.1.0-alpha.23" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.25" # x-release-please-version
@@ -24,6 +24,14 @@ from .categories import (
24
24
  CategoriesResourceWithStreamingResponse,
25
25
  AsyncCategoriesResourceWithStreamingResponse,
26
26
  )
27
+ from .evaluations import (
28
+ EvaluationsResource,
29
+ AsyncEvaluationsResource,
30
+ EvaluationsResourceWithRawResponse,
31
+ AsyncEvaluationsResourceWithRawResponse,
32
+ EvaluationsResourceWithStreamingResponse,
33
+ AsyncEvaluationsResourceWithStreamingResponse,
34
+ )
27
35
  from .experiences import (
28
36
  ExperiencesResource,
29
37
  AsyncExperiencesResource,
@@ -58,4 +66,10 @@ __all__ = [
58
66
  "AsyncExperiencesResourceWithRawResponse",
59
67
  "ExperiencesResourceWithStreamingResponse",
60
68
  "AsyncExperiencesResourceWithStreamingResponse",
69
+ "EvaluationsResource",
70
+ "AsyncEvaluationsResource",
71
+ "EvaluationsResourceWithRawResponse",
72
+ "AsyncEvaluationsResourceWithRawResponse",
73
+ "EvaluationsResourceWithStreamingResponse",
74
+ "AsyncEvaluationsResourceWithStreamingResponse",
61
75
  ]