runloop-api-client 0.2.2__tar.gz → 0.4.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-0.4.0/.release-please-manifest.json +3 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/CHANGELOG.md +31 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/PKG-INFO +1 -1
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/api.md +1 -1
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/pyproject.toml +3 -7
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/requirements-dev.lock +1 -1
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_base_client.py +1 -1
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_version.py +1 -1
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/devboxes/devboxes.py +6 -7
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -1
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -1
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -1
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_snapshot_view.py +3 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_view.py +3 -1
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/test_devboxes.py +9 -8
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_client.py +19 -2
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_models.py +1 -1
- runloop_api_client-0.2.2/.release-please-manifest.json +0 -3
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/.gitignore +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/CONTRIBUTING.md +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/LICENSE +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/README.md +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/SECURITY.md +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/bin/check-release-environment +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/bin/publish-pypi +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/examples/.keep +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/mypy.ini +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/noxfile.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/release-please-config.json +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/requirements.lock +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop/lib/.keep +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_client.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_compat.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_constants.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_exceptions.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_files.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_models.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_qs.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_resource.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_response.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_streaming.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_types.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_logs.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_streams.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_sync.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_transform.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_typing.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_utils.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/lib/.keep +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/py.typed +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/blueprints.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/functions/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/functions/functions.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/functions/invocations.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/projects/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/projects/logs.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/projects/projects.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/code_mount_parameters.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/code_mount_parameters_param.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_disk_snapshots_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_disk_snapshots_response.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_write_file_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/function_invoke_async_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/function_invoke_sync_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/function_list_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/functions/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/functions/function_invocation_list_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/functions/invocation_list_params.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/project_list_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/projects/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/resource_size.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/shared/function_invocation_execution_detail_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/shared/project_logs_view.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/shared/resource_size.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/devboxes/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/devboxes/test_executions.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/devboxes/test_logs.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/functions/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/functions/test_invocations.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/projects/__init__.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/projects/test_logs.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/test_blueprints.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/test_functions.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/test_projects.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/conftest.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/sample_file.txt +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_deepcopy.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_extract_files.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_files.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_qs.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_required_args.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_response.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_streaming.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_transform.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_utils/test_proxy.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/test_utils/test_typing.py +0 -0
- {runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.0 (2024-10-22)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.3.0...v0.4.0](https://github.com/runloopai/api-client-python/compare/v0.3.0...v0.4.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** api update ([#206](https://github.com/runloopai/api-client-python/issues/206)) ([1018bb4](https://github.com/runloopai/api-client-python/commit/1018bb4e9416e4d88ba82f435b61c8aba3f1235a))
|
|
10
|
+
* **api:** api update ([#208](https://github.com/runloopai/api-client-python/issues/208)) ([d0c2bd8](https://github.com/runloopai/api-client-python/commit/d0c2bd8ec96edae0a96208d12049991e3ed05a87))
|
|
11
|
+
* **api:** api update ([#209](https://github.com/runloopai/api-client-python/issues/209)) ([5ba4709](https://github.com/runloopai/api-client-python/commit/5ba470949ffd1772f7211769aaf44d848f46fc58))
|
|
12
|
+
* **api:** api update ([#210](https://github.com/runloopai/api-client-python/issues/210)) ([620fcb9](https://github.com/runloopai/api-client-python/commit/620fcb90f24fe01804bd73ed970e3af0d3f65009))
|
|
13
|
+
* **api:** api update ([#211](https://github.com/runloopai/api-client-python/issues/211)) ([b181289](https://github.com/runloopai/api-client-python/commit/b18128942293ab07b3fa1b40cd05061746b5d17c))
|
|
14
|
+
* **api:** api update ([#212](https://github.com/runloopai/api-client-python/issues/212)) ([6410fed](https://github.com/runloopai/api-client-python/commit/6410fed4c958f4d38dea32fa7c2b894fb2424549))
|
|
15
|
+
* **api:** api update ([#213](https://github.com/runloopai/api-client-python/issues/213)) ([4c7552a](https://github.com/runloopai/api-client-python/commit/4c7552ae74d688a75a95cbf9e0147156dd558469))
|
|
16
|
+
* **api:** api update ([#214](https://github.com/runloopai/api-client-python/issues/214)) ([a02b476](https://github.com/runloopai/api-client-python/commit/a02b4763d6c7e2a47b300c6274a9b6b0a5f620dd))
|
|
17
|
+
* **api:** api update ([#215](https://github.com/runloopai/api-client-python/issues/215)) ([87fb66e](https://github.com/runloopai/api-client-python/commit/87fb66ed3d8126db93eb5b7245c10fb2fcf4533b))
|
|
18
|
+
* **api:** api update ([#216](https://github.com/runloopai/api-client-python/issues/216)) ([568d2f8](https://github.com/runloopai/api-client-python/commit/568d2f821df99bff0bd4ea31f1398df94dccbf2d))
|
|
19
|
+
* **api:** api update ([#217](https://github.com/runloopai/api-client-python/issues/217)) ([23902ae](https://github.com/runloopai/api-client-python/commit/23902aead147c749528b726d25c92d72cf0fb5f5))
|
|
20
|
+
* **api:** api update ([#218](https://github.com/runloopai/api-client-python/issues/218)) ([5bd1497](https://github.com/runloopai/api-client-python/commit/5bd1497d6b23f0630b74a38696f52c7d691a9a50))
|
|
21
|
+
* **api:** api update ([#219](https://github.com/runloopai/api-client-python/issues/219)) ([c2f5075](https://github.com/runloopai/api-client-python/commit/c2f5075c8a230524c457b491a8a796550d43695b))
|
|
22
|
+
* **api:** api update ([#220](https://github.com/runloopai/api-client-python/issues/220)) ([6bc6ffb](https://github.com/runloopai/api-client-python/commit/6bc6ffbd7f13204744b9f7e29f129326ea38229a))
|
|
23
|
+
* **api:** api update ([#221](https://github.com/runloopai/api-client-python/issues/221)) ([da27ecc](https://github.com/runloopai/api-client-python/commit/da27eccbfa6df1075e1a20d9e4a4d6abea31f731))
|
|
24
|
+
* **api:** api update ([#222](https://github.com/runloopai/api-client-python/issues/222)) ([753ea7c](https://github.com/runloopai/api-client-python/commit/753ea7cd62cccc384166223f762af1cfea06c08e))
|
|
25
|
+
|
|
26
|
+
## 0.3.0 (2024-10-14)
|
|
27
|
+
|
|
28
|
+
Full Changelog: [v0.2.2...v0.3.0](https://github.com/runloopai/api-client-python/compare/v0.2.2...v0.3.0)
|
|
29
|
+
|
|
30
|
+
### Features
|
|
31
|
+
|
|
32
|
+
* **api:** api update ([#203](https://github.com/runloopai/api-client-python/issues/203)) ([596e9db](https://github.com/runloopai/api-client-python/commit/596e9db0165308c969e1c7dc2079d4d12961b382))
|
|
33
|
+
|
|
3
34
|
## 0.2.2 (2024-10-11)
|
|
4
35
|
|
|
5
36
|
Full Changelog: [v0.2.0...v0.2.2](https://github.com/runloopai/api-client-python/compare/v0.2.0...v0.2.2)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: runloop_api_client
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.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
|
|
@@ -69,7 +69,7 @@ Methods:
|
|
|
69
69
|
- <code title="post /v1/devboxes/{id}/execute_sync">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">execute_sync</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_execute_sync_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
|
|
70
70
|
- <code title="post /v1/devboxes/{id}/read_file_contents">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">read_file_contents</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_read_file_contents_params.py">params</a>) -> str</code>
|
|
71
71
|
- <code title="post /v1/devboxes/{id}/shutdown">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">shutdown</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
|
|
72
|
-
- <code title="post /v1/devboxes/{id}/snapshot_disk">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">snapshot_disk</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_snapshot_disk_params.py">params</a>) ->
|
|
72
|
+
- <code title="post /v1/devboxes/{id}/snapshot_disk">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">snapshot_disk</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_snapshot_disk_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">DevboxSnapshotView</a></code>
|
|
73
73
|
- <code title="post /v1/devboxes/{id}/upload_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">upload_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_upload_file_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_upload_file_response.py">object</a></code>
|
|
74
74
|
- <code title="post /v1/devboxes/{id}/write_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">write_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_write_file_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
|
|
75
75
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "runloop_api_client"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.4.0"
|
|
4
4
|
description = "The official Python library for the runloop API"
|
|
5
5
|
dynamic = ["readme"]
|
|
6
6
|
license = "MIT"
|
|
@@ -63,11 +63,11 @@ format = { chain = [
|
|
|
63
63
|
"format:ruff",
|
|
64
64
|
"format:docs",
|
|
65
65
|
"fix:ruff",
|
|
66
|
+
# run formatting again to fix any inconsistencies when imports are stripped
|
|
67
|
+
"format:ruff",
|
|
66
68
|
]}
|
|
67
|
-
"format:black" = "black ."
|
|
68
69
|
"format:docs" = "python scripts/utils/ruffen-docs.py README.md api.md"
|
|
69
70
|
"format:ruff" = "ruff format"
|
|
70
|
-
"format:isort" = "isort ."
|
|
71
71
|
|
|
72
72
|
"lint" = { chain = [
|
|
73
73
|
"check:ruff",
|
|
@@ -125,10 +125,6 @@ path = "README.md"
|
|
|
125
125
|
pattern = '\[(.+?)\]\(((?!https?://)\S+?)\)'
|
|
126
126
|
replacement = '[\1](https://github.com/runloopai/api-client-python/tree/main/\g<2>)'
|
|
127
127
|
|
|
128
|
-
[tool.black]
|
|
129
|
-
line-length = 120
|
|
130
|
-
target-version = ["py37"]
|
|
131
|
-
|
|
132
128
|
[tool.pytest.ini_options]
|
|
133
129
|
testpaths = ["tests"]
|
|
134
130
|
addopts = "--tb=short"
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_base_client.py
RENAMED
|
@@ -1575,7 +1575,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1575
1575
|
except Exception as err:
|
|
1576
1576
|
log.debug("Encountered Exception", exc_info=True)
|
|
1577
1577
|
|
|
1578
|
-
if
|
|
1578
|
+
if remaining_retries > 0:
|
|
1579
1579
|
return await self._retry_request(
|
|
1580
1580
|
input_options,
|
|
1581
1581
|
cast_to,
|
|
@@ -26,7 +26,7 @@ from ...types import (
|
|
|
26
26
|
devbox_disk_snapshots_params,
|
|
27
27
|
devbox_read_file_contents_params,
|
|
28
28
|
)
|
|
29
|
-
from ..._types import NOT_GIVEN, Body, Query, Headers,
|
|
29
|
+
from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven, FileTypes
|
|
30
30
|
from ..._utils import (
|
|
31
31
|
extract_files,
|
|
32
32
|
maybe_transform,
|
|
@@ -60,6 +60,7 @@ from ..._response import (
|
|
|
60
60
|
from ..._base_client import make_request_options
|
|
61
61
|
from ...types.devbox_view import DevboxView
|
|
62
62
|
from ...types.devbox_list_view import DevboxListView
|
|
63
|
+
from ...types.devbox_snapshot_view import DevboxSnapshotView
|
|
63
64
|
from ...types.devbox_snapshot_list_view import DevboxSnapshotListView
|
|
64
65
|
from ...types.code_mount_parameters_param import CodeMountParametersParam
|
|
65
66
|
from ...types.devbox_execution_detail_view import DevboxExecutionDetailView
|
|
@@ -570,7 +571,7 @@ class DevboxesResource(SyncAPIResource):
|
|
|
570
571
|
extra_query: Query | None = None,
|
|
571
572
|
extra_body: Body | None = None,
|
|
572
573
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
573
|
-
) ->
|
|
574
|
+
) -> DevboxSnapshotView:
|
|
574
575
|
"""
|
|
575
576
|
Create a filesystem snapshot of a devbox with the specified name and metadata.
|
|
576
577
|
|
|
@@ -589,7 +590,6 @@ class DevboxesResource(SyncAPIResource):
|
|
|
589
590
|
"""
|
|
590
591
|
if not id:
|
|
591
592
|
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
|
|
592
|
-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
593
593
|
return self._post(
|
|
594
594
|
f"/v1/devboxes/{id}/snapshot_disk",
|
|
595
595
|
body=maybe_transform(
|
|
@@ -602,7 +602,7 @@ class DevboxesResource(SyncAPIResource):
|
|
|
602
602
|
options=make_request_options(
|
|
603
603
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
604
604
|
),
|
|
605
|
-
cast_to=
|
|
605
|
+
cast_to=DevboxSnapshotView,
|
|
606
606
|
)
|
|
607
607
|
|
|
608
608
|
def upload_file(
|
|
@@ -1200,7 +1200,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
1200
1200
|
extra_query: Query | None = None,
|
|
1201
1201
|
extra_body: Body | None = None,
|
|
1202
1202
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
1203
|
-
) ->
|
|
1203
|
+
) -> DevboxSnapshotView:
|
|
1204
1204
|
"""
|
|
1205
1205
|
Create a filesystem snapshot of a devbox with the specified name and metadata.
|
|
1206
1206
|
|
|
@@ -1219,7 +1219,6 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
1219
1219
|
"""
|
|
1220
1220
|
if not id:
|
|
1221
1221
|
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
|
|
1222
|
-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
1223
1222
|
return await self._post(
|
|
1224
1223
|
f"/v1/devboxes/{id}/snapshot_disk",
|
|
1225
1224
|
body=await async_maybe_transform(
|
|
@@ -1232,7 +1231,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
1232
1231
|
options=make_request_options(
|
|
1233
1232
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
1234
1233
|
),
|
|
1235
|
-
cast_to=
|
|
1234
|
+
cast_to=DevboxSnapshotView,
|
|
1236
1235
|
)
|
|
1237
1236
|
|
|
1238
1237
|
async def upload_file(
|
|
@@ -13,6 +13,9 @@ class DevboxSnapshotView(BaseModel):
|
|
|
13
13
|
id: str
|
|
14
14
|
"""The unique identifier of the snapshot."""
|
|
15
15
|
|
|
16
|
+
create_time_ms: int
|
|
17
|
+
"""Creation time of the Snapshot (Unix timestamp milliseconds)."""
|
|
18
|
+
|
|
16
19
|
metadata: Dict[str, str]
|
|
17
20
|
"""metadata associated with the snapshot."""
|
|
18
21
|
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/devbox_view.py
RENAMED
|
@@ -28,7 +28,9 @@ class DevboxView(BaseModel):
|
|
|
28
28
|
metadata: Dict[str, str]
|
|
29
29
|
"""The user defined Devbox metadata."""
|
|
30
30
|
|
|
31
|
-
status: Literal[
|
|
31
|
+
status: Literal[
|
|
32
|
+
"provisioning", "initializing", "running", "suspending", "suspended", "resuming", "failure", "shutdown"
|
|
33
|
+
]
|
|
32
34
|
"""The current status of the Devbox."""
|
|
33
35
|
|
|
34
36
|
blueprint_id: Optional[str] = None
|
|
@@ -14,6 +14,7 @@ from runloop_api_client import Runloop, AsyncRunloop
|
|
|
14
14
|
from runloop_api_client.types import (
|
|
15
15
|
DevboxView,
|
|
16
16
|
DevboxListView,
|
|
17
|
+
DevboxSnapshotView,
|
|
17
18
|
DevboxSnapshotListView,
|
|
18
19
|
DevboxExecutionDetailView,
|
|
19
20
|
DevboxCreateSSHKeyResponse,
|
|
@@ -486,7 +487,7 @@ class TestDevboxes:
|
|
|
486
487
|
devbox = client.devboxes.snapshot_disk(
|
|
487
488
|
id="id",
|
|
488
489
|
)
|
|
489
|
-
|
|
490
|
+
assert_matches_type(DevboxSnapshotView, devbox, path=["response"])
|
|
490
491
|
|
|
491
492
|
@parametrize
|
|
492
493
|
def test_method_snapshot_disk_with_all_params(self, client: Runloop) -> None:
|
|
@@ -495,7 +496,7 @@ class TestDevboxes:
|
|
|
495
496
|
metadata={"foo": "string"},
|
|
496
497
|
name="name",
|
|
497
498
|
)
|
|
498
|
-
|
|
499
|
+
assert_matches_type(DevboxSnapshotView, devbox, path=["response"])
|
|
499
500
|
|
|
500
501
|
@parametrize
|
|
501
502
|
def test_raw_response_snapshot_disk(self, client: Runloop) -> None:
|
|
@@ -506,7 +507,7 @@ class TestDevboxes:
|
|
|
506
507
|
assert response.is_closed is True
|
|
507
508
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
508
509
|
devbox = response.parse()
|
|
509
|
-
|
|
510
|
+
assert_matches_type(DevboxSnapshotView, devbox, path=["response"])
|
|
510
511
|
|
|
511
512
|
@parametrize
|
|
512
513
|
def test_streaming_response_snapshot_disk(self, client: Runloop) -> None:
|
|
@@ -517,7 +518,7 @@ class TestDevboxes:
|
|
|
517
518
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
518
519
|
|
|
519
520
|
devbox = response.parse()
|
|
520
|
-
|
|
521
|
+
assert_matches_type(DevboxSnapshotView, devbox, path=["response"])
|
|
521
522
|
|
|
522
523
|
assert cast(Any, response.is_closed) is True
|
|
523
524
|
|
|
@@ -1079,7 +1080,7 @@ class TestAsyncDevboxes:
|
|
|
1079
1080
|
devbox = await async_client.devboxes.snapshot_disk(
|
|
1080
1081
|
id="id",
|
|
1081
1082
|
)
|
|
1082
|
-
|
|
1083
|
+
assert_matches_type(DevboxSnapshotView, devbox, path=["response"])
|
|
1083
1084
|
|
|
1084
1085
|
@parametrize
|
|
1085
1086
|
async def test_method_snapshot_disk_with_all_params(self, async_client: AsyncRunloop) -> None:
|
|
@@ -1088,7 +1089,7 @@ class TestAsyncDevboxes:
|
|
|
1088
1089
|
metadata={"foo": "string"},
|
|
1089
1090
|
name="name",
|
|
1090
1091
|
)
|
|
1091
|
-
|
|
1092
|
+
assert_matches_type(DevboxSnapshotView, devbox, path=["response"])
|
|
1092
1093
|
|
|
1093
1094
|
@parametrize
|
|
1094
1095
|
async def test_raw_response_snapshot_disk(self, async_client: AsyncRunloop) -> None:
|
|
@@ -1099,7 +1100,7 @@ class TestAsyncDevboxes:
|
|
|
1099
1100
|
assert response.is_closed is True
|
|
1100
1101
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
1101
1102
|
devbox = await response.parse()
|
|
1102
|
-
|
|
1103
|
+
assert_matches_type(DevboxSnapshotView, devbox, path=["response"])
|
|
1103
1104
|
|
|
1104
1105
|
@parametrize
|
|
1105
1106
|
async def test_streaming_response_snapshot_disk(self, async_client: AsyncRunloop) -> None:
|
|
@@ -1110,7 +1111,7 @@ class TestAsyncDevboxes:
|
|
|
1110
1111
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
1111
1112
|
|
|
1112
1113
|
devbox = await response.parse()
|
|
1113
|
-
|
|
1114
|
+
assert_matches_type(DevboxSnapshotView, devbox, path=["response"])
|
|
1114
1115
|
|
|
1115
1116
|
assert cast(Any, response.is_closed) is True
|
|
1116
1117
|
|
|
@@ -10,6 +10,7 @@ import inspect
|
|
|
10
10
|
import tracemalloc
|
|
11
11
|
from typing import Any, Union, cast
|
|
12
12
|
from unittest import mock
|
|
13
|
+
from typing_extensions import Literal
|
|
13
14
|
|
|
14
15
|
import httpx
|
|
15
16
|
import pytest
|
|
@@ -765,7 +766,14 @@ class TestRunloop:
|
|
|
765
766
|
@pytest.mark.parametrize("failures_before_success", [0, 2, 4])
|
|
766
767
|
@mock.patch("runloop_api_client._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
|
|
767
768
|
@pytest.mark.respx(base_url=base_url)
|
|
768
|
-
|
|
769
|
+
@pytest.mark.parametrize("failure_mode", ["status", "exception"])
|
|
770
|
+
def test_retries_taken(
|
|
771
|
+
self,
|
|
772
|
+
client: Runloop,
|
|
773
|
+
failures_before_success: int,
|
|
774
|
+
failure_mode: Literal["status", "exception"],
|
|
775
|
+
respx_mock: MockRouter,
|
|
776
|
+
) -> None:
|
|
769
777
|
client = client.with_options(max_retries=4)
|
|
770
778
|
|
|
771
779
|
nb_retries = 0
|
|
@@ -774,6 +782,8 @@ class TestRunloop:
|
|
|
774
782
|
nonlocal nb_retries
|
|
775
783
|
if nb_retries < failures_before_success:
|
|
776
784
|
nb_retries += 1
|
|
785
|
+
if failure_mode == "exception":
|
|
786
|
+
raise RuntimeError("oops")
|
|
777
787
|
return httpx.Response(500)
|
|
778
788
|
return httpx.Response(200)
|
|
779
789
|
|
|
@@ -1551,8 +1561,13 @@ class TestAsyncRunloop:
|
|
|
1551
1561
|
@mock.patch("runloop_api_client._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
|
|
1552
1562
|
@pytest.mark.respx(base_url=base_url)
|
|
1553
1563
|
@pytest.mark.asyncio
|
|
1564
|
+
@pytest.mark.parametrize("failure_mode", ["status", "exception"])
|
|
1554
1565
|
async def test_retries_taken(
|
|
1555
|
-
self,
|
|
1566
|
+
self,
|
|
1567
|
+
async_client: AsyncRunloop,
|
|
1568
|
+
failures_before_success: int,
|
|
1569
|
+
failure_mode: Literal["status", "exception"],
|
|
1570
|
+
respx_mock: MockRouter,
|
|
1556
1571
|
) -> None:
|
|
1557
1572
|
client = async_client.with_options(max_retries=4)
|
|
1558
1573
|
|
|
@@ -1562,6 +1577,8 @@ class TestAsyncRunloop:
|
|
|
1562
1577
|
nonlocal nb_retries
|
|
1563
1578
|
if nb_retries < failures_before_success:
|
|
1564
1579
|
nb_retries += 1
|
|
1580
|
+
if failure_mode == "exception":
|
|
1581
|
+
raise RuntimeError("oops")
|
|
1565
1582
|
return httpx.Response(500)
|
|
1566
1583
|
return httpx.Response(200)
|
|
1567
1584
|
|
|
@@ -245,7 +245,7 @@ def test_nested_union_of_mixed_types() -> None:
|
|
|
245
245
|
assert m.foo is True
|
|
246
246
|
|
|
247
247
|
m = Model.construct(foo="CARD_HOLDER")
|
|
248
|
-
assert m.foo
|
|
248
|
+
assert m.foo == "CARD_HOLDER"
|
|
249
249
|
|
|
250
250
|
m = Model.construct(foo={"bar": False})
|
|
251
251
|
assert isinstance(m.foo, Submodel1)
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/__init__.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_logs.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_proxy.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_reflection.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_streams.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_sync.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_transform.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_typing.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/_utils/_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/__init__.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/resources/blueprints.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
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/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
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/blueprint_view.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
|
|
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.2.2 → runloop_api_client-0.4.0}/src/runloop_api_client/types/resource_size.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
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/devboxes/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/devboxes/test_logs.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/functions/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/projects/__init__.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/projects/test_logs.py
RENAMED
|
File without changes
|
{runloop_api_client-0.2.2 → runloop_api_client-0.4.0}/tests/api_resources/test_blueprints.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
|