runloop-api-client 0.19.0__tar.gz → 0.20.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 (261) hide show
  1. runloop_api_client-0.20.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/CHANGELOG.md +15 -0
  3. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/PKG-INFO +1 -1
  4. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/api.md +22 -0
  5. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/pyproject.toml +2 -2
  6. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/requirements-dev.lock +1 -1
  7. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_constants.py +1 -1
  8. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_models.py +1 -1
  9. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_version.py +1 -1
  10. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/pagination.py +59 -0
  11. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/blueprints.py +229 -0
  12. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/scenarios/__init__.py +14 -0
  13. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/scenarios/scenarios.py +124 -0
  14. runloop_api_client-0.20.0/src/runloop_api_client/resources/scenarios/scorers.py +632 -0
  15. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/input_context.py +4 -0
  16. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/input_context_param.py +4 -0
  17. runloop_api_client-0.20.0/src/runloop_api_client/types/scenarios/__init__.py +14 -0
  18. runloop_api_client-0.20.0/src/runloop_api_client/types/scenarios/scorer_create_params.py +18 -0
  19. runloop_api_client-0.20.0/src/runloop_api_client/types/scenarios/scorer_create_response.py +17 -0
  20. runloop_api_client-0.20.0/src/runloop_api_client/types/scenarios/scorer_list_params.py +15 -0
  21. runloop_api_client-0.20.0/src/runloop_api_client/types/scenarios/scorer_list_response.py +17 -0
  22. runloop_api_client-0.20.0/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +17 -0
  23. runloop_api_client-0.20.0/src/runloop_api_client/types/scenarios/scorer_update_params.py +18 -0
  24. runloop_api_client-0.20.0/src/runloop_api_client/types/scenarios/scorer_update_response.py +17 -0
  25. runloop_api_client-0.20.0/src/runloop_api_client/types/scenarios/scorer_validate_params.py +17 -0
  26. runloop_api_client-0.20.0/src/runloop_api_client/types/scenarios/scorer_validate_response.py +23 -0
  27. runloop_api_client-0.20.0/tests/api_resources/scenarios/test_scorers.py +441 -0
  28. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/test_scenarios.py +8 -2
  29. runloop_api_client-0.19.0/.release-please-manifest.json +0 -3
  30. runloop_api_client-0.19.0/src/runloop_api_client/types/scenarios/__init__.py +0 -5
  31. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/.gitignore +0 -0
  32. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/CONTRIBUTING.md +0 -0
  33. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/LICENSE +0 -0
  34. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/README.md +0 -0
  35. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/SECURITY.md +0 -0
  36. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/bin/check-release-environment +0 -0
  37. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/bin/publish-pypi +0 -0
  38. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/examples/.keep +0 -0
  39. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/mypy.ini +0 -0
  40. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/noxfile.py +0 -0
  41. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/release-please-config.json +0 -0
  42. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/requirements.lock +0 -0
  43. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop/lib/.keep +0 -0
  44. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/__init__.py +0 -0
  45. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_base_client.py +0 -0
  46. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_client.py +0 -0
  47. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_compat.py +0 -0
  48. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_exceptions.py +0 -0
  49. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_files.py +0 -0
  50. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_qs.py +0 -0
  51. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_resource.py +0 -0
  52. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_response.py +0 -0
  53. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_streaming.py +0 -0
  54. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_types.py +0 -0
  55. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  56. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  57. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  58. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  59. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  60. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  61. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  62. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  63. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  64. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/lib/.keep +0 -0
  65. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/lib/polling.py +0 -0
  66. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  67. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/py.typed +0 -0
  68. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/__init__.py +0 -0
  69. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
  70. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +0 -0
  71. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
  72. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  73. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  74. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  75. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/devboxes/devboxes.py +0 -0
  76. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  77. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  78. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/devboxes/lsp.py +0 -0
  79. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/repositories.py +0 -0
  80. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
  81. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/__init__.py +0 -0
  82. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
  83. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  84. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  85. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/benchmark_list_view.py +0 -0
  86. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  87. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
  88. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  89. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
  90. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
  91. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
  92. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  93. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  94. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  95. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  96. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  97. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  98. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  99. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  100. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  101. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  102. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  103. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  104. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  105. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  106. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  107. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  108. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  109. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  110. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  111. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  112. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  113. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  114. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  115. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  116. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  117. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  118. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  119. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  120. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  121. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  122. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  123. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_code_action.py +0 -0
  124. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_command.py +0 -0
  125. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_command_param.py +0 -0
  126. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_diagnostic.py +0 -0
  127. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_diagnostic_param.py +0 -0
  128. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_location.py +0 -0
  129. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_markup_content.py +0 -0
  130. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_parameter_information.py +0 -0
  131. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_range.py +0 -0
  132. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_range_param.py +0 -0
  133. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_signature.py +0 -0
  134. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_workspace_edit.py +0 -0
  135. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/base_workspace_edit_param.py +0 -0
  136. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  137. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/code_action_application_result.py +0 -0
  138. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/code_action_context_param.py +0 -0
  139. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/code_action_kind.py +0 -0
  140. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/code_action_trigger_kind.py +0 -0
  141. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/code_description_param.py +0 -0
  142. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/code_segment_info_response.py +0 -0
  143. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  144. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  145. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  146. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  147. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  148. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  149. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  150. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  151. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  152. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/diagnostic_param.py +0 -0
  153. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/diagnostic_related_information_param.py +0 -0
  154. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/diagnostic_severity.py +0 -0
  155. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/diagnostic_tag.py +0 -0
  156. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/diagnostics_response.py +0 -0
  157. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/document_symbol.py +0 -0
  158. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/document_uri.py +0 -0
  159. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  160. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  161. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  162. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/file_contents_response.py +0 -0
  163. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/file_path.py +0 -0
  164. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/file_uri.py +0 -0
  165. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/health_status_response.py +0 -0
  166. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/integer.py +0 -0
  167. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/l_sp_any_param.py +0 -0
  168. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/location_param.py +0 -0
  169. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  170. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_apply_code_action_params.py +0 -0
  171. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_code_actions_params.py +0 -0
  172. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_diagnostics_params.py +0 -0
  173. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_document_symbols_params.py +0 -0
  174. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_file_definition_params.py +0 -0
  175. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_file_params.py +0 -0
  176. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_files_response.py +0 -0
  177. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_formatting_params.py +0 -0
  178. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_params.py +0 -0
  179. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_response.py +0 -0
  180. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_get_code_segment_info_params.py +0 -0
  181. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_get_signature_help_params.py +0 -0
  182. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_references_params.py +0 -0
  183. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_params.py +0 -0
  184. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_response.py +0 -0
  185. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/position.py +0 -0
  186. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/position_param.py +0 -0
  187. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/range.py +0 -0
  188. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/range_param.py +0 -0
  189. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array.py +0 -0
  190. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array_param.py +0 -0
  191. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/signature_help_response.py +0 -0
  192. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/symbol_kind.py +0 -0
  193. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/symbol_tag.py +0 -0
  194. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/symbol_type.py +0 -0
  195. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/text_edit.py +0 -0
  196. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/text_edit_param.py +0 -0
  197. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/u_ri.py +0 -0
  198. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/uinteger.py +0 -0
  199. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/devboxes/watched_file_response.py +0 -0
  200. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  201. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  202. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  203. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
  204. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/repository_version_details.py +0 -0
  205. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/repository_version_list_view.py +0 -0
  206. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  207. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
  208. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  209. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  210. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  211. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scenario_list_view.py +0 -0
  212. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  213. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
  214. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  215. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scenario_view.py +0 -0
  216. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  217. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  218. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  219. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  220. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scoring_function.py +0 -0
  221. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
  222. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  223. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  224. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  225. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  226. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
  227. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  228. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  229. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  230. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
  231. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/__init__.py +0 -0
  232. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/__init__.py +0 -0
  233. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/benchmarks/__init__.py +0 -0
  234. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/benchmarks/test_runs.py +0 -0
  235. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/devboxes/__init__.py +0 -0
  236. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
  237. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/devboxes/test_computers.py +0 -0
  238. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  239. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  240. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/devboxes/test_lsp.py +0 -0
  241. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/scenarios/__init__.py +0 -0
  242. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/scenarios/test_runs.py +0 -0
  243. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/test_benchmarks.py +0 -0
  244. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/test_blueprints.py +0 -0
  245. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/test_devboxes.py +0 -0
  246. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/api_resources/test_repositories.py +0 -0
  247. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/conftest.py +0 -0
  248. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/sample_file.txt +0 -0
  249. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_client.py +0 -0
  250. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_deepcopy.py +0 -0
  251. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_extract_files.py +0 -0
  252. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_files.py +0 -0
  253. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_models.py +0 -0
  254. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_qs.py +0 -0
  255. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_required_args.py +0 -0
  256. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_response.py +0 -0
  257. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_streaming.py +0 -0
  258. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_transform.py +0 -0
  259. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_utils/test_proxy.py +0 -0
  260. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/test_utils/test_typing.py +0 -0
  261. {runloop_api_client-0.19.0 → runloop_api_client-0.20.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.20.0"
3
+ }
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.20.0 (2025-02-04)
4
+
5
+ Full Changelog: [v0.19.0...v0.20.0](https://github.com/runloopai/api-client-python/compare/v0.19.0...v0.20.0)
6
+
7
+ ### Features
8
+
9
+ * add helpers for blueprint and scenario run creation ([b00a7c1](https://github.com/runloopai/api-client-python/commit/b00a7c1b935db7c919d79ed10c135bf5ed2a9b4f))
10
+ * **api:** api update ([#526](https://github.com/runloopai/api-client-python/issues/526)) ([be26ed7](https://github.com/runloopai/api-client-python/commit/be26ed7c82017d9bff67c9920c078808f8a675e3))
11
+
12
+
13
+ ### Chores
14
+
15
+ * **internal:** bummp ruff dependency ([#525](https://github.com/runloopai/api-client-python/issues/525)) ([84051db](https://github.com/runloopai/api-client-python/commit/84051db83a6347f28ee4891be52f5eee7fa9d02a))
16
+ * **internal:** change default timeout to an int ([#524](https://github.com/runloopai/api-client-python/issues/524)) ([a15ccaa](https://github.com/runloopai/api-client-python/commit/a15ccaa45f69331d57be0144a16ba3b1df387245))
17
+
3
18
  ## 0.19.0 (2025-02-03)
4
19
 
5
20
  Full Changelog: [v0.18.0...v0.19.0](https://github.com/runloopai/api-client-python/compare/v0.18.0...v0.19.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: runloop_api_client
3
- Version: 0.19.0
3
+ Version: 0.20.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
@@ -274,6 +274,28 @@ Methods:
274
274
  - <code title="post /v1/scenarios/runs/{id}/complete">client.scenarios.runs.<a href="./src/runloop_api_client/resources/scenarios/runs.py">complete</a>(id) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">ScenarioRunView</a></code>
275
275
  - <code title="post /v1/scenarios/runs/{id}/score">client.scenarios.runs.<a href="./src/runloop_api_client/resources/scenarios/runs.py">score</a>(id) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">ScenarioRunView</a></code>
276
276
 
277
+ ## Scorers
278
+
279
+ Types:
280
+
281
+ ```python
282
+ from runloop_api_client.types.scenarios import (
283
+ ScorerCreateResponse,
284
+ ScorerRetrieveResponse,
285
+ ScorerUpdateResponse,
286
+ ScorerListResponse,
287
+ ScorerValidateResponse,
288
+ )
289
+ ```
290
+
291
+ Methods:
292
+
293
+ - <code title="post /v1/scenarios/scorers">client.scenarios.scorers.<a href="./src/runloop_api_client/resources/scenarios/scorers.py">create</a>(\*\*<a href="src/runloop_api_client/types/scenarios/scorer_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenarios/scorer_create_response.py">ScorerCreateResponse</a></code>
294
+ - <code title="get /v1/scenarios/scorers/{id}">client.scenarios.scorers.<a href="./src/runloop_api_client/resources/scenarios/scorers.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/scenarios/scorer_retrieve_response.py">ScorerRetrieveResponse</a></code>
295
+ - <code title="post /v1/scenarios/scorers/{id}">client.scenarios.scorers.<a href="./src/runloop_api_client/resources/scenarios/scorers.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/scenarios/scorer_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenarios/scorer_update_response.py">ScorerUpdateResponse</a></code>
296
+ - <code title="get /v1/scenarios/scorers">client.scenarios.scorers.<a href="./src/runloop_api_client/resources/scenarios/scorers.py">list</a>(\*\*<a href="src/runloop_api_client/types/scenarios/scorer_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenarios/scorer_list_response.py">SyncScenarioScorersCursorIDPage[ScorerListResponse]</a></code>
297
+ - <code title="post /v1/scenarios/scorers/{id}/validate">client.scenarios.scorers.<a href="./src/runloop_api_client/resources/scenarios/scorers.py">validate</a>(id, \*\*<a href="src/runloop_api_client/types/scenarios/scorer_validate_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenarios/scorer_validate_response.py">ScorerValidateResponse</a></code>
298
+
277
299
  # Repositories
278
300
 
279
301
  Types:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.19.0"
3
+ version = "0.20.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -177,7 +177,7 @@ select = [
177
177
  "T201",
178
178
  "T203",
179
179
  # misuse of typing.TYPE_CHECKING
180
- "TCH004",
180
+ "TC004",
181
181
  # import rules
182
182
  "TID251",
183
183
  ]
@@ -79,7 +79,7 @@ pytz==2023.3.post1
79
79
  # via dirty-equals
80
80
  respx==0.22.0
81
81
  rich==13.7.1
82
- ruff==0.6.9
82
+ ruff==0.9.4
83
83
  setuptools==68.2.2
84
84
  # via nodeenv
85
85
  six==1.16.0
@@ -6,7 +6,7 @@ RAW_RESPONSE_HEADER = "X-Stainless-Raw-Response"
6
6
  OVERRIDE_CAST_TO_HEADER = "____stainless_override_cast_to"
7
7
 
8
8
  # default timeout is 1 minute
9
- DEFAULT_TIMEOUT = httpx.Timeout(timeout=60.0, connect=5.0)
9
+ DEFAULT_TIMEOUT = httpx.Timeout(timeout=60, connect=5.0)
10
10
  DEFAULT_MAX_RETRIES = 2
11
11
  DEFAULT_CONNECTION_LIMITS = httpx.Limits(max_connections=100, max_keepalive_connections=20)
12
12
 
@@ -172,7 +172,7 @@ class BaseModel(pydantic.BaseModel):
172
172
  @override
173
173
  def __str__(self) -> str:
174
174
  # mypy complains about an invalid self arg
175
- return f'{self.__repr_name__()}({self.__repr_str__(", ")})' # type: ignore[misc]
175
+ return f"{self.__repr_name__()}({self.__repr_str__(', ')})" # type: ignore[misc]
176
176
 
177
177
  # Override the 'construct' method in a way that supports recursive parsing without validation.
178
178
  # Based on https://github.com/samuelcolvin/pydantic/issues/1168#issuecomment-817742836.
@@ -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.19.0" # x-release-please-version
4
+ __version__ = "0.20.0" # x-release-please-version
@@ -22,6 +22,8 @@ __all__ = [
22
22
  "AsyncScenariosCursorIDPage",
23
23
  "SyncScenarioRunsCursorIDPage",
24
24
  "AsyncScenarioRunsCursorIDPage",
25
+ "SyncScenarioScorersCursorIDPage",
26
+ "AsyncScenarioScorersCursorIDPage",
25
27
  ]
26
28
 
27
29
  _T = TypeVar("_T")
@@ -67,6 +69,11 @@ class ScenarioRunsCursorIDPageItem(Protocol):
67
69
  id: str
68
70
 
69
71
 
72
+ @runtime_checkable
73
+ class ScenarioScorersCursorIDPageItem(Protocol):
74
+ id: str
75
+
76
+
70
77
  class SyncBlueprintsCursorIDPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
71
78
  blueprints: List[_T]
72
79
  has_more: Optional[bool] = None
@@ -481,3 +488,55 @@ class AsyncScenarioRunsCursorIDPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]
481
488
  return None
482
489
 
483
490
  return PageInfo(params={"starting_after": item.id})
491
+
492
+
493
+ class SyncScenarioScorersCursorIDPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
494
+ scorers: List[_T]
495
+ has_more: Optional[bool] = None
496
+ total_count: Optional[int] = None
497
+
498
+ @override
499
+ def _get_page_items(self) -> List[_T]:
500
+ scorers = self.scorers
501
+ if not scorers:
502
+ return []
503
+ return scorers
504
+
505
+ @override
506
+ def next_page_info(self) -> Optional[PageInfo]:
507
+ scorers = self.scorers
508
+ if not scorers:
509
+ return None
510
+
511
+ item = cast(Any, scorers[-1])
512
+ if not isinstance(item, ScenarioScorersCursorIDPageItem) or item.id is None: # pyright: ignore[reportUnnecessaryComparison]
513
+ # TODO emit warning log
514
+ return None
515
+
516
+ return PageInfo(params={"starting_after": item.id})
517
+
518
+
519
+ class AsyncScenarioScorersCursorIDPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
520
+ scorers: List[_T]
521
+ has_more: Optional[bool] = None
522
+ total_count: Optional[int] = None
523
+
524
+ @override
525
+ def _get_page_items(self) -> List[_T]:
526
+ scorers = self.scorers
527
+ if not scorers:
528
+ return []
529
+ return scorers
530
+
531
+ @override
532
+ def next_page_info(self) -> Optional[PageInfo]:
533
+ scorers = self.scorers
534
+ if not scorers:
535
+ return None
536
+
537
+ item = cast(Any, scorers[-1])
538
+ if not isinstance(item, ScenarioScorersCursorIDPageItem) or item.id is None: # pyright: ignore[reportUnnecessaryComparison]
539
+ # TODO emit warning log
540
+ return None
541
+
542
+ return PageInfo(params={"starting_after": item.id})
@@ -20,6 +20,9 @@ from .._response import (
20
20
  async_to_raw_response_wrapper,
21
21
  async_to_streamed_response_wrapper,
22
22
  )
23
+ from .._exceptions import RunloopError
24
+ from ..lib.polling import PollingConfig, poll_until
25
+ from ..lib.polling_async import async_poll_until
23
26
  from ..pagination import SyncBlueprintsCursorIDPage, AsyncBlueprintsCursorIDPage
24
27
  from .._base_client import AsyncPaginator, make_request_options
25
28
  from ..types.blueprint_view import BlueprintView
@@ -154,6 +157,119 @@ class BlueprintsResource(SyncAPIResource):
154
157
  cast_to=BlueprintView,
155
158
  )
156
159
 
160
+ def await_build_complete(
161
+ self,
162
+ id: str,
163
+ *,
164
+ polling_config: PollingConfig | None = None,
165
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
166
+ # The extra values given here take precedence over values defined on the client or passed to this method.
167
+ extra_headers: Headers | None = None,
168
+ extra_query: Query | None = None,
169
+ extra_body: Body | None = None,
170
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
171
+ ) -> BlueprintView:
172
+ """Wait for a blueprint to finish building.
173
+
174
+ Args:
175
+ id: The ID of the blueprint to wait for
176
+ polling_config: Optional polling configuration
177
+ extra_headers: Send extra headers
178
+ extra_query: Add additional query parameters to the request
179
+ extra_body: Add additional JSON properties to the request
180
+ timeout: Override the client-level default timeout for this request, in seconds
181
+
182
+ Returns:
183
+ The blueprint in built state
184
+
185
+ Raises:
186
+ PollingTimeout: If polling times out before blueprint is built
187
+ RunloopError: If blueprint enters a non-built terminal state
188
+ """
189
+ def retrieve_blueprint() -> BlueprintView:
190
+ return self.retrieve(
191
+ id,
192
+ extra_headers=extra_headers,
193
+ extra_query=extra_query,
194
+ extra_body=extra_body,
195
+ timeout=timeout
196
+ )
197
+
198
+ def is_done_building(blueprint: BlueprintView) -> bool:
199
+ return blueprint.status not in ["building", "provisioning"]
200
+
201
+ blueprint = poll_until(retrieve_blueprint, is_done_building, polling_config)
202
+
203
+ if blueprint.status != "build_complete":
204
+ raise RunloopError(
205
+ f"Blueprint entered non-built terminal state: {blueprint.status}"
206
+ )
207
+
208
+ return blueprint
209
+
210
+ def create_and_await_build_complete(
211
+ self,
212
+ *,
213
+ name: str,
214
+ code_mounts: Optional[Iterable[CodeMountParameters]] | NotGiven = NOT_GIVEN,
215
+ dockerfile: Optional[str] | NotGiven = NOT_GIVEN,
216
+ file_mounts: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
217
+ launch_parameters: Optional[LaunchParameters] | NotGiven = NOT_GIVEN,
218
+ system_setup_commands: Optional[List[str]] | NotGiven = NOT_GIVEN,
219
+ polling_config: PollingConfig | None = None,
220
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
221
+ # The extra values given here take precedence over values defined on the client or passed to this method.
222
+ extra_headers: Headers | None = None,
223
+ extra_query: Query | None = None,
224
+ extra_body: Body | None = None,
225
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
226
+ idempotency_key: str | None = None,
227
+ ) -> BlueprintView:
228
+ """Create a new Blueprint and wait for it to finish building.
229
+
230
+ Args:
231
+ dockerfile: The Dockerfile contents to use for building the Blueprint
232
+ file_mounts: Files to mount into the Blueprint
233
+ launch_parameters: Launch parameters for Devboxes created from this Blueprint
234
+ name: Name for the Blueprint
235
+ system_setup_commands: Commands to run during Blueprint build
236
+ polling_config: Optional polling configuration
237
+ extra_headers: Send extra headers
238
+ extra_query: Add additional query parameters to the request
239
+ extra_body: Add additional JSON properties to the request
240
+ timeout: Override the client-level default timeout for this request, in seconds
241
+ idempotency_key: Specify a custom idempotency key for this request
242
+
243
+ Returns:
244
+ The built blueprint
245
+
246
+ Raises:
247
+ PollingTimeout: If polling times out before blueprint is built
248
+ RunloopError: If blueprint enters a non-built terminal state
249
+ """
250
+ blueprint = self.create(
251
+ name=name,
252
+ dockerfile=dockerfile,
253
+ code_mounts=code_mounts,
254
+ file_mounts=file_mounts,
255
+ launch_parameters=launch_parameters,
256
+ system_setup_commands=system_setup_commands,
257
+ extra_headers=extra_headers,
258
+ extra_query=extra_query,
259
+ extra_body=extra_body,
260
+ timeout=timeout,
261
+ idempotency_key=idempotency_key,
262
+ )
263
+
264
+ return self.await_build_complete(
265
+ blueprint.id,
266
+ polling_config=polling_config,
267
+ extra_headers=extra_headers,
268
+ extra_query=extra_query,
269
+ extra_body=extra_body,
270
+ timeout=timeout,
271
+ )
272
+
157
273
  def list(
158
274
  self,
159
275
  *,
@@ -429,6 +545,119 @@ class AsyncBlueprintsResource(AsyncAPIResource):
429
545
  ),
430
546
  cast_to=BlueprintView,
431
547
  )
548
+
549
+ async def await_build_complete(
550
+ self,
551
+ id: str,
552
+ *,
553
+ polling_config: PollingConfig | None = None,
554
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
555
+ # The extra values given here take precedence over values defined on the client or passed to this method.
556
+ extra_headers: Headers | None = None,
557
+ extra_query: Query | None = None,
558
+ extra_body: Body | None = None,
559
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
560
+ ) -> BlueprintView:
561
+ """Wait for a blueprint to finish building.
562
+
563
+ Args:
564
+ id: The ID of the blueprint to wait for
565
+ polling_config: Optional polling configuration
566
+ extra_headers: Send extra headers
567
+ extra_query: Add additional query parameters to the request
568
+ extra_body: Add additional JSON properties to the request
569
+ timeout: Override the client-level default timeout for this request, in seconds
570
+
571
+ Returns:
572
+ The blueprint in built state
573
+
574
+ Raises:
575
+ PollingTimeout: If polling times out before blueprint is built
576
+ RunloopError: If blueprint enters a non-built terminal state
577
+ """
578
+ async def retrieve_blueprint() -> BlueprintView:
579
+ return await self.retrieve(
580
+ id,
581
+ extra_headers=extra_headers,
582
+ extra_query=extra_query,
583
+ extra_body=extra_body,
584
+ timeout=timeout
585
+ )
586
+
587
+ def is_done_building(blueprint: BlueprintView) -> bool:
588
+ return blueprint.status not in ["building", "provisioning"]
589
+
590
+ blueprint = await async_poll_until(retrieve_blueprint, is_done_building, polling_config)
591
+
592
+ if blueprint.status != "build_complete":
593
+ raise RunloopError(
594
+ f"Blueprint entered non-built terminal state: {blueprint.status}"
595
+ )
596
+
597
+ return blueprint
598
+
599
+ async def create_and_await_build_complete(
600
+ self,
601
+ *,
602
+ name: str,
603
+ code_mounts: Optional[Iterable[CodeMountParameters]] | NotGiven = NOT_GIVEN,
604
+ dockerfile: Optional[str] | NotGiven = NOT_GIVEN,
605
+ file_mounts: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
606
+ launch_parameters: Optional[LaunchParameters] | NotGiven = NOT_GIVEN,
607
+ system_setup_commands: Optional[List[str]] | NotGiven = NOT_GIVEN,
608
+ polling_config: PollingConfig | None = None,
609
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
610
+ # The extra values given here take precedence over values defined on the client or passed to this method.
611
+ extra_headers: Headers | None = None,
612
+ extra_query: Query | None = None,
613
+ extra_body: Body | None = None,
614
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
615
+ idempotency_key: str | None = None,
616
+ ) -> BlueprintView:
617
+ """Create a new Blueprint and wait for it to finish building.
618
+
619
+ Args:
620
+ dockerfile: The Dockerfile contents to use for building the Blueprint
621
+ file_mounts: Files to mount into the Blueprint
622
+ launch_parameters: Launch parameters for Devboxes created from this Blueprint
623
+ name: Name for the Blueprint
624
+ system_setup_commands: Commands to run during Blueprint build
625
+ polling_config: Optional polling configuration
626
+ extra_headers: Send extra headers
627
+ extra_query: Add additional query parameters to the request
628
+ extra_body: Add additional JSON properties to the request
629
+ timeout: Override the client-level default timeout for this request, in seconds
630
+ idempotency_key: Specify a custom idempotency key for this request
631
+
632
+ Returns:
633
+ The built blueprint
634
+
635
+ Raises:
636
+ PollingTimeout: If polling times out before blueprint is built
637
+ RunloopError: If blueprint enters a non-built terminal state
638
+ """
639
+ blueprint = await self.create(
640
+ name=name,
641
+ dockerfile=dockerfile,
642
+ code_mounts=code_mounts,
643
+ file_mounts=file_mounts,
644
+ launch_parameters=launch_parameters,
645
+ system_setup_commands=system_setup_commands,
646
+ extra_headers=extra_headers,
647
+ extra_query=extra_query,
648
+ extra_body=extra_body,
649
+ timeout=timeout,
650
+ idempotency_key=idempotency_key,
651
+ )
652
+
653
+ return await self.await_build_complete(
654
+ blueprint.id,
655
+ polling_config=polling_config,
656
+ extra_headers=extra_headers,
657
+ extra_query=extra_query,
658
+ extra_body=extra_body,
659
+ timeout=timeout,
660
+ )
432
661
 
433
662
  def list(
434
663
  self,
@@ -8,6 +8,14 @@ from .runs import (
8
8
  RunsResourceWithStreamingResponse,
9
9
  AsyncRunsResourceWithStreamingResponse,
10
10
  )
11
+ from .scorers import (
12
+ ScorersResource,
13
+ AsyncScorersResource,
14
+ ScorersResourceWithRawResponse,
15
+ AsyncScorersResourceWithRawResponse,
16
+ ScorersResourceWithStreamingResponse,
17
+ AsyncScorersResourceWithStreamingResponse,
18
+ )
11
19
  from .scenarios import (
12
20
  ScenariosResource,
13
21
  AsyncScenariosResource,
@@ -24,6 +32,12 @@ __all__ = [
24
32
  "AsyncRunsResourceWithRawResponse",
25
33
  "RunsResourceWithStreamingResponse",
26
34
  "AsyncRunsResourceWithStreamingResponse",
35
+ "ScorersResource",
36
+ "AsyncScorersResource",
37
+ "ScorersResourceWithRawResponse",
38
+ "AsyncScorersResourceWithRawResponse",
39
+ "ScorersResourceWithStreamingResponse",
40
+ "AsyncScorersResourceWithStreamingResponse",
27
41
  "ScenariosResource",
28
42
  "AsyncScenariosResource",
29
43
  "ScenariosResourceWithRawResponse",
@@ -20,11 +20,20 @@ from ...types import (
20
20
  scenario_start_run_params,
21
21
  scenario_list_public_params,
22
22
  )
23
+ from .scorers import (
24
+ ScorersResource,
25
+ AsyncScorersResource,
26
+ ScorersResourceWithRawResponse,
27
+ AsyncScorersResourceWithRawResponse,
28
+ ScorersResourceWithStreamingResponse,
29
+ AsyncScorersResourceWithStreamingResponse,
30
+ )
23
31
  from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
24
32
  from ..._utils import (
25
33
  maybe_transform,
26
34
  async_maybe_transform,
27
35
  )
36
+ from ...lib.polling import PollingConfig
28
37
  from ..._compat import cached_property
29
38
  from ..._resource import SyncAPIResource, AsyncAPIResource
30
39
  from ..._response import (
@@ -49,6 +58,10 @@ class ScenariosResource(SyncAPIResource):
49
58
  def runs(self) -> RunsResource:
50
59
  return RunsResource(self._client)
51
60
 
61
+ @cached_property
62
+ def scorers(self) -> ScorersResource:
63
+ return ScorersResource(self._client)
64
+
52
65
  @cached_property
53
66
  def with_raw_response(self) -> ScenariosResourceWithRawResponse:
54
67
  """
@@ -317,12 +330,73 @@ class ScenariosResource(SyncAPIResource):
317
330
  cast_to=ScenarioRunView,
318
331
  )
319
332
 
333
+ def start_run_and_await_env_ready(
334
+ self,
335
+ *,
336
+ scenario_id: str,
337
+ benchmark_run_id: Optional[str] | NotGiven = NOT_GIVEN,
338
+ run_name: Optional[str] | NotGiven = NOT_GIVEN,
339
+ polling_config: PollingConfig | None = None,
340
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
341
+ # The extra values given here take precedence over values defined on the client or passed to this method.
342
+ extra_headers: Headers | None = None,
343
+ extra_query: Query | None = None,
344
+ extra_body: Body | None = None,
345
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
346
+ idempotency_key: str | None = None,
347
+ ) -> ScenarioRunView:
348
+ """Start a new ScenarioRun and wait for its environment to be ready.
349
+
350
+ Args:
351
+ scenario_id: ID of the Scenario to run
352
+ benchmark_run_id: Benchmark to associate the run
353
+ run_name: Display name of the run
354
+ polling_config: Optional polling configuration
355
+ extra_headers: Send extra headers
356
+ extra_query: Add additional query parameters to the request
357
+ extra_body: Add additional JSON properties to the request
358
+ timeout: Override the client-level default timeout for this request, in seconds
359
+ idempotency_key: Specify a custom idempotency key for this request
360
+
361
+ Returns:
362
+ The scenario run in running state
363
+
364
+ Raises:
365
+ PollingTimeout: If polling times out before environment is ready
366
+ RunloopError: If environment enters a non-running terminal state
367
+ """
368
+ run = self.start_run(
369
+ scenario_id=scenario_id,
370
+ benchmark_run_id=benchmark_run_id,
371
+ run_name=run_name,
372
+ extra_headers=extra_headers,
373
+ extra_query=extra_query,
374
+ extra_body=extra_body,
375
+ timeout=timeout,
376
+ idempotency_key=idempotency_key,
377
+ )
378
+
379
+ self._client.devboxes.await_running(
380
+ run.devbox_id,
381
+ polling_config=polling_config,
382
+ extra_headers=extra_headers,
383
+ extra_query=extra_query,
384
+ extra_body=extra_body,
385
+ timeout=timeout,
386
+ )
387
+
388
+ return run
389
+
320
390
 
321
391
  class AsyncScenariosResource(AsyncAPIResource):
322
392
  @cached_property
323
393
  def runs(self) -> AsyncRunsResource:
324
394
  return AsyncRunsResource(self._client)
325
395
 
396
+ @cached_property
397
+ def scorers(self) -> AsyncScorersResource:
398
+ return AsyncScorersResource(self._client)
399
+
326
400
  @cached_property
327
401
  def with_raw_response(self) -> AsyncScenariosResourceWithRawResponse:
328
402
  """
@@ -591,6 +665,40 @@ class AsyncScenariosResource(AsyncAPIResource):
591
665
  cast_to=ScenarioRunView,
592
666
  )
593
667
 
668
+ async def start_run_and_await_env_ready(
669
+ self,
670
+ scenario_id: str,
671
+ benchmark_run_id: Optional[str] | NotGiven = NOT_GIVEN,
672
+ run_name: Optional[str] | NotGiven = NOT_GIVEN,
673
+ polling_config: PollingConfig | None = None,
674
+ ) -> ScenarioRunView:
675
+ """Start a new ScenarioRun and wait for its environment to be ready.
676
+
677
+ Args:
678
+ scenario_id: ID of the Scenario to run
679
+ benchmark_run_id: Benchmark to associate the run
680
+ run_name: Display name of the run
681
+ polling_config: Optional polling configuration
682
+
683
+ Returns:
684
+ The scenario run in running state
685
+
686
+ Raises:
687
+ PollingTimeout: If polling times out before environment is ready
688
+ RunloopError: If environment enters a non-running terminal state
689
+ """
690
+ run = await self.start_run(
691
+ scenario_id=scenario_id,
692
+ benchmark_run_id=benchmark_run_id,
693
+ run_name=run_name,
694
+ )
695
+
696
+ await self._client.devboxes.await_running(
697
+ run.devbox_id,
698
+ polling_config=polling_config,
699
+ )
700
+
701
+ return run
594
702
 
595
703
  class ScenariosResourceWithRawResponse:
596
704
  def __init__(self, scenarios: ScenariosResource) -> None:
@@ -616,6 +724,10 @@ class ScenariosResourceWithRawResponse:
616
724
  def runs(self) -> RunsResourceWithRawResponse:
617
725
  return RunsResourceWithRawResponse(self._scenarios.runs)
618
726
 
727
+ @cached_property
728
+ def scorers(self) -> ScorersResourceWithRawResponse:
729
+ return ScorersResourceWithRawResponse(self._scenarios.scorers)
730
+
619
731
 
620
732
  class AsyncScenariosResourceWithRawResponse:
621
733
  def __init__(self, scenarios: AsyncScenariosResource) -> None:
@@ -641,6 +753,10 @@ class AsyncScenariosResourceWithRawResponse:
641
753
  def runs(self) -> AsyncRunsResourceWithRawResponse:
642
754
  return AsyncRunsResourceWithRawResponse(self._scenarios.runs)
643
755
 
756
+ @cached_property
757
+ def scorers(self) -> AsyncScorersResourceWithRawResponse:
758
+ return AsyncScorersResourceWithRawResponse(self._scenarios.scorers)
759
+
644
760
 
645
761
  class ScenariosResourceWithStreamingResponse:
646
762
  def __init__(self, scenarios: ScenariosResource) -> None:
@@ -666,6 +782,10 @@ class ScenariosResourceWithStreamingResponse:
666
782
  def runs(self) -> RunsResourceWithStreamingResponse:
667
783
  return RunsResourceWithStreamingResponse(self._scenarios.runs)
668
784
 
785
+ @cached_property
786
+ def scorers(self) -> ScorersResourceWithStreamingResponse:
787
+ return ScorersResourceWithStreamingResponse(self._scenarios.scorers)
788
+
669
789
 
670
790
  class AsyncScenariosResourceWithStreamingResponse:
671
791
  def __init__(self, scenarios: AsyncScenariosResource) -> None:
@@ -690,3 +810,7 @@ class AsyncScenariosResourceWithStreamingResponse:
690
810
  @cached_property
691
811
  def runs(self) -> AsyncRunsResourceWithStreamingResponse:
692
812
  return AsyncRunsResourceWithStreamingResponse(self._scenarios.runs)
813
+
814
+ @cached_property
815
+ def scorers(self) -> AsyncScorersResourceWithStreamingResponse:
816
+ return AsyncScorersResourceWithStreamingResponse(self._scenarios.scorers)