runloop-api-client 0.1.0a23__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. runloop_api_client-0.2.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/CHANGELOG.md +10 -0
  3. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/PKG-INFO +2 -2
  4. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/README.md +1 -1
  5. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/api.md +2 -0
  6. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/pyproject.toml +1 -1
  7. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_version.py +1 -1
  8. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/devboxes/devboxes.py +114 -0
  9. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/__init__.py +2 -0
  10. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_create_params.py +3 -0
  11. runloop_api_client-0.2.0/src/runloop_api_client/types/devbox_disk_snapshots_params.py +15 -0
  12. runloop_api_client-0.2.0/src/runloop_api_client/types/devbox_disk_snapshots_response.py +32 -0
  13. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/test_devboxes.py +77 -0
  14. runloop_api_client-0.1.0a23/.release-please-manifest.json +0 -3
  15. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/.gitignore +0 -0
  16. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/CONTRIBUTING.md +0 -0
  17. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/LICENSE +0 -0
  18. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/SECURITY.md +0 -0
  19. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/bin/check-release-environment +0 -0
  20. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/bin/publish-pypi +0 -0
  21. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/examples/.keep +0 -0
  22. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/mypy.ini +0 -0
  23. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/noxfile.py +0 -0
  24. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/release-please-config.json +0 -0
  25. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/requirements-dev.lock +0 -0
  26. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/requirements.lock +0 -0
  27. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop/lib/.keep +0 -0
  28. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/__init__.py +0 -0
  29. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_base_client.py +0 -0
  30. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_client.py +0 -0
  31. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_compat.py +0 -0
  32. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_constants.py +0 -0
  33. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_exceptions.py +0 -0
  34. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_files.py +0 -0
  35. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_models.py +0 -0
  36. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_qs.py +0 -0
  37. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_resource.py +0 -0
  38. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_response.py +0 -0
  39. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_streaming.py +0 -0
  40. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_types.py +0 -0
  41. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  42. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  43. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  44. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  45. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  46. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  47. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  48. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  49. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  50. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/lib/.keep +0 -0
  51. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/py.typed +0 -0
  52. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/__init__.py +0 -0
  53. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/blueprints.py +0 -0
  54. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  55. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  56. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  57. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/functions/__init__.py +0 -0
  58. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/functions/functions.py +0 -0
  59. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/functions/invocations.py +0 -0
  60. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/projects/__init__.py +0 -0
  61. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/projects/logs.py +0 -0
  62. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/resources/projects/projects.py +0 -0
  63. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  64. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  65. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  66. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  67. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  68. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  69. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  70. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  71. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  72. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/code_mount_parameters.py +0 -0
  73. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/code_mount_parameters_param.py +0 -0
  74. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  75. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  76. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  77. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  78. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  79. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  80. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  81. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  82. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  83. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  84. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  85. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  86. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devbox_write_file_params.py +0 -0
  87. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  88. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  89. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  90. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  91. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  92. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  93. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/function_invoke_async_params.py +0 -0
  94. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/function_invoke_sync_params.py +0 -0
  95. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/function_list_view.py +0 -0
  96. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/functions/__init__.py +0 -0
  97. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/functions/function_invocation_list_view.py +0 -0
  98. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/functions/invocation_list_params.py +0 -0
  99. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/project_list_view.py +0 -0
  100. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/projects/__init__.py +0 -0
  101. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/resource_size.py +0 -0
  102. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  103. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/shared/function_invocation_execution_detail_view.py +0 -0
  104. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/src/runloop_api_client/types/shared/project_logs_view.py +0 -0
  105. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/__init__.py +0 -0
  106. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/__init__.py +0 -0
  107. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/devboxes/__init__.py +0 -0
  108. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  109. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  110. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/functions/__init__.py +0 -0
  111. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/functions/test_invocations.py +0 -0
  112. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/projects/__init__.py +0 -0
  113. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/projects/test_logs.py +0 -0
  114. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/test_blueprints.py +0 -0
  115. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/test_functions.py +0 -0
  116. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/api_resources/test_projects.py +0 -0
  117. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/conftest.py +0 -0
  118. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/sample_file.txt +0 -0
  119. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_client.py +0 -0
  120. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_deepcopy.py +0 -0
  121. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_extract_files.py +0 -0
  122. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_files.py +0 -0
  123. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_models.py +0 -0
  124. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_qs.py +0 -0
  125. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_required_args.py +0 -0
  126. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_response.py +0 -0
  127. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_streaming.py +0 -0
  128. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_transform.py +0 -0
  129. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_utils/test_proxy.py +0 -0
  130. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/test_utils/test_typing.py +0 -0
  131. {runloop_api_client-0.1.0a23 → runloop_api_client-0.2.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.2.0"
3
+ }
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0 (2024-10-10)
4
+
5
+ Full Changelog: [v0.1.0-alpha.23...v0.2.0](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.23...v0.2.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([#186](https://github.com/runloopai/api-client-python/issues/186)) ([bee1e4f](https://github.com/runloopai/api-client-python/commit/bee1e4fb7aa9e167396927f712400223a6f176b2))
10
+ * **api:** api update ([#188](https://github.com/runloopai/api-client-python/issues/188)) ([0b28873](https://github.com/runloopai/api-client-python/commit/0b28873e3bf6ce5ab6d35e8a30e0184d431fad4f))
11
+ * **api:** api update ([#189](https://github.com/runloopai/api-client-python/issues/189)) ([b0226b9](https://github.com/runloopai/api-client-python/commit/b0226b926a346ef24886dc5550da8a5275f9c9a2))
12
+
3
13
  ## 0.1.0-alpha.23 (2024-10-07)
4
14
 
5
15
  Full Changelog: [v0.1.0-alpha.22...v0.1.0-alpha.23](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.22...v0.1.0-alpha.23)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.1.0a23
3
+ Version: 0.2.0
4
4
  Summary: The official Python library for the runloop API
5
5
  Project-URL: Homepage, https://github.com/runloopai/api-client-python
6
6
  Project-URL: Repository, https://github.com/runloopai/api-client-python
@@ -50,7 +50,7 @@ The REST API documentation can be found on [runloop.ai](https://runloop.ai). The
50
50
 
51
51
  ```sh
52
52
  # install from PyPI
53
- pip install --pre runloop_api_client
53
+ pip install runloop_api_client
54
54
  ```
55
55
 
56
56
  ## Usage
@@ -16,7 +16,7 @@ The REST API documentation can be found on [runloop.ai](https://runloop.ai). The
16
16
 
17
17
  ```sh
18
18
  # install from PyPI
19
- pip install --pre runloop_api_client
19
+ pip install runloop_api_client
20
20
  ```
21
21
 
22
22
  ## Usage
@@ -54,6 +54,7 @@ from runloop_api_client.types import (
54
54
  DevboxListView,
55
55
  DevboxView,
56
56
  DevboxCreateSSHKeyResponse,
57
+ DevboxDiskSnapshotsResponse,
57
58
  DevboxReadFileContentsResponse,
58
59
  DevboxUploadFileResponse,
59
60
  )
@@ -65,6 +66,7 @@ Methods:
65
66
  - <code title="get /v1/devboxes/{id}">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
66
67
  - <code title="get /v1/devboxes">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">list</a>(\*\*<a href="src/runloop_api_client/types/devbox_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_list_view.py">DevboxListView</a></code>
67
68
  - <code title="post /v1/devboxes/{id}/create_ssh_key">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">create_ssh_key</a>(id) -> <a href="./src/runloop_api_client/types/devbox_create_ssh_key_response.py">DevboxCreateSSHKeyResponse</a></code>
69
+ - <code title="get /v1/devboxes/disk_snapshots">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">disk_snapshots</a>(\*\*<a href="src/runloop_api_client/types/devbox_disk_snapshots_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_disk_snapshots_response.py">DevboxDiskSnapshotsResponse</a></code>
68
70
  - <code title="post /v1/devboxes/{id}/download_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">download_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_download_file_params.py">params</a>) -> BinaryAPIResponse</code>
69
71
  - <code title="post /v1/devboxes/{id}/execute_async">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">execute_async</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_execute_async_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_async_execution_detail_view.py">DevboxAsyncExecutionDetailView</a></code>
70
72
  - <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>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.1.0-alpha.23"
3
+ version = "0.2.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "runloop_api_client"
4
- __version__ = "0.1.0-alpha.23" # x-release-please-version
4
+ __version__ = "0.2.0" # x-release-please-version
@@ -22,6 +22,7 @@ from ...types import (
22
22
  devbox_execute_sync_params,
23
23
  devbox_download_file_params,
24
24
  devbox_execute_async_params,
25
+ devbox_disk_snapshots_params,
25
26
  devbox_read_file_contents_params,
26
27
  )
27
28
  from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven, FileTypes
@@ -61,6 +62,7 @@ from ...types.devbox_list_view import DevboxListView
61
62
  from ...types.code_mount_parameters_param import CodeMountParametersParam
62
63
  from ...types.devbox_execution_detail_view import DevboxExecutionDetailView
63
64
  from ...types.devbox_create_ssh_key_response import DevboxCreateSSHKeyResponse
65
+ from ...types.devbox_disk_snapshots_response import DevboxDiskSnapshotsResponse
64
66
  from ...types.devbox_async_execution_detail_view import DevboxAsyncExecutionDetailView
65
67
 
66
68
  __all__ = ["DevboxesResource", "AsyncDevboxesResource"]
@@ -108,6 +110,7 @@ class DevboxesResource(SyncAPIResource):
108
110
  name: str | NotGiven = NOT_GIVEN,
109
111
  prebuilt: str | NotGiven = NOT_GIVEN,
110
112
  setup_commands: List[str] | NotGiven = NOT_GIVEN,
113
+ snapshot_id: str | NotGiven = NOT_GIVEN,
111
114
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
112
115
  # The extra values given here take precedence over values defined on the client or passed to this method.
113
116
  extra_headers: Headers | None = None,
@@ -149,6 +152,8 @@ class DevboxesResource(SyncAPIResource):
149
152
  fetching a tool or building your dependencies. Runloop will look optimize these
150
153
  steps for you.
151
154
 
155
+ snapshot_id: Snapshot ID to use for the Devbox.
156
+
152
157
  extra_headers: Send extra headers
153
158
 
154
159
  extra_query: Add additional query parameters to the request
@@ -172,6 +177,7 @@ class DevboxesResource(SyncAPIResource):
172
177
  "name": name,
173
178
  "prebuilt": prebuilt,
174
179
  "setup_commands": setup_commands,
180
+ "snapshot_id": snapshot_id,
175
181
  },
176
182
  devbox_create_params.DevboxCreateParams,
177
183
  ),
@@ -300,6 +306,52 @@ class DevboxesResource(SyncAPIResource):
300
306
  cast_to=DevboxCreateSSHKeyResponse,
301
307
  )
302
308
 
309
+ def disk_snapshots(
310
+ self,
311
+ *,
312
+ limit: int | NotGiven = NOT_GIVEN,
313
+ starting_after: str | NotGiven = NOT_GIVEN,
314
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
315
+ # The extra values given here take precedence over values defined on the client or passed to this method.
316
+ extra_headers: Headers | None = None,
317
+ extra_query: Query | None = None,
318
+ extra_body: Body | None = None,
319
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
320
+ ) -> DevboxDiskSnapshotsResponse:
321
+ """
322
+ List all snapshots of a devbox by id.
323
+
324
+ Args:
325
+ limit: Page Limit
326
+
327
+ starting_after: Load the next page starting after the given token.
328
+
329
+ extra_headers: Send extra headers
330
+
331
+ extra_query: Add additional query parameters to the request
332
+
333
+ extra_body: Add additional JSON properties to the request
334
+
335
+ timeout: Override the client-level default timeout for this request, in seconds
336
+ """
337
+ return self._get(
338
+ "/v1/devboxes/disk_snapshots",
339
+ options=make_request_options(
340
+ extra_headers=extra_headers,
341
+ extra_query=extra_query,
342
+ extra_body=extra_body,
343
+ timeout=timeout,
344
+ query=maybe_transform(
345
+ {
346
+ "limit": limit,
347
+ "starting_after": starting_after,
348
+ },
349
+ devbox_disk_snapshots_params.DevboxDiskSnapshotsParams,
350
+ ),
351
+ ),
352
+ cast_to=DevboxDiskSnapshotsResponse,
353
+ )
354
+
303
355
  def download_file(
304
356
  self,
305
357
  id: str,
@@ -641,6 +693,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
641
693
  name: str | NotGiven = NOT_GIVEN,
642
694
  prebuilt: str | NotGiven = NOT_GIVEN,
643
695
  setup_commands: List[str] | NotGiven = NOT_GIVEN,
696
+ snapshot_id: str | NotGiven = NOT_GIVEN,
644
697
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
645
698
  # The extra values given here take precedence over values defined on the client or passed to this method.
646
699
  extra_headers: Headers | None = None,
@@ -682,6 +735,8 @@ class AsyncDevboxesResource(AsyncAPIResource):
682
735
  fetching a tool or building your dependencies. Runloop will look optimize these
683
736
  steps for you.
684
737
 
738
+ snapshot_id: Snapshot ID to use for the Devbox.
739
+
685
740
  extra_headers: Send extra headers
686
741
 
687
742
  extra_query: Add additional query parameters to the request
@@ -705,6 +760,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
705
760
  "name": name,
706
761
  "prebuilt": prebuilt,
707
762
  "setup_commands": setup_commands,
763
+ "snapshot_id": snapshot_id,
708
764
  },
709
765
  devbox_create_params.DevboxCreateParams,
710
766
  ),
@@ -833,6 +889,52 @@ class AsyncDevboxesResource(AsyncAPIResource):
833
889
  cast_to=DevboxCreateSSHKeyResponse,
834
890
  )
835
891
 
892
+ async def disk_snapshots(
893
+ self,
894
+ *,
895
+ limit: int | NotGiven = NOT_GIVEN,
896
+ starting_after: str | NotGiven = NOT_GIVEN,
897
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
898
+ # The extra values given here take precedence over values defined on the client or passed to this method.
899
+ extra_headers: Headers | None = None,
900
+ extra_query: Query | None = None,
901
+ extra_body: Body | None = None,
902
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
903
+ ) -> DevboxDiskSnapshotsResponse:
904
+ """
905
+ List all snapshots of a devbox by id.
906
+
907
+ Args:
908
+ limit: Page Limit
909
+
910
+ starting_after: Load the next page starting after the given token.
911
+
912
+ extra_headers: Send extra headers
913
+
914
+ extra_query: Add additional query parameters to the request
915
+
916
+ extra_body: Add additional JSON properties to the request
917
+
918
+ timeout: Override the client-level default timeout for this request, in seconds
919
+ """
920
+ return await self._get(
921
+ "/v1/devboxes/disk_snapshots",
922
+ options=make_request_options(
923
+ extra_headers=extra_headers,
924
+ extra_query=extra_query,
925
+ extra_body=extra_body,
926
+ timeout=timeout,
927
+ query=await async_maybe_transform(
928
+ {
929
+ "limit": limit,
930
+ "starting_after": starting_after,
931
+ },
932
+ devbox_disk_snapshots_params.DevboxDiskSnapshotsParams,
933
+ ),
934
+ ),
935
+ cast_to=DevboxDiskSnapshotsResponse,
936
+ )
937
+
836
938
  async def download_file(
837
939
  self,
838
940
  id: str,
@@ -1148,6 +1250,9 @@ class DevboxesResourceWithRawResponse:
1148
1250
  self.create_ssh_key = to_raw_response_wrapper(
1149
1251
  devboxes.create_ssh_key,
1150
1252
  )
1253
+ self.disk_snapshots = to_raw_response_wrapper(
1254
+ devboxes.disk_snapshots,
1255
+ )
1151
1256
  self.download_file = to_custom_raw_response_wrapper(
1152
1257
  devboxes.download_file,
1153
1258
  BinaryAPIResponse,
@@ -1196,6 +1301,9 @@ class AsyncDevboxesResourceWithRawResponse:
1196
1301
  self.create_ssh_key = async_to_raw_response_wrapper(
1197
1302
  devboxes.create_ssh_key,
1198
1303
  )
1304
+ self.disk_snapshots = async_to_raw_response_wrapper(
1305
+ devboxes.disk_snapshots,
1306
+ )
1199
1307
  self.download_file = async_to_custom_raw_response_wrapper(
1200
1308
  devboxes.download_file,
1201
1309
  AsyncBinaryAPIResponse,
@@ -1244,6 +1352,9 @@ class DevboxesResourceWithStreamingResponse:
1244
1352
  self.create_ssh_key = to_streamed_response_wrapper(
1245
1353
  devboxes.create_ssh_key,
1246
1354
  )
1355
+ self.disk_snapshots = to_streamed_response_wrapper(
1356
+ devboxes.disk_snapshots,
1357
+ )
1247
1358
  self.download_file = to_custom_streamed_response_wrapper(
1248
1359
  devboxes.download_file,
1249
1360
  StreamedBinaryAPIResponse,
@@ -1292,6 +1403,9 @@ class AsyncDevboxesResourceWithStreamingResponse:
1292
1403
  self.create_ssh_key = async_to_streamed_response_wrapper(
1293
1404
  devboxes.create_ssh_key,
1294
1405
  )
1406
+ self.disk_snapshots = async_to_streamed_response_wrapper(
1407
+ devboxes.disk_snapshots,
1408
+ )
1295
1409
  self.download_file = async_to_custom_streamed_response_wrapper(
1296
1410
  devboxes.download_file,
1297
1411
  AsyncStreamedBinaryAPIResponse,
@@ -29,10 +29,12 @@ from .code_mount_parameters_param import CodeMountParametersParam as CodeMountPa
29
29
  from .devbox_download_file_params import DevboxDownloadFileParams as DevboxDownloadFileParams
30
30
  from .devbox_execute_async_params import DevboxExecuteAsyncParams as DevboxExecuteAsyncParams
31
31
  from .function_invoke_sync_params import FunctionInvokeSyncParams as FunctionInvokeSyncParams
32
+ from .devbox_disk_snapshots_params import DevboxDiskSnapshotsParams as DevboxDiskSnapshotsParams
32
33
  from .devbox_execution_detail_view import DevboxExecutionDetailView as DevboxExecutionDetailView
33
34
  from .function_invoke_async_params import FunctionInvokeAsyncParams as FunctionInvokeAsyncParams
34
35
  from .blueprint_build_logs_list_view import BlueprintBuildLogsListView as BlueprintBuildLogsListView
35
36
  from .devbox_create_ssh_key_response import DevboxCreateSSHKeyResponse as DevboxCreateSSHKeyResponse
37
+ from .devbox_disk_snapshots_response import DevboxDiskSnapshotsResponse as DevboxDiskSnapshotsResponse
36
38
  from .devbox_read_file_contents_params import DevboxReadFileContentsParams as DevboxReadFileContentsParams
37
39
  from .devbox_async_execution_detail_view import DevboxAsyncExecutionDetailView as DevboxAsyncExecutionDetailView
38
40
  from .devbox_read_file_contents_response import DevboxReadFileContentsResponse as DevboxReadFileContentsResponse
@@ -60,6 +60,9 @@ class DevboxCreateParams(TypedDict, total=False):
60
60
  will look optimize these steps for you.
61
61
  """
62
62
 
63
+ snapshot_id: str
64
+ """Snapshot ID to use for the Devbox."""
65
+
63
66
 
64
67
  class LaunchParameters(TypedDict, total=False):
65
68
  keep_alive_time_seconds: int
@@ -0,0 +1,15 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ __all__ = ["DevboxDiskSnapshotsParams"]
8
+
9
+
10
+ class DevboxDiskSnapshotsParams(TypedDict, total=False):
11
+ limit: int
12
+ """Page Limit"""
13
+
14
+ starting_after: str
15
+ """Load the next page starting after the given token."""
@@ -0,0 +1,32 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, List, Optional
4
+
5
+ from pydantic import Field as FieldInfo
6
+
7
+ from .._models import BaseModel
8
+
9
+ __all__ = ["DevboxDiskSnapshotsResponse", "Snapshot"]
10
+
11
+
12
+ class Snapshot(BaseModel):
13
+ id: str
14
+ """The unique identifier of the snapshot."""
15
+
16
+ metadata: Dict[str, str]
17
+ """metadata associated with the snapshot."""
18
+
19
+ source_devbox_id: str = FieldInfo(alias="sourceDevboxId")
20
+ """The source devbox identifier."""
21
+
22
+ name: Optional[str] = None
23
+ """(Optional) The custom name of the snapshot."""
24
+
25
+
26
+ class DevboxDiskSnapshotsResponse(BaseModel):
27
+ has_more: bool
28
+
29
+ snapshots: List[Snapshot]
30
+ """List of snapshots matching filter."""
31
+
32
+ total_count: int
@@ -16,6 +16,7 @@ from runloop_api_client.types import (
16
16
  DevboxListView,
17
17
  DevboxExecutionDetailView,
18
18
  DevboxCreateSSHKeyResponse,
19
+ DevboxDiskSnapshotsResponse,
19
20
  DevboxAsyncExecutionDetailView,
20
21
  )
21
22
  from runloop_api_client._response import (
@@ -73,6 +74,7 @@ class TestDevboxes:
73
74
  name="name",
74
75
  prebuilt="prebuilt",
75
76
  setup_commands=["string", "string", "string"],
77
+ snapshot_id="snapshot_id",
76
78
  )
77
79
  assert_matches_type(DevboxView, devbox, path=["response"])
78
80
 
@@ -206,6 +208,40 @@ class TestDevboxes:
206
208
  "",
207
209
  )
208
210
 
211
+ @parametrize
212
+ def test_method_disk_snapshots(self, client: Runloop) -> None:
213
+ devbox = client.devboxes.disk_snapshots()
214
+ assert_matches_type(DevboxDiskSnapshotsResponse, devbox, path=["response"])
215
+
216
+ @parametrize
217
+ def test_method_disk_snapshots_with_all_params(self, client: Runloop) -> None:
218
+ devbox = client.devboxes.disk_snapshots(
219
+ limit=0,
220
+ starting_after="starting_after",
221
+ )
222
+ assert_matches_type(DevboxDiskSnapshotsResponse, devbox, path=["response"])
223
+
224
+ @parametrize
225
+ def test_raw_response_disk_snapshots(self, client: Runloop) -> None:
226
+ response = client.devboxes.with_raw_response.disk_snapshots()
227
+
228
+ assert response.is_closed is True
229
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
230
+ devbox = response.parse()
231
+ assert_matches_type(DevboxDiskSnapshotsResponse, devbox, path=["response"])
232
+
233
+ @parametrize
234
+ def test_streaming_response_disk_snapshots(self, client: Runloop) -> None:
235
+ with client.devboxes.with_streaming_response.disk_snapshots() as response:
236
+ assert not response.is_closed
237
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
238
+
239
+ devbox = response.parse()
240
+ assert_matches_type(DevboxDiskSnapshotsResponse, devbox, path=["response"])
241
+
242
+ assert cast(Any, response.is_closed) is True
243
+
244
+ @pytest.mark.skip(reason="prism can't support octet")
209
245
  @parametrize
210
246
  @pytest.mark.respx(base_url=base_url)
211
247
  def test_method_download_file(self, client: Runloop, respx_mock: MockRouter) -> None:
@@ -219,6 +255,7 @@ class TestDevboxes:
219
255
  assert cast(Any, devbox.is_closed) is True
220
256
  assert isinstance(devbox, BinaryAPIResponse)
221
257
 
258
+ @pytest.mark.skip(reason="prism can't support octet")
222
259
  @parametrize
223
260
  @pytest.mark.respx(base_url=base_url)
224
261
  def test_raw_response_download_file(self, client: Runloop, respx_mock: MockRouter) -> None:
@@ -234,6 +271,7 @@ class TestDevboxes:
234
271
  assert devbox.json() == {"foo": "bar"}
235
272
  assert isinstance(devbox, BinaryAPIResponse)
236
273
 
274
+ @pytest.mark.skip(reason="prism can't support octet")
237
275
  @parametrize
238
276
  @pytest.mark.respx(base_url=base_url)
239
277
  def test_streaming_response_download_file(self, client: Runloop, respx_mock: MockRouter) -> None:
@@ -251,6 +289,7 @@ class TestDevboxes:
251
289
 
252
290
  assert cast(Any, devbox.is_closed) is True
253
291
 
292
+ @pytest.mark.skip(reason="prism can't support octet")
254
293
  @parametrize
255
294
  @pytest.mark.respx(base_url=base_url)
256
295
  def test_path_params_download_file(self, client: Runloop) -> None:
@@ -581,6 +620,7 @@ class TestAsyncDevboxes:
581
620
  name="name",
582
621
  prebuilt="prebuilt",
583
622
  setup_commands=["string", "string", "string"],
623
+ snapshot_id="snapshot_id",
584
624
  )
585
625
  assert_matches_type(DevboxView, devbox, path=["response"])
586
626
 
@@ -714,6 +754,40 @@ class TestAsyncDevboxes:
714
754
  "",
715
755
  )
716
756
 
757
+ @parametrize
758
+ async def test_method_disk_snapshots(self, async_client: AsyncRunloop) -> None:
759
+ devbox = await async_client.devboxes.disk_snapshots()
760
+ assert_matches_type(DevboxDiskSnapshotsResponse, devbox, path=["response"])
761
+
762
+ @parametrize
763
+ async def test_method_disk_snapshots_with_all_params(self, async_client: AsyncRunloop) -> None:
764
+ devbox = await async_client.devboxes.disk_snapshots(
765
+ limit=0,
766
+ starting_after="starting_after",
767
+ )
768
+ assert_matches_type(DevboxDiskSnapshotsResponse, devbox, path=["response"])
769
+
770
+ @parametrize
771
+ async def test_raw_response_disk_snapshots(self, async_client: AsyncRunloop) -> None:
772
+ response = await async_client.devboxes.with_raw_response.disk_snapshots()
773
+
774
+ assert response.is_closed is True
775
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
776
+ devbox = await response.parse()
777
+ assert_matches_type(DevboxDiskSnapshotsResponse, devbox, path=["response"])
778
+
779
+ @parametrize
780
+ async def test_streaming_response_disk_snapshots(self, async_client: AsyncRunloop) -> None:
781
+ async with async_client.devboxes.with_streaming_response.disk_snapshots() as response:
782
+ assert not response.is_closed
783
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
784
+
785
+ devbox = await response.parse()
786
+ assert_matches_type(DevboxDiskSnapshotsResponse, devbox, path=["response"])
787
+
788
+ assert cast(Any, response.is_closed) is True
789
+
790
+ @pytest.mark.skip(reason="prism can't support octet")
717
791
  @parametrize
718
792
  @pytest.mark.respx(base_url=base_url)
719
793
  async def test_method_download_file(self, async_client: AsyncRunloop, respx_mock: MockRouter) -> None:
@@ -727,6 +801,7 @@ class TestAsyncDevboxes:
727
801
  assert cast(Any, devbox.is_closed) is True
728
802
  assert isinstance(devbox, AsyncBinaryAPIResponse)
729
803
 
804
+ @pytest.mark.skip(reason="prism can't support octet")
730
805
  @parametrize
731
806
  @pytest.mark.respx(base_url=base_url)
732
807
  async def test_raw_response_download_file(self, async_client: AsyncRunloop, respx_mock: MockRouter) -> None:
@@ -742,6 +817,7 @@ class TestAsyncDevboxes:
742
817
  assert await devbox.json() == {"foo": "bar"}
743
818
  assert isinstance(devbox, AsyncBinaryAPIResponse)
744
819
 
820
+ @pytest.mark.skip(reason="prism can't support octet")
745
821
  @parametrize
746
822
  @pytest.mark.respx(base_url=base_url)
747
823
  async def test_streaming_response_download_file(self, async_client: AsyncRunloop, respx_mock: MockRouter) -> None:
@@ -759,6 +835,7 @@ class TestAsyncDevboxes:
759
835
 
760
836
  assert cast(Any, devbox.is_closed) is True
761
837
 
838
+ @pytest.mark.skip(reason="prism can't support octet")
762
839
  @parametrize
763
840
  @pytest.mark.respx(base_url=base_url)
764
841
  async def test_path_params_download_file(self, async_client: AsyncRunloop) -> None:
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.1.0-alpha.23"
3
- }