runloop-api-client 0.1.0a21__tar.gz → 0.1.0a23__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 (129) hide show
  1. runloop_api_client-0.1.0a23/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/CHANGELOG.md +30 -0
  3. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/CONTRIBUTING.md +24 -20
  4. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/PKG-INFO +5 -1
  5. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/README.md +4 -0
  6. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/api.md +1 -0
  7. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/pyproject.toml +1 -1
  8. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_base_client.py +8 -1
  9. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_response.py +3 -0
  10. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_version.py +1 -1
  11. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/blueprints.py +18 -18
  12. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/devboxes/devboxes.py +111 -10
  13. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/devboxes/executions.py +4 -4
  14. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/__init__.py +1 -0
  15. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/blueprint_build_log.py +4 -4
  16. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +3 -3
  17. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/blueprint_build_parameters.py +3 -3
  18. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/blueprint_create_params.py +4 -4
  19. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/blueprint_list_params.py +1 -1
  20. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/blueprint_list_view.py +4 -4
  21. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/blueprint_preview_params.py +4 -4
  22. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/blueprint_preview_view.py +2 -2
  23. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/blueprint_view.py +8 -8
  24. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/code_mount_parameters.py +8 -8
  25. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/code_mount_parameters_param.py +9 -9
  26. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +5 -5
  27. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +4 -4
  28. runloop_api_client-0.1.0a23/src/runloop_api_client/types/devbox_download_file_params.py +12 -0
  29. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_execute_async_params.py +2 -2
  30. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_execute_sync_params.py +2 -2
  31. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_execution_detail_view.py +7 -7
  32. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_list_view.py +4 -4
  33. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_read_file_contents_params.py +2 -2
  34. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_view.py +18 -18
  35. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_write_file_params.py +3 -3
  36. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +10 -10
  37. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +2 -2
  38. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +2 -2
  39. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/project_list_view.py +7 -7
  40. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/shared/project_logs_view.py +6 -6
  41. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/devboxes/test_executions.py +16 -0
  42. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/test_blueprints.py +66 -42
  43. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/test_devboxes.py +162 -40
  44. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_client.py +2 -0
  45. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_response.py +50 -0
  46. runloop_api_client-0.1.0a21/.release-please-manifest.json +0 -3
  47. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/.gitignore +0 -0
  48. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/LICENSE +0 -0
  49. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/SECURITY.md +0 -0
  50. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/bin/check-release-environment +0 -0
  51. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/bin/publish-pypi +0 -0
  52. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/examples/.keep +0 -0
  53. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/mypy.ini +0 -0
  54. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/noxfile.py +0 -0
  55. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/release-please-config.json +0 -0
  56. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/requirements-dev.lock +0 -0
  57. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/requirements.lock +0 -0
  58. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop/lib/.keep +0 -0
  59. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/__init__.py +0 -0
  60. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_client.py +0 -0
  61. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_compat.py +0 -0
  62. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_constants.py +0 -0
  63. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_exceptions.py +0 -0
  64. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_files.py +0 -0
  65. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_models.py +0 -0
  66. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_qs.py +0 -0
  67. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_resource.py +0 -0
  68. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_streaming.py +0 -0
  69. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_types.py +0 -0
  70. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_utils/__init__.py +0 -0
  71. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_utils/_logs.py +0 -0
  72. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_utils/_proxy.py +0 -0
  73. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_utils/_reflection.py +0 -0
  74. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_utils/_streams.py +0 -0
  75. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_utils/_sync.py +0 -0
  76. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_utils/_transform.py +0 -0
  77. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_utils/_typing.py +0 -0
  78. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/_utils/_utils.py +0 -0
  79. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/lib/.keep +0 -0
  80. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/py.typed +0 -0
  81. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/__init__.py +0 -0
  82. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  83. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  84. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/functions/__init__.py +0 -0
  85. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/functions/functions.py +0 -0
  86. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/functions/invocations.py +0 -0
  87. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/projects/__init__.py +0 -0
  88. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/projects/logs.py +0 -0
  89. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/resources/projects/projects.py +0 -0
  90. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  91. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  92. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  93. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  94. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  95. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  96. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  97. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/function_invoke_async_params.py +0 -0
  98. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/function_invoke_sync_params.py +0 -0
  99. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/function_list_view.py +0 -0
  100. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/functions/__init__.py +0 -0
  101. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/functions/function_invocation_list_view.py +0 -0
  102. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/functions/invocation_list_params.py +0 -0
  103. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/projects/__init__.py +0 -0
  104. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/resource_size.py +0 -0
  105. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/shared/__init__.py +0 -0
  106. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/src/runloop_api_client/types/shared/function_invocation_execution_detail_view.py +0 -0
  107. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/__init__.py +0 -0
  108. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/__init__.py +0 -0
  109. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/devboxes/__init__.py +0 -0
  110. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/devboxes/test_logs.py +0 -0
  111. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/functions/__init__.py +0 -0
  112. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/functions/test_invocations.py +0 -0
  113. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/projects/__init__.py +0 -0
  114. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/projects/test_logs.py +0 -0
  115. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/test_functions.py +0 -0
  116. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/api_resources/test_projects.py +0 -0
  117. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/conftest.py +0 -0
  118. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/sample_file.txt +0 -0
  119. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_deepcopy.py +0 -0
  120. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_extract_files.py +0 -0
  121. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_files.py +0 -0
  122. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_models.py +0 -0
  123. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_qs.py +0 -0
  124. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_required_args.py +0 -0
  125. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_streaming.py +0 -0
  126. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_transform.py +0 -0
  127. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_utils/test_proxy.py +0 -0
  128. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/test_utils/test_typing.py +0 -0
  129. {runloop_api_client-0.1.0a21 → runloop_api_client-0.1.0a23}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.23"
3
+ }
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.23 (2024-10-07)
4
+
5
+ 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)
6
+
7
+ ### Features
8
+
9
+ * **api:** OpenAPI spec update via Stainless API ([#177](https://github.com/runloopai/api-client-python/issues/177)) ([ffb1036](https://github.com/runloopai/api-client-python/commit/ffb1036dbfc4cbd07a13ecdd2b18325604d7674c))
10
+ * **api:** OpenAPI spec update via Stainless API ([#179](https://github.com/runloopai/api-client-python/issues/179)) ([77911b5](https://github.com/runloopai/api-client-python/commit/77911b5618161d23bba170802f102308ba21c13e))
11
+ * **api:** OpenAPI spec update via Stainless API ([#180](https://github.com/runloopai/api-client-python/issues/180)) ([0849ddb](https://github.com/runloopai/api-client-python/commit/0849ddb9062ba0c2e3d2adfb2e2b3f2f72f4c29b))
12
+ * **api:** OpenAPI spec update via Stainless API ([#184](https://github.com/runloopai/api-client-python/issues/184)) ([7022855](https://github.com/runloopai/api-client-python/commit/702285559eac8be1082f7a0b7a8f66d034377286))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **client:** avoid OverflowError with very large retry counts ([#182](https://github.com/runloopai/api-client-python/issues/182)) ([c183989](https://github.com/runloopai/api-client-python/commit/c183989104d3e2e283a082999ca5c6b5e93a463e))
18
+
19
+
20
+ ### Chores
21
+
22
+ * add repr to PageInfo class ([#183](https://github.com/runloopai/api-client-python/issues/183)) ([29b7283](https://github.com/runloopai/api-client-python/commit/29b7283228e3fa02621d65b93efff058c4330cba))
23
+ * **internal:** add support for parsing bool response content ([#181](https://github.com/runloopai/api-client-python/issues/181)) ([e2f1795](https://github.com/runloopai/api-client-python/commit/e2f1795c158baaf93118af62d4156629aa2ac816))
24
+
25
+ ## 0.1.0-alpha.22 (2024-10-01)
26
+
27
+ Full Changelog: [v0.1.0-alpha.21...v0.1.0-alpha.22](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.21...v0.1.0-alpha.22)
28
+
29
+ ### Features
30
+
31
+ * **api:** OpenAPI spec update via Stainless API ([#174](https://github.com/runloopai/api-client-python/issues/174)) ([83ea2bc](https://github.com/runloopai/api-client-python/commit/83ea2bc3a8e222ab35f23145ba30a003574719a8))
32
+
3
33
  ## 0.1.0-alpha.21 (2024-10-01)
4
34
 
5
35
  Full Changelog: [v0.1.0-alpha.20...v0.1.0-alpha.21](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.20...v0.1.0-alpha.21)
@@ -2,9 +2,13 @@
2
2
 
3
3
  ### With Rye
4
4
 
5
- We use [Rye](https://rye.astral.sh/) to manage dependencies so we highly recommend [installing it](https://rye.astral.sh/guide/installation/) as it will automatically provision a Python environment with the expected Python version.
5
+ We use [Rye](https://rye.astral.sh/) to manage dependencies because it will automatically provision a Python environment with the expected Python version. To set it up, run:
6
6
 
7
- After installing Rye, you'll just have to run this command:
7
+ ```sh
8
+ $ ./scripts/bootstrap
9
+ ```
10
+
11
+ Or [install Rye manually](https://rye.astral.sh/guide/installation/) and run:
8
12
 
9
13
  ```sh
10
14
  $ rye sync --all-features
@@ -39,17 +43,17 @@ modify the contents of the `src/runloop_api_client/lib/` and `examples/` directo
39
43
 
40
44
  All files in the `examples/` directory are not modified by the generator and can be freely edited or added to.
41
45
 
42
- ```bash
46
+ ```py
43
47
  # add an example to examples/<your-example>.py
44
48
 
45
49
  #!/usr/bin/env -S rye run python
46
50
  …
47
51
  ```
48
52
 
49
- ```
50
- chmod +x examples/<your-example>.py
53
+ ```sh
54
+ $ chmod +x examples/<your-example>.py
51
55
  # run the example against your api
52
- ./examples/<your-example>.py
56
+ $ ./examples/<your-example>.py
53
57
  ```
54
58
 
55
59
  ## Using the repository from source
@@ -58,8 +62,8 @@ If you’d like to use the repository from source, you can either install from g
58
62
 
59
63
  To install via git:
60
64
 
61
- ```bash
62
- pip install git+ssh://git@github.com/runloopai/api-client-python.git
65
+ ```sh
66
+ $ pip install git+ssh://git@github.com/runloopai/api-client-python.git
63
67
  ```
64
68
 
65
69
  Alternatively, you can build from source and install the wheel file:
@@ -68,29 +72,29 @@ Building this package will create two files in the `dist/` directory, a `.tar.gz
68
72
 
69
73
  To create a distributable version of the library, all you have to do is run this command:
70
74
 
71
- ```bash
72
- rye build
75
+ ```sh
76
+ $ rye build
73
77
  # or
74
- python -m build
78
+ $ python -m build
75
79
  ```
76
80
 
77
81
  Then to install:
78
82
 
79
83
  ```sh
80
- pip install ./path-to-wheel-file.whl
84
+ $ pip install ./path-to-wheel-file.whl
81
85
  ```
82
86
 
83
87
  ## Running tests
84
88
 
85
89
  Most tests require you to [set up a mock server](https://github.com/stoplightio/prism) against the OpenAPI spec to run the tests.
86
90
 
87
- ```bash
91
+ ```sh
88
92
  # you will need npm installed
89
- npx prism mock path/to/your/openapi.yml
93
+ $ npx prism mock path/to/your/openapi.yml
90
94
  ```
91
95
 
92
- ```bash
93
- rye run pytest
96
+ ```sh
97
+ $ ./scripts/test
94
98
  ```
95
99
 
96
100
  ## Linting and formatting
@@ -100,14 +104,14 @@ This repository uses [ruff](https://github.com/astral-sh/ruff) and
100
104
 
101
105
  To lint:
102
106
 
103
- ```bash
104
- rye run lint
107
+ ```sh
108
+ $ ./scripts/lint
105
109
  ```
106
110
 
107
111
  To format and fix all ruff issues automatically:
108
112
 
109
- ```bash
110
- rye run format
113
+ ```sh
114
+ $ ./scripts/format
111
115
  ```
112
116
 
113
117
  ## Publishing and releases
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.1.0a21
3
+ Version: 0.1.0a23
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
@@ -349,3 +349,7 @@ print(runloop_api_client.__version__)
349
349
  ## Requirements
350
350
 
351
351
  Python 3.7 or higher.
352
+
353
+ ## Contributing
354
+
355
+ See [the contributing documentation](https://github.com/runloopai/api-client-python/tree/main/./CONTRIBUTING.md).
@@ -315,3 +315,7 @@ print(runloop_api_client.__version__)
315
315
  ## Requirements
316
316
 
317
317
  Python 3.7 or higher.
318
+
319
+ ## Contributing
320
+
321
+ See [the contributing documentation](./CONTRIBUTING.md).
@@ -65,6 +65,7 @@ Methods:
65
65
  - <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
66
  - <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
67
  - <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>
68
+ - <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>
68
69
  - <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>
69
70
  - <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
71
  - <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>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.1.0-alpha.21"
3
+ version = "0.1.0-alpha.23"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -143,6 +143,12 @@ class PageInfo:
143
143
  self.url = url
144
144
  self.params = params
145
145
 
146
+ @override
147
+ def __repr__(self) -> str:
148
+ if self.url:
149
+ return f"{self.__class__.__name__}(url={self.url})"
150
+ return f"{self.__class__.__name__}(params={self.params})"
151
+
146
152
 
147
153
  class BasePage(GenericModel, Generic[_T]):
148
154
  """
@@ -689,7 +695,8 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
689
695
  if retry_after is not None and 0 < retry_after <= 60:
690
696
  return retry_after
691
697
 
692
- nb_retries = max_retries - remaining_retries
698
+ # Also cap retry count to 1000 to avoid any potential overflows with `pow`
699
+ nb_retries = min(max_retries - remaining_retries, 1000)
693
700
 
694
701
  # Apply exponential backoff, but not more than the max.
695
702
  sleep_seconds = min(INITIAL_RETRY_DELAY * pow(2.0, nb_retries), MAX_RETRY_DELAY)
@@ -192,6 +192,9 @@ class BaseAPIResponse(Generic[R]):
192
192
  if cast_to == float:
193
193
  return cast(R, float(response.text))
194
194
 
195
+ if cast_to == bool:
196
+ return cast(R, response.text.lower() == "true")
197
+
195
198
  origin = get_origin(cast_to) or cast_to
196
199
 
197
200
  if origin == APIResponse:
@@ -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.21" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.23" # x-release-please-version
@@ -53,11 +53,11 @@ class BlueprintsResource(SyncAPIResource):
53
53
  def create(
54
54
  self,
55
55
  *,
56
+ name: str,
56
57
  code_mounts: Iterable[CodeMountParametersParam] | NotGiven = NOT_GIVEN,
57
58
  dockerfile: str | NotGiven = NOT_GIVEN,
58
59
  file_mounts: Dict[str, str] | NotGiven = NOT_GIVEN,
59
60
  launch_parameters: blueprint_create_params.LaunchParameters | NotGiven = NOT_GIVEN,
60
- name: str | NotGiven = NOT_GIVEN,
61
61
  system_setup_commands: List[str] | NotGiven = NOT_GIVEN,
62
62
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
63
63
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -73,6 +73,8 @@ class BlueprintsResource(SyncAPIResource):
73
73
  ready.
74
74
 
75
75
  Args:
76
+ name: Name of the Blueprint.
77
+
76
78
  code_mounts: A list of code mounts to be included in the Blueprint.
77
79
 
78
80
  dockerfile: Dockerfile contents to be used to build the Blueprint.
@@ -81,8 +83,6 @@ class BlueprintsResource(SyncAPIResource):
81
83
 
82
84
  launch_parameters: Parameters to configure your Devbox at launch time.
83
85
 
84
- name: Name of the Blueprint.
85
-
86
86
  system_setup_commands: A list of commands to run to set up your system.
87
87
 
88
88
  extra_headers: Send extra headers
@@ -97,11 +97,11 @@ class BlueprintsResource(SyncAPIResource):
97
97
  "/v1/blueprints",
98
98
  body=maybe_transform(
99
99
  {
100
+ "name": name,
100
101
  "code_mounts": code_mounts,
101
102
  "dockerfile": dockerfile,
102
103
  "file_mounts": file_mounts,
103
104
  "launch_parameters": launch_parameters,
104
- "name": name,
105
105
  "system_setup_commands": system_setup_commands,
106
106
  },
107
107
  blueprint_create_params.BlueprintCreateParams,
@@ -148,7 +148,7 @@ class BlueprintsResource(SyncAPIResource):
148
148
  def list(
149
149
  self,
150
150
  *,
151
- limit: str | NotGiven = NOT_GIVEN,
151
+ limit: int | NotGiven = NOT_GIVEN,
152
152
  name: str | NotGiven = NOT_GIVEN,
153
153
  starting_after: str | NotGiven = NOT_GIVEN,
154
154
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -233,11 +233,11 @@ class BlueprintsResource(SyncAPIResource):
233
233
  def preview(
234
234
  self,
235
235
  *,
236
+ name: str,
236
237
  code_mounts: Iterable[CodeMountParametersParam] | NotGiven = NOT_GIVEN,
237
238
  dockerfile: str | NotGiven = NOT_GIVEN,
238
239
  file_mounts: Dict[str, str] | NotGiven = NOT_GIVEN,
239
240
  launch_parameters: blueprint_preview_params.LaunchParameters | NotGiven = NOT_GIVEN,
240
- name: str | NotGiven = NOT_GIVEN,
241
241
  system_setup_commands: List[str] | NotGiven = NOT_GIVEN,
242
242
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
243
243
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -252,6 +252,8 @@ class BlueprintsResource(SyncAPIResource):
252
252
  resulting Dockerfile and test out your build.
253
253
 
254
254
  Args:
255
+ name: Name of the Blueprint.
256
+
255
257
  code_mounts: A list of code mounts to be included in the Blueprint.
256
258
 
257
259
  dockerfile: Dockerfile contents to be used to build the Blueprint.
@@ -260,8 +262,6 @@ class BlueprintsResource(SyncAPIResource):
260
262
 
261
263
  launch_parameters: Parameters to configure your Devbox at launch time.
262
264
 
263
- name: Name of the Blueprint.
264
-
265
265
  system_setup_commands: A list of commands to run to set up your system.
266
266
 
267
267
  extra_headers: Send extra headers
@@ -276,11 +276,11 @@ class BlueprintsResource(SyncAPIResource):
276
276
  "/v1/blueprints/preview",
277
277
  body=maybe_transform(
278
278
  {
279
+ "name": name,
279
280
  "code_mounts": code_mounts,
280
281
  "dockerfile": dockerfile,
281
282
  "file_mounts": file_mounts,
282
283
  "launch_parameters": launch_parameters,
283
- "name": name,
284
284
  "system_setup_commands": system_setup_commands,
285
285
  },
286
286
  blueprint_preview_params.BlueprintPreviewParams,
@@ -315,11 +315,11 @@ class AsyncBlueprintsResource(AsyncAPIResource):
315
315
  async def create(
316
316
  self,
317
317
  *,
318
+ name: str,
318
319
  code_mounts: Iterable[CodeMountParametersParam] | NotGiven = NOT_GIVEN,
319
320
  dockerfile: str | NotGiven = NOT_GIVEN,
320
321
  file_mounts: Dict[str, str] | NotGiven = NOT_GIVEN,
321
322
  launch_parameters: blueprint_create_params.LaunchParameters | NotGiven = NOT_GIVEN,
322
- name: str | NotGiven = NOT_GIVEN,
323
323
  system_setup_commands: List[str] | NotGiven = NOT_GIVEN,
324
324
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
325
325
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -335,6 +335,8 @@ class AsyncBlueprintsResource(AsyncAPIResource):
335
335
  ready.
336
336
 
337
337
  Args:
338
+ name: Name of the Blueprint.
339
+
338
340
  code_mounts: A list of code mounts to be included in the Blueprint.
339
341
 
340
342
  dockerfile: Dockerfile contents to be used to build the Blueprint.
@@ -343,8 +345,6 @@ class AsyncBlueprintsResource(AsyncAPIResource):
343
345
 
344
346
  launch_parameters: Parameters to configure your Devbox at launch time.
345
347
 
346
- name: Name of the Blueprint.
347
-
348
348
  system_setup_commands: A list of commands to run to set up your system.
349
349
 
350
350
  extra_headers: Send extra headers
@@ -359,11 +359,11 @@ class AsyncBlueprintsResource(AsyncAPIResource):
359
359
  "/v1/blueprints",
360
360
  body=await async_maybe_transform(
361
361
  {
362
+ "name": name,
362
363
  "code_mounts": code_mounts,
363
364
  "dockerfile": dockerfile,
364
365
  "file_mounts": file_mounts,
365
366
  "launch_parameters": launch_parameters,
366
- "name": name,
367
367
  "system_setup_commands": system_setup_commands,
368
368
  },
369
369
  blueprint_create_params.BlueprintCreateParams,
@@ -410,7 +410,7 @@ class AsyncBlueprintsResource(AsyncAPIResource):
410
410
  async def list(
411
411
  self,
412
412
  *,
413
- limit: str | NotGiven = NOT_GIVEN,
413
+ limit: int | NotGiven = NOT_GIVEN,
414
414
  name: str | NotGiven = NOT_GIVEN,
415
415
  starting_after: str | NotGiven = NOT_GIVEN,
416
416
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -495,11 +495,11 @@ class AsyncBlueprintsResource(AsyncAPIResource):
495
495
  async def preview(
496
496
  self,
497
497
  *,
498
+ name: str,
498
499
  code_mounts: Iterable[CodeMountParametersParam] | NotGiven = NOT_GIVEN,
499
500
  dockerfile: str | NotGiven = NOT_GIVEN,
500
501
  file_mounts: Dict[str, str] | NotGiven = NOT_GIVEN,
501
502
  launch_parameters: blueprint_preview_params.LaunchParameters | NotGiven = NOT_GIVEN,
502
- name: str | NotGiven = NOT_GIVEN,
503
503
  system_setup_commands: List[str] | NotGiven = NOT_GIVEN,
504
504
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
505
505
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -514,6 +514,8 @@ class AsyncBlueprintsResource(AsyncAPIResource):
514
514
  resulting Dockerfile and test out your build.
515
515
 
516
516
  Args:
517
+ name: Name of the Blueprint.
518
+
517
519
  code_mounts: A list of code mounts to be included in the Blueprint.
518
520
 
519
521
  dockerfile: Dockerfile contents to be used to build the Blueprint.
@@ -522,8 +524,6 @@ class AsyncBlueprintsResource(AsyncAPIResource):
522
524
 
523
525
  launch_parameters: Parameters to configure your Devbox at launch time.
524
526
 
525
- name: Name of the Blueprint.
526
-
527
527
  system_setup_commands: A list of commands to run to set up your system.
528
528
 
529
529
  extra_headers: Send extra headers
@@ -538,11 +538,11 @@ class AsyncBlueprintsResource(AsyncAPIResource):
538
538
  "/v1/blueprints/preview",
539
539
  body=await async_maybe_transform(
540
540
  {
541
+ "name": name,
541
542
  "code_mounts": code_mounts,
542
543
  "dockerfile": dockerfile,
543
544
  "file_mounts": file_mounts,
544
545
  "launch_parameters": launch_parameters,
545
- "name": name,
546
546
  "system_setup_commands": system_setup_commands,
547
547
  },
548
548
  blueprint_preview_params.BlueprintPreviewParams,
@@ -20,6 +20,7 @@ from ...types import (
20
20
  devbox_write_file_params,
21
21
  devbox_upload_file_params,
22
22
  devbox_execute_sync_params,
23
+ devbox_download_file_params,
23
24
  devbox_execute_async_params,
24
25
  devbox_read_file_contents_params,
25
26
  )
@@ -41,10 +42,18 @@ from .executions import (
41
42
  )
42
43
  from ..._resource import SyncAPIResource, AsyncAPIResource
43
44
  from ..._response import (
45
+ BinaryAPIResponse,
46
+ AsyncBinaryAPIResponse,
47
+ StreamedBinaryAPIResponse,
48
+ AsyncStreamedBinaryAPIResponse,
44
49
  to_raw_response_wrapper,
45
50
  to_streamed_response_wrapper,
46
51
  async_to_raw_response_wrapper,
52
+ to_custom_raw_response_wrapper,
47
53
  async_to_streamed_response_wrapper,
54
+ to_custom_streamed_response_wrapper,
55
+ async_to_custom_raw_response_wrapper,
56
+ async_to_custom_streamed_response_wrapper,
48
57
  )
49
58
  from ..._base_client import make_request_options
50
59
  from ...types.devbox_view import DevboxView
@@ -291,11 +300,49 @@ class DevboxesResource(SyncAPIResource):
291
300
  cast_to=DevboxCreateSSHKeyResponse,
292
301
  )
293
302
 
303
+ def download_file(
304
+ self,
305
+ id: str,
306
+ *,
307
+ path: str,
308
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
309
+ # The extra values given here take precedence over values defined on the client or passed to this method.
310
+ extra_headers: Headers | None = None,
311
+ extra_query: Query | None = None,
312
+ extra_body: Body | None = None,
313
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
314
+ ) -> BinaryAPIResponse:
315
+ """
316
+ Download file contents to a file at path on the Devbox.
317
+
318
+ Args:
319
+ path: The path on the devbox to read the file
320
+
321
+ extra_headers: Send extra headers
322
+
323
+ extra_query: Add additional query parameters to the request
324
+
325
+ extra_body: Add additional JSON properties to the request
326
+
327
+ timeout: Override the client-level default timeout for this request, in seconds
328
+ """
329
+ if not id:
330
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
331
+ extra_headers = {"Accept": "application/octet-stream", **(extra_headers or {})}
332
+ return self._post(
333
+ f"/v1/devboxes/{id}/download_file",
334
+ body=maybe_transform({"path": path}, devbox_download_file_params.DevboxDownloadFileParams),
335
+ options=make_request_options(
336
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
337
+ ),
338
+ cast_to=BinaryAPIResponse,
339
+ )
340
+
294
341
  def execute_async(
295
342
  self,
296
343
  id: str,
297
344
  *,
298
- command: str | NotGiven = NOT_GIVEN,
345
+ command: str,
299
346
  shell_name: str | NotGiven = NOT_GIVEN,
300
347
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
301
348
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -341,7 +388,7 @@ class DevboxesResource(SyncAPIResource):
341
388
  self,
342
389
  id: str,
343
390
  *,
344
- command: str | NotGiven = NOT_GIVEN,
391
+ command: str,
345
392
  shell_name: str | NotGiven = NOT_GIVEN,
346
393
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
347
394
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -387,7 +434,7 @@ class DevboxesResource(SyncAPIResource):
387
434
  self,
388
435
  id: str,
389
436
  *,
390
- file_path: str | NotGiven = NOT_GIVEN,
437
+ file_path: str,
391
438
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
392
439
  # The extra values given here take precedence over values defined on the client or passed to this method.
393
440
  extra_headers: Headers | None = None,
@@ -509,8 +556,8 @@ class DevboxesResource(SyncAPIResource):
509
556
  self,
510
557
  id: str,
511
558
  *,
512
- contents: str | NotGiven = NOT_GIVEN,
513
- file_path: str | NotGiven = NOT_GIVEN,
559
+ contents: str,
560
+ file_path: str,
514
561
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
515
562
  # The extra values given here take precedence over values defined on the client or passed to this method.
516
563
  extra_headers: Headers | None = None,
@@ -786,11 +833,49 @@ class AsyncDevboxesResource(AsyncAPIResource):
786
833
  cast_to=DevboxCreateSSHKeyResponse,
787
834
  )
788
835
 
836
+ async def download_file(
837
+ self,
838
+ id: str,
839
+ *,
840
+ path: str,
841
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
842
+ # The extra values given here take precedence over values defined on the client or passed to this method.
843
+ extra_headers: Headers | None = None,
844
+ extra_query: Query | None = None,
845
+ extra_body: Body | None = None,
846
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
847
+ ) -> AsyncBinaryAPIResponse:
848
+ """
849
+ Download file contents to a file at path on the Devbox.
850
+
851
+ Args:
852
+ path: The path on the devbox to read the file
853
+
854
+ extra_headers: Send extra headers
855
+
856
+ extra_query: Add additional query parameters to the request
857
+
858
+ extra_body: Add additional JSON properties to the request
859
+
860
+ timeout: Override the client-level default timeout for this request, in seconds
861
+ """
862
+ if not id:
863
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
864
+ extra_headers = {"Accept": "application/octet-stream", **(extra_headers or {})}
865
+ return await self._post(
866
+ f"/v1/devboxes/{id}/download_file",
867
+ body=await async_maybe_transform({"path": path}, devbox_download_file_params.DevboxDownloadFileParams),
868
+ options=make_request_options(
869
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
870
+ ),
871
+ cast_to=AsyncBinaryAPIResponse,
872
+ )
873
+
789
874
  async def execute_async(
790
875
  self,
791
876
  id: str,
792
877
  *,
793
- command: str | NotGiven = NOT_GIVEN,
878
+ command: str,
794
879
  shell_name: str | NotGiven = NOT_GIVEN,
795
880
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
796
881
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -836,7 +921,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
836
921
  self,
837
922
  id: str,
838
923
  *,
839
- command: str | NotGiven = NOT_GIVEN,
924
+ command: str,
840
925
  shell_name: str | NotGiven = NOT_GIVEN,
841
926
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
842
927
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -882,7 +967,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
882
967
  self,
883
968
  id: str,
884
969
  *,
885
- file_path: str | NotGiven = NOT_GIVEN,
970
+ file_path: str,
886
971
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
887
972
  # The extra values given here take precedence over values defined on the client or passed to this method.
888
973
  extra_headers: Headers | None = None,
@@ -1004,8 +1089,8 @@ class AsyncDevboxesResource(AsyncAPIResource):
1004
1089
  self,
1005
1090
  id: str,
1006
1091
  *,
1007
- contents: str | NotGiven = NOT_GIVEN,
1008
- file_path: str | NotGiven = NOT_GIVEN,
1092
+ contents: str,
1093
+ file_path: str,
1009
1094
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1010
1095
  # The extra values given here take precedence over values defined on the client or passed to this method.
1011
1096
  extra_headers: Headers | None = None,
@@ -1063,6 +1148,10 @@ class DevboxesResourceWithRawResponse:
1063
1148
  self.create_ssh_key = to_raw_response_wrapper(
1064
1149
  devboxes.create_ssh_key,
1065
1150
  )
1151
+ self.download_file = to_custom_raw_response_wrapper(
1152
+ devboxes.download_file,
1153
+ BinaryAPIResponse,
1154
+ )
1066
1155
  self.execute_async = to_raw_response_wrapper(
1067
1156
  devboxes.execute_async,
1068
1157
  )
@@ -1107,6 +1196,10 @@ class AsyncDevboxesResourceWithRawResponse:
1107
1196
  self.create_ssh_key = async_to_raw_response_wrapper(
1108
1197
  devboxes.create_ssh_key,
1109
1198
  )
1199
+ self.download_file = async_to_custom_raw_response_wrapper(
1200
+ devboxes.download_file,
1201
+ AsyncBinaryAPIResponse,
1202
+ )
1110
1203
  self.execute_async = async_to_raw_response_wrapper(
1111
1204
  devboxes.execute_async,
1112
1205
  )
@@ -1151,6 +1244,10 @@ class DevboxesResourceWithStreamingResponse:
1151
1244
  self.create_ssh_key = to_streamed_response_wrapper(
1152
1245
  devboxes.create_ssh_key,
1153
1246
  )
1247
+ self.download_file = to_custom_streamed_response_wrapper(
1248
+ devboxes.download_file,
1249
+ StreamedBinaryAPIResponse,
1250
+ )
1154
1251
  self.execute_async = to_streamed_response_wrapper(
1155
1252
  devboxes.execute_async,
1156
1253
  )
@@ -1195,6 +1292,10 @@ class AsyncDevboxesResourceWithStreamingResponse:
1195
1292
  self.create_ssh_key = async_to_streamed_response_wrapper(
1196
1293
  devboxes.create_ssh_key,
1197
1294
  )
1295
+ self.download_file = async_to_custom_streamed_response_wrapper(
1296
+ devboxes.download_file,
1297
+ AsyncStreamedBinaryAPIResponse,
1298
+ )
1198
1299
  self.execute_async = async_to_streamed_response_wrapper(
1199
1300
  devboxes.execute_async,
1200
1301
  )