runloop-api-client 0.1.0a5__tar.gz → 0.1.0a6__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 (109) hide show
  1. runloop_api_client-0.1.0a6/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/CHANGELOG.md +26 -0
  3. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/PKG-INFO +8 -2
  4. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/README.md +7 -1
  5. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/api.md +15 -7
  6. runloop_api_client-0.1.0a6/bin/check-release-environment +21 -0
  7. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/pyproject.toml +1 -1
  8. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/requirements-dev.lock +2 -1
  9. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/requirements.lock +1 -0
  10. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_base_client.py +22 -12
  11. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_compat.py +3 -3
  12. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_models.py +8 -0
  13. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_version.py +1 -1
  14. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/resources/devboxes/devboxes.py +39 -5
  15. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/resources/devboxes/logs.py +1 -3
  16. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/resources/functions/functions.py +11 -12
  17. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/resources/functions/invocations/invocations.py +69 -12
  18. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/resources/projects/logs.py +1 -3
  19. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/resources/projects/projects.py +1 -3
  20. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/__init__.py +3 -1
  21. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/devbox_create_params.py +6 -0
  22. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/devbox_list_params.py +6 -0
  23. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/devbox_list_view.py +4 -0
  24. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/devbox_view.py +10 -0
  25. runloop_api_client-0.1.0a6/src/runloop_api_client/types/function_invoke_async_response.py +36 -0
  26. runloop_api_client-0.1.0a6/src/runloop_api_client/types/function_invoke_sync_response.py +36 -0
  27. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/functions/__init__.py +2 -0
  28. runloop_api_client-0.1.0a6/src/runloop_api_client/types/functions/function_invocation_list_view.py +47 -0
  29. runloop_api_client-0.1.0a6/src/runloop_api_client/types/functions/invocation_list_params.py +15 -0
  30. runloop_api_client-0.1.0a5/src/runloop_api_client/types/shared/function_invocation_detail_view.py → runloop_api_client-0.1.0a6/src/runloop_api_client/types/functions/invocation_retrieve_response.py +14 -3
  31. runloop_api_client-0.1.0a6/src/runloop_api_client/types/project_list_view.py +30 -0
  32. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/shared/__init__.py +0 -1
  33. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/api_resources/devboxes/test_logs.py +6 -6
  34. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/api_resources/functions/test_invocations.py +38 -20
  35. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/api_resources/projects/test_logs.py +6 -6
  36. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/api_resources/test_devboxes.py +38 -32
  37. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/api_resources/test_functions.py +69 -66
  38. runloop_api_client-0.1.0a5/.release-please-manifest.json +0 -3
  39. runloop_api_client-0.1.0a5/bin/check-release-environment +0 -32
  40. runloop_api_client-0.1.0a5/src/runloop_api_client/types/functions/function_invocation_list_view.py +0 -26
  41. runloop_api_client-0.1.0a5/src/runloop_api_client/types/project_list_view.py +0 -149
  42. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/.gitignore +0 -0
  43. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/CONTRIBUTING.md +0 -0
  44. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/LICENSE +0 -0
  45. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/SECURITY.md +0 -0
  46. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/bin/publish-pypi +0 -0
  47. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/examples/.keep +0 -0
  48. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/mypy.ini +0 -0
  49. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/noxfile.py +0 -0
  50. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/release-please-config.json +0 -0
  51. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop/lib/.keep +0 -0
  52. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/__init__.py +0 -0
  53. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_client.py +0 -0
  54. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_constants.py +0 -0
  55. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_exceptions.py +0 -0
  56. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_files.py +0 -0
  57. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_qs.py +0 -0
  58. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_resource.py +0 -0
  59. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_response.py +0 -0
  60. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_streaming.py +0 -0
  61. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_types.py +0 -0
  62. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_utils/__init__.py +0 -0
  63. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_utils/_logs.py +0 -0
  64. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_utils/_proxy.py +0 -0
  65. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_utils/_reflection.py +0 -0
  66. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_utils/_streams.py +0 -0
  67. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_utils/_sync.py +0 -0
  68. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_utils/_transform.py +0 -0
  69. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_utils/_typing.py +0 -0
  70. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/_utils/_utils.py +0 -0
  71. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/lib/.keep +0 -0
  72. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/py.typed +0 -0
  73. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/resources/__init__.py +0 -0
  74. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  75. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/resources/functions/__init__.py +0 -0
  76. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/resources/functions/invocations/__init__.py +0 -0
  77. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/resources/projects/__init__.py +0 -0
  78. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  79. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  80. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  81. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  82. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/function_invoke_async_params.py +0 -0
  83. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/function_invoke_sync_params.py +0 -0
  84. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/function_list_view.py +0 -0
  85. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/functions/invocations/__init__.py +0 -0
  86. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/projects/__init__.py +0 -0
  87. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/src/runloop_api_client/types/shared/project_logs_view.py +0 -0
  88. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/__init__.py +0 -0
  89. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/api_resources/__init__.py +0 -0
  90. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/api_resources/devboxes/__init__.py +0 -0
  91. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/api_resources/functions/__init__.py +0 -0
  92. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/api_resources/functions/invocations/__init__.py +0 -0
  93. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/api_resources/projects/__init__.py +0 -0
  94. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/api_resources/test_projects.py +0 -0
  95. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/conftest.py +0 -0
  96. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/sample_file.txt +0 -0
  97. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_client.py +0 -0
  98. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_deepcopy.py +0 -0
  99. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_extract_files.py +0 -0
  100. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_files.py +0 -0
  101. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_models.py +0 -0
  102. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_qs.py +0 -0
  103. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_required_args.py +0 -0
  104. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_response.py +0 -0
  105. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_streaming.py +0 -0
  106. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_transform.py +0 -0
  107. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_utils/test_proxy.py +0 -0
  108. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/test_utils/test_typing.py +0 -0
  109. {runloop_api_client-0.1.0a5 → runloop_api_client-0.1.0a6}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.6"
3
+ }
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.6 (2024-07-25)
4
+
5
+ Full Changelog: [v0.1.0-alpha.5...v0.1.0-alpha.6](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.5...v0.1.0-alpha.6)
6
+
7
+ ### Features
8
+
9
+ * **api:** codegen changes ([4dc6179](https://github.com/runloopai/api-client-python/commit/4dc617943e2830fce6aa785c2d22205d486f0614))
10
+ * **api:** OpenAPI spec update via Stainless API ([#24](https://github.com/runloopai/api-client-python/issues/24)) ([d89833e](https://github.com/runloopai/api-client-python/commit/d89833e862433a467101b70d514287587aa0557b))
11
+ * **api:** OpenAPI spec update via Stainless API ([#26](https://github.com/runloopai/api-client-python/issues/26)) ([0418fb3](https://github.com/runloopai/api-client-python/commit/0418fb3400c9566af460c8890f807a3fc77ffbe1))
12
+ * **api:** OpenAPI spec update via Stainless API ([#28](https://github.com/runloopai/api-client-python/issues/28)) ([4b90fc2](https://github.com/runloopai/api-client-python/commit/4b90fc2fb979b15a64cddd05d49a492c6548b2e7))
13
+ * **api:** OpenAPI spec update via Stainless API ([#29](https://github.com/runloopai/api-client-python/issues/29)) ([351c37b](https://github.com/runloopai/api-client-python/commit/351c37bc328f53f26c094ae440a31b10b300559e))
14
+ * **api:** OpenAPI spec update via Stainless API ([#30](https://github.com/runloopai/api-client-python/issues/30)) ([877f6a4](https://github.com/runloopai/api-client-python/commit/877f6a48a13bb4cc4e2810fd155b2356cd21e709))
15
+ * **api:** OpenAPI spec update via Stainless API ([#31](https://github.com/runloopai/api-client-python/issues/31)) ([dd37c08](https://github.com/runloopai/api-client-python/commit/dd37c0807fe91ae9a6d0d3c18a9dad11f53ad83a))
16
+ * **api:** OpenAPI spec update via Stainless API ([#32](https://github.com/runloopai/api-client-python/issues/32)) ([8572bf8](https://github.com/runloopai/api-client-python/commit/8572bf848e258f802e2fdc699e227c6db33d04ba))
17
+ * **api:** OpenAPI spec update via Stainless API ([#33](https://github.com/runloopai/api-client-python/issues/33)) ([aff00c2](https://github.com/runloopai/api-client-python/commit/aff00c248594876293eff6269dd2397e3aa313c4))
18
+ * **api:** OpenAPI spec update via Stainless API ([#34](https://github.com/runloopai/api-client-python/issues/34)) ([706ca4f](https://github.com/runloopai/api-client-python/commit/706ca4f535ee0ea572aaea7a2c138a09c5a371fb))
19
+ * **api:** OpenAPI spec update via Stainless API ([#37](https://github.com/runloopai/api-client-python/issues/37)) ([c30452b](https://github.com/runloopai/api-client-python/commit/c30452b3dae499d892384be9b76fe36255302b1c))
20
+ * **api:** OpenAPI spec update via Stainless API ([#38](https://github.com/runloopai/api-client-python/issues/38)) ([399782f](https://github.com/runloopai/api-client-python/commit/399782fa56fd8744f5836913dd408eed49f80007))
21
+ * **api:** OpenAPI spec update via Stainless API ([#39](https://github.com/runloopai/api-client-python/issues/39)) ([76ed1ec](https://github.com/runloopai/api-client-python/commit/76ed1ec92b5eee1ceeebadb7a01af34e5b00c2c1))
22
+
23
+
24
+ ### Chores
25
+
26
+ * **internal:** refactor release doctor script ([#35](https://github.com/runloopai/api-client-python/issues/35)) ([3189cad](https://github.com/runloopai/api-client-python/commit/3189cad0f77f1fdd67c0af290dc87c0f22eb5690))
27
+ * **tests:** update prism version ([#36](https://github.com/runloopai/api-client-python/issues/36)) ([8ad7914](https://github.com/runloopai/api-client-python/commit/8ad7914681564cb307174e0c33456c566603319b))
28
+
3
29
  ## 0.1.0-alpha.5 (2024-07-03)
4
30
 
5
31
  Full Changelog: [v0.1.0-alpha.4...v0.1.0-alpha.5](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.4...v0.1.0-alpha.5)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.1.0a5
3
+ Version: 0.1.0a6
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
@@ -44,7 +44,7 @@ It is generated with [Stainless](https://www.stainlessapi.com/).
44
44
 
45
45
  ## Documentation
46
46
 
47
- The REST API documentation can be found [on runloop.ai](https://runloop.ai). The full API of this library can be found in [api.md](https://github.com/runloopai/api-client-python/tree/main/api.md).
47
+ The REST API documentation can be found on [runloop.ai](https://runloop.ai). The full API of this library can be found in [api.md](https://github.com/runloopai/api-client-python/tree/main/api.md).
48
48
 
49
49
  ## Installation
50
50
 
@@ -313,6 +313,12 @@ client = Runloop(
313
313
  )
314
314
  ```
315
315
 
316
+ You can also customize the client on a per-request basis by using `with_options()`:
317
+
318
+ ```python
319
+ client.with_options(http_client=DefaultHttpxClient(...))
320
+ ```
321
+
316
322
  ### Managing HTTP resources
317
323
 
318
324
  By default the library closes underlying HTTP connections whenever the client is [garbage collected](https://docs.python.org/3/reference/datamodel.html#object.__del__). You can manually close the client using the `.close()` method if desired, or with a context manager that closes when exiting.
@@ -10,7 +10,7 @@ It is generated with [Stainless](https://www.stainlessapi.com/).
10
10
 
11
11
  ## Documentation
12
12
 
13
- The REST API documentation can be found [on runloop.ai](https://runloop.ai). The full API of this library can be found in [api.md](api.md).
13
+ The REST API documentation can be found on [runloop.ai](https://runloop.ai). The full API of this library can be found in [api.md](api.md).
14
14
 
15
15
  ## Installation
16
16
 
@@ -279,6 +279,12 @@ client = Runloop(
279
279
  )
280
280
  ```
281
281
 
282
+ You can also customize the client on a per-request basis by using `with_options()`:
283
+
284
+ ```python
285
+ client.with_options(http_client=DefaultHttpxClient(...))
286
+ ```
287
+
282
288
  ### Managing HTTP resources
283
289
 
284
290
  By default the library closes underlying HTTP connections whenever the client is [garbage collected](https://docs.python.org/3/reference/datamodel.html#object.__del__). You can manually close the client using the `.close()` method if desired, or with a context manager that closes when exiting.
@@ -1,7 +1,7 @@
1
1
  # Shared Types
2
2
 
3
3
  ```python
4
- from runloop_api_client.types import FunctionInvocationDetailView, ProjectLogsView
4
+ from runloop_api_client.types import ProjectLogsView
5
5
  ```
6
6
 
7
7
  # Devboxes
@@ -37,27 +37,35 @@ Methods:
37
37
  Types:
38
38
 
39
39
  ```python
40
- from runloop_api_client.types import FunctionListView
40
+ from runloop_api_client.types import (
41
+ FunctionListView,
42
+ FunctionInvokeAsyncResponse,
43
+ FunctionInvokeSyncResponse,
44
+ )
41
45
  ```
42
46
 
43
47
  Methods:
44
48
 
45
49
  - <code title="get /v1/functions">client.functions.<a href="./src/runloop_api_client/resources/functions/functions.py">list</a>() -> <a href="./src/runloop_api_client/types/function_list_view.py">FunctionListView</a></code>
46
- - <code title="post /v1/functions/{project_name}/{function_name}/invoke_async">client.functions.<a href="./src/runloop_api_client/resources/functions/functions.py">invoke_async</a>(function_name, \*, project_name, \*\*<a href="src/runloop_api_client/types/function_invoke_async_params.py">params</a>) -> <a href="./src/runloop_api_client/types/shared/function_invocation_detail_view.py">FunctionInvocationDetailView</a></code>
47
- - <code title="post /v1/functions/{project_name}/{function_name}/invoke_sync">client.functions.<a href="./src/runloop_api_client/resources/functions/functions.py">invoke_sync</a>(function_name, \*, project_name, \*\*<a href="src/runloop_api_client/types/function_invoke_sync_params.py">params</a>) -> <a href="./src/runloop_api_client/types/shared/function_invocation_detail_view.py">FunctionInvocationDetailView</a></code>
50
+ - <code title="post /v1/functions/{project_name}/{function_name}/invoke_async">client.functions.<a href="./src/runloop_api_client/resources/functions/functions.py">invoke_async</a>(function_name, \*, project_name, \*\*<a href="src/runloop_api_client/types/function_invoke_async_params.py">params</a>) -> <a href="./src/runloop_api_client/types/function_invoke_async_response.py">FunctionInvokeAsyncResponse</a></code>
51
+ - <code title="post /v1/functions/{project_name}/{function_name}/invoke_sync">client.functions.<a href="./src/runloop_api_client/resources/functions/functions.py">invoke_sync</a>(function_name, \*, project_name, \*\*<a href="src/runloop_api_client/types/function_invoke_sync_params.py">params</a>) -> <a href="./src/runloop_api_client/types/function_invoke_sync_response.py">FunctionInvokeSyncResponse</a></code>
48
52
 
49
53
  ## Invocations
50
54
 
51
55
  Types:
52
56
 
53
57
  ```python
54
- from runloop_api_client.types.functions import FunctionInvocationListView, KillOperationResponse
58
+ from runloop_api_client.types.functions import (
59
+ FunctionInvocationListView,
60
+ KillOperationResponse,
61
+ InvocationRetrieveResponse,
62
+ )
55
63
  ```
56
64
 
57
65
  Methods:
58
66
 
59
- - <code title="get /v1/functions/invocations/{invocationId}">client.functions.invocations.<a href="./src/runloop_api_client/resources/functions/invocations/invocations.py">retrieve</a>(invocation_id) -> <a href="./src/runloop_api_client/types/shared/function_invocation_detail_view.py">FunctionInvocationDetailView</a></code>
60
- - <code title="get /v1/functions/invocations">client.functions.invocations.<a href="./src/runloop_api_client/resources/functions/invocations/invocations.py">list</a>() -> <a href="./src/runloop_api_client/types/functions/function_invocation_list_view.py">FunctionInvocationListView</a></code>
67
+ - <code title="get /v1/functions/invocations/{invocationId}">client.functions.invocations.<a href="./src/runloop_api_client/resources/functions/invocations/invocations.py">retrieve</a>(invocation_id) -> <a href="./src/runloop_api_client/types/functions/invocation_retrieve_response.py">InvocationRetrieveResponse</a></code>
68
+ - <code title="get /v1/functions/invocations">client.functions.invocations.<a href="./src/runloop_api_client/resources/functions/invocations/invocations.py">list</a>(\*\*<a href="src/runloop_api_client/types/functions/invocation_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/functions/function_invocation_list_view.py">FunctionInvocationListView</a></code>
61
69
  - <code title="post /v1/functions/invocations/{invocationId}/kill">client.functions.invocations.<a href="./src/runloop_api_client/resources/functions/invocations/invocations.py">kill</a>(invocation_id) -> <a href="./src/runloop_api_client/types/functions/kill_operation_response.py">object</a></code>
62
70
 
63
71
  # Projects
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env bash
2
+
3
+ errors=()
4
+
5
+ if [ -z "${PYPI_TOKEN}" ]; then
6
+ errors+=("The RUNLOOP_PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.")
7
+ fi
8
+
9
+ lenErrors=${#errors[@]}
10
+
11
+ if [[ lenErrors -gt 0 ]]; then
12
+ echo -e "Found the following errors in the release environment:\n"
13
+
14
+ for error in "${errors[@]}"; do
15
+ echo -e "- $error\n"
16
+ done
17
+
18
+ exit 1
19
+ fi
20
+
21
+ echo "The environment is ready to push releases!"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.1.0-alpha.5"
3
+ version = "0.1.0-alpha.6"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -6,6 +6,7 @@
6
6
  # features: []
7
7
  # all-features: true
8
8
  # with-sources: false
9
+ # generate-hashes: false
9
10
 
10
11
  -e file:.
11
12
  annotated-types==0.6.0
@@ -48,7 +49,7 @@ markdown-it-py==3.0.0
48
49
  # via rich
49
50
  mdurl==0.1.2
50
51
  # via markdown-it-py
51
- mypy==1.7.1
52
+ mypy==1.10.1
52
53
  mypy-extensions==1.0.0
53
54
  # via mypy
54
55
  nodeenv==1.8.0
@@ -6,6 +6,7 @@
6
6
  # features: []
7
7
  # all-features: true
8
8
  # with-sources: false
9
+ # generate-hashes: false
9
10
 
10
11
  -e file:.
11
12
  annotated-types==0.6.0
@@ -879,9 +879,9 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
879
879
  def _prepare_options(
880
880
  self,
881
881
  options: FinalRequestOptions, # noqa: ARG002
882
- ) -> None:
882
+ ) -> FinalRequestOptions:
883
883
  """Hook for mutating the given options"""
884
- return None
884
+ return options
885
885
 
886
886
  def _prepare_request(
887
887
  self,
@@ -955,8 +955,13 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
955
955
  stream: bool,
956
956
  stream_cls: type[_StreamT] | None,
957
957
  ) -> ResponseT | _StreamT:
958
+ # create a copy of the options we were given so that if the
959
+ # options are mutated later & we then retry, the retries are
960
+ # given the original options
961
+ input_options = model_copy(options)
962
+
958
963
  cast_to = self._maybe_override_cast_to(cast_to, options)
959
- self._prepare_options(options)
964
+ options = self._prepare_options(options)
960
965
 
961
966
  retries = self._remaining_retries(remaining_retries, options)
962
967
  request = self._build_request(options)
@@ -979,7 +984,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
979
984
 
980
985
  if retries > 0:
981
986
  return self._retry_request(
982
- options,
987
+ input_options,
983
988
  cast_to,
984
989
  retries,
985
990
  stream=stream,
@@ -994,7 +999,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
994
999
 
995
1000
  if retries > 0:
996
1001
  return self._retry_request(
997
- options,
1002
+ input_options,
998
1003
  cast_to,
999
1004
  retries,
1000
1005
  stream=stream,
@@ -1022,7 +1027,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1022
1027
  if retries > 0 and self._should_retry(err.response):
1023
1028
  err.response.close()
1024
1029
  return self._retry_request(
1025
- options,
1030
+ input_options,
1026
1031
  cast_to,
1027
1032
  retries,
1028
1033
  err.response.headers,
@@ -1437,9 +1442,9 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1437
1442
  async def _prepare_options(
1438
1443
  self,
1439
1444
  options: FinalRequestOptions, # noqa: ARG002
1440
- ) -> None:
1445
+ ) -> FinalRequestOptions:
1441
1446
  """Hook for mutating the given options"""
1442
- return None
1447
+ return options
1443
1448
 
1444
1449
  async def _prepare_request(
1445
1450
  self,
@@ -1518,8 +1523,13 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1518
1523
  # execute it earlier while we are in an async context
1519
1524
  self._platform = await asyncify(get_platform)()
1520
1525
 
1526
+ # create a copy of the options we were given so that if the
1527
+ # options are mutated later & we then retry, the retries are
1528
+ # given the original options
1529
+ input_options = model_copy(options)
1530
+
1521
1531
  cast_to = self._maybe_override_cast_to(cast_to, options)
1522
- await self._prepare_options(options)
1532
+ options = await self._prepare_options(options)
1523
1533
 
1524
1534
  retries = self._remaining_retries(remaining_retries, options)
1525
1535
  request = self._build_request(options)
@@ -1540,7 +1550,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1540
1550
 
1541
1551
  if retries > 0:
1542
1552
  return await self._retry_request(
1543
- options,
1553
+ input_options,
1544
1554
  cast_to,
1545
1555
  retries,
1546
1556
  stream=stream,
@@ -1555,7 +1565,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1555
1565
 
1556
1566
  if retries > 0:
1557
1567
  return await self._retry_request(
1558
- options,
1568
+ input_options,
1559
1569
  cast_to,
1560
1570
  retries,
1561
1571
  stream=stream,
@@ -1578,7 +1588,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1578
1588
  if retries > 0 and self._should_retry(err.response):
1579
1589
  await err.response.aclose()
1580
1590
  return await self._retry_request(
1581
- options,
1591
+ input_options,
1582
1592
  cast_to,
1583
1593
  retries,
1584
1594
  err.response.headers,
@@ -118,10 +118,10 @@ def get_model_fields(model: type[pydantic.BaseModel]) -> dict[str, FieldInfo]:
118
118
  return model.__fields__ # type: ignore
119
119
 
120
120
 
121
- def model_copy(model: _ModelT) -> _ModelT:
121
+ def model_copy(model: _ModelT, *, deep: bool = False) -> _ModelT:
122
122
  if PYDANTIC_V2:
123
- return model.model_copy()
124
- return model.copy() # type: ignore
123
+ return model.model_copy(deep=deep)
124
+ return model.copy(deep=deep) # type: ignore
125
125
 
126
126
 
127
127
  def model_json(model: pydantic.BaseModel, *, indent: int | None = None) -> str:
@@ -643,6 +643,14 @@ def validate_type(*, type_: type[_T], value: object) -> _T:
643
643
  return cast(_T, _validate_non_model_type(type_=type_, value=value))
644
644
 
645
645
 
646
+ def set_pydantic_config(typ: Any, config: pydantic.ConfigDict) -> None:
647
+ """Add a pydantic config for the given type.
648
+
649
+ Note: this is a no-op on Pydantic v1.
650
+ """
651
+ setattr(typ, "__pydantic_config__", config) # noqa: B010
652
+
653
+
646
654
  # our use of subclasssing here causes weirdness for type checkers,
647
655
  # so we just pretend that we don't subclass
648
656
  if TYPE_CHECKING:
@@ -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.5" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.6" # x-release-please-version
@@ -28,9 +28,7 @@ from ..._response import (
28
28
  async_to_raw_response_wrapper,
29
29
  async_to_streamed_response_wrapper,
30
30
  )
31
- from ..._base_client import (
32
- make_request_options,
33
- )
31
+ from ..._base_client import make_request_options
34
32
  from ...types.devbox_view import DevboxView
35
33
  from ...types.devbox_list_view import DevboxListView
36
34
  from ...types.devbox_execution_detail_view import DevboxExecutionDetailView
@@ -57,6 +55,7 @@ class DevboxesResource(SyncAPIResource):
57
55
  code_handle: str | NotGiven = NOT_GIVEN,
58
56
  entrypoint: str | NotGiven = NOT_GIVEN,
59
57
  environment_variables: Dict[str, str] | NotGiven = NOT_GIVEN,
58
+ image_id: str | NotGiven = NOT_GIVEN,
60
59
  name: str | NotGiven = NOT_GIVEN,
61
60
  setup_commands: List[str] | NotGiven = NOT_GIVEN,
62
61
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -80,6 +79,9 @@ class DevboxesResource(SyncAPIResource):
80
79
 
81
80
  environment_variables: (Optional) Environment variables used to configure your Devbox.
82
81
 
82
+ image_id: (Optional) Image to use as the for the Devbox. If none set, the default Runloop
83
+ image will be used.
84
+
83
85
  name: (Optional) A user specified name to give the Devbox.
84
86
 
85
87
  setup_commands: (Optional) List of commands needed to set up your Devbox. Examples might include
@@ -101,6 +103,7 @@ class DevboxesResource(SyncAPIResource):
101
103
  "code_handle": code_handle,
102
104
  "entrypoint": entrypoint,
103
105
  "environment_variables": environment_variables,
106
+ "image_id": image_id,
104
107
  "name": name,
105
108
  "setup_commands": setup_commands,
106
109
  },
@@ -149,6 +152,8 @@ class DevboxesResource(SyncAPIResource):
149
152
  def list(
150
153
  self,
151
154
  *,
155
+ limit: str | NotGiven = NOT_GIVEN,
156
+ starting_after: str | NotGiven = NOT_GIVEN,
152
157
  status: str | NotGiven = NOT_GIVEN,
153
158
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
154
159
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -163,6 +168,10 @@ class DevboxesResource(SyncAPIResource):
163
168
  are returned.
164
169
 
165
170
  Args:
171
+ limit: Page Limit
172
+
173
+ starting_after: Load the next page starting after the given token.
174
+
166
175
  status: Filter by status
167
176
 
168
177
  extra_headers: Send extra headers
@@ -180,7 +189,14 @@ class DevboxesResource(SyncAPIResource):
180
189
  extra_query=extra_query,
181
190
  extra_body=extra_body,
182
191
  timeout=timeout,
183
- query=maybe_transform({"status": status}, devbox_list_params.DevboxListParams),
192
+ query=maybe_transform(
193
+ {
194
+ "limit": limit,
195
+ "starting_after": starting_after,
196
+ "status": status,
197
+ },
198
+ devbox_list_params.DevboxListParams,
199
+ ),
184
200
  ),
185
201
  cast_to=DevboxListView,
186
202
  )
@@ -276,6 +292,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
276
292
  code_handle: str | NotGiven = NOT_GIVEN,
277
293
  entrypoint: str | NotGiven = NOT_GIVEN,
278
294
  environment_variables: Dict[str, str] | NotGiven = NOT_GIVEN,
295
+ image_id: str | NotGiven = NOT_GIVEN,
279
296
  name: str | NotGiven = NOT_GIVEN,
280
297
  setup_commands: List[str] | NotGiven = NOT_GIVEN,
281
298
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -299,6 +316,9 @@ class AsyncDevboxesResource(AsyncAPIResource):
299
316
 
300
317
  environment_variables: (Optional) Environment variables used to configure your Devbox.
301
318
 
319
+ image_id: (Optional) Image to use as the for the Devbox. If none set, the default Runloop
320
+ image will be used.
321
+
302
322
  name: (Optional) A user specified name to give the Devbox.
303
323
 
304
324
  setup_commands: (Optional) List of commands needed to set up your Devbox. Examples might include
@@ -320,6 +340,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
320
340
  "code_handle": code_handle,
321
341
  "entrypoint": entrypoint,
322
342
  "environment_variables": environment_variables,
343
+ "image_id": image_id,
323
344
  "name": name,
324
345
  "setup_commands": setup_commands,
325
346
  },
@@ -368,6 +389,8 @@ class AsyncDevboxesResource(AsyncAPIResource):
368
389
  async def list(
369
390
  self,
370
391
  *,
392
+ limit: str | NotGiven = NOT_GIVEN,
393
+ starting_after: str | NotGiven = NOT_GIVEN,
371
394
  status: str | NotGiven = NOT_GIVEN,
372
395
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
373
396
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -382,6 +405,10 @@ class AsyncDevboxesResource(AsyncAPIResource):
382
405
  are returned.
383
406
 
384
407
  Args:
408
+ limit: Page Limit
409
+
410
+ starting_after: Load the next page starting after the given token.
411
+
385
412
  status: Filter by status
386
413
 
387
414
  extra_headers: Send extra headers
@@ -399,7 +426,14 @@ class AsyncDevboxesResource(AsyncAPIResource):
399
426
  extra_query=extra_query,
400
427
  extra_body=extra_body,
401
428
  timeout=timeout,
402
- query=await async_maybe_transform({"status": status}, devbox_list_params.DevboxListParams),
429
+ query=await async_maybe_transform(
430
+ {
431
+ "limit": limit,
432
+ "starting_after": starting_after,
433
+ "status": status,
434
+ },
435
+ devbox_list_params.DevboxListParams,
436
+ ),
403
437
  ),
404
438
  cast_to=DevboxListView,
405
439
  )
@@ -13,9 +13,7 @@ from ..._response import (
13
13
  async_to_raw_response_wrapper,
14
14
  async_to_streamed_response_wrapper,
15
15
  )
16
- from ..._base_client import (
17
- make_request_options,
18
- )
16
+ from ..._base_client import make_request_options
19
17
  from ...types.devboxes.devbox_logs_list_view import DevboxLogsListView
20
18
 
21
19
  __all__ = ["LogsResource", "AsyncLogsResource"]
@@ -26,12 +26,11 @@ from .invocations import (
26
26
  InvocationsResourceWithStreamingResponse,
27
27
  AsyncInvocationsResourceWithStreamingResponse,
28
28
  )
29
- from ..._base_client import (
30
- make_request_options,
31
- )
29
+ from ..._base_client import make_request_options
32
30
  from .invocations.invocations import InvocationsResource, AsyncInvocationsResource
33
31
  from ...types.function_list_view import FunctionListView
34
- from ...types.shared.function_invocation_detail_view import FunctionInvocationDetailView
32
+ from ...types.function_invoke_sync_response import FunctionInvokeSyncResponse
33
+ from ...types.function_invoke_async_response import FunctionInvokeAsyncResponse
35
34
 
36
35
  __all__ = ["FunctionsResource", "AsyncFunctionsResource"]
37
36
 
@@ -81,7 +80,7 @@ class FunctionsResource(SyncAPIResource):
81
80
  extra_query: Query | None = None,
82
81
  extra_body: Body | None = None,
83
82
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
84
- ) -> FunctionInvocationDetailView:
83
+ ) -> FunctionInvokeAsyncResponse:
85
84
  """Invoke the remote function asynchronously.
86
85
 
87
86
  This will return a job id that can be
@@ -114,7 +113,7 @@ class FunctionsResource(SyncAPIResource):
114
113
  options=make_request_options(
115
114
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
116
115
  ),
117
- cast_to=FunctionInvocationDetailView,
116
+ cast_to=FunctionInvokeAsyncResponse,
118
117
  )
119
118
 
120
119
  def invoke_sync(
@@ -130,7 +129,7 @@ class FunctionsResource(SyncAPIResource):
130
129
  extra_query: Query | None = None,
131
130
  extra_body: Body | None = None,
132
131
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
133
- ) -> FunctionInvocationDetailView:
132
+ ) -> FunctionInvokeSyncResponse:
134
133
  """Invoke the remote function synchronously.
135
134
 
136
135
  This will block until the function
@@ -164,7 +163,7 @@ class FunctionsResource(SyncAPIResource):
164
163
  options=make_request_options(
165
164
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
166
165
  ),
167
- cast_to=FunctionInvocationDetailView,
166
+ cast_to=FunctionInvokeSyncResponse,
168
167
  )
169
168
 
170
169
 
@@ -213,7 +212,7 @@ class AsyncFunctionsResource(AsyncAPIResource):
213
212
  extra_query: Query | None = None,
214
213
  extra_body: Body | None = None,
215
214
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
216
- ) -> FunctionInvocationDetailView:
215
+ ) -> FunctionInvokeAsyncResponse:
217
216
  """Invoke the remote function asynchronously.
218
217
 
219
218
  This will return a job id that can be
@@ -246,7 +245,7 @@ class AsyncFunctionsResource(AsyncAPIResource):
246
245
  options=make_request_options(
247
246
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
248
247
  ),
249
- cast_to=FunctionInvocationDetailView,
248
+ cast_to=FunctionInvokeAsyncResponse,
250
249
  )
251
250
 
252
251
  async def invoke_sync(
@@ -262,7 +261,7 @@ class AsyncFunctionsResource(AsyncAPIResource):
262
261
  extra_query: Query | None = None,
263
262
  extra_body: Body | None = None,
264
263
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
265
- ) -> FunctionInvocationDetailView:
264
+ ) -> FunctionInvokeSyncResponse:
266
265
  """Invoke the remote function synchronously.
267
266
 
268
267
  This will block until the function
@@ -296,7 +295,7 @@ class AsyncFunctionsResource(AsyncAPIResource):
296
295
  options=make_request_options(
297
296
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
298
297
  ),
299
- cast_to=FunctionInvocationDetailView,
298
+ cast_to=FunctionInvokeSyncResponse,
300
299
  )
301
300
 
302
301