scale-gp-beta 0.1.0a8__tar.gz → 0.1.0a10__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.
- scale_gp_beta-0.1.0a10/.release-please-manifest.json +3 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/CHANGELOG.md +40 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/PKG-INFO +8 -8
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/README.md +7 -7
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/api.md +15 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/pyproject.toml +3 -2
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/requirements-dev.lock +1 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_base_client.py +40 -2
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_client.py +9 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_models.py +0 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_utils/_transform.py +46 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_utils/_typing.py +3 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_version.py +1 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/__init__.py +14 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/chat/completions.py +6 -2
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/completions.py +6 -2
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/datasets.py +17 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/evaluations.py +40 -4
- scale_gp_beta-0.1.0a10/src/scale_gp_beta/resources/spans.py +654 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/__init__.py +5 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset.py +4 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_create_params.py +4 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_update_params.py +4 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/evaluation.py +7 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/evaluation_create_params.py +12 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/evaluation_list_params.py +4 -2
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/evaluation_retrieve_params.py +4 -1
- scale_gp_beta-0.1.0a10/src/scale_gp_beta/types/evaluation_task.py +205 -0
- scale_gp_beta-0.1.0a10/src/scale_gp_beta/types/evaluation_task_param.py +206 -0
- scale_gp_beta-0.1.0a10/src/scale_gp_beta/types/span.py +38 -0
- scale_gp_beta-0.1.0a10/src/scale_gp_beta/types/span_create_params.py +58 -0
- scale_gp_beta-0.1.0a10/src/scale_gp_beta/types/span_list_params.py +27 -0
- scale_gp_beta-0.1.0a10/src/scale_gp_beta/types/span_update_params.py +21 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/test_datasets.py +4 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/test_evaluations.py +12 -0
- scale_gp_beta-0.1.0a10/tests/api_resources/test_spans.py +494 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/conftest.py +1 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_client.py +1 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_models.py +1 -1
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_transform.py +20 -1
- scale_gp_beta-0.1.0a8/.release-please-manifest.json +0 -3
- scale_gp_beta-0.1.0a8/src/scale_gp_beta/types/evaluation_task_param.py +0 -212
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/.gitignore +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/CONTRIBUTING.md +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/LICENSE +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/SECURITY.md +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/bin/check-release-environment +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/bin/publish-pypi +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/examples/.keep +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/mypy.ini +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/noxfile.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/release-please-config.json +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/requirements.lock +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp/lib/.keep +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/__init__.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_compat.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_constants.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_exceptions.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_files.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_qs.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_resource.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_response.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_streaming.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_types.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_utils/__init__.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_utils/_logs.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_utils/_proxy.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_utils/_reflection.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_utils/_streams.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_utils/_sync.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/_utils/_utils.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/lib/.keep +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/pagination.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/py.typed +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/chat/__init__.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/chat/chat.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/dataset_items.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/evaluation_items.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/files/__init__.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/files/content.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/files/files.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/inference.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/models.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/chat/__init__.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/chat/chat_completion.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/chat/chat_completion_chunk.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/chat/completion_create_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/chat/completion_create_response.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/completion.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/completion_create_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_delete_response.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_item.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_item_batch_create_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_item_batch_create_response.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_item_delete_response.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_item_list_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_item_retrieve_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_item_update_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_list_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/dataset_retrieve_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/evaluation_archive_response.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/evaluation_item.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/evaluation_item_list_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/evaluation_item_retrieve_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/file.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/file_create_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/file_delete_response.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/file_list.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/file_list_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/file_update_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/files/__init__.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/inference_create_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/inference_create_response.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/inference_model.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/inference_model_list.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/inference_response.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/inference_response_chunk.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/model_create_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/model_delete_response.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/model_list_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/types/model_update_params.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/sgp_dev/lib/.keep +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/__init__.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/__init__.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/chat/__init__.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/chat/test_completions.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/files/__init__.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/files/test_content.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/test_completions.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/test_dataset_items.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/test_evaluation_items.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/test_files.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/test_inference.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/api_resources/test_models.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/sample_file.txt +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_deepcopy.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_extract_files.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_files.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_qs.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_required_args.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_response.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_streaming.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_utils/test_proxy.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/test_utils/test_typing.py +0 -0
- {scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/tests/utils.py +0 -0
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.0-alpha.10 (2025-04-17)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.1.0-alpha.9...v0.1.0-alpha.10](https://github.com/scaleapi/sgp-python-beta/compare/v0.1.0-alpha.9...v0.1.0-alpha.10)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** api update ([044fefc](https://github.com/scaleapi/sgp-python-beta/commit/044fefcaa84c7694fde0f73d6f3a5b29fc76e098))
|
|
10
|
+
* **api:** api update ([7095222](https://github.com/scaleapi/sgp-python-beta/commit/7095222925acfa17d33a5e9f0ea3d65212831e21))
|
|
11
|
+
* **api:** manual updates ([0b94e2f](https://github.com/scaleapi/sgp-python-beta/commit/0b94e2f170528fa471afc54248afc4719275b953))
|
|
12
|
+
* **api:** manual updates ([8a8bd63](https://github.com/scaleapi/sgp-python-beta/commit/8a8bd63fb26ad9a3fdbd3eba57f62eb08008a806))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **perf:** optimize some hot paths ([1976fbb](https://github.com/scaleapi/sgp-python-beta/commit/1976fbb7a9004f6a9768cc934025edd06e951dd2))
|
|
18
|
+
* **perf:** skip traversing types for NotGiven values ([04d48dc](https://github.com/scaleapi/sgp-python-beta/commit/04d48dc5473053469cb6e3a2c83a247736c55ced))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Chores
|
|
22
|
+
|
|
23
|
+
* **client:** minor internal fixes ([274a136](https://github.com/scaleapi/sgp-python-beta/commit/274a1365f4b8b06e03f6faa579307389a394b7ad))
|
|
24
|
+
* **internal:** base client updates ([116fbf6](https://github.com/scaleapi/sgp-python-beta/commit/116fbf62eaef6ce9e5a796676eb1007d6384f682))
|
|
25
|
+
* **internal:** bump pyright version ([d623570](https://github.com/scaleapi/sgp-python-beta/commit/d623570bb964f4c68c69ce8170ad4324ac2e23b5))
|
|
26
|
+
* **internal:** codegen related update ([3abbaf7](https://github.com/scaleapi/sgp-python-beta/commit/3abbaf7c0df300969035da2d1d5bea4687cc4eb8))
|
|
27
|
+
* **internal:** expand CI branch coverage ([#95](https://github.com/scaleapi/sgp-python-beta/issues/95)) ([5f995e6](https://github.com/scaleapi/sgp-python-beta/commit/5f995e65e6f78e219c7c96d45ade69a1114a3a14))
|
|
28
|
+
* **internal:** reduce CI branch coverage ([2840b13](https://github.com/scaleapi/sgp-python-beta/commit/2840b13e606078157b3432815d5e0546268569f1))
|
|
29
|
+
* **internal:** remove trailing character ([#91](https://github.com/scaleapi/sgp-python-beta/issues/91)) ([88858d1](https://github.com/scaleapi/sgp-python-beta/commit/88858d146953d174ef449b3d0de11b03e4d81522))
|
|
30
|
+
* **internal:** slight transform perf improvement ([#93](https://github.com/scaleapi/sgp-python-beta/issues/93)) ([81fd884](https://github.com/scaleapi/sgp-python-beta/commit/81fd884857371fd25a7478138fd96a71aa4def83))
|
|
31
|
+
* **internal:** update pyright settings ([ed35bc1](https://github.com/scaleapi/sgp-python-beta/commit/ed35bc1436de07edb46ac9a6c989280d8445ca8d))
|
|
32
|
+
* slight wording improvement in README ([#94](https://github.com/scaleapi/sgp-python-beta/issues/94)) ([d268327](https://github.com/scaleapi/sgp-python-beta/commit/d268327c838b41dc61e74cf495d6074f452f7691))
|
|
33
|
+
|
|
34
|
+
## 0.1.0-alpha.9 (2025-03-27)
|
|
35
|
+
|
|
36
|
+
Full Changelog: [v0.1.0-alpha.8...v0.1.0-alpha.9](https://github.com/scaleapi/sgp-python-beta/compare/v0.1.0-alpha.8...v0.1.0-alpha.9)
|
|
37
|
+
|
|
38
|
+
### Features
|
|
39
|
+
|
|
40
|
+
* **api:** api update ([#87](https://github.com/scaleapi/sgp-python-beta/issues/87)) ([7241799](https://github.com/scaleapi/sgp-python-beta/commit/7241799c9507303b833ca29740bc61b7656c50fe))
|
|
41
|
+
* **api:** manual updates ([#89](https://github.com/scaleapi/sgp-python-beta/issues/89)) ([456e1ff](https://github.com/scaleapi/sgp-python-beta/commit/456e1fff2edb5ce655d5692b10ce7981bd4aca9d))
|
|
42
|
+
|
|
3
43
|
## 0.1.0-alpha.8 (2025-03-26)
|
|
4
44
|
|
|
5
45
|
Full Changelog: [v0.1.0-alpha.7...v0.1.0-alpha.8](https://github.com/scaleapi/sgp-python-beta/compare/v0.1.0-alpha.7...v0.1.0-alpha.8)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: scale-gp-beta
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.0a10
|
|
4
4
|
Summary: The official Python library for the Scale GP API
|
|
5
5
|
Project-URL: Homepage, https://github.com/scaleapi/sgp-python-beta
|
|
6
6
|
Project-URL: Repository, https://github.com/scaleapi/sgp-python-beta
|
|
@@ -59,10 +59,10 @@ import os
|
|
|
59
59
|
from scale_gp_beta import SGPClient
|
|
60
60
|
|
|
61
61
|
client = SGPClient(
|
|
62
|
+
account_id="My Account ID",
|
|
62
63
|
api_key=os.environ.get("SGP_API_KEY"), # This is the default and can be omitted
|
|
63
64
|
# defaults to "production".
|
|
64
65
|
environment="development",
|
|
65
|
-
account_id="My Account ID",
|
|
66
66
|
)
|
|
67
67
|
|
|
68
68
|
completion = client.chat.completions.create(
|
|
@@ -87,10 +87,10 @@ import asyncio
|
|
|
87
87
|
from scale_gp_beta import AsyncSGPClient
|
|
88
88
|
|
|
89
89
|
client = AsyncSGPClient(
|
|
90
|
+
account_id="My Account ID",
|
|
90
91
|
api_key=os.environ.get("SGP_API_KEY"), # This is the default and can be omitted
|
|
91
92
|
# defaults to "production".
|
|
92
93
|
environment="development",
|
|
93
|
-
account_id="My Account ID",
|
|
94
94
|
)
|
|
95
95
|
|
|
96
96
|
|
|
@@ -252,7 +252,7 @@ print(inference.inference_configuration)
|
|
|
252
252
|
|
|
253
253
|
## File uploads
|
|
254
254
|
|
|
255
|
-
Request parameters that correspond to file uploads can be passed as `bytes`, a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
|
|
255
|
+
Request parameters that correspond to file uploads can be passed as `bytes`, or a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
|
|
256
256
|
|
|
257
257
|
```python
|
|
258
258
|
from pathlib import Path
|
|
@@ -328,9 +328,9 @@ from scale_gp_beta import SGPClient
|
|
|
328
328
|
|
|
329
329
|
# Configure the default for all requests:
|
|
330
330
|
client = SGPClient(
|
|
331
|
+
account_id="My Account ID",
|
|
331
332
|
# default is 2
|
|
332
333
|
max_retries=0,
|
|
333
|
-
account_id="My Account ID",
|
|
334
334
|
)
|
|
335
335
|
|
|
336
336
|
# Or, configure per-request:
|
|
@@ -350,15 +350,15 @@ from scale_gp_beta import SGPClient
|
|
|
350
350
|
|
|
351
351
|
# Configure the default for all requests:
|
|
352
352
|
client = SGPClient(
|
|
353
|
+
account_id="My Account ID",
|
|
353
354
|
# 20 seconds (default is 1 minute)
|
|
354
355
|
timeout=20.0,
|
|
355
|
-
account_id="My Account ID",
|
|
356
356
|
)
|
|
357
357
|
|
|
358
358
|
# More granular control:
|
|
359
359
|
client = SGPClient(
|
|
360
|
-
timeout=httpx.Timeout(60.0, read=5.0, write=10.0, connect=2.0),
|
|
361
360
|
account_id="My Account ID",
|
|
361
|
+
timeout=httpx.Timeout(60.0, read=5.0, write=10.0, connect=2.0),
|
|
362
362
|
)
|
|
363
363
|
|
|
364
364
|
# Override per-request:
|
|
@@ -490,13 +490,13 @@ import httpx
|
|
|
490
490
|
from scale_gp_beta import SGPClient, DefaultHttpxClient
|
|
491
491
|
|
|
492
492
|
client = SGPClient(
|
|
493
|
+
account_id="My Account ID",
|
|
493
494
|
# Or use the `SGP_CLIENT_BASE_URL` env var
|
|
494
495
|
base_url="http://my.test.server.example.com:8083",
|
|
495
496
|
http_client=DefaultHttpxClient(
|
|
496
497
|
proxy="http://my.test.proxy.example.com",
|
|
497
498
|
transport=httpx.HTTPTransport(local_address="0.0.0.0"),
|
|
498
499
|
),
|
|
499
|
-
account_id="My Account ID",
|
|
500
500
|
)
|
|
501
501
|
```
|
|
502
502
|
|
|
@@ -28,10 +28,10 @@ import os
|
|
|
28
28
|
from scale_gp_beta import SGPClient
|
|
29
29
|
|
|
30
30
|
client = SGPClient(
|
|
31
|
+
account_id="My Account ID",
|
|
31
32
|
api_key=os.environ.get("SGP_API_KEY"), # This is the default and can be omitted
|
|
32
33
|
# defaults to "production".
|
|
33
34
|
environment="development",
|
|
34
|
-
account_id="My Account ID",
|
|
35
35
|
)
|
|
36
36
|
|
|
37
37
|
completion = client.chat.completions.create(
|
|
@@ -56,10 +56,10 @@ import asyncio
|
|
|
56
56
|
from scale_gp_beta import AsyncSGPClient
|
|
57
57
|
|
|
58
58
|
client = AsyncSGPClient(
|
|
59
|
+
account_id="My Account ID",
|
|
59
60
|
api_key=os.environ.get("SGP_API_KEY"), # This is the default and can be omitted
|
|
60
61
|
# defaults to "production".
|
|
61
62
|
environment="development",
|
|
62
|
-
account_id="My Account ID",
|
|
63
63
|
)
|
|
64
64
|
|
|
65
65
|
|
|
@@ -221,7 +221,7 @@ print(inference.inference_configuration)
|
|
|
221
221
|
|
|
222
222
|
## File uploads
|
|
223
223
|
|
|
224
|
-
Request parameters that correspond to file uploads can be passed as `bytes`, a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
|
|
224
|
+
Request parameters that correspond to file uploads can be passed as `bytes`, or a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
|
|
225
225
|
|
|
226
226
|
```python
|
|
227
227
|
from pathlib import Path
|
|
@@ -297,9 +297,9 @@ from scale_gp_beta import SGPClient
|
|
|
297
297
|
|
|
298
298
|
# Configure the default for all requests:
|
|
299
299
|
client = SGPClient(
|
|
300
|
+
account_id="My Account ID",
|
|
300
301
|
# default is 2
|
|
301
302
|
max_retries=0,
|
|
302
|
-
account_id="My Account ID",
|
|
303
303
|
)
|
|
304
304
|
|
|
305
305
|
# Or, configure per-request:
|
|
@@ -319,15 +319,15 @@ from scale_gp_beta import SGPClient
|
|
|
319
319
|
|
|
320
320
|
# Configure the default for all requests:
|
|
321
321
|
client = SGPClient(
|
|
322
|
+
account_id="My Account ID",
|
|
322
323
|
# 20 seconds (default is 1 minute)
|
|
323
324
|
timeout=20.0,
|
|
324
|
-
account_id="My Account ID",
|
|
325
325
|
)
|
|
326
326
|
|
|
327
327
|
# More granular control:
|
|
328
328
|
client = SGPClient(
|
|
329
|
-
timeout=httpx.Timeout(60.0, read=5.0, write=10.0, connect=2.0),
|
|
330
329
|
account_id="My Account ID",
|
|
330
|
+
timeout=httpx.Timeout(60.0, read=5.0, write=10.0, connect=2.0),
|
|
331
331
|
)
|
|
332
332
|
|
|
333
333
|
# Override per-request:
|
|
@@ -459,13 +459,13 @@ import httpx
|
|
|
459
459
|
from scale_gp_beta import SGPClient, DefaultHttpxClient
|
|
460
460
|
|
|
461
461
|
client = SGPClient(
|
|
462
|
+
account_id="My Account ID",
|
|
462
463
|
# Or use the `SGP_CLIENT_BASE_URL` env var
|
|
463
464
|
base_url="http://my.test.server.example.com:8083",
|
|
464
465
|
http_client=DefaultHttpxClient(
|
|
465
466
|
proxy="http://my.test.proxy.example.com",
|
|
466
467
|
transport=httpx.HTTPTransport(local_address="0.0.0.0"),
|
|
467
468
|
),
|
|
468
|
-
account_id="My Account ID",
|
|
469
469
|
)
|
|
470
470
|
```
|
|
471
471
|
|
|
@@ -143,3 +143,18 @@ Methods:
|
|
|
143
143
|
|
|
144
144
|
- <code title="get /v5/evaluation-items/{evaluation_item_id}">client.evaluation_items.<a href="./src/scale_gp_beta/resources/evaluation_items.py">retrieve</a>(evaluation_item_id, \*\*<a href="src/scale_gp_beta/types/evaluation_item_retrieve_params.py">params</a>) -> <a href="./src/scale_gp_beta/types/evaluation_item.py">EvaluationItem</a></code>
|
|
145
145
|
- <code title="get /v5/evaluation-items">client.evaluation_items.<a href="./src/scale_gp_beta/resources/evaluation_items.py">list</a>(\*\*<a href="src/scale_gp_beta/types/evaluation_item_list_params.py">params</a>) -> <a href="./src/scale_gp_beta/types/evaluation_item.py">SyncCursorPage[EvaluationItem]</a></code>
|
|
146
|
+
|
|
147
|
+
# Spans
|
|
148
|
+
|
|
149
|
+
Types:
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
from scale_gp_beta.types import Span
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Methods:
|
|
156
|
+
|
|
157
|
+
- <code title="post /v5/spans">client.spans.<a href="./src/scale_gp_beta/resources/spans.py">create</a>(\*\*<a href="src/scale_gp_beta/types/span_create_params.py">params</a>) -> <a href="./src/scale_gp_beta/types/span.py">Span</a></code>
|
|
158
|
+
- <code title="get /v5/spans/{span_id}">client.spans.<a href="./src/scale_gp_beta/resources/spans.py">retrieve</a>(span_id) -> <a href="./src/scale_gp_beta/types/span.py">Span</a></code>
|
|
159
|
+
- <code title="patch /v5/spans/{span_id}">client.spans.<a href="./src/scale_gp_beta/resources/spans.py">update</a>(span_id, \*\*<a href="src/scale_gp_beta/types/span_update_params.py">params</a>) -> <a href="./src/scale_gp_beta/types/span.py">Span</a></code>
|
|
160
|
+
- <code title="get /v5/spans">client.spans.<a href="./src/scale_gp_beta/resources/spans.py">list</a>(\*\*<a href="src/scale_gp_beta/types/span_list_params.py">params</a>) -> <a href="./src/scale_gp_beta/types/span.py">SyncCursorPage[Span]</a></code>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "scale-gp-beta"
|
|
3
|
-
version = "0.1.0-alpha.
|
|
3
|
+
version = "0.1.0-alpha.10"
|
|
4
4
|
description = "The official Python library for the Scale GP API"
|
|
5
5
|
dynamic = ["readme"]
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -42,7 +42,7 @@ Repository = "https://github.com/scaleapi/sgp-python-beta"
|
|
|
42
42
|
managed = true
|
|
43
43
|
# version pins are in requirements-dev.lock
|
|
44
44
|
dev-dependencies = [
|
|
45
|
-
"pyright
|
|
45
|
+
"pyright==1.1.399",
|
|
46
46
|
"mypy",
|
|
47
47
|
"respx",
|
|
48
48
|
"pytest",
|
|
@@ -147,6 +147,7 @@ exclude = [
|
|
|
147
147
|
]
|
|
148
148
|
|
|
149
149
|
reportImplicitOverride = true
|
|
150
|
+
reportOverlappingOverload = false
|
|
150
151
|
|
|
151
152
|
reportImportCycles = false
|
|
152
153
|
reportPrivateUsage = false
|
|
@@ -98,7 +98,11 @@ _StreamT = TypeVar("_StreamT", bound=Stream[Any])
|
|
|
98
98
|
_AsyncStreamT = TypeVar("_AsyncStreamT", bound=AsyncStream[Any])
|
|
99
99
|
|
|
100
100
|
if TYPE_CHECKING:
|
|
101
|
-
from httpx._config import
|
|
101
|
+
from httpx._config import (
|
|
102
|
+
DEFAULT_TIMEOUT_CONFIG, # pyright: ignore[reportPrivateImportUsage]
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
HTTPX_DEFAULT_TIMEOUT = DEFAULT_TIMEOUT_CONFIG
|
|
102
106
|
else:
|
|
103
107
|
try:
|
|
104
108
|
from httpx._config import DEFAULT_TIMEOUT_CONFIG as HTTPX_DEFAULT_TIMEOUT
|
|
@@ -115,6 +119,7 @@ class PageInfo:
|
|
|
115
119
|
|
|
116
120
|
url: URL | NotGiven
|
|
117
121
|
params: Query | NotGiven
|
|
122
|
+
json: Body | NotGiven
|
|
118
123
|
|
|
119
124
|
@overload
|
|
120
125
|
def __init__(
|
|
@@ -130,19 +135,30 @@ class PageInfo:
|
|
|
130
135
|
params: Query,
|
|
131
136
|
) -> None: ...
|
|
132
137
|
|
|
138
|
+
@overload
|
|
139
|
+
def __init__(
|
|
140
|
+
self,
|
|
141
|
+
*,
|
|
142
|
+
json: Body,
|
|
143
|
+
) -> None: ...
|
|
144
|
+
|
|
133
145
|
def __init__(
|
|
134
146
|
self,
|
|
135
147
|
*,
|
|
136
148
|
url: URL | NotGiven = NOT_GIVEN,
|
|
149
|
+
json: Body | NotGiven = NOT_GIVEN,
|
|
137
150
|
params: Query | NotGiven = NOT_GIVEN,
|
|
138
151
|
) -> None:
|
|
139
152
|
self.url = url
|
|
153
|
+
self.json = json
|
|
140
154
|
self.params = params
|
|
141
155
|
|
|
142
156
|
@override
|
|
143
157
|
def __repr__(self) -> str:
|
|
144
158
|
if self.url:
|
|
145
159
|
return f"{self.__class__.__name__}(url={self.url})"
|
|
160
|
+
if self.json:
|
|
161
|
+
return f"{self.__class__.__name__}(json={self.json})"
|
|
146
162
|
return f"{self.__class__.__name__}(params={self.params})"
|
|
147
163
|
|
|
148
164
|
|
|
@@ -191,6 +207,19 @@ class BasePage(GenericModel, Generic[_T]):
|
|
|
191
207
|
options.url = str(url)
|
|
192
208
|
return options
|
|
193
209
|
|
|
210
|
+
if not isinstance(info.json, NotGiven):
|
|
211
|
+
if not is_mapping(info.json):
|
|
212
|
+
raise TypeError("Pagination is only supported with mappings")
|
|
213
|
+
|
|
214
|
+
if not options.json_data:
|
|
215
|
+
options.json_data = {**info.json}
|
|
216
|
+
else:
|
|
217
|
+
if not is_mapping(options.json_data):
|
|
218
|
+
raise TypeError("Pagination is only supported with mappings")
|
|
219
|
+
|
|
220
|
+
options.json_data = {**options.json_data, **info.json}
|
|
221
|
+
return options
|
|
222
|
+
|
|
194
223
|
raise ValueError("Unexpected PageInfo state")
|
|
195
224
|
|
|
196
225
|
|
|
@@ -409,7 +438,8 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
|
409
438
|
|
|
410
439
|
idempotency_header = self._idempotency_header
|
|
411
440
|
if idempotency_header and options.method.lower() != "get" and idempotency_header not in headers:
|
|
412
|
-
|
|
441
|
+
options.idempotency_key = options.idempotency_key or self._idempotency_key()
|
|
442
|
+
headers[idempotency_header] = options.idempotency_key
|
|
413
443
|
|
|
414
444
|
# Don't set these headers if they were already set or removed by the caller. We check
|
|
415
445
|
# `custom_headers`, which can contain `Omit()`, instead of `headers` to account for the removal case.
|
|
@@ -943,6 +973,10 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
943
973
|
request = self._build_request(options, retries_taken=retries_taken)
|
|
944
974
|
self._prepare_request(request)
|
|
945
975
|
|
|
976
|
+
if options.idempotency_key:
|
|
977
|
+
# ensure the idempotency key is reused between requests
|
|
978
|
+
input_options.idempotency_key = options.idempotency_key
|
|
979
|
+
|
|
946
980
|
kwargs: HttpxSendArgs = {}
|
|
947
981
|
if self.custom_auth is not None:
|
|
948
982
|
kwargs["auth"] = self.custom_auth
|
|
@@ -1475,6 +1509,10 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1475
1509
|
request = self._build_request(options, retries_taken=retries_taken)
|
|
1476
1510
|
await self._prepare_request(request)
|
|
1477
1511
|
|
|
1512
|
+
if options.idempotency_key:
|
|
1513
|
+
# ensure the idempotency key is reused between requests
|
|
1514
|
+
input_options.idempotency_key = options.idempotency_key
|
|
1515
|
+
|
|
1478
1516
|
kwargs: HttpxSendArgs = {}
|
|
1479
1517
|
if self.custom_auth is not None:
|
|
1480
1518
|
kwargs["auth"] = self.custom_auth
|
|
@@ -24,7 +24,7 @@ from ._utils import (
|
|
|
24
24
|
get_async_library,
|
|
25
25
|
)
|
|
26
26
|
from ._version import __version__
|
|
27
|
-
from .resources import models, datasets, inference, completions, evaluations, dataset_items, evaluation_items
|
|
27
|
+
from .resources import spans, models, datasets, inference, completions, evaluations, dataset_items, evaluation_items
|
|
28
28
|
from ._streaming import Stream as Stream, AsyncStream as AsyncStream
|
|
29
29
|
from ._exceptions import APIStatusError, SGPClientError
|
|
30
30
|
from ._base_client import (
|
|
@@ -63,6 +63,7 @@ class SGPClient(SyncAPIClient):
|
|
|
63
63
|
evaluations: evaluations.EvaluationsResource
|
|
64
64
|
dataset_items: dataset_items.DatasetItemsResource
|
|
65
65
|
evaluation_items: evaluation_items.EvaluationItemsResource
|
|
66
|
+
spans: spans.SpansResource
|
|
66
67
|
with_raw_response: SGPClientWithRawResponse
|
|
67
68
|
with_streaming_response: SGPClientWithStreamedResponse
|
|
68
69
|
|
|
@@ -165,6 +166,7 @@ class SGPClient(SyncAPIClient):
|
|
|
165
166
|
self.evaluations = evaluations.EvaluationsResource(self)
|
|
166
167
|
self.dataset_items = dataset_items.DatasetItemsResource(self)
|
|
167
168
|
self.evaluation_items = evaluation_items.EvaluationItemsResource(self)
|
|
169
|
+
self.spans = spans.SpansResource(self)
|
|
168
170
|
self.with_raw_response = SGPClientWithRawResponse(self)
|
|
169
171
|
self.with_streaming_response = SGPClientWithStreamedResponse(self)
|
|
170
172
|
|
|
@@ -288,6 +290,7 @@ class AsyncSGPClient(AsyncAPIClient):
|
|
|
288
290
|
evaluations: evaluations.AsyncEvaluationsResource
|
|
289
291
|
dataset_items: dataset_items.AsyncDatasetItemsResource
|
|
290
292
|
evaluation_items: evaluation_items.AsyncEvaluationItemsResource
|
|
293
|
+
spans: spans.AsyncSpansResource
|
|
291
294
|
with_raw_response: AsyncSGPClientWithRawResponse
|
|
292
295
|
with_streaming_response: AsyncSGPClientWithStreamedResponse
|
|
293
296
|
|
|
@@ -390,6 +393,7 @@ class AsyncSGPClient(AsyncAPIClient):
|
|
|
390
393
|
self.evaluations = evaluations.AsyncEvaluationsResource(self)
|
|
391
394
|
self.dataset_items = dataset_items.AsyncDatasetItemsResource(self)
|
|
392
395
|
self.evaluation_items = evaluation_items.AsyncEvaluationItemsResource(self)
|
|
396
|
+
self.spans = spans.AsyncSpansResource(self)
|
|
393
397
|
self.with_raw_response = AsyncSGPClientWithRawResponse(self)
|
|
394
398
|
self.with_streaming_response = AsyncSGPClientWithStreamedResponse(self)
|
|
395
399
|
|
|
@@ -514,6 +518,7 @@ class SGPClientWithRawResponse:
|
|
|
514
518
|
self.evaluations = evaluations.EvaluationsResourceWithRawResponse(client.evaluations)
|
|
515
519
|
self.dataset_items = dataset_items.DatasetItemsResourceWithRawResponse(client.dataset_items)
|
|
516
520
|
self.evaluation_items = evaluation_items.EvaluationItemsResourceWithRawResponse(client.evaluation_items)
|
|
521
|
+
self.spans = spans.SpansResourceWithRawResponse(client.spans)
|
|
517
522
|
|
|
518
523
|
|
|
519
524
|
class AsyncSGPClientWithRawResponse:
|
|
@@ -527,6 +532,7 @@ class AsyncSGPClientWithRawResponse:
|
|
|
527
532
|
self.evaluations = evaluations.AsyncEvaluationsResourceWithRawResponse(client.evaluations)
|
|
528
533
|
self.dataset_items = dataset_items.AsyncDatasetItemsResourceWithRawResponse(client.dataset_items)
|
|
529
534
|
self.evaluation_items = evaluation_items.AsyncEvaluationItemsResourceWithRawResponse(client.evaluation_items)
|
|
535
|
+
self.spans = spans.AsyncSpansResourceWithRawResponse(client.spans)
|
|
530
536
|
|
|
531
537
|
|
|
532
538
|
class SGPClientWithStreamedResponse:
|
|
@@ -540,6 +546,7 @@ class SGPClientWithStreamedResponse:
|
|
|
540
546
|
self.evaluations = evaluations.EvaluationsResourceWithStreamingResponse(client.evaluations)
|
|
541
547
|
self.dataset_items = dataset_items.DatasetItemsResourceWithStreamingResponse(client.dataset_items)
|
|
542
548
|
self.evaluation_items = evaluation_items.EvaluationItemsResourceWithStreamingResponse(client.evaluation_items)
|
|
549
|
+
self.spans = spans.SpansResourceWithStreamingResponse(client.spans)
|
|
543
550
|
|
|
544
551
|
|
|
545
552
|
class AsyncSGPClientWithStreamedResponse:
|
|
@@ -555,6 +562,7 @@ class AsyncSGPClientWithStreamedResponse:
|
|
|
555
562
|
self.evaluation_items = evaluation_items.AsyncEvaluationItemsResourceWithStreamingResponse(
|
|
556
563
|
client.evaluation_items
|
|
557
564
|
)
|
|
565
|
+
self.spans = spans.AsyncSpansResourceWithStreamingResponse(client.spans)
|
|
558
566
|
|
|
559
567
|
|
|
560
568
|
Client = SGPClient
|
|
@@ -5,13 +5,15 @@ import base64
|
|
|
5
5
|
import pathlib
|
|
6
6
|
from typing import Any, Mapping, TypeVar, cast
|
|
7
7
|
from datetime import date, datetime
|
|
8
|
-
from typing_extensions import Literal, get_args, override, get_type_hints
|
|
8
|
+
from typing_extensions import Literal, get_args, override, get_type_hints as _get_type_hints
|
|
9
9
|
|
|
10
10
|
import anyio
|
|
11
11
|
import pydantic
|
|
12
12
|
|
|
13
13
|
from ._utils import (
|
|
14
14
|
is_list,
|
|
15
|
+
is_given,
|
|
16
|
+
lru_cache,
|
|
15
17
|
is_mapping,
|
|
16
18
|
is_iterable,
|
|
17
19
|
)
|
|
@@ -108,6 +110,7 @@ def transform(
|
|
|
108
110
|
return cast(_T, transformed)
|
|
109
111
|
|
|
110
112
|
|
|
113
|
+
@lru_cache(maxsize=8096)
|
|
111
114
|
def _get_annotated_type(type_: type) -> type | None:
|
|
112
115
|
"""If the given type is an `Annotated` type then it is returned, if not `None` is returned.
|
|
113
116
|
|
|
@@ -142,6 +145,10 @@ def _maybe_transform_key(key: str, type_: type) -> str:
|
|
|
142
145
|
return key
|
|
143
146
|
|
|
144
147
|
|
|
148
|
+
def _no_transform_needed(annotation: type) -> bool:
|
|
149
|
+
return annotation == float or annotation == int
|
|
150
|
+
|
|
151
|
+
|
|
145
152
|
def _transform_recursive(
|
|
146
153
|
data: object,
|
|
147
154
|
*,
|
|
@@ -184,6 +191,15 @@ def _transform_recursive(
|
|
|
184
191
|
return cast(object, data)
|
|
185
192
|
|
|
186
193
|
inner_type = extract_type_arg(stripped_type, 0)
|
|
194
|
+
if _no_transform_needed(inner_type):
|
|
195
|
+
# for some types there is no need to transform anything, so we can get a small
|
|
196
|
+
# perf boost from skipping that work.
|
|
197
|
+
#
|
|
198
|
+
# but we still need to convert to a list to ensure the data is json-serializable
|
|
199
|
+
if is_list(data):
|
|
200
|
+
return data
|
|
201
|
+
return list(data)
|
|
202
|
+
|
|
187
203
|
return [_transform_recursive(d, annotation=annotation, inner_type=inner_type) for d in data]
|
|
188
204
|
|
|
189
205
|
if is_union_type(stripped_type):
|
|
@@ -245,6 +261,11 @@ def _transform_typeddict(
|
|
|
245
261
|
result: dict[str, object] = {}
|
|
246
262
|
annotations = get_type_hints(expected_type, include_extras=True)
|
|
247
263
|
for key, value in data.items():
|
|
264
|
+
if not is_given(value):
|
|
265
|
+
# we don't need to include `NotGiven` values here as they'll
|
|
266
|
+
# be stripped out before the request is sent anyway
|
|
267
|
+
continue
|
|
268
|
+
|
|
248
269
|
type_ = annotations.get(key)
|
|
249
270
|
if type_ is None:
|
|
250
271
|
# we do not have a type annotation for this field, leave it as is
|
|
@@ -332,6 +353,15 @@ async def _async_transform_recursive(
|
|
|
332
353
|
return cast(object, data)
|
|
333
354
|
|
|
334
355
|
inner_type = extract_type_arg(stripped_type, 0)
|
|
356
|
+
if _no_transform_needed(inner_type):
|
|
357
|
+
# for some types there is no need to transform anything, so we can get a small
|
|
358
|
+
# perf boost from skipping that work.
|
|
359
|
+
#
|
|
360
|
+
# but we still need to convert to a list to ensure the data is json-serializable
|
|
361
|
+
if is_list(data):
|
|
362
|
+
return data
|
|
363
|
+
return list(data)
|
|
364
|
+
|
|
335
365
|
return [await _async_transform_recursive(d, annotation=annotation, inner_type=inner_type) for d in data]
|
|
336
366
|
|
|
337
367
|
if is_union_type(stripped_type):
|
|
@@ -393,6 +423,11 @@ async def _async_transform_typeddict(
|
|
|
393
423
|
result: dict[str, object] = {}
|
|
394
424
|
annotations = get_type_hints(expected_type, include_extras=True)
|
|
395
425
|
for key, value in data.items():
|
|
426
|
+
if not is_given(value):
|
|
427
|
+
# we don't need to include `NotGiven` values here as they'll
|
|
428
|
+
# be stripped out before the request is sent anyway
|
|
429
|
+
continue
|
|
430
|
+
|
|
396
431
|
type_ = annotations.get(key)
|
|
397
432
|
if type_ is None:
|
|
398
433
|
# we do not have a type annotation for this field, leave it as is
|
|
@@ -400,3 +435,13 @@ async def _async_transform_typeddict(
|
|
|
400
435
|
else:
|
|
401
436
|
result[_maybe_transform_key(key, type_)] = await _async_transform_recursive(value, annotation=type_)
|
|
402
437
|
return result
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
@lru_cache(maxsize=8096)
|
|
441
|
+
def get_type_hints(
|
|
442
|
+
obj: Any,
|
|
443
|
+
globalns: dict[str, Any] | None = None,
|
|
444
|
+
localns: Mapping[str, Any] | None = None,
|
|
445
|
+
include_extras: bool = False,
|
|
446
|
+
) -> dict[str, Any]:
|
|
447
|
+
return _get_type_hints(obj, globalns=globalns, localns=localns, include_extras=include_extras)
|
|
@@ -13,6 +13,7 @@ from typing_extensions import (
|
|
|
13
13
|
get_origin,
|
|
14
14
|
)
|
|
15
15
|
|
|
16
|
+
from ._utils import lru_cache
|
|
16
17
|
from .._types import InheritsGeneric
|
|
17
18
|
from .._compat import is_union as _is_union
|
|
18
19
|
|
|
@@ -66,6 +67,7 @@ def is_type_alias_type(tp: Any, /) -> TypeIs[typing_extensions.TypeAliasType]:
|
|
|
66
67
|
|
|
67
68
|
|
|
68
69
|
# Extracts T from Annotated[T, ...] or from Required[Annotated[T, ...]]
|
|
70
|
+
@lru_cache(maxsize=8096)
|
|
69
71
|
def strip_annotated_type(typ: type) -> type:
|
|
70
72
|
if is_required_type(typ) or is_annotated_type(typ):
|
|
71
73
|
return strip_annotated_type(cast(type, get_args(typ)[0]))
|
|
@@ -108,7 +110,7 @@ def extract_type_var_from_base(
|
|
|
108
110
|
```
|
|
109
111
|
"""
|
|
110
112
|
cls = cast(object, get_origin(typ) or typ)
|
|
111
|
-
if cls in generic_bases:
|
|
113
|
+
if cls in generic_bases: # pyright: ignore[reportUnnecessaryContains]
|
|
112
114
|
# we're given the class directly
|
|
113
115
|
return extract_type_arg(typ, index)
|
|
114
116
|
|
|
@@ -16,6 +16,14 @@ from .files import (
|
|
|
16
16
|
FilesResourceWithStreamingResponse,
|
|
17
17
|
AsyncFilesResourceWithStreamingResponse,
|
|
18
18
|
)
|
|
19
|
+
from .spans import (
|
|
20
|
+
SpansResource,
|
|
21
|
+
AsyncSpansResource,
|
|
22
|
+
SpansResourceWithRawResponse,
|
|
23
|
+
AsyncSpansResourceWithRawResponse,
|
|
24
|
+
SpansResourceWithStreamingResponse,
|
|
25
|
+
AsyncSpansResourceWithStreamingResponse,
|
|
26
|
+
)
|
|
19
27
|
from .models import (
|
|
20
28
|
ModelsResource,
|
|
21
29
|
AsyncModelsResource,
|
|
@@ -128,4 +136,10 @@ __all__ = [
|
|
|
128
136
|
"AsyncEvaluationItemsResourceWithRawResponse",
|
|
129
137
|
"EvaluationItemsResourceWithStreamingResponse",
|
|
130
138
|
"AsyncEvaluationItemsResourceWithStreamingResponse",
|
|
139
|
+
"SpansResource",
|
|
140
|
+
"AsyncSpansResource",
|
|
141
|
+
"SpansResourceWithRawResponse",
|
|
142
|
+
"AsyncSpansResourceWithRawResponse",
|
|
143
|
+
"SpansResourceWithStreamingResponse",
|
|
144
|
+
"AsyncSpansResourceWithStreamingResponse",
|
|
131
145
|
]
|
{scale_gp_beta-0.1.0a8 → scale_gp_beta-0.1.0a10}/src/scale_gp_beta/resources/chat/completions.py
RENAMED
|
@@ -508,7 +508,9 @@ class CompletionsResource(SyncAPIResource):
|
|
|
508
508
|
"top_logprobs": top_logprobs,
|
|
509
509
|
"top_p": top_p,
|
|
510
510
|
},
|
|
511
|
-
completion_create_params.
|
|
511
|
+
completion_create_params.CompletionCreateParamsStreaming
|
|
512
|
+
if stream
|
|
513
|
+
else completion_create_params.CompletionCreateParamsNonStreaming,
|
|
512
514
|
),
|
|
513
515
|
options=make_request_options(
|
|
514
516
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
@@ -999,7 +1001,9 @@ class AsyncCompletionsResource(AsyncAPIResource):
|
|
|
999
1001
|
"top_logprobs": top_logprobs,
|
|
1000
1002
|
"top_p": top_p,
|
|
1001
1003
|
},
|
|
1002
|
-
completion_create_params.
|
|
1004
|
+
completion_create_params.CompletionCreateParamsStreaming
|
|
1005
|
+
if stream
|
|
1006
|
+
else completion_create_params.CompletionCreateParamsNonStreaming,
|
|
1003
1007
|
),
|
|
1004
1008
|
options=make_request_options(
|
|
1005
1009
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
@@ -368,7 +368,9 @@ class CompletionsResource(SyncAPIResource):
|
|
|
368
368
|
"top_p": top_p,
|
|
369
369
|
"user": user,
|
|
370
370
|
},
|
|
371
|
-
completion_create_params.
|
|
371
|
+
completion_create_params.CompletionCreateParamsStreaming
|
|
372
|
+
if stream
|
|
373
|
+
else completion_create_params.CompletionCreateParamsNonStreaming,
|
|
372
374
|
),
|
|
373
375
|
options=make_request_options(
|
|
374
376
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
@@ -718,7 +720,9 @@ class AsyncCompletionsResource(AsyncAPIResource):
|
|
|
718
720
|
"top_p": top_p,
|
|
719
721
|
"user": user,
|
|
720
722
|
},
|
|
721
|
-
completion_create_params.
|
|
723
|
+
completion_create_params.CompletionCreateParamsStreaming
|
|
724
|
+
if stream
|
|
725
|
+
else completion_create_params.CompletionCreateParamsNonStreaming,
|
|
722
726
|
),
|
|
723
727
|
options=make_request_options(
|
|
724
728
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|