scale-gp-beta 0.1.0a40__tar.gz → 0.1.0a42__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.0a42/.release-please-manifest.json +3 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/CHANGELOG.md +35 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/LICENSE +1 -1
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/PKG-INFO +50 -3
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/README.md +49 -2
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/api.md +22 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/pyproject.toml +1 -1
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_base_client.py +134 -11
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_client.py +42 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_models.py +16 -1
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_streaming.py +4 -2
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_types.py +9 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_version.py +1 -1
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/__init__.py +14 -0
- scale_gp_beta-0.1.0a42/src/scale_gp_beta/resources/build.py +588 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/__init__.py +7 -0
- scale_gp_beta-0.1.0a42/src/scale_gp_beta/types/build_cancel_response.py +38 -0
- scale_gp_beta-0.1.0a42/src/scale_gp_beta/types/build_create_params.py +26 -0
- scale_gp_beta-0.1.0a42/src/scale_gp_beta/types/build_create_response.py +38 -0
- scale_gp_beta-0.1.0a42/src/scale_gp_beta/types/build_list_params.py +19 -0
- scale_gp_beta-0.1.0a42/src/scale_gp_beta/types/build_list_response.py +38 -0
- scale_gp_beta-0.1.0a42/src/scale_gp_beta/types/build_retrieve_response.py +38 -0
- scale_gp_beta-0.1.0a42/src/scale_gp_beta/types/stream_chunk.py +12 -0
- scale_gp_beta-0.1.0a42/tests/api_resources/test_build.py +416 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_client.py +210 -2
- scale_gp_beta-0.1.0a40/.release-please-manifest.json +0 -3
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/.gitignore +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/CONTRIBUTING.md +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/SECURITY.md +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/bin/check-release-environment +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/bin/publish-pypi +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/examples/.keep +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/examples/tracing/0_primitives_fibonacci.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/examples/tracing/1_explicit_use_case.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/examples/tracing/2_direct_upload.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/examples/tracing/3_openai_agent_tracing.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/noxfile.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/release-please-config.json +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/requirements-dev.lock +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/requirements.lock +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp/lib/.keep +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_compat.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_constants.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_exceptions.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_files.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_qs.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_resource.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/_compat.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/_datetime_parse.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/_logs.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/_proxy.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/_reflection.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/_resources_proxy.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/_streams.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/_sync.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/_transform.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/_typing.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/_utils/_utils.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/.keep +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/CONTRIBUTING.MD +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/exceptions.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/integrations/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/integrations/openai/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/integrations/openai/openai_span_type_map.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/integrations/openai/openai_tracing_sgp_processor.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/integrations/openai/utils.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/scope.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/span.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/trace.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/trace_exporter.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/trace_queue_manager.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/tracing.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/types.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/lib/tracing/util.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/pagination.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/py.typed +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/chat/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/chat/chat.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/chat/completions.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/completions.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/credentials.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/dataset_items.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/datasets.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/evaluation_items.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/evaluations.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/files/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/files/content.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/files/files.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/inference.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/models.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/questions.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/responses.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/span_assessments.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/resources/spans.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/approval_status.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/assessment_type.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/chat/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/chat/chat_completion.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/chat/chat_completion_chunk.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/chat/completion_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/chat/completion_create_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/chat/completion_models_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/chat/completion_models_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/chat/model_definition.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/completion.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/completion_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/component.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/component_param.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/container.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/container_param.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/credential.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/credential_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/credential_delete_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/credential_list_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/credential_secret.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/credential_update_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_delete_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_item.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_item_batch_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_item_batch_create_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_item_delete_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_item_list_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_item_retrieve_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_item_update_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_list_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_retrieve_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/dataset_update_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/evaluation.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/evaluation_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/evaluation_item.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/evaluation_item_list_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/evaluation_item_retrieve_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/evaluation_list_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/evaluation_retrieve_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/evaluation_task.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/evaluation_task_param.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/evaluation_update_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/file.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/file_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/file_delete_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/file_import_from_cloud_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/file_import_from_cloud_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/file_list_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/file_update_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/files/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/inference_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/inference_create_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/inference_model.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/inference_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/inference_response_chunk.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/item_locator.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/item_locator_template.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/model_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/model_delete_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/model_list_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/model_update_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/question.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/question_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/question_list_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/response_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/response_create_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/shared/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/shared/identity.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_assessment.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_assessment_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_assessment_delete_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_assessment_list_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_assessment_update_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_batch_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_batch_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_create_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_search_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_status.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_type.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_update_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_upsert_batch_params.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/scale_gp_beta/types/span_upsert_batch_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/src/sgp_dev/lib/.keep +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/chat/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/chat/test_completions.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/files/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/files/test_content.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_completions.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_credentials.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_dataset_items.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_datasets.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_evaluation_items.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_evaluations.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_files.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_inference.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_models.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_questions.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_responses.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_span_assessments.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/api_resources/test_spans.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/conftest.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/lib/tracing/integrations/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/lib/tracing/integrations/openai/__init__.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/lib/tracing/integrations/openai/test_utils.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/lib/tracing/test_span.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/lib/tracing/test_trace.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/lib/tracing/test_trace_exporter.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/lib/tracing/test_trace_queue_manager.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/lib/tracing/test_tracing.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/sample_file.txt +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_deepcopy.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_extract_files.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_files.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_models.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_qs.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_required_args.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_response.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_streaming.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_transform.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_utils/test_datetime_parse.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_utils/test_proxy.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/test_utils/test_typing.py +0 -0
- {scale_gp_beta-0.1.0a40 → scale_gp_beta-0.1.0a42}/tests/utils.py +0 -0
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.0-alpha.42 (2026-01-26)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.1.0-alpha.41...v0.1.0-alpha.42](https://github.com/scaleapi/sgp-python-beta/compare/v0.1.0-alpha.41...v0.1.0-alpha.42)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** api update ([1b421b2](https://github.com/scaleapi/sgp-python-beta/commit/1b421b2381966d00c5926e8edfca9bfcba828e52))
|
|
10
|
+
* **api:** manual updates ([1ebe3a3](https://github.com/scaleapi/sgp-python-beta/commit/1ebe3a390ebaa5062fa896d012e9ee2fba297b5a))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Chores
|
|
14
|
+
|
|
15
|
+
* **ci:** upgrade `actions/github-script` ([30143ce](https://github.com/scaleapi/sgp-python-beta/commit/30143ce61bcf4ae60f669aa45a77d008eabbce9b))
|
|
16
|
+
|
|
17
|
+
## 0.1.0-alpha.41 (2026-01-22)
|
|
18
|
+
|
|
19
|
+
Full Changelog: [v0.1.0-alpha.40...v0.1.0-alpha.41](https://github.com/scaleapi/sgp-python-beta/compare/v0.1.0-alpha.40...v0.1.0-alpha.41)
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* **api:** manual updates ([9b156ee](https://github.com/scaleapi/sgp-python-beta/commit/9b156eed3f4d4ebaa6faa8fb23ef0b1781760415))
|
|
24
|
+
* **client:** add support for binary request streaming ([04962bf](https://github.com/scaleapi/sgp-python-beta/commit/04962bf6406930a75e123d2af5dde86d0f313256))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Chores
|
|
28
|
+
|
|
29
|
+
* **internal:** codegen related update ([4c33009](https://github.com/scaleapi/sgp-python-beta/commit/4c330099f4f093af414196c4e62f33cc98c7b819))
|
|
30
|
+
* **internal:** codegen related update ([5db2581](https://github.com/scaleapi/sgp-python-beta/commit/5db25817cb90f868cd98bed7e53c0492ac47a9ae))
|
|
31
|
+
* **internal:** update `actions/checkout` version ([df2bf4c](https://github.com/scaleapi/sgp-python-beta/commit/df2bf4c22cc5f517a5794646ae6f9be2cd929f31))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Documentation
|
|
35
|
+
|
|
36
|
+
* prominently feature MCP server setup in root SDK readmes ([a683797](https://github.com/scaleapi/sgp-python-beta/commit/a683797c2730376322771da46e19d782fa2c3b1a))
|
|
37
|
+
|
|
3
38
|
## 0.1.0-alpha.40 (2025-12-19)
|
|
4
39
|
|
|
5
40
|
Full Changelog: [v0.1.0-alpha.39...v0.1.0-alpha.40](https://github.com/scaleapi/sgp-python-beta/compare/v0.1.0-alpha.39...v0.1.0-alpha.40)
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright
|
|
189
|
+
Copyright 2026 Scale GP
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: scale-gp-beta
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.0a42
|
|
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
|
|
@@ -44,6 +44,15 @@ and offers both synchronous and asynchronous clients powered by [httpx](https://
|
|
|
44
44
|
|
|
45
45
|
It is generated with [Stainless](https://www.stainless.com/).
|
|
46
46
|
|
|
47
|
+
## MCP Server
|
|
48
|
+
|
|
49
|
+
Use the Scale GP MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.
|
|
50
|
+
|
|
51
|
+
[](https://cursor.com/en-US/install-mcp?name=scale-gp-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInNjYWxlLWdwLW1jcCJdfQ)
|
|
52
|
+
[](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22scale-gp-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22scale-gp-mcp%22%5D%7D)
|
|
53
|
+
|
|
54
|
+
> Note: You may need to set environment variables in your MCP client.
|
|
55
|
+
|
|
47
56
|
## Documentation
|
|
48
57
|
|
|
49
58
|
The REST API documentation can be found on [docs.gp.scale.com](https://docs.gp.scale.com). The full API of this library can be found in [api.md](https://github.com/scaleapi/sgp-python-beta/tree/main/api.md).
|
|
@@ -52,7 +61,7 @@ The REST API documentation can be found on [docs.gp.scale.com](https://docs.gp.s
|
|
|
52
61
|
|
|
53
62
|
```sh
|
|
54
63
|
# install from PyPI
|
|
55
|
-
pip install --pre scale-gp-beta
|
|
64
|
+
pip install '--pre scale-gp-beta'
|
|
56
65
|
```
|
|
57
66
|
|
|
58
67
|
## Usage
|
|
@@ -358,7 +367,7 @@ You can enable this by installing `aiohttp`:
|
|
|
358
367
|
|
|
359
368
|
```sh
|
|
360
369
|
# install from PyPI
|
|
361
|
-
pip install --pre scale-gp-beta[aiohttp]
|
|
370
|
+
pip install '--pre scale-gp-beta[aiohttp]'
|
|
362
371
|
```
|
|
363
372
|
|
|
364
373
|
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
|
|
@@ -386,6 +395,44 @@ async def main() -> None:
|
|
|
386
395
|
asyncio.run(main())
|
|
387
396
|
```
|
|
388
397
|
|
|
398
|
+
## Streaming responses
|
|
399
|
+
|
|
400
|
+
We provide support for streaming responses using Server Side Events (SSE).
|
|
401
|
+
|
|
402
|
+
```python
|
|
403
|
+
from scale_gp_beta import SGPClient
|
|
404
|
+
|
|
405
|
+
client = SGPClient(
|
|
406
|
+
account_id="My Account ID",
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
stream = client.chat.completions.create(
|
|
410
|
+
messages=[{"foo": "bar"}],
|
|
411
|
+
model="model",
|
|
412
|
+
stream=True,
|
|
413
|
+
)
|
|
414
|
+
for completion in stream:
|
|
415
|
+
print(completion)
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
The async client uses the exact same interface.
|
|
419
|
+
|
|
420
|
+
```python
|
|
421
|
+
from scale_gp_beta import AsyncSGPClient
|
|
422
|
+
|
|
423
|
+
client = AsyncSGPClient(
|
|
424
|
+
account_id="My Account ID",
|
|
425
|
+
)
|
|
426
|
+
|
|
427
|
+
stream = await client.chat.completions.create(
|
|
428
|
+
messages=[{"foo": "bar"}],
|
|
429
|
+
model="model",
|
|
430
|
+
stream=True,
|
|
431
|
+
)
|
|
432
|
+
async for completion in stream:
|
|
433
|
+
print(completion)
|
|
434
|
+
```
|
|
435
|
+
|
|
389
436
|
## Using types
|
|
390
437
|
|
|
391
438
|
Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typing.html#typing.TypedDict). Responses are [Pydantic models](https://docs.pydantic.dev) which also provide helper methods for things like:
|
|
@@ -9,6 +9,15 @@ and offers both synchronous and asynchronous clients powered by [httpx](https://
|
|
|
9
9
|
|
|
10
10
|
It is generated with [Stainless](https://www.stainless.com/).
|
|
11
11
|
|
|
12
|
+
## MCP Server
|
|
13
|
+
|
|
14
|
+
Use the Scale GP MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.
|
|
15
|
+
|
|
16
|
+
[](https://cursor.com/en-US/install-mcp?name=scale-gp-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInNjYWxlLWdwLW1jcCJdfQ)
|
|
17
|
+
[](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22scale-gp-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22scale-gp-mcp%22%5D%7D)
|
|
18
|
+
|
|
19
|
+
> Note: You may need to set environment variables in your MCP client.
|
|
20
|
+
|
|
12
21
|
## Documentation
|
|
13
22
|
|
|
14
23
|
The REST API documentation can be found on [docs.gp.scale.com](https://docs.gp.scale.com). The full API of this library can be found in [api.md](api.md).
|
|
@@ -17,7 +26,7 @@ The REST API documentation can be found on [docs.gp.scale.com](https://docs.gp.s
|
|
|
17
26
|
|
|
18
27
|
```sh
|
|
19
28
|
# install from PyPI
|
|
20
|
-
pip install --pre scale-gp-beta
|
|
29
|
+
pip install '--pre scale-gp-beta'
|
|
21
30
|
```
|
|
22
31
|
|
|
23
32
|
## Usage
|
|
@@ -323,7 +332,7 @@ You can enable this by installing `aiohttp`:
|
|
|
323
332
|
|
|
324
333
|
```sh
|
|
325
334
|
# install from PyPI
|
|
326
|
-
pip install --pre scale-gp-beta[aiohttp]
|
|
335
|
+
pip install '--pre scale-gp-beta[aiohttp]'
|
|
327
336
|
```
|
|
328
337
|
|
|
329
338
|
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
|
|
@@ -351,6 +360,44 @@ async def main() -> None:
|
|
|
351
360
|
asyncio.run(main())
|
|
352
361
|
```
|
|
353
362
|
|
|
363
|
+
## Streaming responses
|
|
364
|
+
|
|
365
|
+
We provide support for streaming responses using Server Side Events (SSE).
|
|
366
|
+
|
|
367
|
+
```python
|
|
368
|
+
from scale_gp_beta import SGPClient
|
|
369
|
+
|
|
370
|
+
client = SGPClient(
|
|
371
|
+
account_id="My Account ID",
|
|
372
|
+
)
|
|
373
|
+
|
|
374
|
+
stream = client.chat.completions.create(
|
|
375
|
+
messages=[{"foo": "bar"}],
|
|
376
|
+
model="model",
|
|
377
|
+
stream=True,
|
|
378
|
+
)
|
|
379
|
+
for completion in stream:
|
|
380
|
+
print(completion)
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
The async client uses the exact same interface.
|
|
384
|
+
|
|
385
|
+
```python
|
|
386
|
+
from scale_gp_beta import AsyncSGPClient
|
|
387
|
+
|
|
388
|
+
client = AsyncSGPClient(
|
|
389
|
+
account_id="My Account ID",
|
|
390
|
+
)
|
|
391
|
+
|
|
392
|
+
stream = await client.chat.completions.create(
|
|
393
|
+
messages=[{"foo": "bar"}],
|
|
394
|
+
model="model",
|
|
395
|
+
stream=True,
|
|
396
|
+
)
|
|
397
|
+
async for completion in stream:
|
|
398
|
+
print(completion)
|
|
399
|
+
```
|
|
400
|
+
|
|
354
401
|
## Using types
|
|
355
402
|
|
|
356
403
|
Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typing.html#typing.TypedDict). Responses are [Pydantic models](https://docs.pydantic.dev) which also provide helper methods for things like:
|
|
@@ -241,3 +241,25 @@ Methods:
|
|
|
241
241
|
- <code title="post /v5/credentials/{credential_id}/secret">client.credentials.<a href="./src/scale_gp_beta/resources/credentials.py">decrypt</a>(credential_id) -> <a href="./src/scale_gp_beta/types/credential_secret.py">CredentialSecret</a></code>
|
|
242
242
|
- <code title="post /v5/credentials/name/{credential_name}/secret">client.credentials.<a href="./src/scale_gp_beta/resources/credentials.py">decrypt_by_name</a>(credential_name) -> <a href="./src/scale_gp_beta/types/credential_secret.py">CredentialSecret</a></code>
|
|
243
243
|
- <code title="get /v5/credentials/name/{credential_name}">client.credentials.<a href="./src/scale_gp_beta/resources/credentials.py">retrieve_by_name</a>(credential_name) -> <a href="./src/scale_gp_beta/types/credential.py">Credential</a></code>
|
|
244
|
+
|
|
245
|
+
# Build
|
|
246
|
+
|
|
247
|
+
Types:
|
|
248
|
+
|
|
249
|
+
```python
|
|
250
|
+
from scale_gp_beta.types import (
|
|
251
|
+
StreamChunk,
|
|
252
|
+
BuildCreateResponse,
|
|
253
|
+
BuildRetrieveResponse,
|
|
254
|
+
BuildListResponse,
|
|
255
|
+
BuildCancelResponse,
|
|
256
|
+
)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Methods:
|
|
260
|
+
|
|
261
|
+
- <code title="post /v5/builds">client.build.<a href="./src/scale_gp_beta/resources/build.py">create</a>(\*\*<a href="src/scale_gp_beta/types/build_create_params.py">params</a>) -> <a href="./src/scale_gp_beta/types/build_create_response.py">BuildCreateResponse</a></code>
|
|
262
|
+
- <code title="get /v5/builds/{build_id}">client.build.<a href="./src/scale_gp_beta/resources/build.py">retrieve</a>(build_id) -> <a href="./src/scale_gp_beta/types/build_retrieve_response.py">BuildRetrieveResponse</a></code>
|
|
263
|
+
- <code title="get /v5/builds">client.build.<a href="./src/scale_gp_beta/resources/build.py">list</a>(\*\*<a href="src/scale_gp_beta/types/build_list_params.py">params</a>) -> <a href="./src/scale_gp_beta/types/build_list_response.py">SyncCursorPage[BuildListResponse]</a></code>
|
|
264
|
+
- <code title="post /v5/builds/{build_id}/cancel">client.build.<a href="./src/scale_gp_beta/resources/build.py">cancel</a>(build_id) -> <a href="./src/scale_gp_beta/types/build_cancel_response.py">BuildCancelResponse</a></code>
|
|
265
|
+
- <code title="get /v5/builds/{build_id}/logs">client.build.<a href="./src/scale_gp_beta/resources/build.py">logs</a>(build_id) -> <a href="./src/scale_gp_beta/types/stream_chunk.py">StreamChunk</a></code>
|
|
@@ -9,6 +9,7 @@ import asyncio
|
|
|
9
9
|
import inspect
|
|
10
10
|
import logging
|
|
11
11
|
import platform
|
|
12
|
+
import warnings
|
|
12
13
|
import email.utils
|
|
13
14
|
from types import TracebackType
|
|
14
15
|
from random import random
|
|
@@ -51,9 +52,11 @@ from ._types import (
|
|
|
51
52
|
ResponseT,
|
|
52
53
|
AnyMapping,
|
|
53
54
|
PostParser,
|
|
55
|
+
BinaryTypes,
|
|
54
56
|
RequestFiles,
|
|
55
57
|
HttpxSendArgs,
|
|
56
58
|
RequestOptions,
|
|
59
|
+
AsyncBinaryTypes,
|
|
57
60
|
HttpxRequestFiles,
|
|
58
61
|
ModelBuilderProtocol,
|
|
59
62
|
not_given,
|
|
@@ -477,8 +480,19 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
|
477
480
|
retries_taken: int = 0,
|
|
478
481
|
) -> httpx.Request:
|
|
479
482
|
if log.isEnabledFor(logging.DEBUG):
|
|
480
|
-
log.debug(
|
|
481
|
-
|
|
483
|
+
log.debug(
|
|
484
|
+
"Request options: %s",
|
|
485
|
+
model_dump(
|
|
486
|
+
options,
|
|
487
|
+
exclude_unset=True,
|
|
488
|
+
# Pydantic v1 can't dump every type we support in content, so we exclude it for now.
|
|
489
|
+
exclude={
|
|
490
|
+
"content",
|
|
491
|
+
}
|
|
492
|
+
if PYDANTIC_V1
|
|
493
|
+
else {},
|
|
494
|
+
),
|
|
495
|
+
)
|
|
482
496
|
kwargs: dict[str, Any] = {}
|
|
483
497
|
|
|
484
498
|
json_data = options.json_data
|
|
@@ -532,7 +546,13 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
|
532
546
|
is_body_allowed = options.method.lower() != "get"
|
|
533
547
|
|
|
534
548
|
if is_body_allowed:
|
|
535
|
-
if
|
|
549
|
+
if options.content is not None and json_data is not None:
|
|
550
|
+
raise TypeError("Passing both `content` and `json_data` is not supported")
|
|
551
|
+
if options.content is not None and files is not None:
|
|
552
|
+
raise TypeError("Passing both `content` and `files` is not supported")
|
|
553
|
+
if options.content is not None:
|
|
554
|
+
kwargs["content"] = options.content
|
|
555
|
+
elif isinstance(json_data, bytes):
|
|
536
556
|
kwargs["content"] = json_data
|
|
537
557
|
else:
|
|
538
558
|
kwargs["json"] = json_data if is_given(json_data) else None
|
|
@@ -1194,6 +1214,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
1194
1214
|
*,
|
|
1195
1215
|
cast_to: Type[ResponseT],
|
|
1196
1216
|
body: Body | None = None,
|
|
1217
|
+
content: BinaryTypes | None = None,
|
|
1197
1218
|
options: RequestOptions = {},
|
|
1198
1219
|
files: RequestFiles | None = None,
|
|
1199
1220
|
stream: Literal[False] = False,
|
|
@@ -1206,6 +1227,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
1206
1227
|
*,
|
|
1207
1228
|
cast_to: Type[ResponseT],
|
|
1208
1229
|
body: Body | None = None,
|
|
1230
|
+
content: BinaryTypes | None = None,
|
|
1209
1231
|
options: RequestOptions = {},
|
|
1210
1232
|
files: RequestFiles | None = None,
|
|
1211
1233
|
stream: Literal[True],
|
|
@@ -1219,6 +1241,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
1219
1241
|
*,
|
|
1220
1242
|
cast_to: Type[ResponseT],
|
|
1221
1243
|
body: Body | None = None,
|
|
1244
|
+
content: BinaryTypes | None = None,
|
|
1222
1245
|
options: RequestOptions = {},
|
|
1223
1246
|
files: RequestFiles | None = None,
|
|
1224
1247
|
stream: bool,
|
|
@@ -1231,13 +1254,25 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
1231
1254
|
*,
|
|
1232
1255
|
cast_to: Type[ResponseT],
|
|
1233
1256
|
body: Body | None = None,
|
|
1257
|
+
content: BinaryTypes | None = None,
|
|
1234
1258
|
options: RequestOptions = {},
|
|
1235
1259
|
files: RequestFiles | None = None,
|
|
1236
1260
|
stream: bool = False,
|
|
1237
1261
|
stream_cls: type[_StreamT] | None = None,
|
|
1238
1262
|
) -> ResponseT | _StreamT:
|
|
1263
|
+
if body is not None and content is not None:
|
|
1264
|
+
raise TypeError("Passing both `body` and `content` is not supported")
|
|
1265
|
+
if files is not None and content is not None:
|
|
1266
|
+
raise TypeError("Passing both `files` and `content` is not supported")
|
|
1267
|
+
if isinstance(body, bytes):
|
|
1268
|
+
warnings.warn(
|
|
1269
|
+
"Passing raw bytes as `body` is deprecated and will be removed in a future version. "
|
|
1270
|
+
"Please pass raw bytes via the `content` parameter instead.",
|
|
1271
|
+
DeprecationWarning,
|
|
1272
|
+
stacklevel=2,
|
|
1273
|
+
)
|
|
1239
1274
|
opts = FinalRequestOptions.construct(
|
|
1240
|
-
method="post", url=path, json_data=body, files=to_httpx_files(files), **options
|
|
1275
|
+
method="post", url=path, json_data=body, content=content, files=to_httpx_files(files), **options
|
|
1241
1276
|
)
|
|
1242
1277
|
return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
|
|
1243
1278
|
|
|
@@ -1247,11 +1282,23 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
1247
1282
|
*,
|
|
1248
1283
|
cast_to: Type[ResponseT],
|
|
1249
1284
|
body: Body | None = None,
|
|
1285
|
+
content: BinaryTypes | None = None,
|
|
1250
1286
|
files: RequestFiles | None = None,
|
|
1251
1287
|
options: RequestOptions = {},
|
|
1252
1288
|
) -> ResponseT:
|
|
1289
|
+
if body is not None and content is not None:
|
|
1290
|
+
raise TypeError("Passing both `body` and `content` is not supported")
|
|
1291
|
+
if files is not None and content is not None:
|
|
1292
|
+
raise TypeError("Passing both `files` and `content` is not supported")
|
|
1293
|
+
if isinstance(body, bytes):
|
|
1294
|
+
warnings.warn(
|
|
1295
|
+
"Passing raw bytes as `body` is deprecated and will be removed in a future version. "
|
|
1296
|
+
"Please pass raw bytes via the `content` parameter instead.",
|
|
1297
|
+
DeprecationWarning,
|
|
1298
|
+
stacklevel=2,
|
|
1299
|
+
)
|
|
1253
1300
|
opts = FinalRequestOptions.construct(
|
|
1254
|
-
method="patch", url=path, json_data=body, files=to_httpx_files(files), **options
|
|
1301
|
+
method="patch", url=path, json_data=body, content=content, files=to_httpx_files(files), **options
|
|
1255
1302
|
)
|
|
1256
1303
|
return self.request(cast_to, opts)
|
|
1257
1304
|
|
|
@@ -1261,11 +1308,23 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
1261
1308
|
*,
|
|
1262
1309
|
cast_to: Type[ResponseT],
|
|
1263
1310
|
body: Body | None = None,
|
|
1311
|
+
content: BinaryTypes | None = None,
|
|
1264
1312
|
files: RequestFiles | None = None,
|
|
1265
1313
|
options: RequestOptions = {},
|
|
1266
1314
|
) -> ResponseT:
|
|
1315
|
+
if body is not None and content is not None:
|
|
1316
|
+
raise TypeError("Passing both `body` and `content` is not supported")
|
|
1317
|
+
if files is not None and content is not None:
|
|
1318
|
+
raise TypeError("Passing both `files` and `content` is not supported")
|
|
1319
|
+
if isinstance(body, bytes):
|
|
1320
|
+
warnings.warn(
|
|
1321
|
+
"Passing raw bytes as `body` is deprecated and will be removed in a future version. "
|
|
1322
|
+
"Please pass raw bytes via the `content` parameter instead.",
|
|
1323
|
+
DeprecationWarning,
|
|
1324
|
+
stacklevel=2,
|
|
1325
|
+
)
|
|
1267
1326
|
opts = FinalRequestOptions.construct(
|
|
1268
|
-
method="put", url=path, json_data=body, files=to_httpx_files(files), **options
|
|
1327
|
+
method="put", url=path, json_data=body, content=content, files=to_httpx_files(files), **options
|
|
1269
1328
|
)
|
|
1270
1329
|
return self.request(cast_to, opts)
|
|
1271
1330
|
|
|
@@ -1275,9 +1334,19 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
1275
1334
|
*,
|
|
1276
1335
|
cast_to: Type[ResponseT],
|
|
1277
1336
|
body: Body | None = None,
|
|
1337
|
+
content: BinaryTypes | None = None,
|
|
1278
1338
|
options: RequestOptions = {},
|
|
1279
1339
|
) -> ResponseT:
|
|
1280
|
-
|
|
1340
|
+
if body is not None and content is not None:
|
|
1341
|
+
raise TypeError("Passing both `body` and `content` is not supported")
|
|
1342
|
+
if isinstance(body, bytes):
|
|
1343
|
+
warnings.warn(
|
|
1344
|
+
"Passing raw bytes as `body` is deprecated and will be removed in a future version. "
|
|
1345
|
+
"Please pass raw bytes via the `content` parameter instead.",
|
|
1346
|
+
DeprecationWarning,
|
|
1347
|
+
stacklevel=2,
|
|
1348
|
+
)
|
|
1349
|
+
opts = FinalRequestOptions.construct(method="delete", url=path, json_data=body, content=content, **options)
|
|
1281
1350
|
return self.request(cast_to, opts)
|
|
1282
1351
|
|
|
1283
1352
|
def get_api_list(
|
|
@@ -1717,6 +1786,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1717
1786
|
*,
|
|
1718
1787
|
cast_to: Type[ResponseT],
|
|
1719
1788
|
body: Body | None = None,
|
|
1789
|
+
content: AsyncBinaryTypes | None = None,
|
|
1720
1790
|
files: RequestFiles | None = None,
|
|
1721
1791
|
options: RequestOptions = {},
|
|
1722
1792
|
stream: Literal[False] = False,
|
|
@@ -1729,6 +1799,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1729
1799
|
*,
|
|
1730
1800
|
cast_to: Type[ResponseT],
|
|
1731
1801
|
body: Body | None = None,
|
|
1802
|
+
content: AsyncBinaryTypes | None = None,
|
|
1732
1803
|
files: RequestFiles | None = None,
|
|
1733
1804
|
options: RequestOptions = {},
|
|
1734
1805
|
stream: Literal[True],
|
|
@@ -1742,6 +1813,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1742
1813
|
*,
|
|
1743
1814
|
cast_to: Type[ResponseT],
|
|
1744
1815
|
body: Body | None = None,
|
|
1816
|
+
content: AsyncBinaryTypes | None = None,
|
|
1745
1817
|
files: RequestFiles | None = None,
|
|
1746
1818
|
options: RequestOptions = {},
|
|
1747
1819
|
stream: bool,
|
|
@@ -1754,13 +1826,25 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1754
1826
|
*,
|
|
1755
1827
|
cast_to: Type[ResponseT],
|
|
1756
1828
|
body: Body | None = None,
|
|
1829
|
+
content: AsyncBinaryTypes | None = None,
|
|
1757
1830
|
files: RequestFiles | None = None,
|
|
1758
1831
|
options: RequestOptions = {},
|
|
1759
1832
|
stream: bool = False,
|
|
1760
1833
|
stream_cls: type[_AsyncStreamT] | None = None,
|
|
1761
1834
|
) -> ResponseT | _AsyncStreamT:
|
|
1835
|
+
if body is not None and content is not None:
|
|
1836
|
+
raise TypeError("Passing both `body` and `content` is not supported")
|
|
1837
|
+
if files is not None and content is not None:
|
|
1838
|
+
raise TypeError("Passing both `files` and `content` is not supported")
|
|
1839
|
+
if isinstance(body, bytes):
|
|
1840
|
+
warnings.warn(
|
|
1841
|
+
"Passing raw bytes as `body` is deprecated and will be removed in a future version. "
|
|
1842
|
+
"Please pass raw bytes via the `content` parameter instead.",
|
|
1843
|
+
DeprecationWarning,
|
|
1844
|
+
stacklevel=2,
|
|
1845
|
+
)
|
|
1762
1846
|
opts = FinalRequestOptions.construct(
|
|
1763
|
-
method="post", url=path, json_data=body, files=await async_to_httpx_files(files), **options
|
|
1847
|
+
method="post", url=path, json_data=body, content=content, files=await async_to_httpx_files(files), **options
|
|
1764
1848
|
)
|
|
1765
1849
|
return await self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)
|
|
1766
1850
|
|
|
@@ -1770,11 +1854,28 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1770
1854
|
*,
|
|
1771
1855
|
cast_to: Type[ResponseT],
|
|
1772
1856
|
body: Body | None = None,
|
|
1857
|
+
content: AsyncBinaryTypes | None = None,
|
|
1773
1858
|
files: RequestFiles | None = None,
|
|
1774
1859
|
options: RequestOptions = {},
|
|
1775
1860
|
) -> ResponseT:
|
|
1861
|
+
if body is not None and content is not None:
|
|
1862
|
+
raise TypeError("Passing both `body` and `content` is not supported")
|
|
1863
|
+
if files is not None and content is not None:
|
|
1864
|
+
raise TypeError("Passing both `files` and `content` is not supported")
|
|
1865
|
+
if isinstance(body, bytes):
|
|
1866
|
+
warnings.warn(
|
|
1867
|
+
"Passing raw bytes as `body` is deprecated and will be removed in a future version. "
|
|
1868
|
+
"Please pass raw bytes via the `content` parameter instead.",
|
|
1869
|
+
DeprecationWarning,
|
|
1870
|
+
stacklevel=2,
|
|
1871
|
+
)
|
|
1776
1872
|
opts = FinalRequestOptions.construct(
|
|
1777
|
-
method="patch",
|
|
1873
|
+
method="patch",
|
|
1874
|
+
url=path,
|
|
1875
|
+
json_data=body,
|
|
1876
|
+
content=content,
|
|
1877
|
+
files=await async_to_httpx_files(files),
|
|
1878
|
+
**options,
|
|
1778
1879
|
)
|
|
1779
1880
|
return await self.request(cast_to, opts)
|
|
1780
1881
|
|
|
@@ -1784,11 +1885,23 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1784
1885
|
*,
|
|
1785
1886
|
cast_to: Type[ResponseT],
|
|
1786
1887
|
body: Body | None = None,
|
|
1888
|
+
content: AsyncBinaryTypes | None = None,
|
|
1787
1889
|
files: RequestFiles | None = None,
|
|
1788
1890
|
options: RequestOptions = {},
|
|
1789
1891
|
) -> ResponseT:
|
|
1892
|
+
if body is not None and content is not None:
|
|
1893
|
+
raise TypeError("Passing both `body` and `content` is not supported")
|
|
1894
|
+
if files is not None and content is not None:
|
|
1895
|
+
raise TypeError("Passing both `files` and `content` is not supported")
|
|
1896
|
+
if isinstance(body, bytes):
|
|
1897
|
+
warnings.warn(
|
|
1898
|
+
"Passing raw bytes as `body` is deprecated and will be removed in a future version. "
|
|
1899
|
+
"Please pass raw bytes via the `content` parameter instead.",
|
|
1900
|
+
DeprecationWarning,
|
|
1901
|
+
stacklevel=2,
|
|
1902
|
+
)
|
|
1790
1903
|
opts = FinalRequestOptions.construct(
|
|
1791
|
-
method="put", url=path, json_data=body, files=await async_to_httpx_files(files), **options
|
|
1904
|
+
method="put", url=path, json_data=body, content=content, files=await async_to_httpx_files(files), **options
|
|
1792
1905
|
)
|
|
1793
1906
|
return await self.request(cast_to, opts)
|
|
1794
1907
|
|
|
@@ -1798,9 +1911,19 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1798
1911
|
*,
|
|
1799
1912
|
cast_to: Type[ResponseT],
|
|
1800
1913
|
body: Body | None = None,
|
|
1914
|
+
content: AsyncBinaryTypes | None = None,
|
|
1801
1915
|
options: RequestOptions = {},
|
|
1802
1916
|
) -> ResponseT:
|
|
1803
|
-
|
|
1917
|
+
if body is not None and content is not None:
|
|
1918
|
+
raise TypeError("Passing both `body` and `content` is not supported")
|
|
1919
|
+
if isinstance(body, bytes):
|
|
1920
|
+
warnings.warn(
|
|
1921
|
+
"Passing raw bytes as `body` is deprecated and will be removed in a future version. "
|
|
1922
|
+
"Please pass raw bytes via the `content` parameter instead.",
|
|
1923
|
+
DeprecationWarning,
|
|
1924
|
+
stacklevel=2,
|
|
1925
|
+
)
|
|
1926
|
+
opts = FinalRequestOptions.construct(method="delete", url=path, json_data=body, content=content, **options)
|
|
1804
1927
|
return await self.request(cast_to, opts)
|
|
1805
1928
|
|
|
1806
1929
|
def get_api_list(
|
|
@@ -33,6 +33,7 @@ from ._base_client import (
|
|
|
33
33
|
if TYPE_CHECKING:
|
|
34
34
|
from .resources import (
|
|
35
35
|
chat,
|
|
36
|
+
build,
|
|
36
37
|
files,
|
|
37
38
|
spans,
|
|
38
39
|
models,
|
|
@@ -47,6 +48,7 @@ if TYPE_CHECKING:
|
|
|
47
48
|
evaluation_items,
|
|
48
49
|
span_assessments,
|
|
49
50
|
)
|
|
51
|
+
from .resources.build import BuildResource, AsyncBuildResource
|
|
50
52
|
from .resources.spans import SpansResource, AsyncSpansResource
|
|
51
53
|
from .resources.models import ModelsResource, AsyncModelsResource
|
|
52
54
|
from .resources.datasets import DatasetsResource, AsyncDatasetsResource
|
|
@@ -171,6 +173,8 @@ class SGPClient(SyncAPIClient):
|
|
|
171
173
|
_strict_response_validation=_strict_response_validation,
|
|
172
174
|
)
|
|
173
175
|
|
|
176
|
+
self._default_stream_cls = Stream
|
|
177
|
+
|
|
174
178
|
@cached_property
|
|
175
179
|
def responses(self) -> ResponsesResource:
|
|
176
180
|
from .resources.responses import ResponsesResource
|
|
@@ -255,6 +259,12 @@ class SGPClient(SyncAPIClient):
|
|
|
255
259
|
|
|
256
260
|
return CredentialsResource(self)
|
|
257
261
|
|
|
262
|
+
@cached_property
|
|
263
|
+
def build(self) -> BuildResource:
|
|
264
|
+
from .resources.build import BuildResource
|
|
265
|
+
|
|
266
|
+
return BuildResource(self)
|
|
267
|
+
|
|
258
268
|
@cached_property
|
|
259
269
|
def with_raw_response(self) -> SGPClientWithRawResponse:
|
|
260
270
|
return SGPClientWithRawResponse(self)
|
|
@@ -464,6 +474,8 @@ class AsyncSGPClient(AsyncAPIClient):
|
|
|
464
474
|
_strict_response_validation=_strict_response_validation,
|
|
465
475
|
)
|
|
466
476
|
|
|
477
|
+
self._default_stream_cls = AsyncStream
|
|
478
|
+
|
|
467
479
|
@cached_property
|
|
468
480
|
def responses(self) -> AsyncResponsesResource:
|
|
469
481
|
from .resources.responses import AsyncResponsesResource
|
|
@@ -548,6 +560,12 @@ class AsyncSGPClient(AsyncAPIClient):
|
|
|
548
560
|
|
|
549
561
|
return AsyncCredentialsResource(self)
|
|
550
562
|
|
|
563
|
+
@cached_property
|
|
564
|
+
def build(self) -> AsyncBuildResource:
|
|
565
|
+
from .resources.build import AsyncBuildResource
|
|
566
|
+
|
|
567
|
+
return AsyncBuildResource(self)
|
|
568
|
+
|
|
551
569
|
@cached_property
|
|
552
570
|
def with_raw_response(self) -> AsyncSGPClientWithRawResponse:
|
|
553
571
|
return AsyncSGPClientWithRawResponse(self)
|
|
@@ -756,6 +774,12 @@ class SGPClientWithRawResponse:
|
|
|
756
774
|
|
|
757
775
|
return CredentialsResourceWithRawResponse(self._client.credentials)
|
|
758
776
|
|
|
777
|
+
@cached_property
|
|
778
|
+
def build(self) -> build.BuildResourceWithRawResponse:
|
|
779
|
+
from .resources.build import BuildResourceWithRawResponse
|
|
780
|
+
|
|
781
|
+
return BuildResourceWithRawResponse(self._client.build)
|
|
782
|
+
|
|
759
783
|
|
|
760
784
|
class AsyncSGPClientWithRawResponse:
|
|
761
785
|
_client: AsyncSGPClient
|
|
@@ -847,6 +871,12 @@ class AsyncSGPClientWithRawResponse:
|
|
|
847
871
|
|
|
848
872
|
return AsyncCredentialsResourceWithRawResponse(self._client.credentials)
|
|
849
873
|
|
|
874
|
+
@cached_property
|
|
875
|
+
def build(self) -> build.AsyncBuildResourceWithRawResponse:
|
|
876
|
+
from .resources.build import AsyncBuildResourceWithRawResponse
|
|
877
|
+
|
|
878
|
+
return AsyncBuildResourceWithRawResponse(self._client.build)
|
|
879
|
+
|
|
850
880
|
|
|
851
881
|
class SGPClientWithStreamedResponse:
|
|
852
882
|
_client: SGPClient
|
|
@@ -938,6 +968,12 @@ class SGPClientWithStreamedResponse:
|
|
|
938
968
|
|
|
939
969
|
return CredentialsResourceWithStreamingResponse(self._client.credentials)
|
|
940
970
|
|
|
971
|
+
@cached_property
|
|
972
|
+
def build(self) -> build.BuildResourceWithStreamingResponse:
|
|
973
|
+
from .resources.build import BuildResourceWithStreamingResponse
|
|
974
|
+
|
|
975
|
+
return BuildResourceWithStreamingResponse(self._client.build)
|
|
976
|
+
|
|
941
977
|
|
|
942
978
|
class AsyncSGPClientWithStreamedResponse:
|
|
943
979
|
_client: AsyncSGPClient
|
|
@@ -1029,6 +1065,12 @@ class AsyncSGPClientWithStreamedResponse:
|
|
|
1029
1065
|
|
|
1030
1066
|
return AsyncCredentialsResourceWithStreamingResponse(self._client.credentials)
|
|
1031
1067
|
|
|
1068
|
+
@cached_property
|
|
1069
|
+
def build(self) -> build.AsyncBuildResourceWithStreamingResponse:
|
|
1070
|
+
from .resources.build import AsyncBuildResourceWithStreamingResponse
|
|
1071
|
+
|
|
1072
|
+
return AsyncBuildResourceWithStreamingResponse(self._client.build)
|
|
1073
|
+
|
|
1032
1074
|
|
|
1033
1075
|
Client = SGPClient
|
|
1034
1076
|
|