runloop-api-client 0.1.0a8__tar.gz → 0.1.0a9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. runloop_api_client-0.1.0a9/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/CHANGELOG.md +8 -0
  3. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/PKG-INFO +1 -1
  4. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/api.md +10 -16
  5. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/pyproject.toml +1 -1
  6. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_version.py +1 -1
  7. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/resources/devboxes/devboxes.py +156 -0
  8. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/resources/functions/functions.py +9 -11
  9. {runloop_api_client-0.1.0a8/src/runloop_api_client/resources/functions/invocations → runloop_api_client-0.1.0a9/src/runloop_api_client/resources/functions}/invocations.py +13 -13
  10. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/__init__.py +4 -3
  11. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/functions/__init__.py +0 -1
  12. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/shared/__init__.py +3 -0
  13. runloop_api_client-0.1.0a8/src/runloop_api_client/types/functions/invocation_retrieve_response.py → runloop_api_client-0.1.0a9/src/runloop_api_client/types/shared/function_invocation_execution_detail_view.py +2 -2
  14. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/api_resources/functions/test_invocations.py +8 -10
  15. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/api_resources/test_devboxes.py +152 -0
  16. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/api_resources/test_functions.py +18 -21
  17. runloop_api_client-0.1.0a8/.release-please-manifest.json +0 -3
  18. runloop_api_client-0.1.0a8/src/runloop_api_client/resources/functions/invocations/__init__.py +0 -19
  19. runloop_api_client-0.1.0a8/src/runloop_api_client/types/function_invoke_async_response.py +0 -42
  20. runloop_api_client-0.1.0a8/src/runloop_api_client/types/function_invoke_sync_response.py +0 -42
  21. runloop_api_client-0.1.0a8/src/runloop_api_client/types/projects/__init__.py +0 -3
  22. runloop_api_client-0.1.0a8/tests/api_resources/projects/__init__.py +0 -1
  23. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/.gitignore +0 -0
  24. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/CONTRIBUTING.md +0 -0
  25. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/LICENSE +0 -0
  26. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/README.md +0 -0
  27. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/SECURITY.md +0 -0
  28. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/bin/check-release-environment +0 -0
  29. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/bin/publish-pypi +0 -0
  30. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/examples/.keep +0 -0
  31. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/mypy.ini +0 -0
  32. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/noxfile.py +0 -0
  33. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/release-please-config.json +0 -0
  34. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/requirements-dev.lock +0 -0
  35. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/requirements.lock +0 -0
  36. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop/lib/.keep +0 -0
  37. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/__init__.py +0 -0
  38. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_base_client.py +0 -0
  39. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_client.py +0 -0
  40. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_compat.py +0 -0
  41. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_constants.py +0 -0
  42. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_exceptions.py +0 -0
  43. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_files.py +0 -0
  44. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_models.py +0 -0
  45. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_qs.py +0 -0
  46. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_resource.py +0 -0
  47. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_response.py +0 -0
  48. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_streaming.py +0 -0
  49. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_types.py +0 -0
  50. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_utils/__init__.py +0 -0
  51. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_utils/_logs.py +0 -0
  52. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_utils/_proxy.py +0 -0
  53. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_utils/_reflection.py +0 -0
  54. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_utils/_streams.py +0 -0
  55. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_utils/_sync.py +0 -0
  56. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_utils/_transform.py +0 -0
  57. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_utils/_typing.py +0 -0
  58. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/_utils/_utils.py +0 -0
  59. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/lib/.keep +0 -0
  60. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/py.typed +0 -0
  61. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/resources/__init__.py +0 -0
  62. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/resources/blueprints.py +0 -0
  63. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  64. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  65. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/resources/functions/__init__.py +0 -0
  66. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/resources/projects/__init__.py +0 -0
  67. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/resources/projects/logs.py +0 -0
  68. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/resources/projects/projects.py +0 -0
  69. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  70. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  71. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  72. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  73. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  74. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  75. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  76. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  77. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/blueprint_view.py +0 -0
  78. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/code_mount_parameters.py +0 -0
  79. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/code_mount_parameters_param.py +0 -0
  80. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  81. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  82. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  83. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  84. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  85. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/devbox_view.py +0 -0
  86. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  87. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  88. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/function_invoke_async_params.py +0 -0
  89. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/function_invoke_sync_params.py +0 -0
  90. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/function_list_view.py +0 -0
  91. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/functions/function_invocation_list_view.py +0 -0
  92. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/functions/invocation_list_params.py +0 -0
  93. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/project_list_view.py +0 -0
  94. {runloop_api_client-0.1.0a8/src/runloop_api_client/types/functions/invocations → runloop_api_client-0.1.0a9/src/runloop_api_client/types/projects}/__init__.py +0 -0
  95. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/resource_size.py +0 -0
  96. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/src/runloop_api_client/types/shared/project_logs_view.py +0 -0
  97. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/__init__.py +0 -0
  98. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/api_resources/__init__.py +0 -0
  99. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/api_resources/devboxes/__init__.py +0 -0
  100. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/api_resources/devboxes/test_logs.py +0 -0
  101. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/api_resources/functions/__init__.py +0 -0
  102. {runloop_api_client-0.1.0a8/tests/api_resources/functions/invocations → runloop_api_client-0.1.0a9/tests/api_resources/projects}/__init__.py +0 -0
  103. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/api_resources/projects/test_logs.py +0 -0
  104. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/api_resources/test_blueprints.py +0 -0
  105. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/api_resources/test_projects.py +0 -0
  106. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/conftest.py +0 -0
  107. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/sample_file.txt +0 -0
  108. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_client.py +0 -0
  109. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_deepcopy.py +0 -0
  110. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_extract_files.py +0 -0
  111. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_files.py +0 -0
  112. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_models.py +0 -0
  113. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_qs.py +0 -0
  114. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_required_args.py +0 -0
  115. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_response.py +0 -0
  116. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_streaming.py +0 -0
  117. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_transform.py +0 -0
  118. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_utils/test_proxy.py +0 -0
  119. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/test_utils/test_typing.py +0 -0
  120. {runloop_api_client-0.1.0a8 → runloop_api_client-0.1.0a9}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.9"
3
+ }
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.9 (2024-08-01)
4
+
5
+ Full Changelog: [v0.1.0-alpha.8...v0.1.0-alpha.9](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.8...v0.1.0-alpha.9)
6
+
7
+ ### Chores
8
+
9
+ * update SDK settings ([#60](https://github.com/runloopai/api-client-python/issues/60)) ([0ccfd28](https://github.com/runloopai/api-client-python/commit/0ccfd28645206b0dedc2dac42e17fcaec14c293e))
10
+
3
11
  ## 0.1.0-alpha.8 (2024-08-01)
4
12
 
5
13
  Full Changelog: [v0.1.0-alpha.7...v0.1.0-alpha.8](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.7...v0.1.0-alpha.8)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.1.0a8
3
+ Version: 0.1.0a9
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
@@ -1,7 +1,7 @@
1
1
  # Shared Types
2
2
 
3
3
  ```python
4
- from runloop_api_client.types import ProjectLogsView
4
+ from runloop_api_client.types import FunctionInvocationExecutionDetailView, ProjectLogsView
5
5
  ```
6
6
 
7
7
  # Account
@@ -57,7 +57,9 @@ Methods:
57
57
  - <code title="get /v1/devboxes/{id}">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
58
58
  - <code title="get /v1/devboxes">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">list</a>(\*\*<a href="src/runloop_api_client/types/devbox_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_list_view.py">DevboxListView</a></code>
59
59
  - <code title="post /v1/devboxes/{id}/execute_sync">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">execute_sync</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_execute_sync_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
60
+ - <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_execution_detail_view.py">DevboxExecutionDetailView</a></code>
60
61
  - <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>
62
+ - <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_execution_detail_view.py">DevboxExecutionDetailView</a></code>
61
63
 
62
64
  ## Logs
63
65
 
@@ -76,36 +78,28 @@ Methods:
76
78
  Types:
77
79
 
78
80
  ```python
79
- from runloop_api_client.types import (
80
- FunctionListView,
81
- FunctionInvokeAsyncResponse,
82
- FunctionInvokeSyncResponse,
83
- )
81
+ from runloop_api_client.types import FunctionListView
84
82
  ```
85
83
 
86
84
  Methods:
87
85
 
88
86
  - <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>
89
- - <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>
90
- - <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>
87
+ - <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_execution_detail_view.py">FunctionInvocationExecutionDetailView</a></code>
88
+ - <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_execution_detail_view.py">FunctionInvocationExecutionDetailView</a></code>
91
89
 
92
90
  ## Invocations
93
91
 
94
92
  Types:
95
93
 
96
94
  ```python
97
- from runloop_api_client.types.functions import (
98
- FunctionInvocationListView,
99
- KillOperationResponse,
100
- InvocationRetrieveResponse,
101
- )
95
+ from runloop_api_client.types.functions import FunctionInvocationListView, KillOperationResponse
102
96
  ```
103
97
 
104
98
  Methods:
105
99
 
106
- - <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>
107
- - <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>
108
- - <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>
100
+ - <code title="get /v1/functions/invocations/{invocationId}">client.functions.invocations.<a href="./src/runloop_api_client/resources/functions/invocations.py">retrieve</a>(invocation_id) -> <a href="./src/runloop_api_client/types/shared/function_invocation_execution_detail_view.py">FunctionInvocationExecutionDetailView</a></code>
101
+ - <code title="get /v1/functions/invocations">client.functions.invocations.<a href="./src/runloop_api_client/resources/functions/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>
102
+ - <code title="post /v1/functions/invocations/{invocationId}/kill">client.functions.invocations.<a href="./src/runloop_api_client/resources/functions/invocations.py">kill</a>(invocation_id) -> <a href="./src/runloop_api_client/types/functions/kill_operation_response.py">object</a></code>
109
103
 
110
104
  # Projects
111
105
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.1.0-alpha.8"
3
+ version = "0.1.0-alpha.9"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "runloop_api_client"
4
- __version__ = "0.1.0-alpha.8" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.9" # x-release-please-version
@@ -247,6 +247,39 @@ class DevboxesResource(SyncAPIResource):
247
247
  cast_to=DevboxExecutionDetailView,
248
248
  )
249
249
 
250
+ def read_file(
251
+ self,
252
+ id: str,
253
+ *,
254
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
255
+ # The extra values given here take precedence over values defined on the client or passed to this method.
256
+ extra_headers: Headers | None = None,
257
+ extra_query: Query | None = None,
258
+ extra_body: Body | None = None,
259
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
260
+ ) -> DevboxExecutionDetailView:
261
+ """
262
+ Read file contents from a file on given Devbox.
263
+
264
+ Args:
265
+ extra_headers: Send extra headers
266
+
267
+ extra_query: Add additional query parameters to the request
268
+
269
+ extra_body: Add additional JSON properties to the request
270
+
271
+ timeout: Override the client-level default timeout for this request, in seconds
272
+ """
273
+ if not id:
274
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
275
+ return self._post(
276
+ f"/v1/devboxes/{id}/read_file",
277
+ options=make_request_options(
278
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
279
+ ),
280
+ cast_to=DevboxExecutionDetailView,
281
+ )
282
+
250
283
  def shutdown(
251
284
  self,
252
285
  id: str,
@@ -281,6 +314,39 @@ class DevboxesResource(SyncAPIResource):
281
314
  cast_to=DevboxView,
282
315
  )
283
316
 
317
+ def write_file(
318
+ self,
319
+ id: str,
320
+ *,
321
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
322
+ # The extra values given here take precedence over values defined on the client or passed to this method.
323
+ extra_headers: Headers | None = None,
324
+ extra_query: Query | None = None,
325
+ extra_body: Body | None = None,
326
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
327
+ ) -> DevboxExecutionDetailView:
328
+ """
329
+ Write contents to a file at path on the Devbox.
330
+
331
+ Args:
332
+ extra_headers: Send extra headers
333
+
334
+ extra_query: Add additional query parameters to the request
335
+
336
+ extra_body: Add additional JSON properties to the request
337
+
338
+ timeout: Override the client-level default timeout for this request, in seconds
339
+ """
340
+ if not id:
341
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
342
+ return self._post(
343
+ f"/v1/devboxes/{id}/write_file",
344
+ options=make_request_options(
345
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
346
+ ),
347
+ cast_to=DevboxExecutionDetailView,
348
+ )
349
+
284
350
 
285
351
  class AsyncDevboxesResource(AsyncAPIResource):
286
352
  @cached_property
@@ -493,6 +559,39 @@ class AsyncDevboxesResource(AsyncAPIResource):
493
559
  cast_to=DevboxExecutionDetailView,
494
560
  )
495
561
 
562
+ async def read_file(
563
+ self,
564
+ id: str,
565
+ *,
566
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
567
+ # The extra values given here take precedence over values defined on the client or passed to this method.
568
+ extra_headers: Headers | None = None,
569
+ extra_query: Query | None = None,
570
+ extra_body: Body | None = None,
571
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
572
+ ) -> DevboxExecutionDetailView:
573
+ """
574
+ Read file contents from a file on given Devbox.
575
+
576
+ Args:
577
+ extra_headers: Send extra headers
578
+
579
+ extra_query: Add additional query parameters to the request
580
+
581
+ extra_body: Add additional JSON properties to the request
582
+
583
+ timeout: Override the client-level default timeout for this request, in seconds
584
+ """
585
+ if not id:
586
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
587
+ return await self._post(
588
+ f"/v1/devboxes/{id}/read_file",
589
+ options=make_request_options(
590
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
591
+ ),
592
+ cast_to=DevboxExecutionDetailView,
593
+ )
594
+
496
595
  async def shutdown(
497
596
  self,
498
597
  id: str,
@@ -527,6 +626,39 @@ class AsyncDevboxesResource(AsyncAPIResource):
527
626
  cast_to=DevboxView,
528
627
  )
529
628
 
629
+ async def write_file(
630
+ self,
631
+ id: str,
632
+ *,
633
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
634
+ # The extra values given here take precedence over values defined on the client or passed to this method.
635
+ extra_headers: Headers | None = None,
636
+ extra_query: Query | None = None,
637
+ extra_body: Body | None = None,
638
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
639
+ ) -> DevboxExecutionDetailView:
640
+ """
641
+ Write contents to a file at path on the Devbox.
642
+
643
+ Args:
644
+ extra_headers: Send extra headers
645
+
646
+ extra_query: Add additional query parameters to the request
647
+
648
+ extra_body: Add additional JSON properties to the request
649
+
650
+ timeout: Override the client-level default timeout for this request, in seconds
651
+ """
652
+ if not id:
653
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
654
+ return await self._post(
655
+ f"/v1/devboxes/{id}/write_file",
656
+ options=make_request_options(
657
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
658
+ ),
659
+ cast_to=DevboxExecutionDetailView,
660
+ )
661
+
530
662
 
531
663
  class DevboxesResourceWithRawResponse:
532
664
  def __init__(self, devboxes: DevboxesResource) -> None:
@@ -544,9 +676,15 @@ class DevboxesResourceWithRawResponse:
544
676
  self.execute_sync = to_raw_response_wrapper(
545
677
  devboxes.execute_sync,
546
678
  )
679
+ self.read_file = to_raw_response_wrapper(
680
+ devboxes.read_file,
681
+ )
547
682
  self.shutdown = to_raw_response_wrapper(
548
683
  devboxes.shutdown,
549
684
  )
685
+ self.write_file = to_raw_response_wrapper(
686
+ devboxes.write_file,
687
+ )
550
688
 
551
689
  @cached_property
552
690
  def logs(self) -> LogsResourceWithRawResponse:
@@ -569,9 +707,15 @@ class AsyncDevboxesResourceWithRawResponse:
569
707
  self.execute_sync = async_to_raw_response_wrapper(
570
708
  devboxes.execute_sync,
571
709
  )
710
+ self.read_file = async_to_raw_response_wrapper(
711
+ devboxes.read_file,
712
+ )
572
713
  self.shutdown = async_to_raw_response_wrapper(
573
714
  devboxes.shutdown,
574
715
  )
716
+ self.write_file = async_to_raw_response_wrapper(
717
+ devboxes.write_file,
718
+ )
575
719
 
576
720
  @cached_property
577
721
  def logs(self) -> AsyncLogsResourceWithRawResponse:
@@ -594,9 +738,15 @@ class DevboxesResourceWithStreamingResponse:
594
738
  self.execute_sync = to_streamed_response_wrapper(
595
739
  devboxes.execute_sync,
596
740
  )
741
+ self.read_file = to_streamed_response_wrapper(
742
+ devboxes.read_file,
743
+ )
597
744
  self.shutdown = to_streamed_response_wrapper(
598
745
  devboxes.shutdown,
599
746
  )
747
+ self.write_file = to_streamed_response_wrapper(
748
+ devboxes.write_file,
749
+ )
600
750
 
601
751
  @cached_property
602
752
  def logs(self) -> LogsResourceWithStreamingResponse:
@@ -619,9 +769,15 @@ class AsyncDevboxesResourceWithStreamingResponse:
619
769
  self.execute_sync = async_to_streamed_response_wrapper(
620
770
  devboxes.execute_sync,
621
771
  )
772
+ self.read_file = async_to_streamed_response_wrapper(
773
+ devboxes.read_file,
774
+ )
622
775
  self.shutdown = async_to_streamed_response_wrapper(
623
776
  devboxes.shutdown,
624
777
  )
778
+ self.write_file = async_to_streamed_response_wrapper(
779
+ devboxes.write_file,
780
+ )
625
781
 
626
782
  @cached_property
627
783
  def logs(self) -> AsyncLogsResourceWithStreamingResponse:
@@ -27,10 +27,8 @@ from .invocations import (
27
27
  AsyncInvocationsResourceWithStreamingResponse,
28
28
  )
29
29
  from ..._base_client import make_request_options
30
- from .invocations.invocations import InvocationsResource, AsyncInvocationsResource
31
30
  from ...types.function_list_view import FunctionListView
32
- from ...types.function_invoke_sync_response import FunctionInvokeSyncResponse
33
- from ...types.function_invoke_async_response import FunctionInvokeAsyncResponse
31
+ from ...types.shared.function_invocation_execution_detail_view import FunctionInvocationExecutionDetailView
34
32
 
35
33
  __all__ = ["FunctionsResource", "AsyncFunctionsResource"]
36
34
 
@@ -80,7 +78,7 @@ class FunctionsResource(SyncAPIResource):
80
78
  extra_query: Query | None = None,
81
79
  extra_body: Body | None = None,
82
80
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
83
- ) -> FunctionInvokeAsyncResponse:
81
+ ) -> FunctionInvocationExecutionDetailView:
84
82
  """Invoke the remote function asynchronously.
85
83
 
86
84
  This will return a job id that can be
@@ -113,7 +111,7 @@ class FunctionsResource(SyncAPIResource):
113
111
  options=make_request_options(
114
112
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
115
113
  ),
116
- cast_to=FunctionInvokeAsyncResponse,
114
+ cast_to=FunctionInvocationExecutionDetailView,
117
115
  )
118
116
 
119
117
  def invoke_sync(
@@ -129,7 +127,7 @@ class FunctionsResource(SyncAPIResource):
129
127
  extra_query: Query | None = None,
130
128
  extra_body: Body | None = None,
131
129
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
132
- ) -> FunctionInvokeSyncResponse:
130
+ ) -> FunctionInvocationExecutionDetailView:
133
131
  """Invoke the remote function synchronously.
134
132
 
135
133
  This will block until the function
@@ -163,7 +161,7 @@ class FunctionsResource(SyncAPIResource):
163
161
  options=make_request_options(
164
162
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
165
163
  ),
166
- cast_to=FunctionInvokeSyncResponse,
164
+ cast_to=FunctionInvocationExecutionDetailView,
167
165
  )
168
166
 
169
167
 
@@ -212,7 +210,7 @@ class AsyncFunctionsResource(AsyncAPIResource):
212
210
  extra_query: Query | None = None,
213
211
  extra_body: Body | None = None,
214
212
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
215
- ) -> FunctionInvokeAsyncResponse:
213
+ ) -> FunctionInvocationExecutionDetailView:
216
214
  """Invoke the remote function asynchronously.
217
215
 
218
216
  This will return a job id that can be
@@ -245,7 +243,7 @@ class AsyncFunctionsResource(AsyncAPIResource):
245
243
  options=make_request_options(
246
244
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
247
245
  ),
248
- cast_to=FunctionInvokeAsyncResponse,
246
+ cast_to=FunctionInvocationExecutionDetailView,
249
247
  )
250
248
 
251
249
  async def invoke_sync(
@@ -261,7 +259,7 @@ class AsyncFunctionsResource(AsyncAPIResource):
261
259
  extra_query: Query | None = None,
262
260
  extra_body: Body | None = None,
263
261
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
264
- ) -> FunctionInvokeSyncResponse:
262
+ ) -> FunctionInvocationExecutionDetailView:
265
263
  """Invoke the remote function synchronously.
266
264
 
267
265
  This will block until the function
@@ -295,7 +293,7 @@ class AsyncFunctionsResource(AsyncAPIResource):
295
293
  options=make_request_options(
296
294
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
297
295
  ),
298
- cast_to=FunctionInvokeSyncResponse,
296
+ cast_to=FunctionInvocationExecutionDetailView,
299
297
  )
300
298
 
301
299
 
@@ -4,23 +4,23 @@ from __future__ import annotations
4
4
 
5
5
  import httpx
6
6
 
7
- from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
8
- from ...._utils import (
7
+ from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
8
+ from ..._utils import (
9
9
  maybe_transform,
10
10
  async_maybe_transform,
11
11
  )
12
- from ...._compat import cached_property
13
- from ...._resource import SyncAPIResource, AsyncAPIResource
14
- from ...._response import (
12
+ from ..._compat import cached_property
13
+ from ..._resource import SyncAPIResource, AsyncAPIResource
14
+ from ..._response import (
15
15
  to_raw_response_wrapper,
16
16
  to_streamed_response_wrapper,
17
17
  async_to_raw_response_wrapper,
18
18
  async_to_streamed_response_wrapper,
19
19
  )
20
- from ...._base_client import make_request_options
21
- from ....types.functions import invocation_list_params
22
- from ....types.functions.invocation_retrieve_response import InvocationRetrieveResponse
23
- from ....types.functions.function_invocation_list_view import FunctionInvocationListView
20
+ from ..._base_client import make_request_options
21
+ from ...types.functions import invocation_list_params
22
+ from ...types.functions.function_invocation_list_view import FunctionInvocationListView
23
+ from ...types.shared.function_invocation_execution_detail_view import FunctionInvocationExecutionDetailView
24
24
 
25
25
  __all__ = ["InvocationsResource", "AsyncInvocationsResource"]
26
26
 
@@ -44,7 +44,7 @@ class InvocationsResource(SyncAPIResource):
44
44
  extra_query: Query | None = None,
45
45
  extra_body: Body | None = None,
46
46
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
47
- ) -> InvocationRetrieveResponse:
47
+ ) -> FunctionInvocationExecutionDetailView:
48
48
  """Get the details of a function invocation.
49
49
 
50
50
  This includes the status, response,
@@ -66,7 +66,7 @@ class InvocationsResource(SyncAPIResource):
66
66
  options=make_request_options(
67
67
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
68
68
  ),
69
- cast_to=InvocationRetrieveResponse,
69
+ cast_to=FunctionInvocationExecutionDetailView,
70
70
  )
71
71
 
72
72
  def list(
@@ -169,7 +169,7 @@ class AsyncInvocationsResource(AsyncAPIResource):
169
169
  extra_query: Query | None = None,
170
170
  extra_body: Body | None = None,
171
171
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
172
- ) -> InvocationRetrieveResponse:
172
+ ) -> FunctionInvocationExecutionDetailView:
173
173
  """Get the details of a function invocation.
174
174
 
175
175
  This includes the status, response,
@@ -191,7 +191,7 @@ class AsyncInvocationsResource(AsyncAPIResource):
191
191
  options=make_request_options(
192
192
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
193
193
  ),
194
- cast_to=InvocationRetrieveResponse,
194
+ cast_to=FunctionInvocationExecutionDetailView,
195
195
  )
196
196
 
197
197
  async def list(
@@ -2,7 +2,10 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from .shared import ProjectLogsView as ProjectLogsView
5
+ from .shared import (
6
+ ProjectLogsView as ProjectLogsView,
7
+ FunctionInvocationExecutionDetailView as FunctionInvocationExecutionDetailView,
8
+ )
6
9
  from .devbox_view import DevboxView as DevboxView
7
10
  from .resource_size import ResourceSize as ResourceSize
8
11
  from .blueprint_view import BlueprintView as BlueprintView
@@ -24,6 +27,4 @@ from .code_mount_parameters_param import CodeMountParametersParam as CodeMountPa
24
27
  from .function_invoke_sync_params import FunctionInvokeSyncParams as FunctionInvokeSyncParams
25
28
  from .devbox_execution_detail_view import DevboxExecutionDetailView as DevboxExecutionDetailView
26
29
  from .function_invoke_async_params import FunctionInvokeAsyncParams as FunctionInvokeAsyncParams
27
- from .function_invoke_sync_response import FunctionInvokeSyncResponse as FunctionInvokeSyncResponse
28
30
  from .blueprint_build_logs_list_view import BlueprintBuildLogsListView as BlueprintBuildLogsListView
29
- from .function_invoke_async_response import FunctionInvokeAsyncResponse as FunctionInvokeAsyncResponse
@@ -3,5 +3,4 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from .invocation_list_params import InvocationListParams as InvocationListParams
6
- from .invocation_retrieve_response import InvocationRetrieveResponse as InvocationRetrieveResponse
7
6
  from .function_invocation_list_view import FunctionInvocationListView as FunctionInvocationListView
@@ -1,3 +1,6 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  from .project_logs_view import ProjectLogsView as ProjectLogsView
4
+ from .function_invocation_execution_detail_view import (
5
+ FunctionInvocationExecutionDetailView as FunctionInvocationExecutionDetailView,
6
+ )
@@ -5,10 +5,10 @@ from typing_extensions import Literal
5
5
 
6
6
  from ..._models import BaseModel
7
7
 
8
- __all__ = ["InvocationRetrieveResponse"]
8
+ __all__ = ["FunctionInvocationExecutionDetailView"]
9
9
 
10
10
 
11
- class InvocationRetrieveResponse(BaseModel):
11
+ class FunctionInvocationExecutionDetailView(BaseModel):
12
12
  id: Optional[str] = None
13
13
  """Unique ID of the invocation."""
14
14
 
@@ -9,10 +9,8 @@ import pytest
9
9
 
10
10
  from tests.utils import assert_matches_type
11
11
  from runloop_api_client import Runloop, AsyncRunloop
12
- from runloop_api_client.types.functions import (
13
- FunctionInvocationListView,
14
- InvocationRetrieveResponse,
15
- )
12
+ from runloop_api_client.types.shared import FunctionInvocationExecutionDetailView
13
+ from runloop_api_client.types.functions import FunctionInvocationListView
16
14
 
17
15
  base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
18
16
 
@@ -25,7 +23,7 @@ class TestInvocations:
25
23
  invocation = client.functions.invocations.retrieve(
26
24
  "invocationId",
27
25
  )
28
- assert_matches_type(InvocationRetrieveResponse, invocation, path=["response"])
26
+ assert_matches_type(FunctionInvocationExecutionDetailView, invocation, path=["response"])
29
27
 
30
28
  @parametrize
31
29
  def test_raw_response_retrieve(self, client: Runloop) -> None:
@@ -36,7 +34,7 @@ class TestInvocations:
36
34
  assert response.is_closed is True
37
35
  assert response.http_request.headers.get("X-Stainless-Lang") == "python"
38
36
  invocation = response.parse()
39
- assert_matches_type(InvocationRetrieveResponse, invocation, path=["response"])
37
+ assert_matches_type(FunctionInvocationExecutionDetailView, invocation, path=["response"])
40
38
 
41
39
  @parametrize
42
40
  def test_streaming_response_retrieve(self, client: Runloop) -> None:
@@ -47,7 +45,7 @@ class TestInvocations:
47
45
  assert response.http_request.headers.get("X-Stainless-Lang") == "python"
48
46
 
49
47
  invocation = response.parse()
50
- assert_matches_type(InvocationRetrieveResponse, invocation, path=["response"])
48
+ assert_matches_type(FunctionInvocationExecutionDetailView, invocation, path=["response"])
51
49
 
52
50
  assert cast(Any, response.is_closed) is True
53
51
 
@@ -138,7 +136,7 @@ class TestAsyncInvocations:
138
136
  invocation = await async_client.functions.invocations.retrieve(
139
137
  "invocationId",
140
138
  )
141
- assert_matches_type(InvocationRetrieveResponse, invocation, path=["response"])
139
+ assert_matches_type(FunctionInvocationExecutionDetailView, invocation, path=["response"])
142
140
 
143
141
  @parametrize
144
142
  async def test_raw_response_retrieve(self, async_client: AsyncRunloop) -> None:
@@ -149,7 +147,7 @@ class TestAsyncInvocations:
149
147
  assert response.is_closed is True
150
148
  assert response.http_request.headers.get("X-Stainless-Lang") == "python"
151
149
  invocation = await response.parse()
152
- assert_matches_type(InvocationRetrieveResponse, invocation, path=["response"])
150
+ assert_matches_type(FunctionInvocationExecutionDetailView, invocation, path=["response"])
153
151
 
154
152
  @parametrize
155
153
  async def test_streaming_response_retrieve(self, async_client: AsyncRunloop) -> None:
@@ -160,7 +158,7 @@ class TestAsyncInvocations:
160
158
  assert response.http_request.headers.get("X-Stainless-Lang") == "python"
161
159
 
162
160
  invocation = await response.parse()
163
- assert_matches_type(InvocationRetrieveResponse, invocation, path=["response"])
161
+ assert_matches_type(FunctionInvocationExecutionDetailView, invocation, path=["response"])
164
162
 
165
163
  assert cast(Any, response.is_closed) is True
166
164