runloop_api_client 0.68.0__tar.gz → 1.0.0__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 (339) hide show
  1. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/.gitignore +4 -1
  2. runloop_api_client-1.0.0/.release-please-manifest.json +3 -0
  3. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/CHANGELOG.md +46 -0
  4. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/PKG-INFO +1 -1
  5. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/README-SDK.md +20 -18
  6. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/pyproject.toml +7 -1
  7. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_version.py +1 -1
  8. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/blueprints.py +11 -32
  9. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/devboxes/devboxes.py +6 -6
  10. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/scenarios/scenarios.py +22 -10
  11. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/__init__.py +12 -3
  12. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/_helpers.py +6 -6
  13. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/_types.py +30 -15
  14. runloop_api_client-1.0.0/src/runloop_api_client/sdk/async_.py +639 -0
  15. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/async_blueprint.py +22 -29
  16. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/async_devbox.py +227 -123
  17. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/async_execution.py +15 -26
  18. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/async_execution_result.py +33 -35
  19. runloop_api_client-1.0.0/src/runloop_api_client/sdk/async_scorer.py +77 -0
  20. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/async_snapshot.py +26 -35
  21. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/async_storage_object.py +39 -52
  22. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/blueprint.py +22 -29
  23. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/devbox.py +223 -124
  24. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/execution.py +15 -26
  25. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/execution_result.py +34 -37
  26. runloop_api_client-1.0.0/src/runloop_api_client/sdk/scorer.py +77 -0
  27. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/snapshot.py +26 -35
  28. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/sdk/storage_object.py +39 -52
  29. runloop_api_client-1.0.0/src/runloop_api_client/sdk/sync.py +634 -0
  30. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/blueprint_build_parameters.py +1 -16
  31. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/blueprint_create_params.py +1 -16
  32. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/blueprint_preview_params.py +1 -16
  33. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_create_params.py +3 -3
  34. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_execute_async_params.py +11 -9
  35. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +1 -1
  36. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +1 -1
  37. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +1 -1
  38. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +1 -1
  39. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +3 -0
  40. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared/launch_parameters.py +1 -1
  41. runloop_api_client-1.0.0/src/runloop_api_client/types/shared/mount.py +28 -0
  42. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared/run_profile.py +5 -1
  43. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +3 -1
  44. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +1 -1
  45. runloop_api_client-1.0.0/src/runloop_api_client/types/shared_params/mount.py +25 -0
  46. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared_params/run_profile.py +5 -1
  47. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/test_benchmarks.py +14 -0
  48. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/test_blueprints.py +4 -24
  49. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/test_devboxes.py +2 -0
  50. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/test_scenarios.py +14 -0
  51. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/async_devbox/test_core.py +6 -6
  52. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/async_devbox/test_interfaces.py +3 -3
  53. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/async_devbox/test_streaming.py +1 -1
  54. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/conftest.py +16 -0
  55. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/devbox/test_core.py +6 -6
  56. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/devbox/test_interfaces.py +6 -6
  57. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/devbox/test_streaming.py +1 -1
  58. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/test_async_blueprint.py +4 -4
  59. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/test_async_execution_result.py +2 -2
  60. runloop_api_client-1.0.0/tests/sdk/test_async_ops.py +758 -0
  61. runloop_api_client-1.0.0/tests/sdk/test_async_scorer.py +69 -0
  62. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/test_async_snapshot.py +5 -5
  63. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/test_async_storage_object.py +5 -5
  64. runloop_api_client-1.0.0/tests/sdk/test_ops.py +692 -0
  65. runloop_api_client-1.0.0/tests/sdk/test_scorer.py +71 -0
  66. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/test_async_blueprint.py +1 -1
  67. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/test_async_devbox.py +329 -11
  68. runloop_api_client-1.0.0/tests/smoketests/sdk/test_async_scorer.py +122 -0
  69. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/test_async_storage_object.py +54 -15
  70. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/test_blueprint.py +1 -1
  71. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/test_devbox.py +322 -11
  72. runloop_api_client-1.0.0/tests/smoketests/sdk/test_scorer.py +122 -0
  73. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/test_storage_object.py +54 -15
  74. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_streaming.py +2 -0
  75. runloop_api_client-1.0.0/uv.lock +3011 -0
  76. runloop_api_client-0.68.0/.release-please-manifest.json +0 -3
  77. runloop_api_client-0.68.0/src/runloop_api_client/sdk/async_.py +0 -511
  78. runloop_api_client-0.68.0/src/runloop_api_client/sdk/protocols.py +0 -201
  79. runloop_api_client-0.68.0/src/runloop_api_client/sdk/sync.py +0 -503
  80. runloop_api_client-0.68.0/src/runloop_api_client/types/shared/mount.py +0 -12
  81. runloop_api_client-0.68.0/src/runloop_api_client/types/shared_params/mount.py +0 -13
  82. runloop_api_client-0.68.0/tests/sdk/test_async_clients.py +0 -363
  83. runloop_api_client-0.68.0/tests/sdk/test_clients.py +0 -345
  84. runloop_api_client-0.68.0/uv.lock +0 -1598
  85. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/CONTRIBUTING.md +0 -0
  86. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/LICENSE +0 -0
  87. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/README.md +0 -0
  88. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/SECURITY.md +0 -0
  89. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/api.md +0 -0
  90. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/bin/check-release-environment +0 -0
  91. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/bin/publish-pypi +0 -0
  92. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/examples/.keep +0 -0
  93. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/release-please-config.json +0 -0
  94. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/requirements-dev.lock +0 -0
  95. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop/lib/.keep +0 -0
  96. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/__init__.py +0 -0
  97. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_base_client.py +0 -0
  98. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_client.py +0 -0
  99. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_compat.py +0 -0
  100. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_constants.py +0 -0
  101. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_exceptions.py +0 -0
  102. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_files.py +0 -0
  103. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_models.py +0 -0
  104. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_qs.py +0 -0
  105. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_resource.py +0 -0
  106. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_response.py +0 -0
  107. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_streaming.py +0 -0
  108. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_types.py +0 -0
  109. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  110. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_compat.py +0 -0
  111. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_datetime_parse.py +0 -0
  112. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  113. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  114. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  115. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
  116. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  117. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  118. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  119. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  120. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  121. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/_utils/_validation.py +0 -0
  122. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/lib/.keep +0 -0
  123. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/lib/polling.py +0 -0
  124. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  125. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/pagination.py +0 -0
  126. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/py.typed +0 -0
  127. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/__init__.py +0 -0
  128. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/agents.py +0 -0
  129. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
  130. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +0 -0
  131. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
  132. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  133. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  134. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  135. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  136. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  137. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  138. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/objects.py +0 -0
  139. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/repositories.py +0 -0
  140. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  141. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
  142. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
  143. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/resources/secrets.py +0 -0
  144. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/__init__.py +0 -0
  145. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/agent_create_params.py +0 -0
  146. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/agent_list_params.py +0 -0
  147. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/agent_list_view.py +0 -0
  148. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/agent_view.py +0 -0
  149. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
  150. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
  151. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  152. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  153. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  154. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
  155. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  156. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
  157. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
  158. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
  159. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
  160. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/benchmarks/run_list_scenario_runs_params.py +0 -0
  161. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  162. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  163. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/blueprint_create_from_inspection_params.py +0 -0
  164. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  165. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/blueprint_list_public_params.py +0 -0
  166. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  167. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  168. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  169. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  170. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  171. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  172. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  173. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_execute_params.py +0 -0
  174. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  175. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  176. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  177. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  178. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  179. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  180. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  181. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  182. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_send_std_in_result.py +0 -0
  183. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
  184. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  185. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  186. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  187. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  188. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  189. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  190. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  191. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_wait_for_command_params.py +0 -0
  192. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  193. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  194. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  195. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  196. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  197. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  198. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  199. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  200. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  201. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  202. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  203. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  204. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  205. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
  206. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  207. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  208. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  209. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  210. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/execution_kill_params.py +0 -0
  211. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  212. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/execution_send_std_in_params.py +0 -0
  213. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/execution_stream_stderr_updates_params.py +0 -0
  214. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/execution_stream_stdout_updates_params.py +0 -0
  215. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/execution_update_chunk.py +0 -0
  216. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  217. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/input_context.py +0 -0
  218. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/input_context_param.py +0 -0
  219. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/input_context_update_param.py +0 -0
  220. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/inspection_source_param.py +0 -0
  221. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/object_create_params.py +0 -0
  222. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/object_download_params.py +0 -0
  223. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/object_download_url_view.py +0 -0
  224. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/object_list_params.py +0 -0
  225. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/object_list_public_params.py +0 -0
  226. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/object_list_view.py +0 -0
  227. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/object_view.py +0 -0
  228. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  229. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  230. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  231. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/repository_inspect_params.py +0 -0
  232. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
  233. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
  234. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
  235. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/repository_manifest_view.py +0 -0
  236. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
  237. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  238. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
  239. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
  240. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  241. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  242. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  243. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  244. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
  245. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  246. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenario_update_params.py +0 -0
  247. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenario_view.py +0 -0
  248. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  249. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  250. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  251. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  252. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  253. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
  254. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
  255. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  256. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  257. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  258. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
  259. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scoring_function.py +0 -0
  260. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
  261. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  262. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
  263. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/secret_list_params.py +0 -0
  264. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/secret_list_view.py +0 -0
  265. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
  266. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/secret_view.py +0 -0
  267. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  268. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  269. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared/agent_mount_parameters.py +0 -0
  270. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared/agent_source.py +0 -0
  271. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared/object_mount_parameters.py +0 -0
  272. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  273. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  274. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared_params/agent_mount_parameters.py +0 -0
  275. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared_params/agent_source.py +0 -0
  276. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/src/runloop_api_client/types/shared_params/object_mount_parameters.py +0 -0
  277. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/__init__.py +0 -0
  278. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/__init__.py +0 -0
  279. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/benchmarks/__init__.py +0 -0
  280. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/benchmarks/test_runs.py +0 -0
  281. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/devboxes/__init__.py +0 -0
  282. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
  283. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/devboxes/test_computers.py +0 -0
  284. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
  285. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  286. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  287. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/scenarios/__init__.py +0 -0
  288. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/scenarios/test_runs.py +0 -0
  289. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/scenarios/test_scorers.py +0 -0
  290. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/test_agents.py +0 -0
  291. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/test_objects.py +0 -0
  292. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/test_repositories.py +0 -0
  293. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/api_resources/test_secrets.py +0 -0
  294. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/conftest.py +0 -0
  295. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sample_file.txt +0 -0
  296. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/__init__.py +0 -0
  297. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/async_devbox/__init__.py +0 -0
  298. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/async_devbox/conftest.py +0 -0
  299. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/async_devbox/test_edge_cases.py +0 -0
  300. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/devbox/__init__.py +0 -0
  301. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/devbox/conftest.py +0 -0
  302. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/devbox/test_edge_cases.py +0 -0
  303. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/test_async_execution.py +0 -0
  304. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/test_blueprint.py +0 -0
  305. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/test_execution.py +0 -0
  306. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/test_execution_result.py +0 -0
  307. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/test_helpers.py +0 -0
  308. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/test_snapshot.py +0 -0
  309. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/sdk/test_storage_object.py +0 -0
  310. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/README.md +0 -0
  311. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/__init__.py +0 -0
  312. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/conftest.py +0 -0
  313. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/README.md +0 -0
  314. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/__init__.py +0 -0
  315. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/conftest.py +0 -0
  316. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/test_async_sdk.py +0 -0
  317. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/test_async_snapshot.py +0 -0
  318. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/test_sdk.py +0 -0
  319. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/sdk/test_snapshot.py +0 -0
  320. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/test_blueprints.py +0 -0
  321. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/test_devboxes.py +0 -0
  322. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/test_executions.py +0 -0
  323. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/test_scenarios_benchmarks.py +0 -0
  324. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/test_snapshots.py +0 -0
  325. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/smoketests/utils.py +0 -0
  326. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_client.py +0 -0
  327. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_deepcopy.py +0 -0
  328. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_extract_files.py +0 -0
  329. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_files.py +0 -0
  330. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_models.py +0 -0
  331. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_polling.py +0 -0
  332. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_qs.py +0 -0
  333. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_required_args.py +0 -0
  334. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_response.py +0 -0
  335. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_transform.py +0 -0
  336. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_utils/test_datetime_parse.py +0 -0
  337. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_utils/test_proxy.py +0 -0
  338. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/test_utils/test_typing.py +0 -0
  339. {runloop_api_client-0.68.0 → runloop_api_client-1.0.0}/tests/utils.py +0 -0
@@ -23,4 +23,7 @@ htmlcov/
23
23
  coverage.json
24
24
  coverage-summary.json
25
25
  *.cover
26
- .pytest_cache/
26
+ .pytest_cache/
27
+
28
+ # Docs
29
+ site/
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.0.0"
3
+ }
@@ -1,5 +1,51 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.0 (2025-12-02)
4
+
5
+ Full Changelog: [v0.69.0...v1.0.0](https://github.com/runloopai/api-client-python/compare/v0.69.0...v1.0.0)
6
+
7
+ ### ⚠ BREAKING CHANGES
8
+
9
+ * **devbox:** made command positional arg in exec and exec_async ([#695](https://github.com/runloopai/api-client-python/issues/695))
10
+
11
+ ### Features
12
+
13
+ * **blueprints:** Add build context to the OpenAPI spec ([#6494](https://github.com/runloopai/api-client-python/issues/6494)) ([d202b94](https://github.com/runloopai/api-client-python/commit/d202b942c07614ca954a8bbe3a9a6302e9a04216))
14
+ * **devbox:** added devbox.shell(shellName) command and stateful shell class to SDK ([#696](https://github.com/runloopai/api-client-python/issues/696)) ([c1e8f09](https://github.com/runloopai/api-client-python/commit/c1e8f0965a419ff53d830ba3c43a1c9a29dae5c7))
15
+ * **devbox:** made command positional arg in exec and exec_async ([#695](https://github.com/runloopai/api-client-python/issues/695)) ([6cc8c2f](https://github.com/runloopai/api-client-python/commit/6cc8c2fd4f904e8cc4386d81558157ca6fb69bfa))
16
+ * **sdk:** added scorer classes to sdk ([#698](https://github.com/runloopai/api-client-python/issues/698)) ([85f798f](https://github.com/runloopai/api-client-python/commit/85f798f2d8a7727b783e01a260ff0a52bdf01d78))
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * **api:** don't ignore devbox keep_alive, suspend and resume in api ([fe3589f](https://github.com/runloopai/api-client-python/commit/fe3589f5fbb36a5b79f1d4a25e86f88676556fdb))
22
+ * **devbox:** launch parameter typo ([1c9c346](https://github.com/runloopai/api-client-python/commit/1c9c346e475b64fc389928fee0f7140e532c4f9c))
23
+ * **scenarios:** update parameters for manually maintained start_run_and_await_env_ready methods ([#692](https://github.com/runloopai/api-client-python/issues/692)) ([8000495](https://github.com/runloopai/api-client-python/commit/8000495f70b2e6f4f12742fb8a6d641dbbc088ca))
24
+ * **scorer:** fixed RL_TEST_CONTEXT to RL_SCORER_CONTEXT ([df43a42](https://github.com/runloopai/api-client-python/commit/df43a42a45b9ce67aba27835a41c9a0ebfc6a407))
25
+
26
+
27
+ ### Chores
28
+
29
+ * **blueprints:** Add build context examples ([#694](https://github.com/runloopai/api-client-python/issues/694)) ([6e63928](https://github.com/runloopai/api-client-python/commit/6e6392864b3cde20dfea5d173fed9a156b960ccd))
30
+ * hide build context APIs ([159a38f](https://github.com/runloopai/api-client-python/commit/159a38f0980c00430a1b949541076b0d63df2df2))
31
+ * **mounts:** Update documentation for deprecated fields to direct the user to the replacement API ([4936844](https://github.com/runloopai/api-client-python/commit/4936844989ec7a0d37c835dd37b8007e8caba944))
32
+
33
+ ## 0.69.0 (2025-11-21)
34
+
35
+ Full Changelog: [v0.68.0...v0.69.0](https://github.com/runloopai/api-client-python/compare/v0.68.0...v0.69.0)
36
+
37
+ ### Features
38
+
39
+ * **blueprints:** blueprints create_and_await_build_complete now take in build_context and named_build_context arguments ([#681](https://github.com/runloopai/api-client-python/issues/681)) ([1febe28](https://github.com/runloopai/api-client-python/commit/1febe28e2cadb23eae0cc411922646ce7b8875d3))
40
+ * **devbox:** unify api for devbox mounts ([01c7d14](https://github.com/runloopai/api-client-python/commit/01c7d14091961822d7fe706d6fa7528b6607f87a))
41
+ * **docs:** add documentation for the object oriented sdk, rendered with sphinx ([#677](https://github.com/runloopai/api-client-python/issues/677)) ([e8d1053](https://github.com/runloopai/api-client-python/commit/e8d1053edd15c07f8e8099e9736f97e5fd72fcfb))
42
+ * **storage-objects:** Add upload_from_dir helper method ([#680](https://github.com/runloopai/api-client-python/issues/680)) ([be5d99e](https://github.com/runloopai/api-client-python/commit/be5d99ef9983a64658c38ae5e0364122d11b86c4))
43
+
44
+
45
+ ### Documentation
46
+
47
+ * restructured sync vs async sdk and resources, added support for more type references ([#679](https://github.com/runloopai/api-client-python/issues/679)) ([6af891e](https://github.com/runloopai/api-client-python/commit/6af891e0b87d038b5b61a683fdf410df94f495b6))
48
+
3
49
  ## 0.68.0 (2025-11-19)
4
50
 
5
51
  Full Changelog: [v0.67.0...v0.68.0](https://github.com/runloopai/api-client-python/compare/v0.67.0...v0.68.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.68.0
3
+ Version: 1.0.0
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
@@ -38,12 +38,12 @@ runloop = RunloopSDK()
38
38
 
39
39
  # Create a ready-to-use devbox
40
40
  with runloop.devbox.create(name="my-devbox") as devbox:
41
- result = devbox.cmd.exec(command="echo 'Hello from Runloop!'")
41
+ result = devbox.cmd.exec("echo 'Hello from Runloop!'")
42
42
  print(result.stdout())
43
43
 
44
44
  # Stream stdout in real time
45
45
  devbox.cmd.exec(
46
- command="ls -la",
46
+ "ls -la",
47
47
  stdout=lambda line: print("stdout:", line),
48
48
  )
49
49
 
@@ -68,13 +68,13 @@ from runloop_api_client import AsyncRunloopSDK
68
68
  async def main():
69
69
  runloop = AsyncRunloopSDK()
70
70
  async with await runloop.devbox.create(name="async-devbox") as devbox:
71
- result = await devbox.cmd.exec(command="pwd")
71
+ result = await devbox.cmd.exec("pwd")
72
72
  print(await result.stdout())
73
73
 
74
74
  def capture(line: str) -> None:
75
75
  print(">>", line)
76
76
 
77
- await devbox.cmd.exec(command="ls", stdout=capture)
77
+ await devbox.cmd.exec("ls", stdout=capture)
78
78
 
79
79
  asyncio.run(main())
80
80
  ```
@@ -147,13 +147,13 @@ Execute commands synchronously or asynchronously:
147
147
 
148
148
  ```python
149
149
  # Synchronous command execution (waits for completion)
150
- result = devbox.cmd.exec(command="ls -la")
150
+ result = devbox.cmd.exec("ls -la")
151
151
  print("Output:", result.stdout())
152
152
  print("Exit code:", result.exit_code)
153
153
  print("Success:", result.success)
154
154
 
155
155
  # Asynchronous command execution (returns immediately)
156
- execution = devbox.cmd.exec_async(command="npm run dev")
156
+ execution = devbox.cmd.exec_async("npm run dev")
157
157
 
158
158
  # Check execution status
159
159
  state = execution.get_state()
@@ -173,7 +173,7 @@ The `Execution` object provides fine-grained control over asynchronous command e
173
173
 
174
174
  ```python
175
175
  # Start a long-running process
176
- execution = devbox.cmd.exec_async(command="python train_model.py")
176
+ execution = devbox.cmd.exec_async("python train_model.py")
177
177
 
178
178
  # Get the execution ID
179
179
  print("Execution ID:", execution.execution_id)
@@ -208,10 +208,10 @@ The `ExecutionResult` object contains the output and exit status of a completed
208
208
 
209
209
  ```python
210
210
  # From synchronous execution
211
- result = devbox.cmd.exec(command="ls -la /tmp")
211
+ result = devbox.cmd.exec("ls -la /tmp")
212
212
 
213
213
  # Or from asynchronous execution
214
- execution = devbox.cmd.exec_async(command="echo 'test'")
214
+ execution = devbox.cmd.exec_async("echo 'test'")
215
215
  result = execution.result()
216
216
 
217
217
  # Access execution results
@@ -250,7 +250,7 @@ def handle_output(line: str) -> None:
250
250
  print("LOG:", line)
251
251
 
252
252
  result = devbox.cmd.exec(
253
- command="python train.py",
253
+ "python train.py",
254
254
  stdout=handle_output,
255
255
  stderr=lambda line: print("ERR:", line),
256
256
  output=lambda line: print("ANY:", line),
@@ -267,7 +267,7 @@ def capture(line: str) -> None:
267
267
  log_queue.put_nowait(line)
268
268
 
269
269
  await devbox.cmd.exec(
270
- command="tail -f /var/log/app.log",
270
+ "tail -f /var/log/app.log",
271
271
  stdout=capture,
272
272
  )
273
273
  ```
@@ -356,6 +356,8 @@ devbox.await_suspended()
356
356
  devbox.shutdown()
357
357
  ```
358
358
 
359
+ > **State-waiting behavior:** In the synchronous SDK, `runloop.devbox.from_id()` and `devbox.resume()` block until the devbox reaches the `running` state, and `devbox.suspend()` blocks until the devbox is `suspended`. The async counterparts return immediately; call `await_running()` / `await_suspended()` explicitly if you need to wait for the state transition.
360
+
359
361
  #### Context Manager Support
360
362
 
361
363
  Devboxes support context managers for automatic cleanup:
@@ -363,13 +365,13 @@ Devboxes support context managers for automatic cleanup:
363
365
  ```python
364
366
  # Synchronous
365
367
  with runloop.devbox.create(name="temp-devbox") as devbox:
366
- result = devbox.cmd.exec(command="echo 'Hello'")
368
+ result = devbox.cmd.exec("echo 'Hello'")
367
369
  print(result.stdout())
368
370
  # devbox is automatically shutdown when exiting the context
369
371
 
370
372
  # Asynchronous
371
373
  async with await runloop.devbox.create(name="temp-devbox") as devbox:
372
- result = await devbox.cmd.exec(command="echo 'Hello'")
374
+ result = await devbox.cmd.exec("echo 'Hello'")
373
375
  print(await result.stdout())
374
376
  # devbox is automatically shutdown when exiting the context
375
377
  ```
@@ -584,7 +586,7 @@ devbox = runloop.devbox.create(
584
586
  )
585
587
 
586
588
  # The storage object is now accessible at /home/user/data.txt in the devbox
587
- result = devbox.cmd.exec(command="cat /home/user/data.txt")
589
+ result = devbox.cmd.exec("cat /home/user/data.txt")
588
590
  print(result.stdout()) # "Hello, World!"
589
591
 
590
592
  # Mount archived objects (tar, tgz, gzip) - they get extracted to a directory
@@ -605,7 +607,7 @@ devbox_with_archive = runloop.devbox.create(
605
607
  )
606
608
 
607
609
  # Access extracted archive contents
608
- result = devbox_with_archive.cmd.exec(command="ls -la /home/user/project/")
610
+ result = devbox_with_archive.cmd.exec("ls -la /home/user/project/")
609
611
  print(result.stdout())
610
612
  ```
611
613
 
@@ -632,7 +634,7 @@ runloop = RunloopSDK()
632
634
 
633
635
  try:
634
636
  devbox = runloop.devbox.create(name="example-devbox")
635
- result = devbox.cmd.exec(command="invalid-command")
637
+ result = devbox.cmd.exec("invalid-command")
636
638
  except runloop_api_client.APIConnectionError as e:
637
639
  print("The server could not be reached")
638
640
  print(e.__cause__) # an underlying Exception, likely raised within httpx.
@@ -692,14 +694,14 @@ async def main():
692
694
 
693
695
  # All the same operations, but with await
694
696
  async with await runloop.devbox.create(name="async-devbox") as devbox:
695
- result = await devbox.cmd.exec(command="pwd")
697
+ result = await devbox.cmd.exec("pwd")
696
698
  print(await result.stdout())
697
699
 
698
700
  # Streaming (note: callbacks must be synchronous)
699
701
  def capture(line: str) -> None:
700
702
  print(">>", line)
701
703
 
702
- await devbox.cmd.exec(command="ls", stdout=capture)
704
+ await devbox.cmd.exec("ls", stdout=capture)
703
705
 
704
706
  # Async file operations
705
707
  await devbox.file.write(path="/tmp/test.txt", contents="Hello")
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.68.0"
3
+ version = "1.0.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -64,6 +64,12 @@ dev = [
64
64
  "uuid-utils>=0.11.0",
65
65
  "pytest-cov>=7.0.0",
66
66
  ]
67
+ docs = [
68
+ "furo>=2025.9.25",
69
+ "sphinx>=7.4.7",
70
+ "sphinx-autodoc-typehints>=2.3.0",
71
+ "sphinx-toolbox>=4.0.0",
72
+ ]
67
73
  pydantic-v1 = [
68
74
  "pydantic>=1.9.0, <2",
69
75
  ]
@@ -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.68.0" # x-release-please-version
4
+ __version__ = "1.0.0" # x-release-please-version
@@ -1,5 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
- # isort: skip_file
3
2
 
4
3
  from __future__ import annotations
5
4
 
@@ -15,8 +14,7 @@ from ..types import (
15
14
  blueprint_create_from_inspection_params,
16
15
  )
17
16
  from .._types import NOT_GIVEN, Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
18
- from .._utils import maybe_transform, async_maybe_transform
19
- from .._utils._validation import ValidationNotification
17
+ from .._utils import is_given, maybe_transform, async_maybe_transform
20
18
  from .._compat import cached_property
21
19
  from .._resource import SyncAPIResource, AsyncAPIResource
22
20
  from .._response import (
@@ -31,6 +29,7 @@ from .._exceptions import RunloopError
31
29
  from ..lib.polling import PollingConfig, poll_until
32
30
  from .._base_client import AsyncPaginator, make_request_options
33
31
  from ..lib.polling_async import async_poll_until
32
+ from .._utils._validation import ValidationNotification
34
33
  from ..types.blueprint_view import BlueprintView
35
34
  from ..types.blueprint_preview_view import BlueprintPreviewView
36
35
  from ..types.inspection_source_param import InspectionSourceParam
@@ -79,7 +78,7 @@ def _validate_file_mounts(file_mounts: Optional[Dict[str, str]] | Omit) -> Valid
79
78
 
80
79
  note = ValidationNotification()
81
80
 
82
- if file_mounts is omit or file_mounts is None:
81
+ if file_mounts is None or not is_given(file_mounts):
83
82
  return note
84
83
 
85
84
  total_size_bytes = 0
@@ -137,7 +136,6 @@ class BlueprintsResource(SyncAPIResource):
137
136
  file_mounts: Optional[Dict[str, str]] | Omit = omit,
138
137
  launch_parameters: Optional[LaunchParameters] | Omit = omit,
139
138
  metadata: Optional[Dict[str, str]] | Omit = omit,
140
- named_build_contexts: Optional[Dict[str, blueprint_create_params.NamedBuildContexts]] | Omit = omit,
141
139
  secrets: Optional[Dict[str, str]] | Omit = omit,
142
140
  services: Optional[Iterable[blueprint_create_params.Service]] | Omit = omit,
143
141
  system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -181,11 +179,6 @@ class BlueprintsResource(SyncAPIResource):
181
179
 
182
180
  metadata: (Optional) User defined metadata for the Blueprint.
183
181
 
184
- named_build_contexts: (Optional) Map of named build contexts to attach to the Blueprint build, where
185
- the keys are the name used when referencing the contexts in a Dockerfile. See
186
- Docker buildx additional contexts for details:
187
- https://docs.docker.com/reference/cli/docker/buildx/build/#build-context
188
-
189
182
  secrets: (Optional) Map of mount IDs/environment variable names to secret names. Secrets
190
183
  will be available to commands during the build. Secrets are NOT stored in the
191
184
  blueprint image. Example: {"DB_PASS": "DATABASE_PASSWORD"} makes the secret
@@ -225,7 +218,6 @@ class BlueprintsResource(SyncAPIResource):
225
218
  "file_mounts": file_mounts,
226
219
  "launch_parameters": launch_parameters,
227
220
  "metadata": metadata,
228
- "named_build_contexts": named_build_contexts,
229
221
  "secrets": secrets,
230
222
  "services": services,
231
223
  "system_setup_commands": system_setup_commands,
@@ -327,11 +319,13 @@ class BlueprintsResource(SyncAPIResource):
327
319
  base_blueprint_id: Optional[str] | Omit = omit,
328
320
  base_blueprint_name: Optional[str] | Omit = omit,
329
321
  build_args: Optional[Dict[str, str]] | Omit = omit,
322
+ build_context: Optional[blueprint_create_params.BuildContext] | Omit = omit,
330
323
  code_mounts: Optional[Iterable[CodeMountParameters]] | Omit = omit,
331
324
  dockerfile: Optional[str] | Omit = omit,
332
325
  file_mounts: Optional[Dict[str, str]] | Omit = omit,
333
326
  launch_parameters: Optional[LaunchParameters] | Omit = omit,
334
327
  metadata: Optional[Dict[str, str]] | Omit = omit,
328
+ named_build_contexts: Optional[Dict[str, blueprint_create_params.NamedBuildContexts]] | Omit = omit,
335
329
  secrets: Optional[Dict[str, str]] | Omit = omit,
336
330
  services: Optional[Iterable[blueprint_create_params.Service]] | Omit = omit,
337
331
  system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -365,11 +359,13 @@ class BlueprintsResource(SyncAPIResource):
365
359
  base_blueprint_id=base_blueprint_id,
366
360
  base_blueprint_name=base_blueprint_name,
367
361
  build_args=build_args,
362
+ build_context=build_context,
368
363
  code_mounts=code_mounts,
369
364
  dockerfile=dockerfile,
370
365
  file_mounts=file_mounts,
371
366
  launch_parameters=launch_parameters,
372
367
  metadata=metadata,
368
+ named_build_contexts=named_build_contexts,
373
369
  secrets=secrets,
374
370
  services=services,
375
371
  system_setup_commands=system_setup_commands,
@@ -655,7 +651,6 @@ class BlueprintsResource(SyncAPIResource):
655
651
  file_mounts: Optional[Dict[str, str]] | Omit = omit,
656
652
  launch_parameters: Optional[LaunchParameters] | Omit = omit,
657
653
  metadata: Optional[Dict[str, str]] | Omit = omit,
658
- named_build_contexts: Optional[Dict[str, blueprint_preview_params.NamedBuildContexts]] | Omit = omit,
659
654
  secrets: Optional[Dict[str, str]] | Omit = omit,
660
655
  services: Optional[Iterable[blueprint_preview_params.Service]] | Omit = omit,
661
656
  system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -697,11 +692,6 @@ class BlueprintsResource(SyncAPIResource):
697
692
 
698
693
  metadata: (Optional) User defined metadata for the Blueprint.
699
694
 
700
- named_build_contexts: (Optional) Map of named build contexts to attach to the Blueprint build, where
701
- the keys are the name used when referencing the contexts in a Dockerfile. See
702
- Docker buildx additional contexts for details:
703
- https://docs.docker.com/reference/cli/docker/buildx/build/#build-context
704
-
705
695
  secrets: (Optional) Map of mount IDs/environment variable names to secret names. Secrets
706
696
  will be available to commands during the build. Secrets are NOT stored in the
707
697
  blueprint image. Example: {"DB_PASS": "DATABASE_PASSWORD"} makes the secret
@@ -737,7 +727,6 @@ class BlueprintsResource(SyncAPIResource):
737
727
  "file_mounts": file_mounts,
738
728
  "launch_parameters": launch_parameters,
739
729
  "metadata": metadata,
740
- "named_build_contexts": named_build_contexts,
741
730
  "secrets": secrets,
742
731
  "services": services,
743
732
  "system_setup_commands": system_setup_commands,
@@ -788,7 +777,6 @@ class AsyncBlueprintsResource(AsyncAPIResource):
788
777
  file_mounts: Optional[Dict[str, str]] | Omit = omit,
789
778
  launch_parameters: Optional[LaunchParameters] | Omit = omit,
790
779
  metadata: Optional[Dict[str, str]] | Omit = omit,
791
- named_build_contexts: Optional[Dict[str, blueprint_create_params.NamedBuildContexts]] | Omit = omit,
792
780
  secrets: Optional[Dict[str, str]] | Omit = omit,
793
781
  services: Optional[Iterable[blueprint_create_params.Service]] | Omit = omit,
794
782
  system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -832,11 +820,6 @@ class AsyncBlueprintsResource(AsyncAPIResource):
832
820
 
833
821
  metadata: (Optional) User defined metadata for the Blueprint.
834
822
 
835
- named_build_contexts: (Optional) Map of named build contexts to attach to the Blueprint build, where
836
- the keys are the name used when referencing the contexts in a Dockerfile. See
837
- Docker buildx additional contexts for details:
838
- https://docs.docker.com/reference/cli/docker/buildx/build/#build-context
839
-
840
823
  secrets: (Optional) Map of mount IDs/environment variable names to secret names. Secrets
841
824
  will be available to commands during the build. Secrets are NOT stored in the
842
825
  blueprint image. Example: {"DB_PASS": "DATABASE_PASSWORD"} makes the secret
@@ -876,7 +859,6 @@ class AsyncBlueprintsResource(AsyncAPIResource):
876
859
  "file_mounts": file_mounts,
877
860
  "launch_parameters": launch_parameters,
878
861
  "metadata": metadata,
879
- "named_build_contexts": named_build_contexts,
880
862
  "secrets": secrets,
881
863
  "services": services,
882
864
  "system_setup_commands": system_setup_commands,
@@ -978,11 +960,13 @@ class AsyncBlueprintsResource(AsyncAPIResource):
978
960
  base_blueprint_id: Optional[str] | Omit = omit,
979
961
  base_blueprint_name: Optional[str] | Omit = omit,
980
962
  build_args: Optional[Dict[str, str]] | Omit = omit,
963
+ build_context: Optional[blueprint_create_params.BuildContext] | Omit = omit,
981
964
  code_mounts: Optional[Iterable[CodeMountParameters]] | Omit = omit,
982
965
  dockerfile: Optional[str] | Omit = omit,
983
966
  file_mounts: Optional[Dict[str, str]] | Omit = omit,
984
967
  launch_parameters: Optional[LaunchParameters] | Omit = omit,
985
968
  metadata: Optional[Dict[str, str]] | Omit = omit,
969
+ named_build_contexts: Optional[Dict[str, blueprint_create_params.NamedBuildContexts]] | Omit = omit,
986
970
  secrets: Optional[Dict[str, str]] | Omit = omit,
987
971
  services: Optional[Iterable[blueprint_create_params.Service]] | Omit = omit,
988
972
  system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -1016,11 +1000,13 @@ class AsyncBlueprintsResource(AsyncAPIResource):
1016
1000
  base_blueprint_id=base_blueprint_id,
1017
1001
  base_blueprint_name=base_blueprint_name,
1018
1002
  build_args=build_args,
1003
+ build_context=build_context,
1019
1004
  code_mounts=code_mounts,
1020
1005
  dockerfile=dockerfile,
1021
1006
  file_mounts=file_mounts,
1022
1007
  launch_parameters=launch_parameters,
1023
1008
  metadata=metadata,
1009
+ named_build_contexts=named_build_contexts,
1024
1010
  secrets=secrets,
1025
1011
  services=services,
1026
1012
  system_setup_commands=system_setup_commands,
@@ -1306,7 +1292,6 @@ class AsyncBlueprintsResource(AsyncAPIResource):
1306
1292
  file_mounts: Optional[Dict[str, str]] | Omit = omit,
1307
1293
  launch_parameters: Optional[LaunchParameters] | Omit = omit,
1308
1294
  metadata: Optional[Dict[str, str]] | Omit = omit,
1309
- named_build_contexts: Optional[Dict[str, blueprint_preview_params.NamedBuildContexts]] | Omit = omit,
1310
1295
  secrets: Optional[Dict[str, str]] | Omit = omit,
1311
1296
  services: Optional[Iterable[blueprint_preview_params.Service]] | Omit = omit,
1312
1297
  system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -1348,11 +1333,6 @@ class AsyncBlueprintsResource(AsyncAPIResource):
1348
1333
 
1349
1334
  metadata: (Optional) User defined metadata for the Blueprint.
1350
1335
 
1351
- named_build_contexts: (Optional) Map of named build contexts to attach to the Blueprint build, where
1352
- the keys are the name used when referencing the contexts in a Dockerfile. See
1353
- Docker buildx additional contexts for details:
1354
- https://docs.docker.com/reference/cli/docker/buildx/build/#build-context
1355
-
1356
1336
  secrets: (Optional) Map of mount IDs/environment variable names to secret names. Secrets
1357
1337
  will be available to commands during the build. Secrets are NOT stored in the
1358
1338
  blueprint image. Example: {"DB_PASS": "DATABASE_PASSWORD"} makes the secret
@@ -1388,7 +1368,6 @@ class AsyncBlueprintsResource(AsyncAPIResource):
1388
1368
  "file_mounts": file_mounts,
1389
1369
  "launch_parameters": launch_parameters,
1390
1370
  "metadata": metadata,
1391
- "named_build_contexts": named_build_contexts,
1392
1371
  "secrets": secrets,
1393
1372
  "services": services,
1394
1373
  "system_setup_commands": system_setup_commands,
@@ -217,7 +217,7 @@ class DevboxesResource(SyncAPIResource):
217
217
  successfully built Blueprint with the given name. Only one of (Snapshot ID,
218
218
  Blueprint ID, Blueprint name) should be specified.
219
219
 
220
- code_mounts: A list of code mounts to be included in the Devbox.
220
+ code_mounts: A list of code mounts to be included in the Devbox. Use mounts instead.
221
221
 
222
222
  entrypoint: (Optional) When specified, the Devbox will run this script as its main
223
223
  executable. The devbox lifecycle will be bound to entrypoint, shutting down when
@@ -225,13 +225,13 @@ class DevboxesResource(SyncAPIResource):
225
225
 
226
226
  environment_variables: (Optional) Environment variables used to configure your Devbox.
227
227
 
228
- file_mounts: (Optional) Map of paths and file contents to write before setup..
228
+ file_mounts: Map of paths and file contents to write before setup. Use mounts instead.
229
229
 
230
230
  launch_parameters: Parameters to configure the resources and launch time behavior of the Devbox.
231
231
 
232
232
  metadata: User defined metadata to attach to the devbox for organization.
233
233
 
234
- mounts: A list of file system mounts to be included in the Devbox.
234
+ mounts: A list of mounts to be included in the Devbox.
235
235
 
236
236
  name: (Optional) A user specified name to give the Devbox.
237
237
 
@@ -1755,7 +1755,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
1755
1755
  successfully built Blueprint with the given name. Only one of (Snapshot ID,
1756
1756
  Blueprint ID, Blueprint name) should be specified.
1757
1757
 
1758
- code_mounts: A list of code mounts to be included in the Devbox.
1758
+ code_mounts: A list of code mounts to be included in the Devbox. Use mounts instead.
1759
1759
 
1760
1760
  entrypoint: (Optional) When specified, the Devbox will run this script as its main
1761
1761
  executable. The devbox lifecycle will be bound to entrypoint, shutting down when
@@ -1763,13 +1763,13 @@ class AsyncDevboxesResource(AsyncAPIResource):
1763
1763
 
1764
1764
  environment_variables: (Optional) Environment variables used to configure your Devbox.
1765
1765
 
1766
- file_mounts: (Optional) Map of paths and file contents to write before setup..
1766
+ file_mounts: Map of paths and file contents to write before setup. Use mounts instead.
1767
1767
 
1768
1768
  launch_parameters: Parameters to configure the resources and launch time behavior of the Devbox.
1769
1769
 
1770
1770
  metadata: User defined metadata to attach to the devbox for organization.
1771
1771
 
1772
- mounts: A list of file system mounts to be included in the Devbox.
1772
+ mounts: A list of mounts to be included in the Devbox.
1773
1773
 
1774
1774
  name: (Optional) A user specified name to give the Devbox.
1775
1775
 
@@ -30,7 +30,7 @@ from .scorers import (
30
30
  ScorersResourceWithStreamingResponse,
31
31
  AsyncScorersResourceWithStreamingResponse,
32
32
  )
33
- from ..._types import NOT_GIVEN, Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
33
+ from ..._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
34
34
  from ..._utils import maybe_transform, async_maybe_transform
35
35
  from ..._compat import cached_property
36
36
  from ..._resource import SyncAPIResource, AsyncAPIResource
@@ -457,17 +457,17 @@ class ScenariosResource(SyncAPIResource):
457
457
  self,
458
458
  *,
459
459
  scenario_id: str,
460
- benchmark_run_id: Optional[str] | NotGiven = NOT_GIVEN,
461
- metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
462
- run_name: Optional[str] | NotGiven = NOT_GIVEN,
463
- run_profile: Optional[scenario_start_run_params.RunProfile] | NotGiven = NOT_GIVEN,
460
+ benchmark_run_id: Optional[str] | Omit = omit,
461
+ metadata: Optional[Dict[str, str]] | Omit = omit,
462
+ run_name: Optional[str] | Omit = omit,
463
+ run_profile: Optional[scenario_start_run_params.RunProfile] | Omit = omit,
464
464
  polling_config: PollingConfig | None = None,
465
465
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
466
466
  # The extra values given here take precedence over values defined on the client or passed to this method.
467
467
  extra_headers: Headers | None = None,
468
468
  extra_query: Query | None = None,
469
469
  extra_body: Body | None = None,
470
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
470
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
471
471
  idempotency_key: str | None = None,
472
472
  ) -> ScenarioRunView:
473
473
  """Start a new ScenarioRun and wait for its environment to be ready.
@@ -913,11 +913,18 @@ class AsyncScenariosResource(AsyncAPIResource):
913
913
  async def start_run_and_await_env_ready(
914
914
  self,
915
915
  scenario_id: str,
916
- benchmark_run_id: Optional[str] | NotGiven = NOT_GIVEN,
917
- metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
918
- run_name: Optional[str] | NotGiven = NOT_GIVEN,
919
- run_profile: Optional[scenario_start_run_params.RunProfile] | NotGiven = NOT_GIVEN,
916
+ benchmark_run_id: Optional[str] | Omit = omit,
917
+ metadata: Optional[Dict[str, str]] | Omit = omit,
918
+ run_name: Optional[str] | Omit = omit,
919
+ run_profile: Optional[scenario_start_run_params.RunProfile] | Omit = omit,
920
920
  polling_config: PollingConfig | None = None,
921
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
922
+ # The extra values given here take precedence over values defined on the client or passed to this method.
923
+ extra_headers: Headers | None = None,
924
+ extra_query: Query | None = None,
925
+ extra_body: Body | None = None,
926
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
927
+ idempotency_key: str | None = None,
921
928
  ) -> ScenarioRunView:
922
929
  """Start a new ScenarioRun and wait for its environment to be ready.
923
930
 
@@ -941,6 +948,11 @@ class AsyncScenariosResource(AsyncAPIResource):
941
948
  metadata=metadata,
942
949
  run_name=run_name,
943
950
  run_profile=run_profile,
951
+ extra_headers=extra_headers,
952
+ extra_query=extra_query,
953
+ extra_body=extra_body,
954
+ timeout=timeout,
955
+ idempotency_key=idempotency_key,
944
956
  )
945
957
 
946
958
  await self._client.devboxes.await_running(
@@ -5,19 +5,22 @@ Provides both sync (`RunloopSDK`) and async (`AsyncRunloopSDK`) interfaces.
5
5
 
6
6
  from __future__ import annotations
7
7
 
8
- from .sync import DevboxOps, RunloopSDK, SnapshotOps, BlueprintOps, StorageObjectOps
8
+ from .sync import DevboxOps, ScorerOps, RunloopSDK, SnapshotOps, BlueprintOps, StorageObjectOps
9
9
  from .async_ import (
10
10
  AsyncDevboxOps,
11
+ AsyncScorerOps,
11
12
  AsyncRunloopSDK,
12
13
  AsyncSnapshotOps,
13
14
  AsyncBlueprintOps,
14
15
  AsyncStorageObjectOps,
15
16
  )
16
- from .devbox import Devbox
17
+ from .devbox import Devbox, NamedShell
18
+ from .scorer import Scorer
17
19
  from .snapshot import Snapshot
18
20
  from .blueprint import Blueprint
19
21
  from .execution import Execution
20
- from .async_devbox import AsyncDevbox
22
+ from .async_devbox import AsyncDevbox, AsyncNamedShell
23
+ from .async_scorer import AsyncScorer
21
24
  from .async_snapshot import AsyncSnapshot
22
25
  from .storage_object import StorageObject
23
26
  from .async_blueprint import AsyncBlueprint
@@ -35,6 +38,8 @@ __all__ = [
35
38
  "AsyncDevboxOps",
36
39
  "BlueprintOps",
37
40
  "AsyncBlueprintOps",
41
+ "ScorerOps",
42
+ "AsyncScorerOps",
38
43
  "SnapshotOps",
39
44
  "AsyncSnapshotOps",
40
45
  "StorageObjectOps",
@@ -48,8 +53,12 @@ __all__ = [
48
53
  "AsyncExecutionResult",
49
54
  "Blueprint",
50
55
  "AsyncBlueprint",
56
+ "Scorer",
57
+ "AsyncScorer",
51
58
  "Snapshot",
52
59
  "AsyncSnapshot",
53
60
  "StorageObject",
54
61
  "AsyncStorageObject",
62
+ "NamedShell",
63
+ "AsyncNamedShell",
55
64
  ]
@@ -39,11 +39,11 @@ T = TypeVar("T")
39
39
  def filter_params(params: Mapping[str, Any], type_filter: Type[T]) -> T:
40
40
  """Filter params dict to only include keys defined in the given TypedDict type.
41
41
 
42
- Args:
43
- params: Dictionary or TypedDict of parameters to filter
44
- type_filter: TypedDict class to filter against
45
-
46
- Returns:
47
- Filtered dictionary matching the TypedDict structure
42
+ :param params: Dictionary or TypedDict of parameters to filter
43
+ :type params: Mapping[str, Any]
44
+ :param type_filter: TypedDict class to filter against
45
+ :type type_filter: Type[T]
46
+ :return: Filtered dictionary matching the TypedDict structure
47
+ :rtype: T
48
48
  """
49
49
  return {k: v for k, v in params.items() if k in type_filter.__annotations__} # type: ignore[return-value]