runloop-api-client 0.44.0__tar.gz → 0.45.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 (288) hide show
  1. runloop_api_client-0.45.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/CHANGELOG.md +15 -0
  3. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/PKG-INFO +1 -1
  4. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/api.md +3 -0
  5. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/pyproject.toml +1 -1
  6. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_version.py +1 -1
  7. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/scenarios/runs.py +108 -0
  8. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/scenarios/scenarios.py +6 -4
  9. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/__init__.py +2 -0
  10. runloop_api_client-0.45.0/src/runloop_api_client/types/input_context_update_param.py +16 -0
  11. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_update_params.py +4 -4
  12. runloop_api_client-0.45.0/src/runloop_api_client/types/scoring_contract_update_param.py +15 -0
  13. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/scenarios/test_runs.py +120 -0
  14. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_client.py +2 -0
  15. runloop_api_client-0.44.0/.release-please-manifest.json +0 -3
  16. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/.gitignore +0 -0
  17. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/CONTRIBUTING.md +0 -0
  18. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/LICENSE +0 -0
  19. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/README.md +0 -0
  20. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/SECURITY.md +0 -0
  21. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/bin/check-release-environment +0 -0
  22. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/bin/publish-pypi +0 -0
  23. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/examples/.keep +0 -0
  24. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/mypy.ini +0 -0
  25. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/noxfile.py +0 -0
  26. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/release-please-config.json +0 -0
  27. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/requirements-dev.lock +0 -0
  28. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/requirements.lock +0 -0
  29. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop/lib/.keep +0 -0
  30. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/__init__.py +0 -0
  31. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_base_client.py +0 -0
  32. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_client.py +0 -0
  33. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_compat.py +0 -0
  34. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_constants.py +0 -0
  35. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_exceptions.py +0 -0
  36. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_files.py +0 -0
  37. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_models.py +0 -0
  38. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_qs.py +0 -0
  39. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_resource.py +0 -0
  40. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_response.py +0 -0
  41. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_streaming.py +0 -0
  42. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_types.py +0 -0
  43. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  44. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  45. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  46. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  47. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
  48. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  49. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  50. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  51. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  52. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  53. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/lib/.keep +0 -0
  54. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/lib/polling.py +0 -0
  55. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  56. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/pagination.py +0 -0
  57. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/py.typed +0 -0
  58. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/__init__.py +0 -0
  59. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
  60. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +0 -0
  61. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
  62. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/blueprints.py +0 -0
  63. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  64. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  65. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  66. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/devboxes.py +0 -0
  67. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  68. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  69. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  70. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/lsp.py +0 -0
  71. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/repositories.py +0 -0
  72. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  73. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
  74. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/secrets.py +0 -0
  75. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
  76. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
  77. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  78. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  79. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  80. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
  81. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  82. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
  83. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
  84. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
  85. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
  86. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmarks/run_list_scenario_runs_params.py +0 -0
  87. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  88. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  89. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  90. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  91. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  92. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  93. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  94. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  95. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  96. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  97. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  98. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  99. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  100. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  101. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  102. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  103. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  104. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  105. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  106. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  107. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  108. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  109. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  110. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
  111. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  112. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  113. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  114. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  115. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  116. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  117. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  118. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  119. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  120. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_code_action.py +0 -0
  121. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_command.py +0 -0
  122. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_command_param.py +0 -0
  123. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_diagnostic.py +0 -0
  124. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_diagnostic_param.py +0 -0
  125. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_location.py +0 -0
  126. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_markup_content.py +0 -0
  127. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_parameter_information.py +0 -0
  128. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_range.py +0 -0
  129. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_range_param.py +0 -0
  130. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_signature.py +0 -0
  131. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_workspace_edit.py +0 -0
  132. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_workspace_edit_param.py +0 -0
  133. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  134. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  135. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_action_application_result.py +0 -0
  136. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_action_context_param.py +0 -0
  137. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_action_kind.py +0 -0
  138. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_action_trigger_kind.py +0 -0
  139. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_actions_response.py +0 -0
  140. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_description_param.py +0 -0
  141. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_segment_info_response.py +0 -0
  142. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  143. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  144. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  145. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  146. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  147. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  148. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  149. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  150. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  151. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
  152. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/diagnostic_param.py +0 -0
  153. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/diagnostic_related_information_param.py +0 -0
  154. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/diagnostic_severity.py +0 -0
  155. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/diagnostic_tag.py +0 -0
  156. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/diagnostics_response.py +0 -0
  157. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  158. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  159. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/document_symbol.py +0 -0
  160. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/document_symbol_response.py +0 -0
  161. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/document_uri.py +0 -0
  162. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  163. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  164. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  165. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/file_contents_response.py +0 -0
  166. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/file_definition_response.py +0 -0
  167. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/file_path.py +0 -0
  168. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/file_uri.py +0 -0
  169. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/formatting_response.py +0 -0
  170. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/health_status_response.py +0 -0
  171. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/integer.py +0 -0
  172. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/l_sp_any_param.py +0 -0
  173. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/location_param.py +0 -0
  174. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  175. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_apply_code_action_params.py +0 -0
  176. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_code_actions_params.py +0 -0
  177. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_diagnostics_params.py +0 -0
  178. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_document_symbols_params.py +0 -0
  179. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_file_definition_params.py +0 -0
  180. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_file_params.py +0 -0
  181. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_files_response.py +0 -0
  182. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_formatting_params.py +0 -0
  183. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_params.py +0 -0
  184. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_response.py +0 -0
  185. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_get_code_segment_info_params.py +0 -0
  186. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_get_signature_help_params.py +0 -0
  187. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_references_params.py +0 -0
  188. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_params.py +0 -0
  189. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_response.py +0 -0
  190. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/position.py +0 -0
  191. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/position_param.py +0 -0
  192. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/range.py +0 -0
  193. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/range_param.py +0 -0
  194. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array.py +0 -0
  195. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array_param.py +0 -0
  196. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/references_response.py +0 -0
  197. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/signature_help_response.py +0 -0
  198. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/symbol_kind.py +0 -0
  199. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/symbol_tag.py +0 -0
  200. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/symbol_type.py +0 -0
  201. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/text_edit.py +0 -0
  202. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/text_edit_param.py +0 -0
  203. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/u_ri.py +0 -0
  204. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/uinteger.py +0 -0
  205. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/watched_file_response.py +0 -0
  206. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/input_context.py +0 -0
  207. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/input_context_param.py +0 -0
  208. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  209. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  210. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  211. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
  212. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
  213. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
  214. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_manifest_view.py +0 -0
  215. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
  216. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  217. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
  218. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
  219. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  220. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  221. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  222. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  223. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
  224. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  225. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_view.py +0 -0
  226. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  227. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  228. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  229. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
  230. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  231. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
  232. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
  233. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  234. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
  235. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
  236. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
  237. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  238. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  239. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  240. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_function.py +0 -0
  241. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
  242. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  243. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
  244. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/secret_list_view.py +0 -0
  245. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
  246. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/secret_view.py +0 -0
  247. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  248. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  249. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  250. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
  251. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  252. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  253. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  254. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
  255. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/__init__.py +0 -0
  256. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/__init__.py +0 -0
  257. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/benchmarks/__init__.py +0 -0
  258. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/benchmarks/test_runs.py +0 -0
  259. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/__init__.py +0 -0
  260. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
  261. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_computers.py +0 -0
  262. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
  263. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  264. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  265. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_lsp.py +0 -0
  266. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/scenarios/__init__.py +0 -0
  267. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/scenarios/test_scorers.py +0 -0
  268. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/test_benchmarks.py +0 -0
  269. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/test_blueprints.py +0 -0
  270. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/test_devboxes.py +0 -0
  271. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/test_repositories.py +0 -0
  272. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/test_scenarios.py +2 -2
  273. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/api_resources/test_secrets.py +0 -0
  274. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/conftest.py +0 -0
  275. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/sample_file.txt +0 -0
  276. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_deepcopy.py +0 -0
  277. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_extract_files.py +0 -0
  278. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_files.py +0 -0
  279. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_models.py +0 -0
  280. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_qs.py +0 -0
  281. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_required_args.py +0 -0
  282. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_response.py +0 -0
  283. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_streaming.py +0 -0
  284. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_transform.py +0 -0
  285. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_utils/test_proxy.py +0 -0
  286. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/test_utils/test_typing.py +0 -0
  287. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/tests/utils.py +0 -0
  288. {runloop_api_client-0.44.0 → runloop_api_client-0.45.0}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.45.0"
3
+ }
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.45.0 (2025-06-24)
4
+
5
+ Full Changelog: [v0.44.0...v0.45.0](https://github.com/runloopai/api-client-python/compare/v0.44.0...v0.45.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([382b901](https://github.com/runloopai/api-client-python/commit/382b9018d26ce11e12d7143a84b80147be63ac2e))
10
+ * **api:** api update ([3f896cf](https://github.com/runloopai/api-client-python/commit/3f896cf907ef15fc2f0d01f681844eef0bca9479))
11
+ * **api:** api update ([9bb3abf](https://github.com/runloopai/api-client-python/commit/9bb3abf4b274d9e75940cc859eafd0f4f37027b8))
12
+
13
+
14
+ ### Chores
15
+
16
+ * **tests:** skip some failing tests on the latest python versions ([27007c0](https://github.com/runloopai/api-client-python/commit/27007c0a1500e80cc9ac93cb634021a7cfb569e6))
17
+
3
18
  ## 0.44.0 (2025-06-21)
4
19
 
5
20
  Full Changelog: [v0.43.0...v0.44.0](https://github.com/runloopai/api-client-python/compare/v0.43.0...v0.44.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.44.0
3
+ Version: 0.45.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
@@ -264,6 +264,7 @@ Types:
264
264
  ```python
265
265
  from runloop_api_client.types import (
266
266
  InputContext,
267
+ InputContextUpdate,
267
268
  ScenarioCreateParameters,
268
269
  ScenarioEnvironment,
269
270
  ScenarioRunListView,
@@ -272,6 +273,7 @@ from runloop_api_client.types import (
272
273
  ScenarioView,
273
274
  ScoringContract,
274
275
  ScoringContractResultView,
276
+ ScoringContractUpdate,
275
277
  ScoringFunction,
276
278
  ScoringFunctionResultView,
277
279
  StartScenarioRunParameters,
@@ -295,6 +297,7 @@ Methods:
295
297
  - <code title="get /v1/scenarios/runs">client.scenarios.runs.<a href="./src/runloop_api_client/resources/scenarios/runs.py">list</a>(\*\*<a href="src/runloop_api_client/types/scenarios/run_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">SyncBenchmarkRunsCursorIDPage[ScenarioRunView]</a></code>
296
298
  - <code title="post /v1/scenarios/runs/{id}/cancel">client.scenarios.runs.<a href="./src/runloop_api_client/resources/scenarios/runs.py">cancel</a>(id) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">ScenarioRunView</a></code>
297
299
  - <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>
300
+ - <code title="post /v1/scenarios/runs/{id}/download_logs">client.scenarios.runs.<a href="./src/runloop_api_client/resources/scenarios/runs.py">download_logs</a>(id) -> BinaryAPIResponse</code>
298
301
  - <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>
299
302
 
300
303
  ## Scorers
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.44.0"
3
+ version = "0.45.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "runloop_api_client"
4
- __version__ = "0.44.0" # x-release-please-version
4
+ __version__ = "0.45.0" # x-release-please-version
@@ -9,10 +9,18 @@ from ..._utils import maybe_transform
9
9
  from ..._compat import cached_property
10
10
  from ..._resource import SyncAPIResource, AsyncAPIResource
11
11
  from ..._response import (
12
+ BinaryAPIResponse,
13
+ AsyncBinaryAPIResponse,
14
+ StreamedBinaryAPIResponse,
15
+ AsyncStreamedBinaryAPIResponse,
12
16
  to_raw_response_wrapper,
13
17
  to_streamed_response_wrapper,
14
18
  async_to_raw_response_wrapper,
19
+ to_custom_raw_response_wrapper,
15
20
  async_to_streamed_response_wrapper,
21
+ to_custom_streamed_response_wrapper,
22
+ async_to_custom_raw_response_wrapper,
23
+ async_to_custom_streamed_response_wrapper,
16
24
  )
17
25
  from ...pagination import SyncBenchmarkRunsCursorIDPage, AsyncBenchmarkRunsCursorIDPage
18
26
  from ..._exceptions import RunloopError
@@ -213,6 +221,48 @@ class RunsResource(SyncAPIResource):
213
221
  cast_to=ScenarioRunView,
214
222
  )
215
223
 
224
+ def download_logs(
225
+ self,
226
+ id: str,
227
+ *,
228
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
229
+ # The extra values given here take precedence over values defined on the client or passed to this method.
230
+ extra_headers: Headers | None = None,
231
+ extra_query: Query | None = None,
232
+ extra_body: Body | None = None,
233
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
234
+ idempotency_key: str | None = None,
235
+ ) -> BinaryAPIResponse:
236
+ """
237
+ Download a zip file containing all logs for a Scenario run from the associated
238
+ devbox.
239
+
240
+ Args:
241
+ extra_headers: Send extra headers
242
+
243
+ extra_query: Add additional query parameters to the request
244
+
245
+ extra_body: Add additional JSON properties to the request
246
+
247
+ timeout: Override the client-level default timeout for this request, in seconds
248
+
249
+ idempotency_key: Specify a custom idempotency key for this request
250
+ """
251
+ if not id:
252
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
253
+ extra_headers = {"Accept": "application/zip", **(extra_headers or {})}
254
+ return self._post(
255
+ f"/v1/scenarios/runs/{id}/download_logs",
256
+ options=make_request_options(
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
+ cast_to=BinaryAPIResponse,
264
+ )
265
+
216
266
  def score(
217
267
  self,
218
268
  id: str,
@@ -583,6 +633,48 @@ class AsyncRunsResource(AsyncAPIResource):
583
633
  cast_to=ScenarioRunView,
584
634
  )
585
635
 
636
+ async def download_logs(
637
+ self,
638
+ id: str,
639
+ *,
640
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
641
+ # The extra values given here take precedence over values defined on the client or passed to this method.
642
+ extra_headers: Headers | None = None,
643
+ extra_query: Query | None = None,
644
+ extra_body: Body | None = None,
645
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
646
+ idempotency_key: str | None = None,
647
+ ) -> AsyncBinaryAPIResponse:
648
+ """
649
+ Download a zip file containing all logs for a Scenario run from the associated
650
+ devbox.
651
+
652
+ Args:
653
+ extra_headers: Send extra headers
654
+
655
+ extra_query: Add additional query parameters to the request
656
+
657
+ extra_body: Add additional JSON properties to the request
658
+
659
+ timeout: Override the client-level default timeout for this request, in seconds
660
+
661
+ idempotency_key: Specify a custom idempotency key for this request
662
+ """
663
+ if not id:
664
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
665
+ extra_headers = {"Accept": "application/zip", **(extra_headers or {})}
666
+ return await self._post(
667
+ f"/v1/scenarios/runs/{id}/download_logs",
668
+ options=make_request_options(
669
+ extra_headers=extra_headers,
670
+ extra_query=extra_query,
671
+ extra_body=extra_body,
672
+ timeout=timeout,
673
+ idempotency_key=idempotency_key,
674
+ ),
675
+ cast_to=AsyncBinaryAPIResponse,
676
+ )
677
+
586
678
  async def score(
587
679
  self,
588
680
  id: str,
@@ -782,6 +874,10 @@ class RunsResourceWithRawResponse:
782
874
  self.complete = to_raw_response_wrapper(
783
875
  runs.complete,
784
876
  )
877
+ self.download_logs = to_custom_raw_response_wrapper(
878
+ runs.download_logs,
879
+ BinaryAPIResponse,
880
+ )
785
881
  self.score = to_raw_response_wrapper(
786
882
  runs.score,
787
883
  )
@@ -803,6 +899,10 @@ class AsyncRunsResourceWithRawResponse:
803
899
  self.complete = async_to_raw_response_wrapper(
804
900
  runs.complete,
805
901
  )
902
+ self.download_logs = async_to_custom_raw_response_wrapper(
903
+ runs.download_logs,
904
+ AsyncBinaryAPIResponse,
905
+ )
806
906
  self.score = async_to_raw_response_wrapper(
807
907
  runs.score,
808
908
  )
@@ -824,6 +924,10 @@ class RunsResourceWithStreamingResponse:
824
924
  self.complete = to_streamed_response_wrapper(
825
925
  runs.complete,
826
926
  )
927
+ self.download_logs = to_custom_streamed_response_wrapper(
928
+ runs.download_logs,
929
+ StreamedBinaryAPIResponse,
930
+ )
827
931
  self.score = to_streamed_response_wrapper(
828
932
  runs.score,
829
933
  )
@@ -845,6 +949,10 @@ class AsyncRunsResourceWithStreamingResponse:
845
949
  self.complete = async_to_streamed_response_wrapper(
846
950
  runs.complete,
847
951
  )
952
+ self.download_logs = async_to_custom_streamed_response_wrapper(
953
+ runs.download_logs,
954
+ AsyncStreamedBinaryAPIResponse,
955
+ )
848
956
  self.score = async_to_streamed_response_wrapper(
849
957
  runs.score,
850
958
  )
@@ -46,7 +46,9 @@ from ...types.scenario_view import ScenarioView
46
46
  from ...types.scenario_run_view import ScenarioRunView
47
47
  from ...types.input_context_param import InputContextParam
48
48
  from ...types.scoring_contract_param import ScoringContractParam
49
+ from ...types.input_context_update_param import InputContextUpdateParam
49
50
  from ...types.scenario_environment_param import ScenarioEnvironmentParam
51
+ from ...types.scoring_contract_update_param import ScoringContractUpdateParam
50
52
 
51
53
  __all__ = ["ScenariosResource", "AsyncScenariosResource"]
52
54
 
@@ -186,11 +188,11 @@ class ScenariosResource(SyncAPIResource):
186
188
  id: str,
187
189
  *,
188
190
  environment_parameters: Optional[ScenarioEnvironmentParam] | NotGiven = NOT_GIVEN,
189
- input_context: Optional[InputContextParam] | NotGiven = NOT_GIVEN,
191
+ input_context: Optional[InputContextUpdateParam] | NotGiven = NOT_GIVEN,
190
192
  metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
191
193
  name: Optional[str] | NotGiven = NOT_GIVEN,
192
194
  reference_output: Optional[str] | NotGiven = NOT_GIVEN,
193
- scoring_contract: Optional[ScoringContractParam] | NotGiven = NOT_GIVEN,
195
+ scoring_contract: Optional[ScoringContractUpdateParam] | NotGiven = NOT_GIVEN,
194
196
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
195
197
  # The extra values given here take precedence over values defined on the client or passed to this method.
196
198
  extra_headers: Headers | None = None,
@@ -613,11 +615,11 @@ class AsyncScenariosResource(AsyncAPIResource):
613
615
  id: str,
614
616
  *,
615
617
  environment_parameters: Optional[ScenarioEnvironmentParam] | NotGiven = NOT_GIVEN,
616
- input_context: Optional[InputContextParam] | NotGiven = NOT_GIVEN,
618
+ input_context: Optional[InputContextUpdateParam] | NotGiven = NOT_GIVEN,
617
619
  metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
618
620
  name: Optional[str] | NotGiven = NOT_GIVEN,
619
621
  reference_output: Optional[str] | NotGiven = NOT_GIVEN,
620
- scoring_contract: Optional[ScoringContractParam] | NotGiven = NOT_GIVEN,
622
+ scoring_contract: Optional[ScoringContractUpdateParam] | NotGiven = NOT_GIVEN,
621
623
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
622
624
  # The extra values given here take precedence over values defined on the client or passed to this method.
623
625
  extra_headers: Headers | None = None,
@@ -54,6 +54,7 @@ from .scenario_start_run_params import ScenarioStartRunParams as ScenarioStartRu
54
54
  from .benchmark_start_run_params import BenchmarkStartRunParams as BenchmarkStartRunParams
55
55
  from .blueprint_build_parameters import BlueprintBuildParameters as BlueprintBuildParameters
56
56
  from .devbox_execute_sync_params import DevboxExecuteSyncParams as DevboxExecuteSyncParams
57
+ from .input_context_update_param import InputContextUpdateParam as InputContextUpdateParam
57
58
  from .repository_connection_view import RepositoryConnectionView as RepositoryConnectionView
58
59
  from .scenario_environment_param import ScenarioEnvironmentParam as ScenarioEnvironmentParam
59
60
  from .devbox_create_tunnel_params import DevboxCreateTunnelParams as DevboxCreateTunnelParams
@@ -69,6 +70,7 @@ from .scoring_contract_result_view import ScoringContractResultView as ScoringCo
69
70
  from .scoring_function_result_view import ScoringFunctionResultView as ScoringFunctionResultView
70
71
  from .repository_inspection_details import RepositoryInspectionDetails as RepositoryInspectionDetails
71
72
  from .scenario_definition_list_view import ScenarioDefinitionListView as ScenarioDefinitionListView
73
+ from .scoring_contract_update_param import ScoringContractUpdateParam as ScoringContractUpdateParam
72
74
  from .blueprint_build_logs_list_view import BlueprintBuildLogsListView as BlueprintBuildLogsListView
73
75
  from .devbox_create_ssh_key_response import DevboxCreateSSHKeyResponse as DevboxCreateSSHKeyResponse
74
76
  from .repository_connection_list_view import RepositoryConnectionListView as RepositoryConnectionListView
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Optional
6
+ from typing_extensions import TypedDict
7
+
8
+ __all__ = ["InputContextUpdateParam"]
9
+
10
+
11
+ class InputContextUpdateParam(TypedDict, total=False):
12
+ additional_context: Optional[object]
13
+ """Additional JSON structured input context."""
14
+
15
+ problem_statement: Optional[str]
16
+ """The problem statement for the Scenario."""
@@ -5,9 +5,9 @@ from __future__ import annotations
5
5
  from typing import Dict, Optional
6
6
  from typing_extensions import TypedDict
7
7
 
8
- from .input_context_param import InputContextParam
9
- from .scoring_contract_param import ScoringContractParam
8
+ from .input_context_update_param import InputContextUpdateParam
10
9
  from .scenario_environment_param import ScenarioEnvironmentParam
10
+ from .scoring_contract_update_param import ScoringContractUpdateParam
11
11
 
12
12
  __all__ = ["ScenarioUpdateParams"]
13
13
 
@@ -16,7 +16,7 @@ class ScenarioUpdateParams(TypedDict, total=False):
16
16
  environment_parameters: Optional[ScenarioEnvironmentParam]
17
17
  """The Environment in which the Scenario will run."""
18
18
 
19
- input_context: Optional[InputContextParam]
19
+ input_context: Optional[InputContextUpdateParam]
20
20
  """The input context for the Scenario."""
21
21
 
22
22
  metadata: Optional[Dict[str, str]]
@@ -32,5 +32,5 @@ class ScenarioUpdateParams(TypedDict, total=False):
32
32
  apply to the environment.
33
33
  """
34
34
 
35
- scoring_contract: Optional[ScoringContractParam]
35
+ scoring_contract: Optional[ScoringContractUpdateParam]
36
36
  """The scoring contract for the Scenario."""
@@ -0,0 +1,15 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Iterable, Optional
6
+ from typing_extensions import TypedDict
7
+
8
+ from .scoring_function_param import ScoringFunctionParam
9
+
10
+ __all__ = ["ScoringContractUpdateParam"]
11
+
12
+
13
+ class ScoringContractUpdateParam(TypedDict, total=False):
14
+ scoring_function_parameters: Optional[Iterable[ScoringFunctionParam]]
15
+ """A list of scoring functions used to evaluate the Scenario."""
@@ -5,11 +5,19 @@ from __future__ import annotations
5
5
  import os
6
6
  from typing import Any, cast
7
7
 
8
+ import httpx
8
9
  import pytest
10
+ from respx import MockRouter
9
11
 
10
12
  from tests.utils import assert_matches_type
11
13
  from runloop_api_client import Runloop, AsyncRunloop
12
14
  from runloop_api_client.types import ScenarioRunView
15
+ from runloop_api_client._response import (
16
+ BinaryAPIResponse,
17
+ AsyncBinaryAPIResponse,
18
+ StreamedBinaryAPIResponse,
19
+ AsyncStreamedBinaryAPIResponse,
20
+ )
13
21
  from runloop_api_client.pagination import SyncBenchmarkRunsCursorIDPage, AsyncBenchmarkRunsCursorIDPage
14
22
 
15
23
  base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -166,6 +174,62 @@ class TestRuns:
166
174
  "",
167
175
  )
168
176
 
177
+ @parametrize
178
+ @pytest.mark.respx(base_url=base_url)
179
+ def test_method_download_logs(self, client: Runloop, respx_mock: MockRouter) -> None:
180
+ respx_mock.post("/v1/scenarios/runs/id/download_logs").mock(
181
+ return_value=httpx.Response(200, json={"foo": "bar"})
182
+ )
183
+ run = client.scenarios.runs.download_logs(
184
+ "id",
185
+ )
186
+ assert run.is_closed
187
+ assert run.json() == {"foo": "bar"}
188
+ assert cast(Any, run.is_closed) is True
189
+ assert isinstance(run, BinaryAPIResponse)
190
+
191
+ @parametrize
192
+ @pytest.mark.respx(base_url=base_url)
193
+ def test_raw_response_download_logs(self, client: Runloop, respx_mock: MockRouter) -> None:
194
+ respx_mock.post("/v1/scenarios/runs/id/download_logs").mock(
195
+ return_value=httpx.Response(200, json={"foo": "bar"})
196
+ )
197
+
198
+ run = client.scenarios.runs.with_raw_response.download_logs(
199
+ "id",
200
+ )
201
+
202
+ assert run.is_closed is True
203
+ assert run.http_request.headers.get("X-Stainless-Lang") == "python"
204
+ assert run.json() == {"foo": "bar"}
205
+ assert isinstance(run, BinaryAPIResponse)
206
+
207
+ @parametrize
208
+ @pytest.mark.respx(base_url=base_url)
209
+ def test_streaming_response_download_logs(self, client: Runloop, respx_mock: MockRouter) -> None:
210
+ respx_mock.post("/v1/scenarios/runs/id/download_logs").mock(
211
+ return_value=httpx.Response(200, json={"foo": "bar"})
212
+ )
213
+ with client.scenarios.runs.with_streaming_response.download_logs(
214
+ "id",
215
+ ) as run:
216
+ assert not run.is_closed
217
+ assert run.http_request.headers.get("X-Stainless-Lang") == "python"
218
+
219
+ assert run.json() == {"foo": "bar"}
220
+ assert cast(Any, run.is_closed) is True
221
+ assert isinstance(run, StreamedBinaryAPIResponse)
222
+
223
+ assert cast(Any, run.is_closed) is True
224
+
225
+ @parametrize
226
+ @pytest.mark.respx(base_url=base_url)
227
+ def test_path_params_download_logs(self, client: Runloop) -> None:
228
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
229
+ client.scenarios.runs.with_raw_response.download_logs(
230
+ "",
231
+ )
232
+
169
233
  @parametrize
170
234
  def test_method_score(self, client: Runloop) -> None:
171
235
  run = client.scenarios.runs.score(
@@ -358,6 +422,62 @@ class TestAsyncRuns:
358
422
  "",
359
423
  )
360
424
 
425
+ @parametrize
426
+ @pytest.mark.respx(base_url=base_url)
427
+ async def test_method_download_logs(self, async_client: AsyncRunloop, respx_mock: MockRouter) -> None:
428
+ respx_mock.post("/v1/scenarios/runs/id/download_logs").mock(
429
+ return_value=httpx.Response(200, json={"foo": "bar"})
430
+ )
431
+ run = await async_client.scenarios.runs.download_logs(
432
+ "id",
433
+ )
434
+ assert run.is_closed
435
+ assert await run.json() == {"foo": "bar"}
436
+ assert cast(Any, run.is_closed) is True
437
+ assert isinstance(run, AsyncBinaryAPIResponse)
438
+
439
+ @parametrize
440
+ @pytest.mark.respx(base_url=base_url)
441
+ async def test_raw_response_download_logs(self, async_client: AsyncRunloop, respx_mock: MockRouter) -> None:
442
+ respx_mock.post("/v1/scenarios/runs/id/download_logs").mock(
443
+ return_value=httpx.Response(200, json={"foo": "bar"})
444
+ )
445
+
446
+ run = await async_client.scenarios.runs.with_raw_response.download_logs(
447
+ "id",
448
+ )
449
+
450
+ assert run.is_closed is True
451
+ assert run.http_request.headers.get("X-Stainless-Lang") == "python"
452
+ assert await run.json() == {"foo": "bar"}
453
+ assert isinstance(run, AsyncBinaryAPIResponse)
454
+
455
+ @parametrize
456
+ @pytest.mark.respx(base_url=base_url)
457
+ async def test_streaming_response_download_logs(self, async_client: AsyncRunloop, respx_mock: MockRouter) -> None:
458
+ respx_mock.post("/v1/scenarios/runs/id/download_logs").mock(
459
+ return_value=httpx.Response(200, json={"foo": "bar"})
460
+ )
461
+ async with async_client.scenarios.runs.with_streaming_response.download_logs(
462
+ "id",
463
+ ) as run:
464
+ assert not run.is_closed
465
+ assert run.http_request.headers.get("X-Stainless-Lang") == "python"
466
+
467
+ assert await run.json() == {"foo": "bar"}
468
+ assert cast(Any, run.is_closed) is True
469
+ assert isinstance(run, AsyncStreamedBinaryAPIResponse)
470
+
471
+ assert cast(Any, run.is_closed) is True
472
+
473
+ @parametrize
474
+ @pytest.mark.respx(base_url=base_url)
475
+ async def test_path_params_download_logs(self, async_client: AsyncRunloop) -> None:
476
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
477
+ await async_client.scenarios.runs.with_raw_response.download_logs(
478
+ "",
479
+ )
480
+
361
481
  @parametrize
362
482
  async def test_method_score(self, async_client: AsyncRunloop) -> None:
363
483
  run = await async_client.scenarios.runs.score(
@@ -194,6 +194,7 @@ class TestRunloop:
194
194
  copy_param = copy_signature.parameters.get(name)
195
195
  assert copy_param is not None, f"copy() signature is missing the {name} param"
196
196
 
197
+ @pytest.mark.skipif(sys.version_info >= (3, 10), reason="fails because of a memory leak that started from 3.12")
197
198
  def test_copy_build_request(self) -> None:
198
199
  options = FinalRequestOptions(method="get", url="/foo")
199
200
 
@@ -1049,6 +1050,7 @@ class TestAsyncRunloop:
1049
1050
  copy_param = copy_signature.parameters.get(name)
1050
1051
  assert copy_param is not None, f"copy() signature is missing the {name} param"
1051
1052
 
1053
+ @pytest.mark.skipif(sys.version_info >= (3, 10), reason="fails because of a memory leak that started from 3.12")
1052
1054
  def test_copy_build_request(self) -> None:
1053
1055
  options = FinalRequestOptions(method="get", url="/foo")
1054
1056
 
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.44.0"
3
- }