runloop-api-client 0.1.0a11__tar.gz → 0.1.0a12__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 (120) hide show
  1. runloop_api_client-0.1.0a12/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/CHANGELOG.md +24 -0
  3. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/PKG-INFO +2 -2
  4. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/README.md +1 -1
  5. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/api.md +2 -0
  6. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/pyproject.toml +5 -3
  7. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_base_client.py +2 -2
  8. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_constants.py +3 -3
  9. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_version.py +1 -1
  10. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/devboxes/devboxes.py +98 -1
  11. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/functions/invocations.py +2 -2
  12. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/__init__.py +1 -0
  13. runloop_api_client-0.1.0a12/src/runloop_api_client/types/devbox_upload_file_params.py +16 -0
  14. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/functions/invocation_list_params.py +1 -1
  15. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/functions/test_invocations.py +2 -2
  16. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_devboxes.py +96 -2
  17. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_client.py +26 -26
  18. runloop_api_client-0.1.0a11/.release-please-manifest.json +0 -3
  19. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/.gitignore +0 -0
  20. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/CONTRIBUTING.md +0 -0
  21. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/LICENSE +0 -0
  22. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/SECURITY.md +0 -0
  23. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/bin/check-release-environment +0 -0
  24. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/bin/publish-pypi +0 -0
  25. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/examples/.keep +0 -0
  26. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/mypy.ini +0 -0
  27. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/noxfile.py +0 -0
  28. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/release-please-config.json +0 -0
  29. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/requirements-dev.lock +0 -0
  30. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/requirements.lock +0 -0
  31. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop/lib/.keep +0 -0
  32. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/__init__.py +0 -0
  33. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_client.py +0 -0
  34. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_compat.py +0 -0
  35. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_exceptions.py +0 -0
  36. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_files.py +0 -0
  37. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_models.py +0 -0
  38. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_qs.py +0 -0
  39. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_resource.py +0 -0
  40. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_response.py +0 -0
  41. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_streaming.py +0 -0
  42. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_types.py +0 -0
  43. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/__init__.py +0 -0
  44. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_logs.py +0 -0
  45. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_proxy.py +0 -0
  46. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_reflection.py +0 -0
  47. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_streams.py +0 -0
  48. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_sync.py +0 -0
  49. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_transform.py +0 -0
  50. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_typing.py +0 -0
  51. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_utils.py +0 -0
  52. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/lib/.keep +0 -0
  53. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/py.typed +0 -0
  54. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/__init__.py +0 -0
  55. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/blueprints.py +0 -0
  56. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  57. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  58. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/functions/__init__.py +0 -0
  59. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/functions/functions.py +0 -0
  60. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/projects/__init__.py +0 -0
  61. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/projects/logs.py +0 -0
  62. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/projects/projects.py +0 -0
  63. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  64. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  65. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  66. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  67. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  68. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  69. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  70. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  71. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_view.py +0 -0
  72. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/code_mount_parameters.py +0 -0
  73. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/code_mount_parameters_param.py +0 -0
  74. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  75. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  76. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  77. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  78. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  79. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  80. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  81. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_read_file_params.py +0 -0
  82. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_view.py +0 -0
  83. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_write_file_params.py +0 -0
  84. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  85. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  86. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/function_invoke_async_params.py +0 -0
  87. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/function_invoke_sync_params.py +0 -0
  88. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/function_list_view.py +0 -0
  89. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/functions/__init__.py +0 -0
  90. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/functions/function_invocation_list_view.py +0 -0
  91. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/project_list_view.py +0 -0
  92. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/projects/__init__.py +0 -0
  93. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/resource_size.py +0 -0
  94. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/shared/__init__.py +0 -0
  95. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/shared/function_invocation_execution_detail_view.py +0 -0
  96. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/shared/project_logs_view.py +0 -0
  97. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/__init__.py +0 -0
  98. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/__init__.py +0 -0
  99. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/devboxes/__init__.py +0 -0
  100. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/devboxes/test_logs.py +0 -0
  101. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/functions/__init__.py +0 -0
  102. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/projects/__init__.py +0 -0
  103. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/projects/test_logs.py +0 -0
  104. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_blueprints.py +28 -28
  105. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_functions.py +0 -0
  106. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_projects.py +0 -0
  107. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/conftest.py +0 -0
  108. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/sample_file.txt +0 -0
  109. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_deepcopy.py +0 -0
  110. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_extract_files.py +0 -0
  111. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_files.py +0 -0
  112. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_models.py +0 -0
  113. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_qs.py +0 -0
  114. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_required_args.py +0 -0
  115. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_response.py +0 -0
  116. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_streaming.py +0 -0
  117. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_transform.py +0 -0
  118. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_utils/test_proxy.py +0 -0
  119. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_utils/test_typing.py +0 -0
  120. {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.12"
3
+ }
@@ -1,5 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.12 (2024-08-15)
4
+
5
+ Full Changelog: [v0.1.0-alpha.11...v0.1.0-alpha.12](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.11...v0.1.0-alpha.12)
6
+
7
+ ### Features
8
+
9
+ * **api:** OpenAPI spec update via Stainless API ([#83](https://github.com/runloopai/api-client-python/issues/83)) ([df99a13](https://github.com/runloopai/api-client-python/commit/df99a130b3dbbba6b122a65bc9c822b6d589ca26))
10
+ * **api:** OpenAPI spec update via Stainless API ([#88](https://github.com/runloopai/api-client-python/issues/88)) ([a8882d4](https://github.com/runloopai/api-client-python/commit/a8882d440edc71f2922e2fa2dff3d0f0b080eb35))
11
+ * **api:** OpenAPI spec update via Stainless API ([#89](https://github.com/runloopai/api-client-python/issues/89)) ([a8b5d6a](https://github.com/runloopai/api-client-python/commit/a8b5d6a94d38bc593b8ca48014dcba17c783d297))
12
+ * **api:** OpenAPI spec update via Stainless API ([#90](https://github.com/runloopai/api-client-python/issues/90)) ([dc4b13c](https://github.com/runloopai/api-client-python/commit/dc4b13cd4d4fa17f203626e88187f8784ecbac6f))
13
+ * **api:** OpenAPI spec update via Stainless API ([#93](https://github.com/runloopai/api-client-python/issues/93)) ([d6ba90f](https://github.com/runloopai/api-client-python/commit/d6ba90fa6af62f376578aa14a5b50e759fc30898))
14
+ * **api:** update via SDK Studio ([#91](https://github.com/runloopai/api-client-python/issues/91)) ([612ce32](https://github.com/runloopai/api-client-python/commit/612ce3279298c1158ce963471cd6d53b4a822718))
15
+
16
+
17
+ ### Chores
18
+
19
+ * **ci:** bump prism mock server version ([#85](https://github.com/runloopai/api-client-python/issues/85)) ([ff2c8dd](https://github.com/runloopai/api-client-python/commit/ff2c8ddeaec8bfaa9ebd71886126f02ede9bb2db))
20
+ * **ci:** minor changes ([#84](https://github.com/runloopai/api-client-python/issues/84)) ([32f527f](https://github.com/runloopai/api-client-python/commit/32f527f1802bfc63c2156ad7eefd7773a007f501))
21
+ * **examples:** minor formatting changes ([#87](https://github.com/runloopai/api-client-python/issues/87)) ([64c9bd5](https://github.com/runloopai/api-client-python/commit/64c9bd5c499d56772028679aa974eac5e78c3b15))
22
+ * **internal:** codegen related update ([#92](https://github.com/runloopai/api-client-python/issues/92)) ([0c34d9a](https://github.com/runloopai/api-client-python/commit/0c34d9a7a296d0e0fd4626b6f9629ff737e61590))
23
+ * **internal:** ensure package is importable in lint cmd ([#86](https://github.com/runloopai/api-client-python/issues/86)) ([ecf2a95](https://github.com/runloopai/api-client-python/commit/ecf2a95f550db94d2d16ea3774bd9c9bea42b3a4))
24
+ * **internal:** remove deprecated ruff config ([#81](https://github.com/runloopai/api-client-python/issues/81)) ([2916f9f](https://github.com/runloopai/api-client-python/commit/2916f9fdc0b19758767e5c93875e14cc3bce4049))
25
+ * **internal:** use different 32bit detection method ([#94](https://github.com/runloopai/api-client-python/issues/94)) ([cf748e3](https://github.com/runloopai/api-client-python/commit/cf748e337f3e1f443be098c1b0e72e3c321815c6))
26
+
3
27
  ## 0.1.0-alpha.11 (2024-08-07)
4
28
 
5
29
  Full Changelog: [v0.1.0-alpha.10...v0.1.0-alpha.11](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.10...v0.1.0-alpha.11)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.1.0a11
3
+ Version: 0.1.0a12
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
@@ -152,7 +152,7 @@ Error codes are as followed:
152
152
 
153
153
  ### Retries
154
154
 
155
- Certain errors are automatically retried 2 times by default, with a short exponential backoff.
155
+ Certain errors are automatically retried 0 times by default, with a short exponential backoff.
156
156
  Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,
157
157
  429 Rate Limit, and >=500 Internal errors are all retried by default.
158
158
 
@@ -118,7 +118,7 @@ Error codes are as followed:
118
118
 
119
119
  ### Retries
120
120
 
121
- Certain errors are automatically retried 2 times by default, with a short exponential backoff.
121
+ Certain errors are automatically retried 0 times by default, with a short exponential backoff.
122
122
  Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,
123
123
  429 Rate Limit, and >=500 Internal errors are all retried by default.
124
124
 
@@ -53,6 +53,7 @@ from runloop_api_client.types import (
53
53
  DevboxListView,
54
54
  DevboxView,
55
55
  DevboxReadFileContentsResponse,
56
+ DevboxUploadFileResponse,
56
57
  )
57
58
  ```
58
59
 
@@ -65,6 +66,7 @@ Methods:
65
66
  - <code title="post /v1/devboxes/{id}/read_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">read_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_read_file_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
66
67
  - <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>
67
68
  - <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>
69
+ - <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>
68
70
  - <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>
69
71
 
70
72
  ## Logs
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.1.0-alpha.11"
3
+ version = "0.1.0-alpha.12"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -76,10 +76,13 @@ format = { chain = [
76
76
  "lint" = { chain = [
77
77
  "check:ruff",
78
78
  "typecheck",
79
+ "check:importable",
79
80
  ]}
80
81
  "check:ruff" = "ruff check ."
81
82
  "fix:ruff" = "ruff check --fix ."
82
83
 
84
+ "check:importable" = "python -c 'import runloop_api_client'"
85
+
83
86
  typecheck = { chain = [
84
87
  "typecheck:pyright",
85
88
  "typecheck:mypy"
@@ -195,7 +198,6 @@ unfixable = [
195
198
  "T201",
196
199
  "T203",
197
200
  ]
198
- ignore-init-module-imports = true
199
201
 
200
202
  [tool.ruff.lint.flake8-tidy-imports.banned-api]
201
203
  "functools.lru_cache".msg = "This function does not retain type information for the wrapped function's arguments; The `lru_cache` function from `_utils` should be used instead"
@@ -207,7 +209,7 @@ combine-as-imports = true
207
209
  extra-standard-library = ["typing_extensions"]
208
210
  known-first-party = ["runloop_api_client", "tests"]
209
211
 
210
- [tool.ruff.per-file-ignores]
212
+ [tool.ruff.lint.per-file-ignores]
211
213
  "bin/**.py" = ["T201", "T203"]
212
214
  "scripts/**.py" = ["T201", "T203"]
213
215
  "tests/**.py" = ["T201", "T203"]
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import sys
3
4
  import json
4
5
  import time
5
6
  import uuid
@@ -1982,7 +1983,6 @@ def get_python_version() -> str:
1982
1983
 
1983
1984
  def get_architecture() -> Arch:
1984
1985
  try:
1985
- python_bitness, _ = platform.architecture()
1986
1986
  machine = platform.machine().lower()
1987
1987
  except Exception:
1988
1988
  return "unknown"
@@ -1998,7 +1998,7 @@ def get_architecture() -> Arch:
1998
1998
  return "x64"
1999
1999
 
2000
2000
  # TODO: untested
2001
- if python_bitness == "32bit":
2001
+ if sys.maxsize <= 2**32:
2002
2002
  return "x32"
2003
2003
 
2004
2004
  if machine:
@@ -7,8 +7,8 @@ OVERRIDE_CAST_TO_HEADER = "____stainless_override_cast_to"
7
7
 
8
8
  # default timeout is 1 minute
9
9
  DEFAULT_TIMEOUT = httpx.Timeout(timeout=60.0, connect=5.0)
10
- DEFAULT_MAX_RETRIES = 2
10
+ DEFAULT_MAX_RETRIES = 0
11
11
  DEFAULT_CONNECTION_LIMITS = httpx.Limits(max_connections=100, max_keepalive_connections=20)
12
12
 
13
- INITIAL_RETRY_DELAY = 0.5
14
- MAX_RETRY_DELAY = 8.0
13
+ INITIAL_RETRY_DELAY = 1.0
14
+ MAX_RETRY_DELAY = 5.0
@@ -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.11" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.12" # x-release-please-version
@@ -19,10 +19,11 @@ from ...types import (
19
19
  devbox_create_params,
20
20
  devbox_read_file_params,
21
21
  devbox_write_file_params,
22
+ devbox_upload_file_params,
22
23
  devbox_execute_sync_params,
23
24
  devbox_read_file_contents_params,
24
25
  )
25
- from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
26
+ from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven, FileTypes
26
27
  from ..._utils import (
27
28
  maybe_transform,
28
29
  async_maybe_transform,
@@ -365,6 +366,48 @@ class DevboxesResource(SyncAPIResource):
365
366
  cast_to=DevboxView,
366
367
  )
367
368
 
369
+ def upload_file(
370
+ self,
371
+ id: str,
372
+ *,
373
+ file_input_stream: FileTypes | NotGiven = NOT_GIVEN,
374
+ path: str | NotGiven = NOT_GIVEN,
375
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
376
+ # The extra values given here take precedence over values defined on the client or passed to this method.
377
+ extra_headers: Headers | None = None,
378
+ extra_query: Query | None = None,
379
+ extra_body: Body | None = None,
380
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
381
+ ) -> object:
382
+ """
383
+ Upload file contents to a file at path on the Devbox.
384
+
385
+ Args:
386
+ extra_headers: Send extra headers
387
+
388
+ extra_query: Add additional query parameters to the request
389
+
390
+ extra_body: Add additional JSON properties to the request
391
+
392
+ timeout: Override the client-level default timeout for this request, in seconds
393
+ """
394
+ if not id:
395
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
396
+ return self._post(
397
+ f"/v1/devboxes/{id}/upload_file",
398
+ body=maybe_transform(
399
+ {
400
+ "file_input_stream": file_input_stream,
401
+ "path": path,
402
+ },
403
+ devbox_upload_file_params.DevboxUploadFileParams,
404
+ ),
405
+ options=make_request_options(
406
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
407
+ ),
408
+ cast_to=object,
409
+ )
410
+
368
411
  def write_file(
369
412
  self,
370
413
  id: str,
@@ -734,6 +777,48 @@ class AsyncDevboxesResource(AsyncAPIResource):
734
777
  cast_to=DevboxView,
735
778
  )
736
779
 
780
+ async def upload_file(
781
+ self,
782
+ id: str,
783
+ *,
784
+ file_input_stream: FileTypes | NotGiven = NOT_GIVEN,
785
+ path: str | NotGiven = NOT_GIVEN,
786
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
787
+ # The extra values given here take precedence over values defined on the client or passed to this method.
788
+ extra_headers: Headers | None = None,
789
+ extra_query: Query | None = None,
790
+ extra_body: Body | None = None,
791
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
792
+ ) -> object:
793
+ """
794
+ Upload file contents to a file at path on the Devbox.
795
+
796
+ Args:
797
+ extra_headers: Send extra headers
798
+
799
+ extra_query: Add additional query parameters to the request
800
+
801
+ extra_body: Add additional JSON properties to the request
802
+
803
+ timeout: Override the client-level default timeout for this request, in seconds
804
+ """
805
+ if not id:
806
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
807
+ return await self._post(
808
+ f"/v1/devboxes/{id}/upload_file",
809
+ body=await async_maybe_transform(
810
+ {
811
+ "file_input_stream": file_input_stream,
812
+ "path": path,
813
+ },
814
+ devbox_upload_file_params.DevboxUploadFileParams,
815
+ ),
816
+ options=make_request_options(
817
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
818
+ ),
819
+ cast_to=object,
820
+ )
821
+
737
822
  async def write_file(
738
823
  self,
739
824
  id: str,
@@ -806,6 +891,9 @@ class DevboxesResourceWithRawResponse:
806
891
  self.shutdown = to_raw_response_wrapper(
807
892
  devboxes.shutdown,
808
893
  )
894
+ self.upload_file = to_raw_response_wrapper(
895
+ devboxes.upload_file,
896
+ )
809
897
  self.write_file = to_raw_response_wrapper(
810
898
  devboxes.write_file,
811
899
  )
@@ -840,6 +928,9 @@ class AsyncDevboxesResourceWithRawResponse:
840
928
  self.shutdown = async_to_raw_response_wrapper(
841
929
  devboxes.shutdown,
842
930
  )
931
+ self.upload_file = async_to_raw_response_wrapper(
932
+ devboxes.upload_file,
933
+ )
843
934
  self.write_file = async_to_raw_response_wrapper(
844
935
  devboxes.write_file,
845
936
  )
@@ -874,6 +965,9 @@ class DevboxesResourceWithStreamingResponse:
874
965
  self.shutdown = to_streamed_response_wrapper(
875
966
  devboxes.shutdown,
876
967
  )
968
+ self.upload_file = to_streamed_response_wrapper(
969
+ devboxes.upload_file,
970
+ )
877
971
  self.write_file = to_streamed_response_wrapper(
878
972
  devboxes.write_file,
879
973
  )
@@ -908,6 +1002,9 @@ class AsyncDevboxesResourceWithStreamingResponse:
908
1002
  self.shutdown = async_to_streamed_response_wrapper(
909
1003
  devboxes.shutdown,
910
1004
  )
1005
+ self.upload_file = async_to_streamed_response_wrapper(
1006
+ devboxes.upload_file,
1007
+ )
911
1008
  self.write_file = async_to_streamed_response_wrapper(
912
1009
  devboxes.write_file,
913
1010
  )
@@ -72,7 +72,7 @@ class InvocationsResource(SyncAPIResource):
72
72
  def list(
73
73
  self,
74
74
  *,
75
- limit: str | NotGiven = NOT_GIVEN,
75
+ limit: int | NotGiven = NOT_GIVEN,
76
76
  starting_after: str | NotGiven = NOT_GIVEN,
77
77
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
78
78
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -197,7 +197,7 @@ class AsyncInvocationsResource(AsyncAPIResource):
197
197
  async def list(
198
198
  self,
199
199
  *,
200
- limit: str | NotGiven = NOT_GIVEN,
200
+ limit: int | NotGiven = NOT_GIVEN,
201
201
  starting_after: str | NotGiven = NOT_GIVEN,
202
202
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
203
203
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -23,6 +23,7 @@ from .blueprint_create_params import BlueprintCreateParams as BlueprintCreatePar
23
23
  from .devbox_read_file_params import DevboxReadFileParams as DevboxReadFileParams
24
24
  from .blueprint_preview_params import BlueprintPreviewParams as BlueprintPreviewParams
25
25
  from .devbox_write_file_params import DevboxWriteFileParams as DevboxWriteFileParams
26
+ from .devbox_upload_file_params import DevboxUploadFileParams as DevboxUploadFileParams
26
27
  from .blueprint_build_parameters import BlueprintBuildParameters as BlueprintBuildParameters
27
28
  from .devbox_execute_sync_params import DevboxExecuteSyncParams as DevboxExecuteSyncParams
28
29
  from .code_mount_parameters_param import CodeMountParametersParam as CodeMountParametersParam
@@ -0,0 +1,16 @@
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 Annotated, TypedDict
6
+
7
+ from .._types import FileTypes
8
+ from .._utils import PropertyInfo
9
+
10
+ __all__ = ["DevboxUploadFileParams"]
11
+
12
+
13
+ class DevboxUploadFileParams(TypedDict, total=False):
14
+ file_input_stream: Annotated[FileTypes, PropertyInfo(alias="fileInputStream")]
15
+
16
+ path: str
@@ -8,7 +8,7 @@ __all__ = ["InvocationListParams"]
8
8
 
9
9
 
10
10
  class InvocationListParams(TypedDict, total=False):
11
- limit: str
11
+ limit: int
12
12
  """Page Limit"""
13
13
 
14
14
  starting_after: str
@@ -64,7 +64,7 @@ class TestInvocations:
64
64
  @parametrize
65
65
  def test_method_list_with_all_params(self, client: Runloop) -> None:
66
66
  invocation = client.functions.invocations.list(
67
- limit="limit",
67
+ limit=0,
68
68
  starting_after="starting_after",
69
69
  )
70
70
  assert_matches_type(FunctionInvocationListView, invocation, path=["response"])
@@ -177,7 +177,7 @@ class TestAsyncInvocations:
177
177
  @parametrize
178
178
  async def test_method_list_with_all_params(self, async_client: AsyncRunloop) -> None:
179
179
  invocation = await async_client.functions.invocations.list(
180
- limit="limit",
180
+ limit=0,
181
181
  starting_after="starting_after",
182
182
  )
183
183
  assert_matches_type(FunctionInvocationListView, invocation, path=["response"])
@@ -35,9 +35,9 @@ class TestDevboxes:
35
35
  environment_variables={"foo": "string"},
36
36
  file_mounts={"foo": "string"},
37
37
  launch_parameters={
38
+ "keep_alive_time_seconds": 0,
38
39
  "launch_commands": ["string", "string", "string"],
39
40
  "resource_size_request": "MINI",
40
- "keep_alive_time_seconds": 0,
41
41
  },
42
42
  name="name",
43
43
  setup_commands=["string", "string", "string"],
@@ -312,6 +312,53 @@ class TestDevboxes:
312
312
  "",
313
313
  )
314
314
 
315
+ @parametrize
316
+ def test_method_upload_file(self, client: Runloop) -> None:
317
+ devbox = client.devboxes.upload_file(
318
+ id="id",
319
+ )
320
+ assert_matches_type(object, devbox, path=["response"])
321
+
322
+ @parametrize
323
+ def test_method_upload_file_with_all_params(self, client: Runloop) -> None:
324
+ devbox = client.devboxes.upload_file(
325
+ id="id",
326
+ file_input_stream=b"raw file contents",
327
+ path="path",
328
+ )
329
+ assert_matches_type(object, devbox, path=["response"])
330
+
331
+ @parametrize
332
+ def test_raw_response_upload_file(self, client: Runloop) -> None:
333
+ response = client.devboxes.with_raw_response.upload_file(
334
+ id="id",
335
+ )
336
+
337
+ assert response.is_closed is True
338
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
339
+ devbox = response.parse()
340
+ assert_matches_type(object, devbox, path=["response"])
341
+
342
+ @parametrize
343
+ def test_streaming_response_upload_file(self, client: Runloop) -> None:
344
+ with client.devboxes.with_streaming_response.upload_file(
345
+ id="id",
346
+ ) as response:
347
+ assert not response.is_closed
348
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
349
+
350
+ devbox = response.parse()
351
+ assert_matches_type(object, devbox, path=["response"])
352
+
353
+ assert cast(Any, response.is_closed) is True
354
+
355
+ @parametrize
356
+ def test_path_params_upload_file(self, client: Runloop) -> None:
357
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
358
+ client.devboxes.with_raw_response.upload_file(
359
+ id="",
360
+ )
361
+
315
362
  @parametrize
316
363
  def test_method_write_file(self, client: Runloop) -> None:
317
364
  devbox = client.devboxes.write_file(
@@ -377,9 +424,9 @@ class TestAsyncDevboxes:
377
424
  environment_variables={"foo": "string"},
378
425
  file_mounts={"foo": "string"},
379
426
  launch_parameters={
427
+ "keep_alive_time_seconds": 0,
380
428
  "launch_commands": ["string", "string", "string"],
381
429
  "resource_size_request": "MINI",
382
- "keep_alive_time_seconds": 0,
383
430
  },
384
431
  name="name",
385
432
  setup_commands=["string", "string", "string"],
@@ -654,6 +701,53 @@ class TestAsyncDevboxes:
654
701
  "",
655
702
  )
656
703
 
704
+ @parametrize
705
+ async def test_method_upload_file(self, async_client: AsyncRunloop) -> None:
706
+ devbox = await async_client.devboxes.upload_file(
707
+ id="id",
708
+ )
709
+ assert_matches_type(object, devbox, path=["response"])
710
+
711
+ @parametrize
712
+ async def test_method_upload_file_with_all_params(self, async_client: AsyncRunloop) -> None:
713
+ devbox = await async_client.devboxes.upload_file(
714
+ id="id",
715
+ file_input_stream=b"raw file contents",
716
+ path="path",
717
+ )
718
+ assert_matches_type(object, devbox, path=["response"])
719
+
720
+ @parametrize
721
+ async def test_raw_response_upload_file(self, async_client: AsyncRunloop) -> None:
722
+ response = await async_client.devboxes.with_raw_response.upload_file(
723
+ id="id",
724
+ )
725
+
726
+ assert response.is_closed is True
727
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
728
+ devbox = await response.parse()
729
+ assert_matches_type(object, devbox, path=["response"])
730
+
731
+ @parametrize
732
+ async def test_streaming_response_upload_file(self, async_client: AsyncRunloop) -> None:
733
+ async with async_client.devboxes.with_streaming_response.upload_file(
734
+ id="id",
735
+ ) as response:
736
+ assert not response.is_closed
737
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
738
+
739
+ devbox = await response.parse()
740
+ assert_matches_type(object, devbox, path=["response"])
741
+
742
+ assert cast(Any, response.is_closed) is True
743
+
744
+ @parametrize
745
+ async def test_path_params_upload_file(self, async_client: AsyncRunloop) -> None:
746
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
747
+ await async_client.devboxes.with_raw_response.upload_file(
748
+ id="",
749
+ )
750
+
657
751
  @parametrize
658
752
  async def test_method_write_file(self, async_client: AsyncRunloop) -> None:
659
753
  devbox = await async_client.devboxes.write_file(
@@ -87,7 +87,7 @@ class TestRunloop:
87
87
  # options that have a default are overridden correctly
88
88
  copied = self.client.copy(max_retries=7)
89
89
  assert copied.max_retries == 7
90
- assert self.client.max_retries == 2
90
+ assert self.client.max_retries == 0
91
91
 
92
92
  copied2 = copied.copy(max_retries=6)
93
93
  assert copied2.max_retries == 6
@@ -706,20 +706,20 @@ class TestRunloop:
706
706
  "remaining_retries,retry_after,timeout",
707
707
  [
708
708
  [3, "20", 20],
709
- [3, "0", 0.5],
710
- [3, "-10", 0.5],
709
+ [3, "0", 1],
710
+ [3, "-10", 1],
711
711
  [3, "60", 60],
712
- [3, "61", 0.5],
712
+ [3, "61", 1],
713
713
  [3, "Fri, 29 Sep 2023 16:26:57 GMT", 20],
714
- [3, "Fri, 29 Sep 2023 16:26:37 GMT", 0.5],
715
- [3, "Fri, 29 Sep 2023 16:26:27 GMT", 0.5],
714
+ [3, "Fri, 29 Sep 2023 16:26:37 GMT", 1],
715
+ [3, "Fri, 29 Sep 2023 16:26:27 GMT", 1],
716
716
  [3, "Fri, 29 Sep 2023 16:27:37 GMT", 60],
717
- [3, "Fri, 29 Sep 2023 16:27:38 GMT", 0.5],
718
- [3, "99999999999999999999999999999999999", 0.5],
719
- [3, "Zun, 29 Sep 2023 16:26:27 GMT", 0.5],
720
- [3, "", 0.5],
721
- [2, "", 0.5 * 2.0],
722
- [1, "", 0.5 * 4.0],
717
+ [3, "Fri, 29 Sep 2023 16:27:38 GMT", 1],
718
+ [3, "99999999999999999999999999999999999", 1],
719
+ [3, "Zun, 29 Sep 2023 16:26:27 GMT", 1],
720
+ [3, "", 1],
721
+ [2, "", 1 * 2.0],
722
+ [1, "", 1 * 4.0],
723
723
  ],
724
724
  )
725
725
  @mock.patch("time.time", mock.MagicMock(return_value=1696004797))
@@ -729,7 +729,7 @@ class TestRunloop:
729
729
  headers = httpx.Headers({"retry-after": retry_after})
730
730
  options = FinalRequestOptions(method="get", url="/foo", max_retries=3)
731
731
  calculated = client._calculate_retry_timeout(remaining_retries, options, headers)
732
- assert calculated == pytest.approx(timeout, 0.5 * 0.875) # pyright: ignore[reportUnknownMemberType]
732
+ assert calculated == pytest.approx(timeout, 1 * 0.875) # pyright: ignore[reportUnknownMemberType]
733
733
 
734
734
  @mock.patch("runloop_api_client._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
735
735
  @pytest.mark.respx(base_url=base_url)
@@ -820,7 +820,7 @@ class TestAsyncRunloop:
820
820
  # options that have a default are overridden correctly
821
821
  copied = self.client.copy(max_retries=7)
822
822
  assert copied.max_retries == 7
823
- assert self.client.max_retries == 2
823
+ assert self.client.max_retries == 0
824
824
 
825
825
  copied2 = copied.copy(max_retries=6)
826
826
  assert copied2.max_retries == 6
@@ -1442,20 +1442,20 @@ class TestAsyncRunloop:
1442
1442
  "remaining_retries,retry_after,timeout",
1443
1443
  [
1444
1444
  [3, "20", 20],
1445
- [3, "0", 0.5],
1446
- [3, "-10", 0.5],
1445
+ [3, "0", 1],
1446
+ [3, "-10", 1],
1447
1447
  [3, "60", 60],
1448
- [3, "61", 0.5],
1448
+ [3, "61", 1],
1449
1449
  [3, "Fri, 29 Sep 2023 16:26:57 GMT", 20],
1450
- [3, "Fri, 29 Sep 2023 16:26:37 GMT", 0.5],
1451
- [3, "Fri, 29 Sep 2023 16:26:27 GMT", 0.5],
1450
+ [3, "Fri, 29 Sep 2023 16:26:37 GMT", 1],
1451
+ [3, "Fri, 29 Sep 2023 16:26:27 GMT", 1],
1452
1452
  [3, "Fri, 29 Sep 2023 16:27:37 GMT", 60],
1453
- [3, "Fri, 29 Sep 2023 16:27:38 GMT", 0.5],
1454
- [3, "99999999999999999999999999999999999", 0.5],
1455
- [3, "Zun, 29 Sep 2023 16:26:27 GMT", 0.5],
1456
- [3, "", 0.5],
1457
- [2, "", 0.5 * 2.0],
1458
- [1, "", 0.5 * 4.0],
1453
+ [3, "Fri, 29 Sep 2023 16:27:38 GMT", 1],
1454
+ [3, "99999999999999999999999999999999999", 1],
1455
+ [3, "Zun, 29 Sep 2023 16:26:27 GMT", 1],
1456
+ [3, "", 1],
1457
+ [2, "", 1 * 2.0],
1458
+ [1, "", 1 * 4.0],
1459
1459
  ],
1460
1460
  )
1461
1461
  @mock.patch("time.time", mock.MagicMock(return_value=1696004797))
@@ -1466,7 +1466,7 @@ class TestAsyncRunloop:
1466
1466
  headers = httpx.Headers({"retry-after": retry_after})
1467
1467
  options = FinalRequestOptions(method="get", url="/foo", max_retries=3)
1468
1468
  calculated = client._calculate_retry_timeout(remaining_retries, options, headers)
1469
- assert calculated == pytest.approx(timeout, 0.5 * 0.875) # pyright: ignore[reportUnknownMemberType]
1469
+ assert calculated == pytest.approx(timeout, 1 * 0.875) # pyright: ignore[reportUnknownMemberType]
1470
1470
 
1471
1471
  @mock.patch("runloop_api_client._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
1472
1472
  @pytest.mark.respx(base_url=base_url)
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.1.0-alpha.11"
3
- }
@@ -32,30 +32,30 @@ class TestBlueprints:
32
32
  blueprint = client.blueprints.create(
33
33
  code_mounts=[
34
34
  {
35
+ "token": "token",
36
+ "install_command": "install_command",
35
37
  "repo_name": "repo_name",
36
38
  "repo_owner": "repo_owner",
37
- "install_command": "install_command",
38
- "token": "token",
39
39
  },
40
40
  {
41
+ "token": "token",
42
+ "install_command": "install_command",
41
43
  "repo_name": "repo_name",
42
44
  "repo_owner": "repo_owner",
43
- "install_command": "install_command",
44
- "token": "token",
45
45
  },
46
46
  {
47
+ "token": "token",
48
+ "install_command": "install_command",
47
49
  "repo_name": "repo_name",
48
50
  "repo_owner": "repo_owner",
49
- "install_command": "install_command",
50
- "token": "token",
51
51
  },
52
52
  ],
53
53
  dockerfile="dockerfile",
54
54
  file_mounts={"foo": "string"},
55
55
  launch_parameters={
56
+ "keep_alive_time_seconds": 0,
56
57
  "launch_commands": ["string", "string", "string"],
57
58
  "resource_size_request": "MINI",
58
- "keep_alive_time_seconds": 0,
59
59
  },
60
60
  name="name",
61
61
  system_setup_commands=["string", "string", "string"],
@@ -202,30 +202,30 @@ class TestBlueprints:
202
202
  blueprint = client.blueprints.preview(
203
203
  code_mounts=[
204
204
  {
205
+ "token": "token",
206
+ "install_command": "install_command",
205
207
  "repo_name": "repo_name",
206
208
  "repo_owner": "repo_owner",
207
- "install_command": "install_command",
208
- "token": "token",
209
209
  },
210
210
  {
211
+ "token": "token",
212
+ "install_command": "install_command",
211
213
  "repo_name": "repo_name",
212
214
  "repo_owner": "repo_owner",
213
- "install_command": "install_command",
214
- "token": "token",
215
215
  },
216
216
  {
217
+ "token": "token",
218
+ "install_command": "install_command",
217
219
  "repo_name": "repo_name",
218
220
  "repo_owner": "repo_owner",
219
- "install_command": "install_command",
220
- "token": "token",
221
221
  },
222
222
  ],
223
223
  dockerfile="dockerfile",
224
224
  file_mounts={"foo": "string"},
225
225
  launch_parameters={
226
+ "keep_alive_time_seconds": 0,
226
227
  "launch_commands": ["string", "string", "string"],
227
228
  "resource_size_request": "MINI",
228
- "keep_alive_time_seconds": 0,
229
229
  },
230
230
  name="name",
231
231
  system_setup_commands=["string", "string", "string"],
@@ -266,30 +266,30 @@ class TestAsyncBlueprints:
266
266
  blueprint = await async_client.blueprints.create(
267
267
  code_mounts=[
268
268
  {
269
+ "token": "token",
270
+ "install_command": "install_command",
269
271
  "repo_name": "repo_name",
270
272
  "repo_owner": "repo_owner",
271
- "install_command": "install_command",
272
- "token": "token",
273
273
  },
274
274
  {
275
+ "token": "token",
276
+ "install_command": "install_command",
275
277
  "repo_name": "repo_name",
276
278
  "repo_owner": "repo_owner",
277
- "install_command": "install_command",
278
- "token": "token",
279
279
  },
280
280
  {
281
+ "token": "token",
282
+ "install_command": "install_command",
281
283
  "repo_name": "repo_name",
282
284
  "repo_owner": "repo_owner",
283
- "install_command": "install_command",
284
- "token": "token",
285
285
  },
286
286
  ],
287
287
  dockerfile="dockerfile",
288
288
  file_mounts={"foo": "string"},
289
289
  launch_parameters={
290
+ "keep_alive_time_seconds": 0,
290
291
  "launch_commands": ["string", "string", "string"],
291
292
  "resource_size_request": "MINI",
292
- "keep_alive_time_seconds": 0,
293
293
  },
294
294
  name="name",
295
295
  system_setup_commands=["string", "string", "string"],
@@ -436,30 +436,30 @@ class TestAsyncBlueprints:
436
436
  blueprint = await async_client.blueprints.preview(
437
437
  code_mounts=[
438
438
  {
439
+ "token": "token",
440
+ "install_command": "install_command",
439
441
  "repo_name": "repo_name",
440
442
  "repo_owner": "repo_owner",
441
- "install_command": "install_command",
442
- "token": "token",
443
443
  },
444
444
  {
445
+ "token": "token",
446
+ "install_command": "install_command",
445
447
  "repo_name": "repo_name",
446
448
  "repo_owner": "repo_owner",
447
- "install_command": "install_command",
448
- "token": "token",
449
449
  },
450
450
  {
451
+ "token": "token",
452
+ "install_command": "install_command",
451
453
  "repo_name": "repo_name",
452
454
  "repo_owner": "repo_owner",
453
- "install_command": "install_command",
454
- "token": "token",
455
455
  },
456
456
  ],
457
457
  dockerfile="dockerfile",
458
458
  file_mounts={"foo": "string"},
459
459
  launch_parameters={
460
+ "keep_alive_time_seconds": 0,
460
461
  "launch_commands": ["string", "string", "string"],
461
462
  "resource_size_request": "MINI",
462
- "keep_alive_time_seconds": 0,
463
463
  },
464
464
  name="name",
465
465
  system_setup_commands=["string", "string", "string"],