runloop-api-client 0.48.1__tar.gz → 0.48.2__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-0.48.2/.release-please-manifest.json +3 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/CHANGELOG.md +8 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/PKG-INFO +3 -2
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/README.md +2 -1
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/pyproject.toml +1 -1
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_version.py +1 -1
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/devboxes/devboxes.py +31 -56
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/devboxes/executions.py +27 -43
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/scenarios/scenarios.py +0 -4
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/devboxes/test_executions.py +4 -4
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/test_devboxes.py +3 -7
- runloop_api_client-0.48.1/.release-please-manifest.json +0 -3
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/.gitignore +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/CONTRIBUTING.md +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/LICENSE +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/SECURITY.md +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/api.md +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/bin/check-release-environment +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/bin/publish-pypi +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/examples/.keep +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/mypy.ini +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/noxfile.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/release-please-config.json +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/requirements-dev.lock +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/requirements.lock +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop/lib/.keep +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_base_client.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_client.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_compat.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_constants.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_exceptions.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_files.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_models.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_qs.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_resource.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_streaming.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_types.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_logs.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_proxy.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_reflection.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_streams.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_sync.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_transform.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_typing.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_utils.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/lib/.keep +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/lib/polling.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/lib/polling_async.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/pagination.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/py.typed +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/benchmarks/benchmarks.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/blueprints.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/devboxes/lsp.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/repositories.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/secrets.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmark_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/benchmarks/run_list_scenario_runs_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/blueprint_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_create_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_list_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_list_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_update_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_code_action.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_command.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_command_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_diagnostic.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_diagnostic_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_location.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_markup_content.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_parameter_information.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_range.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_range_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_signature.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_workspace_edit.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/base_workspace_edit_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/code_action_application_result.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/code_action_context_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/code_action_kind.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/code_action_trigger_kind.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/code_actions_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/code_description_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/code_segment_info_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/diagnostic_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/diagnostic_related_information_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/diagnostic_severity.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/diagnostic_tag.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/diagnostics_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/document_symbol.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/document_symbol_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/document_uri.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/file_contents_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/file_definition_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/file_path.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/file_uri.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/formatting_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/health_status_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/integer.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/l_sp_any_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/location_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_apply_code_action_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_code_actions_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_diagnostics_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_document_symbols_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_file_definition_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_file_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_files_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_formatting_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_get_code_segment_info_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_get_signature_help_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_references_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/position.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/position_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/range.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/range_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/record_string_text_edit_array.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/record_string_text_edit_array_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/references_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/signature_help_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/symbol_kind.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/symbol_tag.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/symbol_type.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/text_edit.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/text_edit_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/u_ri.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/uinteger.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/devboxes/watched_file_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/input_context.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/input_context_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/input_context_update_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/repository_connection_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/repository_create_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/repository_list_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/repository_manifest_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenario_create_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenario_environment.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenario_list_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenario_run_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenario_update_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenario_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scoring_contract.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scoring_function.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scoring_function_param.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/secret_create_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/secret_list_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/secret_update_params.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/secret_view.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/shared/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/shared/after_idle.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/benchmarks/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/benchmarks/test_runs.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/devboxes/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/devboxes/test_browsers.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/devboxes/test_computers.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/devboxes/test_logs.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/devboxes/test_lsp.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/scenarios/__init__.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/scenarios/test_runs.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/scenarios/test_scorers.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/test_benchmarks.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/test_blueprints.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/test_repositories.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/test_scenarios.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/test_secrets.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/conftest.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/sample_file.txt +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_client.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_deepcopy.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_extract_files.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_files.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_models.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_polling.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_qs.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_required_args.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_response.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_streaming.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_transform.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_utils/test_proxy.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/test_utils/test_typing.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/utils.py +0 -0
- {runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/uv.lock +0 -0
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.48.2 (2025-07-11)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.48.1...v0.48.2](https://github.com/runloopai/api-client-python/compare/v0.48.1...v0.48.2)
|
|
6
|
+
|
|
7
|
+
### Chores
|
|
8
|
+
|
|
9
|
+
* **readme:** fix version rendering on pypi ([73af53e](https://github.com/runloopai/api-client-python/commit/73af53e19889262ac445fc0789999873c411c35a))
|
|
10
|
+
|
|
3
11
|
## 0.48.1 (2025-07-10)
|
|
4
12
|
|
|
5
13
|
Full Changelog: [v0.48.0...v0.48.1](https://github.com/runloopai/api-client-python/compare/v0.48.0...v0.48.1)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: runloop_api_client
|
|
3
|
-
Version: 0.48.
|
|
3
|
+
Version: 0.48.2
|
|
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
|
|
@@ -35,7 +35,8 @@ Description-Content-Type: text/markdown
|
|
|
35
35
|
|
|
36
36
|
# Runloop Python API library
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
<!-- prettier-ignore -->
|
|
39
|
+
[)](https://pypi.org/project/runloop_api_client/)
|
|
39
40
|
|
|
40
41
|
The Runloop Python library provides convenient access to the Runloop REST API from any Python 3.8+
|
|
41
42
|
application. The library includes type definitions for all request params and response fields,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Runloop Python API library
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<!-- prettier-ignore -->
|
|
4
|
+
[)](https://pypi.org/project/runloop_api_client/)
|
|
4
5
|
|
|
5
6
|
The Runloop Python library provides convenient access to the Runloop REST API from any Python 3.8+
|
|
6
7
|
application. The library includes type definitions for all request params and response fields,
|
|
@@ -88,7 +88,7 @@ from ...pagination import (
|
|
|
88
88
|
SyncDiskSnapshotsCursorIDPage,
|
|
89
89
|
AsyncDiskSnapshotsCursorIDPage,
|
|
90
90
|
)
|
|
91
|
-
from ..._exceptions import RunloopError, APIStatusError
|
|
91
|
+
from ..._exceptions import RunloopError, APIStatusError, APITimeoutError
|
|
92
92
|
from ...lib.polling import PollingConfig, poll_until
|
|
93
93
|
from ..._base_client import AsyncPaginator, make_request_options
|
|
94
94
|
from .disk_snapshots import (
|
|
@@ -115,6 +115,18 @@ __all__ = ["DevboxesResource", "AsyncDevboxesResource"]
|
|
|
115
115
|
DEVBOX_BOOTING_STATES = frozenset(("provisioning", "initializing"))
|
|
116
116
|
|
|
117
117
|
|
|
118
|
+
def placeholder_devbox_view(id: str) -> DevboxView:
|
|
119
|
+
return DevboxView(
|
|
120
|
+
id=id,
|
|
121
|
+
status="provisioning",
|
|
122
|
+
capabilities=[],
|
|
123
|
+
create_time_ms=0,
|
|
124
|
+
launch_parameters=SharedLaunchParameters(),
|
|
125
|
+
metadata={},
|
|
126
|
+
state_transitions=[],
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
|
|
118
130
|
class DevboxesResource(SyncAPIResource):
|
|
119
131
|
@cached_property
|
|
120
132
|
def disk_snapshots(self) -> DiskSnapshotsResource:
|
|
@@ -360,13 +372,8 @@ class DevboxesResource(SyncAPIResource):
|
|
|
360
372
|
self,
|
|
361
373
|
id: str,
|
|
362
374
|
*,
|
|
375
|
+
# Use polling_config to configure the "long" polling behavior.
|
|
363
376
|
polling_config: PollingConfig | None = None,
|
|
364
|
-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
365
|
-
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
366
|
-
extra_headers: Headers | None = None,
|
|
367
|
-
extra_query: Query | None = None,
|
|
368
|
-
extra_body: Body | None = None,
|
|
369
|
-
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
370
377
|
) -> DevboxView:
|
|
371
378
|
"""Wait for a devbox to be in running state.
|
|
372
379
|
|
|
@@ -392,28 +399,19 @@ class DevboxesResource(SyncAPIResource):
|
|
|
392
399
|
return self._post(
|
|
393
400
|
f"/v1/devboxes/{id}/wait_for_status",
|
|
394
401
|
body={"statuses": ["running", "failure"]},
|
|
395
|
-
options=make_request_options(
|
|
396
|
-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
397
|
-
),
|
|
398
402
|
cast_to=DevboxView,
|
|
399
403
|
)
|
|
400
404
|
|
|
401
405
|
def handle_timeout_error(error: Exception) -> DevboxView:
|
|
402
|
-
# Handle
|
|
403
|
-
if isinstance(error,
|
|
406
|
+
# Handle timeout errors by returning current devbox state to continue polling
|
|
407
|
+
if isinstance(error, APITimeoutError) or (
|
|
408
|
+
isinstance(error, APIStatusError) and error.response.status_code == 408
|
|
409
|
+
):
|
|
404
410
|
# Return a placeholder result to continue polling
|
|
405
|
-
return
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
create_time_ms=0,
|
|
410
|
-
launch_parameters=SharedLaunchParameters(),
|
|
411
|
-
metadata={},
|
|
412
|
-
state_transitions=[],
|
|
413
|
-
)
|
|
414
|
-
else:
|
|
415
|
-
# Re-raise other errors to stop polling
|
|
416
|
-
raise error
|
|
411
|
+
return placeholder_devbox_view(id)
|
|
412
|
+
|
|
413
|
+
# Re-raise other errors to stop polling
|
|
414
|
+
raise error
|
|
417
415
|
|
|
418
416
|
def is_done_booting(devbox: DevboxView) -> bool:
|
|
419
417
|
return devbox.status not in DEVBOX_BOOTING_STATES
|
|
@@ -495,10 +493,6 @@ class DevboxesResource(SyncAPIResource):
|
|
|
495
493
|
return self.await_running(
|
|
496
494
|
devbox.id,
|
|
497
495
|
polling_config=polling_config,
|
|
498
|
-
extra_headers=extra_headers,
|
|
499
|
-
extra_query=extra_query,
|
|
500
|
-
extra_body=extra_body,
|
|
501
|
-
timeout=timeout,
|
|
502
496
|
)
|
|
503
497
|
|
|
504
498
|
def list(
|
|
@@ -1662,23 +1656,14 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
1662
1656
|
return await self.await_running(
|
|
1663
1657
|
devbox.id,
|
|
1664
1658
|
polling_config=polling_config,
|
|
1665
|
-
extra_headers=extra_headers,
|
|
1666
|
-
extra_query=extra_query,
|
|
1667
|
-
extra_body=extra_body,
|
|
1668
|
-
timeout=timeout,
|
|
1669
1659
|
)
|
|
1670
1660
|
|
|
1671
1661
|
async def await_running(
|
|
1672
1662
|
self,
|
|
1673
1663
|
id: str,
|
|
1674
1664
|
*,
|
|
1665
|
+
# Use polling_config to configure the "long" polling behavior.
|
|
1675
1666
|
polling_config: PollingConfig | None = None,
|
|
1676
|
-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
1677
|
-
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
1678
|
-
extra_headers: Headers | None = None,
|
|
1679
|
-
extra_query: Query | None = None,
|
|
1680
|
-
extra_body: Body | None = None,
|
|
1681
|
-
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
1682
1667
|
) -> DevboxView:
|
|
1683
1668
|
"""Wait for a devbox to be in running state.
|
|
1684
1669
|
|
|
@@ -1705,26 +1690,16 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
1705
1690
|
return await self._post(
|
|
1706
1691
|
f"/v1/devboxes/{id}/wait_for_status",
|
|
1707
1692
|
body={"statuses": ["running", "failure"]},
|
|
1708
|
-
options=make_request_options(
|
|
1709
|
-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
1710
|
-
),
|
|
1711
1693
|
cast_to=DevboxView,
|
|
1712
1694
|
)
|
|
1713
|
-
except APIStatusError as error:
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
launch_parameters=SharedLaunchParameters(),
|
|
1722
|
-
metadata={},
|
|
1723
|
-
state_transitions=[],
|
|
1724
|
-
)
|
|
1725
|
-
else:
|
|
1726
|
-
# Re-raise other errors to stop polling
|
|
1727
|
-
raise
|
|
1695
|
+
except (APITimeoutError, APIStatusError) as error:
|
|
1696
|
+
# Handle timeout errors by returning current devbox state to continue polling
|
|
1697
|
+
if isinstance(error, APITimeoutError) or error.response.status_code == 408:
|
|
1698
|
+
# Return a placeholder result to continue polling
|
|
1699
|
+
return placeholder_devbox_view(id)
|
|
1700
|
+
|
|
1701
|
+
# Re-raise other errors to stop polling
|
|
1702
|
+
raise
|
|
1728
1703
|
|
|
1729
1704
|
def is_done_booting(devbox: DevboxView) -> bool:
|
|
1730
1705
|
return devbox.status not in DEVBOX_BOOTING_STATES
|
|
@@ -17,7 +17,7 @@ from ..._response import (
|
|
|
17
17
|
async_to_streamed_response_wrapper,
|
|
18
18
|
)
|
|
19
19
|
from ..._constants import DEFAULT_TIMEOUT
|
|
20
|
-
from ..._exceptions import APIStatusError
|
|
20
|
+
from ..._exceptions import APIStatusError, APITimeoutError
|
|
21
21
|
from ...lib.polling import PollingConfig, poll_until
|
|
22
22
|
from ..._base_client import make_request_options
|
|
23
23
|
from ...types.devboxes import execution_retrieve_params, execution_execute_sync_params, execution_execute_async_params
|
|
@@ -28,6 +28,16 @@ from ...types.devbox_async_execution_detail_view import DevboxAsyncExecutionDeta
|
|
|
28
28
|
__all__ = ["ExecutionsResource", "AsyncExecutionsResource"]
|
|
29
29
|
|
|
30
30
|
|
|
31
|
+
def placeholder_execution_detail_view(devbox_id: str, execution_id: str) -> DevboxAsyncExecutionDetailView:
|
|
32
|
+
return DevboxAsyncExecutionDetailView(
|
|
33
|
+
devbox_id=devbox_id,
|
|
34
|
+
execution_id=execution_id,
|
|
35
|
+
status="queued",
|
|
36
|
+
stdout="",
|
|
37
|
+
stderr="",
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
31
41
|
class ExecutionsResource(SyncAPIResource):
|
|
32
42
|
@cached_property
|
|
33
43
|
def with_raw_response(self) -> ExecutionsResourceWithRawResponse:
|
|
@@ -97,13 +107,8 @@ class ExecutionsResource(SyncAPIResource):
|
|
|
97
107
|
execution_id: str,
|
|
98
108
|
devbox_id: str,
|
|
99
109
|
*,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
103
|
-
extra_headers: Headers | None = None,
|
|
104
|
-
extra_query: Query | None = None,
|
|
105
|
-
extra_body: Body | None = None,
|
|
106
|
-
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
110
|
+
# Use polling_config to configure the "long" polling behavior.
|
|
111
|
+
polling_config: PollingConfig | None = None,
|
|
107
112
|
) -> DevboxAsyncExecutionDetailView:
|
|
108
113
|
"""Wait for an execution to complete.
|
|
109
114
|
|
|
@@ -128,23 +133,16 @@ class ExecutionsResource(SyncAPIResource):
|
|
|
128
133
|
return self._post(
|
|
129
134
|
f"/v1/devboxes/{devbox_id}/executions/{execution_id}/wait_for_status",
|
|
130
135
|
body={"statuses": ["completed"]},
|
|
131
|
-
options=make_request_options(
|
|
132
|
-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
133
|
-
),
|
|
134
136
|
cast_to=DevboxAsyncExecutionDetailView,
|
|
135
137
|
)
|
|
136
138
|
|
|
137
139
|
def handle_timeout_error(error: Exception) -> DevboxAsyncExecutionDetailView:
|
|
138
|
-
# Handle
|
|
139
|
-
if isinstance(error,
|
|
140
|
+
# Handle timeout errors by returning current execution state to continue polling
|
|
141
|
+
if isinstance(error, APITimeoutError) or (
|
|
142
|
+
isinstance(error, APIStatusError) and error.response.status_code == 408
|
|
143
|
+
):
|
|
140
144
|
# Return a placeholder result to continue polling
|
|
141
|
-
return
|
|
142
|
-
devbox_id=devbox_id,
|
|
143
|
-
execution_id=execution_id,
|
|
144
|
-
status="queued",
|
|
145
|
-
stdout="",
|
|
146
|
-
stderr="",
|
|
147
|
-
)
|
|
145
|
+
return placeholder_execution_detail_view(devbox_id, execution_id)
|
|
148
146
|
else:
|
|
149
147
|
# Re-raise other errors to stop polling
|
|
150
148
|
raise error
|
|
@@ -152,7 +150,7 @@ class ExecutionsResource(SyncAPIResource):
|
|
|
152
150
|
def is_done(execution: DevboxAsyncExecutionDetailView) -> bool:
|
|
153
151
|
return execution.status == "completed"
|
|
154
152
|
|
|
155
|
-
return poll_until(wait_for_execution_status, is_done,
|
|
153
|
+
return poll_until(wait_for_execution_status, is_done, polling_config, handle_timeout_error)
|
|
156
154
|
|
|
157
155
|
def execute_async(
|
|
158
156
|
self,
|
|
@@ -390,13 +388,8 @@ class AsyncExecutionsResource(AsyncAPIResource):
|
|
|
390
388
|
execution_id: str,
|
|
391
389
|
*,
|
|
392
390
|
devbox_id: str,
|
|
391
|
+
# Use polling_config to configure the "long" polling behavior.
|
|
393
392
|
polling_config: PollingConfig | None = None,
|
|
394
|
-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
395
|
-
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
396
|
-
extra_headers: Headers | None = None,
|
|
397
|
-
extra_query: Query | None = None,
|
|
398
|
-
extra_body: Body | None = None,
|
|
399
|
-
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
400
393
|
) -> DevboxAsyncExecutionDetailView:
|
|
401
394
|
"""Wait for an execution to complete.
|
|
402
395
|
|
|
@@ -421,24 +414,15 @@ class AsyncExecutionsResource(AsyncAPIResource):
|
|
|
421
414
|
return await self._post(
|
|
422
415
|
f"/v1/devboxes/{devbox_id}/executions/{execution_id}/wait_for_status",
|
|
423
416
|
body={"statuses": ["completed"]},
|
|
424
|
-
options=make_request_options(
|
|
425
|
-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
426
|
-
),
|
|
427
417
|
cast_to=DevboxAsyncExecutionDetailView,
|
|
428
418
|
)
|
|
429
|
-
except APIStatusError as error:
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
return
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
stdout="",
|
|
437
|
-
stderr="",
|
|
438
|
-
)
|
|
439
|
-
else:
|
|
440
|
-
# Re-raise other errors to stop polling
|
|
441
|
-
raise
|
|
419
|
+
except (APITimeoutError, APIStatusError) as error:
|
|
420
|
+
# Handle timeout errors by returning placeholder to continue polling
|
|
421
|
+
if isinstance(error, APITimeoutError) or error.response.status_code == 408:
|
|
422
|
+
return placeholder_execution_detail_view(devbox_id, execution_id)
|
|
423
|
+
|
|
424
|
+
# Re-raise other errors to stop polling
|
|
425
|
+
raise
|
|
442
426
|
|
|
443
427
|
def is_done(execution: DevboxAsyncExecutionDetailView) -> bool:
|
|
444
428
|
return execution.status == "completed"
|
|
@@ -471,10 +471,6 @@ class ScenariosResource(SyncAPIResource):
|
|
|
471
471
|
self._client.devboxes.await_running(
|
|
472
472
|
run.devbox_id,
|
|
473
473
|
polling_config=polling_config,
|
|
474
|
-
extra_headers=extra_headers,
|
|
475
|
-
extra_query=extra_query,
|
|
476
|
-
extra_body=extra_body,
|
|
477
|
-
timeout=timeout,
|
|
478
474
|
)
|
|
479
475
|
|
|
480
476
|
return run
|
|
@@ -11,7 +11,7 @@ import pytest
|
|
|
11
11
|
from tests.utils import assert_matches_type
|
|
12
12
|
from runloop_api_client import Runloop, AsyncRunloop
|
|
13
13
|
from runloop_api_client.types import DevboxExecutionDetailView, DevboxAsyncExecutionDetailView
|
|
14
|
-
from runloop_api_client._exceptions import APIStatusError
|
|
14
|
+
from runloop_api_client._exceptions import APIStatusError, APITimeoutError
|
|
15
15
|
from runloop_api_client.lib.polling import PollingConfig, PollingTimeout
|
|
16
16
|
|
|
17
17
|
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
|
|
@@ -338,7 +338,7 @@ class TestExecutions:
|
|
|
338
338
|
with patch.object(client.devboxes.executions, "_post") as mock_post:
|
|
339
339
|
mock_post.return_value = mock_execution_completed
|
|
340
340
|
|
|
341
|
-
result = client.devboxes.executions.await_completed("execution_id", "devbox_id",
|
|
341
|
+
result = client.devboxes.executions.await_completed("execution_id", "devbox_id", polling_config=config)
|
|
342
342
|
|
|
343
343
|
assert result.execution_id == "execution_id"
|
|
344
344
|
assert result.status == "completed"
|
|
@@ -361,7 +361,7 @@ class TestExecutions:
|
|
|
361
361
|
mock_post.return_value = mock_execution_running
|
|
362
362
|
|
|
363
363
|
with pytest.raises(PollingTimeout):
|
|
364
|
-
client.devboxes.executions.await_completed("execution_id", "devbox_id",
|
|
364
|
+
client.devboxes.executions.await_completed("execution_id", "devbox_id", polling_config=config)
|
|
365
365
|
|
|
366
366
|
@parametrize
|
|
367
367
|
def test_method_await_completed_various_statuses(self, client: Runloop) -> None:
|
|
@@ -665,7 +665,7 @@ class TestAsyncExecutions:
|
|
|
665
665
|
# Create a mock 408 response
|
|
666
666
|
mock_response = Mock()
|
|
667
667
|
mock_response.status_code = 408
|
|
668
|
-
mock_408_error =
|
|
668
|
+
mock_408_error = APITimeoutError(request=mock_response.request)
|
|
669
669
|
|
|
670
670
|
mock_execution_completed = DevboxAsyncExecutionDetailView(
|
|
671
671
|
devbox_id="devbox_id",
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/tests/api_resources/test_devboxes.py
RENAMED
|
@@ -4,7 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import os
|
|
6
6
|
from typing import Any, cast
|
|
7
|
-
from unittest.mock import
|
|
7
|
+
from unittest.mock import Mock, patch
|
|
8
8
|
|
|
9
9
|
import httpx
|
|
10
10
|
import pytest
|
|
@@ -1171,9 +1171,7 @@ class TestDevboxes:
|
|
|
1171
1171
|
assert result.id == "test_id"
|
|
1172
1172
|
assert result.status == "running"
|
|
1173
1173
|
mock_create.assert_called_once()
|
|
1174
|
-
mock_await.assert_called_once_with(
|
|
1175
|
-
"test_id", polling_config=None, extra_headers=None, extra_query=None, extra_body=None, timeout=ANY
|
|
1176
|
-
)
|
|
1174
|
+
mock_await.assert_called_once_with("test_id", polling_config=None)
|
|
1177
1175
|
|
|
1178
1176
|
@parametrize
|
|
1179
1177
|
def test_method_create_and_await_running_with_config(self, client: Runloop) -> None:
|
|
@@ -1210,9 +1208,7 @@ class TestDevboxes:
|
|
|
1210
1208
|
|
|
1211
1209
|
assert result.id == "test_id"
|
|
1212
1210
|
assert result.status == "running"
|
|
1213
|
-
mock_await.assert_called_once_with(
|
|
1214
|
-
"test_id", polling_config=config, extra_headers=None, extra_query=None, extra_body=None, timeout=ANY
|
|
1215
|
-
)
|
|
1211
|
+
mock_await.assert_called_once_with("test_id", polling_config=config)
|
|
1216
1212
|
|
|
1217
1213
|
@parametrize
|
|
1218
1214
|
def test_method_create_and_await_running_create_failure(self, client: Runloop) -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_base_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_constants.py
RENAMED
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_streaming.py
RENAMED
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/__init__.py
RENAMED
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_logs.py
RENAMED
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_proxy.py
RENAMED
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_reflection.py
RENAMED
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_streams.py
RENAMED
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_sync.py
RENAMED
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_transform.py
RENAMED
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_typing.py
RENAMED
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/_utils/_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/lib/polling.py
RENAMED
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/lib/polling_async.py
RENAMED
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/pagination.py
RENAMED
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/resources/secrets.py
RENAMED
|
File without changes
|
{runloop_api_client-0.48.1 → runloop_api_client-0.48.2}/src/runloop_api_client/types/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|