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.
- runloop_api_client-0.1.0a12/.release-please-manifest.json +3 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/CHANGELOG.md +24 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/PKG-INFO +2 -2
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/README.md +1 -1
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/api.md +2 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/pyproject.toml +5 -3
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_base_client.py +2 -2
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_constants.py +3 -3
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_version.py +1 -1
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/devboxes/devboxes.py +98 -1
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/functions/invocations.py +2 -2
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/__init__.py +1 -0
- runloop_api_client-0.1.0a12/src/runloop_api_client/types/devbox_upload_file_params.py +16 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/functions/invocation_list_params.py +1 -1
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/functions/test_invocations.py +2 -2
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_devboxes.py +96 -2
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_client.py +26 -26
- runloop_api_client-0.1.0a11/.release-please-manifest.json +0 -3
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/.gitignore +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/CONTRIBUTING.md +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/LICENSE +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/SECURITY.md +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/bin/check-release-environment +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/bin/publish-pypi +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/examples/.keep +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/mypy.ini +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/noxfile.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/release-please-config.json +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/requirements-dev.lock +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/requirements.lock +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop/lib/.keep +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_client.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_compat.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_exceptions.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_files.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_models.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_qs.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_resource.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_response.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_streaming.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_types.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_logs.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_proxy.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_reflection.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_streams.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_sync.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_transform.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_typing.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_utils.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/lib/.keep +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/py.typed +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/blueprints.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/functions/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/functions/functions.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/projects/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/projects/logs.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/resources/projects/projects.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
- {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
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/blueprint_view.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/code_mount_parameters.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/code_mount_parameters_param.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_create_params.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_list_params.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_list_view.py +0 -0
- {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
- {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
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_read_file_params.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_view.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devbox_write_file_params.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
- {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
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/function_invoke_async_params.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/function_invoke_sync_params.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/function_list_view.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/functions/__init__.py +0 -0
- {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
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/project_list_view.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/projects/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/resource_size.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/shared/__init__.py +0 -0
- {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
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/shared/project_logs_view.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/devboxes/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/devboxes/test_logs.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/functions/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/projects/__init__.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/projects/test_logs.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_blueprints.py +28 -28
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_functions.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_projects.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/conftest.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/sample_file.txt +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_deepcopy.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_extract_files.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_files.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_models.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_qs.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_required_args.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_response.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_streaming.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_transform.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_utils/test_proxy.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/test_utils/test_typing.py +0 -0
- {runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/utils.py +0 -0
|
@@ -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.
|
|
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
|
|
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
|
|
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.
|
|
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"]
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_base_client.py
RENAMED
|
@@ -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
|
|
2001
|
+
if sys.maxsize <= 2**32:
|
|
2002
2002
|
return "x32"
|
|
2003
2003
|
|
|
2004
2004
|
if machine:
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_constants.py
RENAMED
|
@@ -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 =
|
|
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
|
|
14
|
-
MAX_RETRY_DELAY =
|
|
13
|
+
INITIAL_RETRY_DELAY = 1.0
|
|
14
|
+
MAX_RETRY_DELAY = 5.0
|
|
@@ -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:
|
|
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:
|
|
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.
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/types/__init__.py
RENAMED
|
@@ -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
|
|
@@ -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=
|
|
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=
|
|
180
|
+
limit=0,
|
|
181
181
|
starting_after="starting_after",
|
|
182
182
|
)
|
|
183
183
|
assert_matches_type(FunctionInvocationListView, invocation, path=["response"])
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_devboxes.py
RENAMED
|
@@ -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 ==
|
|
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",
|
|
710
|
-
[3, "-10",
|
|
709
|
+
[3, "0", 1],
|
|
710
|
+
[3, "-10", 1],
|
|
711
711
|
[3, "60", 60],
|
|
712
|
-
[3, "61",
|
|
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",
|
|
715
|
-
[3, "Fri, 29 Sep 2023 16:26:27 GMT",
|
|
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",
|
|
718
|
-
[3, "99999999999999999999999999999999999",
|
|
719
|
-
[3, "Zun, 29 Sep 2023 16:26:27 GMT",
|
|
720
|
-
[3, "",
|
|
721
|
-
[2, "",
|
|
722
|
-
[1, "",
|
|
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,
|
|
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 ==
|
|
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",
|
|
1446
|
-
[3, "-10",
|
|
1445
|
+
[3, "0", 1],
|
|
1446
|
+
[3, "-10", 1],
|
|
1447
1447
|
[3, "60", 60],
|
|
1448
|
-
[3, "61",
|
|
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",
|
|
1451
|
-
[3, "Fri, 29 Sep 2023 16:26:27 GMT",
|
|
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",
|
|
1454
|
-
[3, "99999999999999999999999999999999999",
|
|
1455
|
-
[3, "Zun, 29 Sep 2023 16:26:27 GMT",
|
|
1456
|
-
[3, "",
|
|
1457
|
-
[2, "",
|
|
1458
|
-
[1, "",
|
|
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,
|
|
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)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/__init__.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_client.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_compat.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_exceptions.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_files.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_models.py
RENAMED
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_resource.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_response.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_streaming.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_types.py
RENAMED
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_logs.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_proxy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_typing.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/_utils/_utils.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/src/runloop_api_client/lib/.keep
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/devboxes/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/projects/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_blueprints.py
RENAMED
|
@@ -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"],
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_functions.py
RENAMED
|
File without changes
|
{runloop_api_client-0.1.0a11 → runloop_api_client-0.1.0a12}/tests/api_resources/test_projects.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|