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.
- payi-0.1.0a25/.release-please-manifest.json +3 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/CHANGELOG.md +28 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/CONTRIBUTING.md +4 -4
- {payi-0.1.0a23 → payi-0.1.0a25}/PKG-INFO +12 -1
- {payi-0.1.0a23 → payi-0.1.0a25}/README.md +11 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/api.md +25 -5
- {payi-0.1.0a23 → payi-0.1.0a25}/pyproject.toml +1 -5
- {payi-0.1.0a23 → payi-0.1.0a25}/requirements-dev.lock +3 -3
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_base_client.py +60 -48
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_client.py +8 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_compat.py +2 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_utils.py +4 -3
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_version.py +1 -1
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/__init__.py +14 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/budgets/budgets.py +24 -2
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/budgets/tags.py +22 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/categories/categories.py +22 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/categories/resources.py +22 -0
- payi-0.1.0a25/src/payi/resources/evaluations/__init__.py +47 -0
- payi-0.1.0a25/src/payi/resources/evaluations/evaluations.py +134 -0
- payi-0.1.0a25/src/payi/resources/evaluations/experiences.py +188 -0
- payi-0.1.0a25/src/payi/resources/evaluations/requests.py +200 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/experiences/experiences.py +32 -10
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/experiences/types.py +93 -51
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/ingest.py +22 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/__init__.py +1 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_delete_response.py +2 -2
- payi-0.1.0a25/src/payi/types/evaluations/__init__.py +6 -0
- payi-0.1.0a25/src/payi/types/evaluations/experience_create_params.py +14 -0
- payi-0.1.0a25/src/payi/types/evaluations/request_create_params.py +14 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experiences/__init__.py +1 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experiences/experience_type.py +0 -2
- payi-0.1.0a25/src/payi/types/experiences/type_list_params.py +12 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experiences/type_update_params.py +2 -5
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/requests_data.py +8 -4
- payi-0.1.0a25/src/payi/types/shared/__init__.py +3 -0
- payi-0.1.0a25/src/payi/types/shared/evaluation_response.py +11 -0
- payi-0.1.0a25/src/payi/types/total_cost_data.py +15 -0
- payi-0.1.0a25/tests/api_resources/evaluations/test_experiences.py +124 -0
- payi-0.1.0a25/tests/api_resources/evaluations/test_requests.py +124 -0
- payi-0.1.0a25/tests/api_resources/experiences/__init__.py +1 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/experiences/test_types.py +52 -45
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/test_experiences.py +8 -8
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_client.py +2 -0
- payi-0.1.0a23/.release-please-manifest.json +0 -3
- payi-0.1.0a23/src/payi/types/total_cost_data.py +0 -31
- {payi-0.1.0a23 → payi-0.1.0a25}/.gitignore +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/LICENSE +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/SECURITY.md +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/bin/check-release-environment +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/bin/publish-pypi +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/examples/.keep +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/mypy.ini +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/noxfile.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/release-please-config.json +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/requirements.lock +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_constants.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_exceptions.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_files.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_models.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_qs.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_resource.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_streaming.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_types.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_logs.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_proxy.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_reflection.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_streams.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_sync.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_transform.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/_utils/_typing.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/lib/.keep +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/lib/helpers.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/py.typed +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/budgets/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/categories/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/resources/experiences/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budget_create_params.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budget_history_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budget_list_params.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budget_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budget_update_params.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/budget_tags.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_create_params.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_create_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_delete_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_list_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_remove_params.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_remove_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_update_params.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/budgets/tag_update_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/bulk_ingest_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/categories/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/categories/resource_create_params.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/categories/resource_list_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_delete_resource_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_list_resources_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_list_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_resource_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/category_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/cost_data.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/cost_details.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/default_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experience_instance.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experiences/type_create_params.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/experiences/type_list_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/ingest_bulk_params.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/ingest_event_param.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/ingest_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/ingest_units_params.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/src/payi/types/paged_budget_list.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/budgets/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/budgets/test_tags.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/categories/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/categories/test_resources.py +0 -0
- {payi-0.1.0a23/tests/api_resources/experiences → payi-0.1.0a25/tests/api_resources/evaluations}/__init__.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/test_budgets.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/test_categories.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/api_resources/test_ingest.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/conftest.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/sample_file.txt +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_deepcopy.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_extract_files.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_files.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_models.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_qs.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_required_args.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_response.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_streaming.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_transform.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_utils/test_proxy.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/test_utils/test_typing.py +0 -0
- {payi-0.1.0a23 → payi-0.1.0a25}/tests/utils.py +0 -0
|
@@ -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
|
|
35
|
-
|
|
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
|
|
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.
|
|
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/{
|
|
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/{
|
|
126
|
-
- <code title="patch /api/v1/experiences/types/{
|
|
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/{
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
987
|
+
if remaining_retries > 0:
|
|
981
988
|
return self._retry_request(
|
|
982
989
|
input_options,
|
|
983
990
|
cast_to,
|
|
984
|
-
|
|
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
|
|
1002
|
+
if remaining_retries > 0:
|
|
996
1003
|
return self._retry_request(
|
|
997
1004
|
input_options,
|
|
998
1005
|
cast_to,
|
|
999
|
-
|
|
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
|
|
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
|
-
|
|
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=
|
|
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
|
-
|
|
1061
|
-
if
|
|
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",
|
|
1071
|
+
log.debug("%i retries left", remaining_retries)
|
|
1065
1072
|
|
|
1066
|
-
timeout = self._calculate_retry_timeout(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
1553
|
+
if remaining_retries > 0:
|
|
1542
1554
|
return await self._retry_request(
|
|
1543
1555
|
input_options,
|
|
1544
1556
|
cast_to,
|
|
1545
|
-
|
|
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
|
|
1568
|
+
if retries_taken > 0:
|
|
1557
1569
|
return await self._retry_request(
|
|
1558
1570
|
input_options,
|
|
1559
1571
|
cast_to,
|
|
1560
|
-
|
|
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
|
|
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
|
-
|
|
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=
|
|
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
|
-
|
|
1617
|
-
if
|
|
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",
|
|
1632
|
+
log.debug("%i retries left", remaining_retries)
|
|
1621
1633
|
|
|
1622
|
-
timeout = self._calculate_retry_timeout(
|
|
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
|
-
|
|
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
|
|
367
|
-
|
|
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
|
-
|
|
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]:
|
|
@@ -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
|
]
|