runloop-api-client 1.1.0__tar.gz → 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- runloop_api_client-1.2.0/.release-please-manifest.json +3 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/CHANGELOG.md +26 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/PKG-INFO +4 -2
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/README-SDK.md +19 -27
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/README.md +2 -1
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/api.md +0 -2
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/pyproject.toml +24 -43
- runloop_api_client-1.2.0/requirements-dev.lock +110 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_streaming.py +32 -32
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_version.py +1 -1
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/blueprints.py +0 -4
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/async_.py +13 -20
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/async_storage_object.py +2 -2
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/storage_object.py +2 -2
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/sync.py +13 -20
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/__init__.py +0 -2
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +3 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared/__init__.py +0 -2
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -3
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared/launch_parameters.py +1 -1
- runloop_api_client-1.2.0/src/runloop_api_client/types/shared/mount.py +78 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -2
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +1 -3
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +1 -1
- runloop_api_client-1.2.0/src/runloop_api_client/types/shared_params/mount.py +77 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/test_blueprints.py +0 -4
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/test_devboxes.py +0 -2
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_async_ops.py +1 -2
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_ops.py +0 -1
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/uv.lock +671 -436
- runloop_api_client-1.1.0/.release-please-manifest.json +0 -3
- runloop_api_client-1.1.0/requirements-dev.lock +0 -94
- runloop_api_client-1.1.0/src/runloop_api_client/types/shared/agent_mount_parameters.py +0 -31
- runloop_api_client-1.1.0/src/runloop_api_client/types/shared/mount.py +0 -28
- runloop_api_client-1.1.0/src/runloop_api_client/types/shared/object_mount_parameters.py +0 -21
- runloop_api_client-1.1.0/src/runloop_api_client/types/shared_params/agent_mount_parameters.py +0 -31
- runloop_api_client-1.1.0/src/runloop_api_client/types/shared_params/mount.py +0 -25
- runloop_api_client-1.1.0/src/runloop_api_client/types/shared_params/object_mount_parameters.py +0 -21
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/.gitignore +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/CONTRIBUTING.md +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/LICENSE +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/SECURITY.md +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/bin/check-release-environment +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/bin/publish-pypi +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/examples/.keep +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/release-please-config.json +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop/lib/.keep +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_base_client.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_client.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_compat.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_constants.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_exceptions.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_files.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_models.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_qs.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_resource.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_response.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_types.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_compat.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_datetime_parse.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_logs.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_streams.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_sync.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_transform.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_typing.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_utils.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/_utils/_validation.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/lib/.keep +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/lib/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/lib/_ignore.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/lib/context_loader.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/lib/polling.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/lib/polling_async.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/pagination.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/py.typed +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/agents.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/devboxes/devboxes.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/objects.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/repositories.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/scenarios/scenarios.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/secrets.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/_helpers.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/_types.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/agent.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/async_agent.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/async_blueprint.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/async_devbox.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/async_execution.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/async_execution_result.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/async_scenario.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/async_scenario_run.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/async_scorer.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/async_snapshot.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/blueprint.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/devbox.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/execution.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/execution_result.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/scenario.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/scenario_run.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/scorer.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/sdk/snapshot.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/agent_create_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/agent_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/agent_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/agent_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/benchmarks/run_list_scenario_runs_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/blueprint_create_from_inspection_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/blueprint_list_public_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_execute_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_send_std_in_result.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_wait_for_command_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/execution_kill_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/execution_send_std_in_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/execution_stream_stderr_updates_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/execution_stream_stdout_updates_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/execution_update_chunk.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/input_context.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/input_context_param.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/input_context_update_param.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/inspection_source_param.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/object_create_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/object_download_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/object_download_url_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/object_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/object_list_public_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/object_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/object_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/repository_inspect_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/repository_manifest_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenario_update_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenario_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scoring_function.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/secret_list_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/secret_list_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/secret_view.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared/agent_source.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared/run_profile.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared_params/agent_source.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/types/shared_params/run_profile.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/benchmarks/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/benchmarks/test_runs.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/devboxes/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/devboxes/test_computers.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/devboxes/test_executions.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/devboxes/test_logs.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/scenarios/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/scenarios/test_runs.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/scenarios/test_scorers.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/test_agents.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/test_benchmarks.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/test_objects.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/test_repositories.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/test_scenarios.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/api_resources/test_secrets.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/conftest.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sample_file.txt +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/async_devbox/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/async_devbox/conftest.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/async_devbox/test_core.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/async_devbox/test_edge_cases.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/async_devbox/test_interfaces.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/async_devbox/test_streaming.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/conftest.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/devbox/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/devbox/conftest.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/devbox/test_core.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/devbox/test_edge_cases.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/devbox/test_interfaces.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/devbox/test_streaming.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_agent.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_async_agent.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_async_blueprint.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_async_execution.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_async_execution_result.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_async_scenario.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_async_scenario_run.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_async_scorer.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_async_snapshot.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_async_storage_object.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_blueprint.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_execution.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_execution_result.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_helpers.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_scenario.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_scenario_run.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_scorer.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_snapshot.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/sdk/test_storage_object.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/README.md +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/conftest.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/README.md +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/__init__.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/conftest.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_agent.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_async_agent.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_async_blueprint.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_async_devbox.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_async_scenario.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_async_scorer.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_async_sdk.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_async_snapshot.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_async_storage_object.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_blueprint.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_devbox.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_scenario.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_scorer.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_sdk.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_snapshot.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/sdk/test_storage_object.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/test_blueprints.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/test_devboxes.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/test_executions.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/test_scenarios_benchmarks.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/test_snapshots.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/smoketests/utils.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_client.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_deepcopy.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_extract_files.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_files.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_models.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_polling.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_qs.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_required_args.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_response.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_streaming.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_transform.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_utils/test_context_loader.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_utils/test_proxy.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/test_utils/test_typing.py +0 -0
- {runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.2.0 (2025-12-09)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v1.1.0...v1.2.0](https://github.com/runloopai/api-client-python/compare/v1.1.0...v1.2.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **devbox:** default to x86 arch ([501de0b](https://github.com/runloopai/api-client-python/commit/501de0bb1d76c836ff9f448513a16155641345ae))
|
|
10
|
+
* **devbox:** return user for createSshKey ([f094bf7](https://github.com/runloopai/api-client-python/commit/f094bf7443a0ca5bab6d47a53b7b14bade3cecd0))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* ensure streams are always closed ([d01aae2](https://github.com/runloopai/api-client-python/commit/d01aae204d8c57ac76646df0e0e1078e64ad9891))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Chores
|
|
19
|
+
|
|
20
|
+
* bump required `uv` version ([8ad519f](https://github.com/runloopai/api-client-python/commit/8ad519fd26d389628d157a413a0b0f1f5d435e9e))
|
|
21
|
+
* **deps:** mypy 1.18.1 has a regression, pin to 1.17 ([e56582a](https://github.com/runloopai/api-client-python/commit/e56582a93590445d8e545b6123be0f14db39a8f5))
|
|
22
|
+
* **docs:** use environment variables for authentication in code snippets ([55cf613](https://github.com/runloopai/api-client-python/commit/55cf6131edb8d38144761c5dbbbcf9389093ed7b))
|
|
23
|
+
* **internal:** version bump ([2fa85c6](https://github.com/runloopai/api-client-python/commit/2fa85c6694dc468280eedb28136aadcda4f11801))
|
|
24
|
+
* remove some unnecessary changes to reduce diff from Stainless ([#705](https://github.com/runloopai/api-client-python/issues/705)) ([715c9d0](https://github.com/runloopai/api-client-python/commit/715c9d09f4e874032ee1d4d6c81d80ab6a72ec45))
|
|
25
|
+
* update lockfile ([7e0136d](https://github.com/runloopai/api-client-python/commit/7e0136dfcd62a2843138ae382bd6fedfd881e1b3))
|
|
26
|
+
* update requirements-dev.lock ([#707](https://github.com/runloopai/api-client-python/issues/707)) ([a2d5326](https://github.com/runloopai/api-client-python/commit/a2d5326634cad5afe6c74252d26b01916ed41bcb))
|
|
27
|
+
* update uv.lock ([b9e0729](https://github.com/runloopai/api-client-python/commit/b9e07291745291d16f122dbca5ef513ed134c5dd))
|
|
28
|
+
|
|
3
29
|
## 1.1.0 (2025-12-06)
|
|
4
30
|
|
|
5
31
|
Full Changelog: [v1.0.0...v1.1.0](https://github.com/runloopai/api-client-python/compare/v1.0.0...v1.1.0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: runloop_api_client
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: The official Python library for the runloop API
|
|
5
5
|
Project-URL: Homepage, https://github.com/runloopai/api-client-python
|
|
6
6
|
Project-URL: Repository, https://github.com/runloopai/api-client-python
|
|
@@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
22
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
23
|
Classifier: Typing :: Typed
|
|
23
24
|
Requires-Python: >=3.9
|
|
@@ -137,6 +138,7 @@ pip install runloop_api_client[aiohttp]
|
|
|
137
138
|
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
|
|
138
139
|
|
|
139
140
|
```python
|
|
141
|
+
import os
|
|
140
142
|
import asyncio
|
|
141
143
|
from runloop_api_client import DefaultAioHttpClient
|
|
142
144
|
from runloop_api_client import AsyncRunloop
|
|
@@ -144,7 +146,7 @@ from runloop_api_client import AsyncRunloop
|
|
|
144
146
|
|
|
145
147
|
async def main() -> None:
|
|
146
148
|
async with AsyncRunloop(
|
|
147
|
-
bearer_token="
|
|
149
|
+
bearer_token=os.environ.get("RUNLOOP_API_KEY"), # This is the default and can be omitted
|
|
148
150
|
http_client=DefaultAioHttpClient(),
|
|
149
151
|
) as client:
|
|
150
152
|
devbox_view = await client.devboxes.create()
|
|
@@ -77,6 +77,7 @@ print(obj.download_as_text())
|
|
|
77
77
|
import asyncio
|
|
78
78
|
from runloop_api_client import AsyncRunloopSDK
|
|
79
79
|
|
|
80
|
+
|
|
80
81
|
async def main():
|
|
81
82
|
runloop = AsyncRunloopSDK()
|
|
82
83
|
async with await runloop.devbox.create(name="async-devbox") as devbox:
|
|
@@ -88,6 +89,7 @@ async def main():
|
|
|
88
89
|
|
|
89
90
|
await devbox.cmd.exec("ls", stdout=capture)
|
|
90
91
|
|
|
92
|
+
|
|
91
93
|
asyncio.run(main())
|
|
92
94
|
```
|
|
93
95
|
|
|
@@ -194,7 +196,7 @@ print("Devbox ID:", execution.devbox_id)
|
|
|
194
196
|
# Poll for current state
|
|
195
197
|
state = execution.get_state()
|
|
196
198
|
print("Status:", state.status) # "running", "completed", etc.
|
|
197
|
-
print("Exit code:", state.exit_status)
|
|
199
|
+
print("Exit code:", state.exit_status) # only set when execution has completed
|
|
198
200
|
|
|
199
201
|
# Wait for completion and get results
|
|
200
202
|
result = execution.result()
|
|
@@ -229,7 +231,7 @@ result = execution.result()
|
|
|
229
231
|
# Access execution results
|
|
230
232
|
print("Exit code:", result.exit_code)
|
|
231
233
|
print("Success:", result.success) # True if exit code is 0
|
|
232
|
-
print("Failed:", result.failed)
|
|
234
|
+
print("Failed:", result.failed) # True if exit code is non-zero
|
|
233
235
|
|
|
234
236
|
# Get output streams
|
|
235
237
|
stdout = result.stdout()
|
|
@@ -261,6 +263,7 @@ Pass callbacks into `cmd.exec` / `cmd.exec_async` to process logs in real time:
|
|
|
261
263
|
def handle_output(line: str) -> None:
|
|
262
264
|
print("LOG:", line)
|
|
263
265
|
|
|
266
|
+
|
|
264
267
|
result = devbox.cmd.exec(
|
|
265
268
|
"python train.py",
|
|
266
269
|
stdout=handle_output,
|
|
@@ -278,6 +281,7 @@ def capture(line: str) -> None:
|
|
|
278
281
|
# Use thread-safe data structures if needed
|
|
279
282
|
log_queue.put_nowait(line)
|
|
280
283
|
|
|
284
|
+
|
|
281
285
|
await devbox.cmd.exec(
|
|
282
286
|
"tail -f /var/log/app.log",
|
|
283
287
|
stdout=capture,
|
|
@@ -299,6 +303,7 @@ print(content)
|
|
|
299
303
|
|
|
300
304
|
# Upload files
|
|
301
305
|
from pathlib import Path
|
|
306
|
+
|
|
302
307
|
devbox.file.upload(
|
|
303
308
|
path="/home/user/upload.txt",
|
|
304
309
|
file=Path("local_file.txt"),
|
|
@@ -434,15 +439,6 @@ build_ctx_obj = runloop.storage_object.upload_from_bytes(
|
|
|
434
439
|
content_type="tgz",
|
|
435
440
|
)
|
|
436
441
|
|
|
437
|
-
shared_root = Path("./shared-lib")
|
|
438
|
-
shared_tar = build_docker_context_tar(shared_root)
|
|
439
|
-
|
|
440
|
-
shared_ctx_obj = runloop.storage_object.upload_from_bytes(
|
|
441
|
-
data=shared_tar,
|
|
442
|
-
name="shared-lib-context.tar.gz",
|
|
443
|
-
content_type="tgz",
|
|
444
|
-
)
|
|
445
|
-
|
|
446
442
|
blueprint_with_context = runloop.blueprint.create(
|
|
447
443
|
name="my-blueprint-with-context",
|
|
448
444
|
dockerfile="""\
|
|
@@ -453,18 +449,11 @@ WORKDIR /usr/src/app
|
|
|
453
449
|
COPY package.json package.json
|
|
454
450
|
COPY src src
|
|
455
451
|
|
|
456
|
-
# copy from named context
|
|
457
|
-
COPY --from=shared / ./libs
|
|
458
|
-
|
|
459
452
|
RUN npm install --only=production
|
|
460
453
|
CMD ["node", "src/app.js"]
|
|
461
454
|
""",
|
|
462
|
-
#
|
|
455
|
+
# Build context
|
|
463
456
|
build_context=build_ctx_obj.as_build_context(),
|
|
464
|
-
# Additional named build contexts (for Docker buildx-style usage)
|
|
465
|
-
named_build_contexts={
|
|
466
|
-
"shared": shared_ctx_obj.as_build_context(),
|
|
467
|
-
},
|
|
468
457
|
)
|
|
469
458
|
|
|
470
459
|
# Or get an existing one
|
|
@@ -551,6 +540,7 @@ storage_object.complete()
|
|
|
551
540
|
|
|
552
541
|
# Upload from file
|
|
553
542
|
from pathlib import Path
|
|
543
|
+
|
|
554
544
|
uploaded = runloop.storage_object.upload_from_file(
|
|
555
545
|
Path("/path/to/file.txt"),
|
|
556
546
|
name="my-file.txt",
|
|
@@ -600,7 +590,7 @@ obj = runloop.storage_object.create(
|
|
|
600
590
|
name="data.bin",
|
|
601
591
|
content_type="binary",
|
|
602
592
|
)
|
|
603
|
-
obj.upload_content(b"\
|
|
593
|
+
obj.upload_content(b"\xde\xad\xbe\xef")
|
|
604
594
|
obj.complete()
|
|
605
595
|
```
|
|
606
596
|
|
|
@@ -747,28 +737,30 @@ The async SDK has the same interface as the synchronous version, but all I/O ope
|
|
|
747
737
|
import asyncio
|
|
748
738
|
from runloop_api_client import AsyncRunloopSDK
|
|
749
739
|
|
|
740
|
+
|
|
750
741
|
async def main():
|
|
751
742
|
runloop = AsyncRunloopSDK()
|
|
752
|
-
|
|
743
|
+
|
|
753
744
|
# All the same operations, but with await
|
|
754
745
|
async with await runloop.devbox.create(name="async-devbox") as devbox:
|
|
755
746
|
result = await devbox.cmd.exec("pwd")
|
|
756
747
|
print(await result.stdout())
|
|
757
|
-
|
|
748
|
+
|
|
758
749
|
# Streaming (note: callbacks must be synchronous)
|
|
759
750
|
def capture(line: str) -> None:
|
|
760
751
|
print(">>", line)
|
|
761
|
-
|
|
752
|
+
|
|
762
753
|
await devbox.cmd.exec("ls", stdout=capture)
|
|
763
|
-
|
|
754
|
+
|
|
764
755
|
# Async file operations
|
|
765
756
|
await devbox.file.write(path="/tmp/test.txt", contents="Hello")
|
|
766
757
|
content = await devbox.file.read(path="/tmp/test.txt")
|
|
767
|
-
|
|
758
|
+
|
|
768
759
|
# Async network operations
|
|
769
760
|
tunnel = await devbox.net.create_tunnel(port=8080)
|
|
770
761
|
print("Tunnel URL:", tunnel.url)
|
|
771
762
|
|
|
763
|
+
|
|
772
764
|
asyncio.run(main())
|
|
773
765
|
```
|
|
774
766
|
|
|
@@ -784,7 +776,7 @@ devbox = runloop.devbox.create(
|
|
|
784
776
|
name="my-devbox",
|
|
785
777
|
polling_config=PollingConfig(
|
|
786
778
|
timeout_seconds=300.0, # Wait up to 5 minutes
|
|
787
|
-
interval_seconds=2.0,
|
|
779
|
+
interval_seconds=2.0, # Poll every 2 seconds
|
|
788
780
|
),
|
|
789
781
|
)
|
|
790
782
|
|
|
@@ -792,7 +784,7 @@ devbox = runloop.devbox.create(
|
|
|
792
784
|
snapshot.await_completed(
|
|
793
785
|
polling_config=PollingConfig(
|
|
794
786
|
timeout_seconds=600.0, # Wait up to 10 minutes
|
|
795
|
-
interval_seconds=5.0,
|
|
787
|
+
interval_seconds=5.0, # Poll every 5 seconds
|
|
796
788
|
),
|
|
797
789
|
)
|
|
798
790
|
```
|
|
@@ -102,6 +102,7 @@ pip install runloop_api_client[aiohttp]
|
|
|
102
102
|
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
|
|
103
103
|
|
|
104
104
|
```python
|
|
105
|
+
import os
|
|
105
106
|
import asyncio
|
|
106
107
|
from runloop_api_client import DefaultAioHttpClient
|
|
107
108
|
from runloop_api_client import AsyncRunloop
|
|
@@ -109,7 +110,7 @@ from runloop_api_client import AsyncRunloop
|
|
|
109
110
|
|
|
110
111
|
async def main() -> None:
|
|
111
112
|
async with AsyncRunloop(
|
|
112
|
-
bearer_token="
|
|
113
|
+
bearer_token=os.environ.get("RUNLOOP_API_KEY"), # This is the default and can be omitted
|
|
113
114
|
http_client=DefaultAioHttpClient(),
|
|
114
115
|
) as client:
|
|
115
116
|
devbox_view = await client.devboxes.create()
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "runloop_api_client"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.2.0"
|
|
4
4
|
description = "The official Python library for the runloop API"
|
|
5
5
|
dynamic = ["readme"]
|
|
6
6
|
license = "MIT"
|
|
7
7
|
authors = [
|
|
8
8
|
{ name = "Runloop", email = "support@runloop.ai" },
|
|
9
9
|
]
|
|
10
|
+
|
|
10
11
|
dependencies = [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
"httpx>=0.23.0, <1",
|
|
13
|
+
"pydantic>=1.9.0, <3",
|
|
14
|
+
"typing-extensions>=4.10, <5",
|
|
15
|
+
"anyio>=3.5.0, <5",
|
|
16
|
+
"distro>=1.7.0, <2",
|
|
17
|
+
"sniffio",
|
|
17
18
|
"uuid-utils>=0.11.0",
|
|
18
19
|
]
|
|
19
20
|
|
|
@@ -26,6 +27,7 @@ classifiers = [
|
|
|
26
27
|
"Programming Language :: Python :: 3.11",
|
|
27
28
|
"Programming Language :: Python :: 3.12",
|
|
28
29
|
"Programming Language :: Python :: 3.13",
|
|
30
|
+
"Programming Language :: Python :: 3.14",
|
|
29
31
|
"Operating System :: OS Independent",
|
|
30
32
|
"Operating System :: POSIX",
|
|
31
33
|
"Operating System :: MacOS",
|
|
@@ -44,13 +46,19 @@ aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"]
|
|
|
44
46
|
|
|
45
47
|
[tool.uv]
|
|
46
48
|
managed = true
|
|
47
|
-
required-version = ">=0.
|
|
49
|
+
required-version = ">=0.9"
|
|
50
|
+
conflicts = [
|
|
51
|
+
[
|
|
52
|
+
{ group = "pydantic-v1" },
|
|
53
|
+
{ group = "pydantic-v2" },
|
|
54
|
+
],
|
|
55
|
+
]
|
|
48
56
|
|
|
49
57
|
[dependency-groups]
|
|
50
58
|
# version pins are in uv.lock
|
|
51
59
|
dev = [
|
|
52
60
|
"pyright==1.1.399",
|
|
53
|
-
"mypy",
|
|
61
|
+
"mypy==1.17",
|
|
54
62
|
"respx",
|
|
55
63
|
"pytest",
|
|
56
64
|
"pytest-asyncio",
|
|
@@ -64,51 +72,24 @@ dev = [
|
|
|
64
72
|
"uuid-utils>=0.11.0",
|
|
65
73
|
"pytest-cov>=7.0.0",
|
|
66
74
|
]
|
|
75
|
+
pydantic-v1 = [
|
|
76
|
+
"pydantic>=1.9.0,<2",
|
|
77
|
+
]
|
|
78
|
+
pydantic-v2 = [
|
|
79
|
+
"pydantic~=2.0 ; python_full_version < '3.14'",
|
|
80
|
+
"pydantic~=2.12 ; python_full_version >= '3.14'",
|
|
81
|
+
]
|
|
67
82
|
docs = [
|
|
68
83
|
"furo>=2025.9.25",
|
|
69
84
|
"sphinx>=7.4.7",
|
|
70
85
|
"sphinx-autodoc-typehints>=2.3.0",
|
|
71
86
|
"sphinx-toolbox>=4.0.0",
|
|
72
87
|
]
|
|
73
|
-
pydantic-v1 = [
|
|
74
|
-
"pydantic>=1.9.0, <2",
|
|
75
|
-
]
|
|
76
|
-
|
|
77
|
-
[tool.rye.scripts]
|
|
78
|
-
format = { chain = [
|
|
79
|
-
"format:ruff",
|
|
80
|
-
"format:docs",
|
|
81
|
-
"fix:ruff",
|
|
82
|
-
# run formatting again to fix any inconsistencies when imports are stripped
|
|
83
|
-
"format:ruff",
|
|
84
|
-
]}
|
|
85
|
-
"format:docs" = "python scripts/utils/ruffen-docs.py README.md api.md"
|
|
86
|
-
"format:ruff" = "ruff format"
|
|
87
|
-
|
|
88
|
-
"lint" = { chain = [
|
|
89
|
-
"check:ruff",
|
|
90
|
-
"typecheck",
|
|
91
|
-
"check:importable",
|
|
92
|
-
]}
|
|
93
|
-
"check:ruff" = "ruff check ."
|
|
94
|
-
"fix:ruff" = "ruff check --fix ."
|
|
95
|
-
|
|
96
|
-
"check:importable" = "python -c 'import runloop_api_client'"
|
|
97
|
-
|
|
98
|
-
typecheck = { chain = [
|
|
99
|
-
"typecheck:pyright",
|
|
100
|
-
"typecheck:mypy"
|
|
101
|
-
]}
|
|
102
|
-
|
|
103
|
-
"typecheck:pyright" = "pyright"
|
|
104
|
-
"typecheck:verify-types" = "pyright --verifytypes runloop_api_client --ignoreexternal"
|
|
105
|
-
"typecheck:mypy" = "mypy ."
|
|
106
88
|
|
|
107
89
|
[build-system]
|
|
108
90
|
requires = ["hatchling==1.26.3", "hatch-fancy-pypi-readme"]
|
|
109
91
|
build-backend = "hatchling.build"
|
|
110
92
|
|
|
111
|
-
|
|
112
93
|
[tool.hatch.build]
|
|
113
94
|
include = [
|
|
114
95
|
"src/*"
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# This file was autogenerated by uv via the following command:
|
|
2
|
+
# uv export -o requirements-dev.lock --no-hashes
|
|
3
|
+
-e .
|
|
4
|
+
annotated-types==0.7.0
|
|
5
|
+
# via pydantic
|
|
6
|
+
anyio==4.12.0
|
|
7
|
+
# via
|
|
8
|
+
# httpx
|
|
9
|
+
# runloop-api-client
|
|
10
|
+
backports-asyncio-runner==1.2.0 ; python_full_version < '3.11'
|
|
11
|
+
# via pytest-asyncio
|
|
12
|
+
certifi==2025.11.12
|
|
13
|
+
# via
|
|
14
|
+
# httpcore
|
|
15
|
+
# httpx
|
|
16
|
+
colorama==0.4.6 ; sys_platform == 'win32'
|
|
17
|
+
# via pytest
|
|
18
|
+
dirty-equals==0.11
|
|
19
|
+
distro==1.9.0
|
|
20
|
+
# via runloop-api-client
|
|
21
|
+
exceptiongroup==1.3.1 ; python_full_version < '3.11'
|
|
22
|
+
# via
|
|
23
|
+
# anyio
|
|
24
|
+
# pytest
|
|
25
|
+
execnet==2.1.2
|
|
26
|
+
# via pytest-xdist
|
|
27
|
+
h11==0.16.0
|
|
28
|
+
# via httpcore
|
|
29
|
+
httpcore==1.0.9
|
|
30
|
+
# via httpx
|
|
31
|
+
httpx==0.28.1
|
|
32
|
+
# via
|
|
33
|
+
# respx
|
|
34
|
+
# runloop-api-client
|
|
35
|
+
idna==3.11
|
|
36
|
+
# via
|
|
37
|
+
# anyio
|
|
38
|
+
# httpx
|
|
39
|
+
importlib-metadata==8.7.0
|
|
40
|
+
iniconfig==2.1.0 ; python_full_version < '3.10'
|
|
41
|
+
# via pytest
|
|
42
|
+
iniconfig==2.3.0 ; python_full_version >= '3.10'
|
|
43
|
+
# via pytest
|
|
44
|
+
markdown-it-py==3.0.0 ; python_full_version < '3.10'
|
|
45
|
+
# via rich
|
|
46
|
+
markdown-it-py==4.0.0 ; python_full_version >= '3.10'
|
|
47
|
+
# via rich
|
|
48
|
+
mdurl==0.1.2
|
|
49
|
+
# via markdown-it-py
|
|
50
|
+
mypy==1.17.0
|
|
51
|
+
mypy-extensions==1.1.0
|
|
52
|
+
# via mypy
|
|
53
|
+
nodeenv==1.9.1
|
|
54
|
+
# via pyright
|
|
55
|
+
packaging==25.0
|
|
56
|
+
# via pytest
|
|
57
|
+
pathspec==0.12.1
|
|
58
|
+
# via mypy
|
|
59
|
+
pluggy==1.6.0
|
|
60
|
+
# via pytest
|
|
61
|
+
pydantic==2.12.5
|
|
62
|
+
# via runloop-api-client
|
|
63
|
+
pydantic-core==2.41.5
|
|
64
|
+
# via pydantic
|
|
65
|
+
pygments==2.19.2
|
|
66
|
+
# via
|
|
67
|
+
# pytest
|
|
68
|
+
# rich
|
|
69
|
+
pyright==1.1.399
|
|
70
|
+
pytest==8.4.2 ; python_full_version < '3.10'
|
|
71
|
+
# via
|
|
72
|
+
# pytest-asyncio
|
|
73
|
+
# pytest-xdist
|
|
74
|
+
pytest==9.0.1 ; python_full_version >= '3.10'
|
|
75
|
+
# via
|
|
76
|
+
# pytest-asyncio
|
|
77
|
+
# pytest-xdist
|
|
78
|
+
pytest-asyncio==1.2.0 ; python_full_version < '3.10'
|
|
79
|
+
pytest-asyncio==1.3.0 ; python_full_version >= '3.10'
|
|
80
|
+
pytest-xdist==3.8.0
|
|
81
|
+
python-dateutil==2.9.0.post0 ; python_full_version < '3.10'
|
|
82
|
+
# via time-machine
|
|
83
|
+
respx==0.22.0
|
|
84
|
+
rich==14.2.0
|
|
85
|
+
ruff==0.14.7
|
|
86
|
+
six==1.17.0 ; python_full_version < '3.10'
|
|
87
|
+
# via python-dateutil
|
|
88
|
+
sniffio==1.3.1
|
|
89
|
+
# via runloop-api-client
|
|
90
|
+
time-machine==2.19.0 ; python_full_version < '3.10'
|
|
91
|
+
time-machine==3.1.0 ; python_full_version >= '3.10'
|
|
92
|
+
tomli==2.3.0 ; python_full_version < '3.11'
|
|
93
|
+
# via
|
|
94
|
+
# mypy
|
|
95
|
+
# pytest
|
|
96
|
+
typing-extensions==4.15.0
|
|
97
|
+
# via
|
|
98
|
+
# anyio
|
|
99
|
+
# exceptiongroup
|
|
100
|
+
# mypy
|
|
101
|
+
# pydantic
|
|
102
|
+
# pydantic-core
|
|
103
|
+
# pyright
|
|
104
|
+
# pytest-asyncio
|
|
105
|
+
# runloop-api-client
|
|
106
|
+
# typing-inspection
|
|
107
|
+
typing-inspection==0.4.2
|
|
108
|
+
# via pydantic
|
|
109
|
+
zipp==3.23.0
|
|
110
|
+
# via importlib-metadata
|
|
@@ -73,22 +73,22 @@ class Stream(Generic[_T]):
|
|
|
73
73
|
process_data = self._client._process_response_data
|
|
74
74
|
iterator = self._iter_events()
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
76
|
+
try:
|
|
77
|
+
for sse in iterator:
|
|
78
|
+
# Surface server-sent error events as API errors to allow callers to handle/retry
|
|
79
|
+
if sse.event == "error":
|
|
80
|
+
try:
|
|
81
|
+
error_obj = json.loads(sse.data)
|
|
82
|
+
status_code = int(error_obj.get("code", 500))
|
|
83
|
+
fake_resp = httpx.Response(status_code, request=response.request, content=sse.data)
|
|
84
|
+
except Exception:
|
|
85
|
+
fake_resp = httpx.Response(500, request=response.request, content=sse.data)
|
|
86
|
+
raise self._client._make_status_error_from_response(fake_resp)
|
|
87
|
+
|
|
88
|
+
yield process_data(data=sse.json(), cast_to=cast_to, response=response)
|
|
89
|
+
finally:
|
|
90
|
+
# Ensure the response is closed even if the consumer doesn't read all data
|
|
91
|
+
response.close()
|
|
92
92
|
|
|
93
93
|
def __enter__(self) -> Self:
|
|
94
94
|
return self
|
|
@@ -147,22 +147,22 @@ class AsyncStream(Generic[_T]):
|
|
|
147
147
|
process_data = self._client._process_response_data
|
|
148
148
|
iterator = self._iter_events()
|
|
149
149
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
150
|
+
try:
|
|
151
|
+
async for sse in iterator:
|
|
152
|
+
# Surface server-sent error events as API errors to allow callers to handle/retry
|
|
153
|
+
if sse.event == "error":
|
|
154
|
+
try:
|
|
155
|
+
error_obj = json.loads(sse.data)
|
|
156
|
+
status_code = int(error_obj.get("code", 500))
|
|
157
|
+
fake_resp = httpx.Response(status_code, request=response.request, content=sse.data)
|
|
158
|
+
except Exception:
|
|
159
|
+
fake_resp = httpx.Response(500, request=response.request, content=sse.data)
|
|
160
|
+
raise self._client._make_status_error_from_response(fake_resp)
|
|
161
|
+
|
|
162
|
+
yield process_data(data=sse.json(), cast_to=cast_to, response=response)
|
|
163
|
+
finally:
|
|
164
|
+
# Ensure the response is closed even if the consumer doesn't read all data
|
|
165
|
+
await response.aclose()
|
|
166
166
|
|
|
167
167
|
async def __aenter__(self) -> Self:
|
|
168
168
|
return self
|
{runloop_api_client-1.1.0 → runloop_api_client-1.2.0}/src/runloop_api_client/resources/blueprints.py
RENAMED
|
@@ -325,7 +325,6 @@ class BlueprintsResource(SyncAPIResource):
|
|
|
325
325
|
file_mounts: Optional[Dict[str, str]] | Omit = omit,
|
|
326
326
|
launch_parameters: Optional[LaunchParameters] | Omit = omit,
|
|
327
327
|
metadata: Optional[Dict[str, str]] | Omit = omit,
|
|
328
|
-
named_build_contexts: Optional[Dict[str, blueprint_create_params.NamedBuildContexts]] | Omit = omit,
|
|
329
328
|
secrets: Optional[Dict[str, str]] | Omit = omit,
|
|
330
329
|
services: Optional[Iterable[blueprint_create_params.Service]] | Omit = omit,
|
|
331
330
|
system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit,
|
|
@@ -365,7 +364,6 @@ class BlueprintsResource(SyncAPIResource):
|
|
|
365
364
|
file_mounts=file_mounts,
|
|
366
365
|
launch_parameters=launch_parameters,
|
|
367
366
|
metadata=metadata,
|
|
368
|
-
named_build_contexts=named_build_contexts,
|
|
369
367
|
secrets=secrets,
|
|
370
368
|
services=services,
|
|
371
369
|
system_setup_commands=system_setup_commands,
|
|
@@ -966,7 +964,6 @@ class AsyncBlueprintsResource(AsyncAPIResource):
|
|
|
966
964
|
file_mounts: Optional[Dict[str, str]] | Omit = omit,
|
|
967
965
|
launch_parameters: Optional[LaunchParameters] | Omit = omit,
|
|
968
966
|
metadata: Optional[Dict[str, str]] | Omit = omit,
|
|
969
|
-
named_build_contexts: Optional[Dict[str, blueprint_create_params.NamedBuildContexts]] | Omit = omit,
|
|
970
967
|
secrets: Optional[Dict[str, str]] | Omit = omit,
|
|
971
968
|
services: Optional[Iterable[blueprint_create_params.Service]] | Omit = omit,
|
|
972
969
|
system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit,
|
|
@@ -1006,7 +1003,6 @@ class AsyncBlueprintsResource(AsyncAPIResource):
|
|
|
1006
1003
|
file_mounts=file_mounts,
|
|
1007
1004
|
launch_parameters=launch_parameters,
|
|
1008
1005
|
metadata=metadata,
|
|
1009
|
-
named_build_contexts=named_build_contexts,
|
|
1010
1006
|
secrets=secrets,
|
|
1011
1007
|
services=services,
|
|
1012
1008
|
system_setup_commands=system_setup_commands,
|