runloop-api-client 0.29.0__tar.gz → 0.30.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 (280) hide show
  1. runloop_api_client-0.30.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/CHANGELOG.md +33 -0
  3. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/PKG-INFO +5 -6
  4. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/README.md +4 -5
  5. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/api.md +22 -14
  6. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/pyproject.toml +2 -1
  7. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_base_client.py +10 -1
  8. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_models.py +1 -1
  9. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_transform.py +47 -2
  10. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_typing.py +2 -0
  11. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_version.py +1 -1
  12. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +32 -21
  13. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/blueprints.py +92 -0
  14. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/devboxes.py +4 -4
  15. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/scenarios/scenarios.py +45 -25
  16. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/scenarios/scorers.py +4 -4
  17. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/__init__.py +9 -4
  18. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_create_params.py +3 -0
  19. runloop_api_client-0.30.0/src/runloop_api_client/types/benchmark_create_response.py +26 -0
  20. runloop_api_client-0.30.0/src/runloop_api_client/types/benchmark_list_public_response.py +26 -0
  21. runloop_api_client-0.29.0/src/runloop_api_client/types/benchmark_view.py → runloop_api_client-0.30.0/src/runloop_api_client/types/benchmark_list_response.py +6 -3
  22. runloop_api_client-0.30.0/src/runloop_api_client/types/benchmark_retrieve_response.py +26 -0
  23. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_run_view.py +18 -1
  24. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_view.py +3 -0
  25. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_create_params.py +3 -0
  26. runloop_api_client-0.30.0/src/runloop_api_client/types/scenario_create_response.py +40 -0
  27. runloop_api_client-0.30.0/src/runloop_api_client/types/scenario_list_public_response.py +40 -0
  28. runloop_api_client-0.29.0/src/runloop_api_client/types/scenario_view.py → runloop_api_client-0.30.0/src/runloop_api_client/types/scenario_list_response.py +5 -2
  29. runloop_api_client-0.30.0/src/runloop_api_client/types/scenario_retrieve_response.py +40 -0
  30. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_run_view.py +1 -1
  31. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_update_params.py +3 -0
  32. runloop_api_client-0.30.0/src/runloop_api_client/types/scenario_update_response.py +40 -0
  33. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +1 -1
  34. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +1 -1
  35. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared/launch_parameters.py +3 -1
  36. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +3 -1
  37. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/scenarios/test_scorers.py +2 -2
  38. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/test_benchmarks.py +42 -31
  39. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/test_blueprints.py +80 -4
  40. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/test_devboxes.py +8 -8
  41. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/test_scenarios.py +65 -43
  42. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_client.py +1 -1
  43. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_transform.py +20 -1
  44. runloop_api_client-0.29.0/.release-please-manifest.json +0 -3
  45. runloop_api_client-0.29.0/src/runloop_api_client/types/benchmark_list_view.py +0 -19
  46. runloop_api_client-0.29.0/src/runloop_api_client/types/scenario_list_view.py +0 -19
  47. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/.gitignore +0 -0
  48. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/CONTRIBUTING.md +0 -0
  49. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/LICENSE +0 -0
  50. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/SECURITY.md +0 -0
  51. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/bin/check-release-environment +0 -0
  52. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/bin/publish-pypi +0 -0
  53. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/examples/.keep +0 -0
  54. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/mypy.ini +0 -0
  55. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/noxfile.py +0 -0
  56. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/release-please-config.json +0 -0
  57. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/requirements-dev.lock +0 -0
  58. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/requirements.lock +0 -0
  59. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop/lib/.keep +0 -0
  60. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/__init__.py +0 -0
  61. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_client.py +0 -0
  62. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_compat.py +0 -0
  63. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_constants.py +0 -0
  64. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_exceptions.py +0 -0
  65. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_files.py +0 -0
  66. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_qs.py +0 -0
  67. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_resource.py +0 -0
  68. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_response.py +0 -0
  69. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_streaming.py +0 -0
  70. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_types.py +0 -0
  71. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  72. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  73. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  74. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  75. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  76. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  77. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  78. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/lib/.keep +0 -0
  79. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/lib/polling.py +0 -0
  80. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  81. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/pagination.py +0 -0
  82. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/py.typed +0 -0
  83. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/__init__.py +0 -0
  84. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
  85. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
  86. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  87. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  88. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  89. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  90. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  91. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  92. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/lsp.py +0 -0
  93. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/repositories.py +0 -0
  94. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  95. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
  96. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  97. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  98. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  99. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  100. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
  101. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
  102. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  103. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  104. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  105. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  106. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  107. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  108. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  109. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  110. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  111. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  112. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  113. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  114. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  115. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  116. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  117. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  118. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  119. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  120. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  121. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  122. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  123. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  124. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  125. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  126. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  127. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  128. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  129. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  130. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  131. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  132. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  133. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_code_action.py +0 -0
  134. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_command.py +0 -0
  135. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_command_param.py +0 -0
  136. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_diagnostic.py +0 -0
  137. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_diagnostic_param.py +0 -0
  138. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_location.py +0 -0
  139. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_markup_content.py +0 -0
  140. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_parameter_information.py +0 -0
  141. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_range.py +0 -0
  142. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_range_param.py +0 -0
  143. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_signature.py +0 -0
  144. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_workspace_edit.py +0 -0
  145. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_workspace_edit_param.py +0 -0
  146. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  147. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  148. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_action_application_result.py +0 -0
  149. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_action_context_param.py +0 -0
  150. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_action_kind.py +0 -0
  151. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_action_trigger_kind.py +0 -0
  152. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_actions_response.py +0 -0
  153. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_description_param.py +0 -0
  154. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_segment_info_response.py +0 -0
  155. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  156. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  157. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  158. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  159. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  160. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  161. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  162. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  163. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  164. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/diagnostic_param.py +0 -0
  165. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/diagnostic_related_information_param.py +0 -0
  166. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/diagnostic_severity.py +0 -0
  167. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/diagnostic_tag.py +0 -0
  168. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/diagnostics_response.py +0 -0
  169. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  170. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  171. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/document_symbol.py +0 -0
  172. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/document_symbol_response.py +0 -0
  173. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/document_uri.py +0 -0
  174. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  175. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  176. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  177. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/file_contents_response.py +0 -0
  178. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/file_definition_response.py +0 -0
  179. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/file_path.py +0 -0
  180. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/file_uri.py +0 -0
  181. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/formatting_response.py +0 -0
  182. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/health_status_response.py +0 -0
  183. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/integer.py +0 -0
  184. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/l_sp_any_param.py +0 -0
  185. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/location_param.py +0 -0
  186. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  187. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_apply_code_action_params.py +0 -0
  188. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_code_actions_params.py +0 -0
  189. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_diagnostics_params.py +0 -0
  190. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_document_symbols_params.py +0 -0
  191. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_file_definition_params.py +0 -0
  192. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_file_params.py +0 -0
  193. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_files_response.py +0 -0
  194. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_formatting_params.py +0 -0
  195. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_params.py +0 -0
  196. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_response.py +0 -0
  197. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_get_code_segment_info_params.py +0 -0
  198. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_get_signature_help_params.py +0 -0
  199. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_references_params.py +0 -0
  200. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_params.py +0 -0
  201. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_response.py +0 -0
  202. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/position.py +0 -0
  203. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/position_param.py +0 -0
  204. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/range.py +0 -0
  205. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/range_param.py +0 -0
  206. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array.py +0 -0
  207. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array_param.py +0 -0
  208. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/references_response.py +0 -0
  209. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/signature_help_response.py +0 -0
  210. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/symbol_kind.py +0 -0
  211. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/symbol_tag.py +0 -0
  212. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/symbol_type.py +0 -0
  213. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/text_edit.py +0 -0
  214. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/text_edit_param.py +0 -0
  215. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/u_ri.py +0 -0
  216. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/uinteger.py +0 -0
  217. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/watched_file_response.py +0 -0
  218. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/input_context.py +0 -0
  219. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/input_context_param.py +0 -0
  220. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  221. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  222. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  223. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
  224. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_version_details.py +0 -0
  225. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_version_list_view.py +0 -0
  226. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
  227. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  228. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  229. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  230. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  231. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  232. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  233. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  234. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
  235. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  236. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
  237. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
  238. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
  239. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
  240. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
  241. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  242. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  243. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  244. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_function.py +0 -0
  245. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
  246. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  247. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  248. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  249. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  250. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  251. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  252. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  253. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/__init__.py +0 -0
  254. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/__init__.py +0 -0
  255. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/benchmarks/__init__.py +0 -0
  256. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/benchmarks/test_runs.py +0 -0
  257. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/__init__.py +0 -0
  258. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
  259. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_computers.py +0 -0
  260. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
  261. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  262. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  263. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_lsp.py +0 -0
  264. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/scenarios/__init__.py +0 -0
  265. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/scenarios/test_runs.py +0 -0
  266. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/api_resources/test_repositories.py +0 -0
  267. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/conftest.py +0 -0
  268. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/sample_file.txt +0 -0
  269. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_deepcopy.py +0 -0
  270. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_extract_files.py +0 -0
  271. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_files.py +0 -0
  272. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_models.py +0 -0
  273. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_qs.py +0 -0
  274. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_required_args.py +0 -0
  275. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_response.py +0 -0
  276. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_streaming.py +0 -0
  277. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_utils/test_proxy.py +0 -0
  278. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/test_utils/test_typing.py +0 -0
  279. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/tests/utils.py +0 -0
  280. {runloop_api_client-0.29.0 → runloop_api_client-0.30.0}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.30.0"
3
+ }
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.30.0 (2025-04-16)
4
+
5
+ Full Changelog: [v0.29.0...v0.30.0](https://github.com/runloopai/api-client-python/compare/v0.29.0...v0.30.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([380287d](https://github.com/runloopai/api-client-python/commit/380287d31238c9cc1cf99a3c394f03141be6174d))
10
+ * **api:** api update ([e9857e8](https://github.com/runloopai/api-client-python/commit/e9857e86999295ef3a8507f69c61ea6ee2861908))
11
+ * **api:** api update ([#586](https://github.com/runloopai/api-client-python/issues/586)) ([eb6d1ba](https://github.com/runloopai/api-client-python/commit/eb6d1ba0b6420f256c8b40dbae75f8a51854d32d))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **client:** correctly reuse idempotency key ([a6ba920](https://github.com/runloopai/api-client-python/commit/a6ba9201bf5012822ba97fdfdc48e96668a2d22e))
17
+ * **perf:** optimize some hot paths ([edf120c](https://github.com/runloopai/api-client-python/commit/edf120c4cfc3d0104c3735c6882787a039b21bce))
18
+ * **perf:** skip traversing types for NotGiven values ([bcb8823](https://github.com/runloopai/api-client-python/commit/bcb8823c114d7171745010f41442932657fc0b76))
19
+
20
+
21
+ ### Chores
22
+
23
+ * fix typos ([#582](https://github.com/runloopai/api-client-python/issues/582)) ([66d248c](https://github.com/runloopai/api-client-python/commit/66d248cf691f776d04df6aeb3273734bbf914a3b))
24
+ * **internal:** expand CI branch coverage ([0b68591](https://github.com/runloopai/api-client-python/commit/0b68591b8977c6863d75a464045a958809cca096))
25
+ * **internal:** reduce CI branch coverage ([58821a3](https://github.com/runloopai/api-client-python/commit/58821a3fc73f47ed0601a8fdbeaad79778765719))
26
+ * **internal:** remove trailing character ([#584](https://github.com/runloopai/api-client-python/issues/584)) ([65bacb7](https://github.com/runloopai/api-client-python/commit/65bacb71b584b8b1a3f998efb2d28102ffa98d74))
27
+ * **internal:** slight transform perf improvement ([#587](https://github.com/runloopai/api-client-python/issues/587)) ([ec630c4](https://github.com/runloopai/api-client-python/commit/ec630c44eefc52b89ce69277c9040fc93dd9241f))
28
+ * **internal:** update pyright settings ([487213d](https://github.com/runloopai/api-client-python/commit/487213dcc570b7d538fbff04b0a942cdbc6e97c6))
29
+ * slight wording improvement in README ([#588](https://github.com/runloopai/api-client-python/issues/588)) ([2eb6437](https://github.com/runloopai/api-client-python/commit/2eb643793ea4ce03000b5b4eae6f39843a74543b))
30
+
31
+
32
+ ### Documentation
33
+
34
+ * swap examples used in readme ([#585](https://github.com/runloopai/api-client-python/issues/585)) ([adf9a26](https://github.com/runloopai/api-client-python/commit/adf9a26a3890b7bd5899d191927ed97a9402c864))
35
+
3
36
  ## 0.29.0 (2025-03-25)
4
37
 
5
38
  Full Changelog: [v0.28.0...v0.29.0](https://github.com/runloopai/api-client-python/compare/v0.28.0...v0.29.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.29.0
3
+ Version: 0.30.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
@@ -176,8 +176,7 @@ from runloop_api_client import Runloop
176
176
 
177
177
  client = Runloop()
178
178
 
179
- blueprint_view = client.blueprints.create(
180
- name="name",
179
+ devbox_view = client.devboxes.create(
181
180
  launch_parameters={
182
181
  "after_idle": {
183
182
  "idle_time_seconds": 0,
@@ -188,15 +187,15 @@ blueprint_view = client.blueprints.create(
188
187
  "custom_gb_memory": 0,
189
188
  "keep_alive_time_seconds": 0,
190
189
  "launch_commands": ["string"],
191
- "resource_size_request": "SMALL",
190
+ "resource_size_request": "X_SMALL",
192
191
  },
193
192
  )
194
- print(blueprint_view.launch_parameters)
193
+ print(devbox_view.launch_parameters)
195
194
  ```
196
195
 
197
196
  ## File uploads
198
197
 
199
- Request parameters that correspond to file uploads can be passed as `bytes`, a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
198
+ Request parameters that correspond to file uploads can be passed as `bytes`, or a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
200
199
 
201
200
  ```python
202
201
  from pathlib import Path
@@ -145,8 +145,7 @@ from runloop_api_client import Runloop
145
145
 
146
146
  client = Runloop()
147
147
 
148
- blueprint_view = client.blueprints.create(
149
- name="name",
148
+ devbox_view = client.devboxes.create(
150
149
  launch_parameters={
151
150
  "after_idle": {
152
151
  "idle_time_seconds": 0,
@@ -157,15 +156,15 @@ blueprint_view = client.blueprints.create(
157
156
  "custom_gb_memory": 0,
158
157
  "keep_alive_time_seconds": 0,
159
158
  "launch_commands": ["string"],
160
- "resource_size_request": "SMALL",
159
+ "resource_size_request": "X_SMALL",
161
160
  },
162
161
  )
163
- print(blueprint_view.launch_parameters)
162
+ print(devbox_view.launch_parameters)
164
163
  ```
165
164
 
166
165
  ## File uploads
167
166
 
168
- Request parameters that correspond to file uploads can be passed as `bytes`, a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
167
+ Request parameters that correspond to file uploads can be passed as `bytes`, or a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
169
168
 
170
169
  ```python
171
170
  from pathlib import Path
@@ -11,20 +11,22 @@ Types:
11
11
  ```python
12
12
  from runloop_api_client.types import (
13
13
  BenchmarkCreateParameters,
14
- BenchmarkListView,
15
14
  BenchmarkRunListView,
16
15
  BenchmarkRunView,
17
- BenchmarkView,
18
16
  StartBenchmarkRunParameters,
17
+ BenchmarkCreateResponse,
18
+ BenchmarkRetrieveResponse,
19
+ BenchmarkListResponse,
20
+ BenchmarkListPublicResponse,
19
21
  )
20
22
  ```
21
23
 
22
24
  Methods:
23
25
 
24
- - <code title="post /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">create</a>(\*\*<a href="src/runloop_api_client/types/benchmark_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">BenchmarkView</a></code>
25
- - <code title="get /v1/benchmarks/{id}">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/benchmark_view.py">BenchmarkView</a></code>
26
- - <code title="get /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">list</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">SyncBenchmarksCursorIDPage[BenchmarkView]</a></code>
27
- - <code title="get /v1/benchmarks/list_public">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">SyncBenchmarksCursorIDPage[BenchmarkView]</a></code>
26
+ - <code title="post /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">create</a>(\*\*<a href="src/runloop_api_client/types/benchmark_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_create_response.py">BenchmarkCreateResponse</a></code>
27
+ - <code title="get /v1/benchmarks/{id}">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/benchmark_retrieve_response.py">BenchmarkRetrieveResponse</a></code>
28
+ - <code title="get /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">list</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_list_response.py">SyncBenchmarksCursorIDPage[BenchmarkListResponse]</a></code>
29
+ - <code title="get /v1/benchmarks/list_public">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_list_public_response.py">SyncBenchmarksCursorIDPage[BenchmarkListPublicResponse]</a></code>
28
30
  - <code title="post /v1/benchmarks/start_run">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">start_run</a>(\*\*<a href="src/runloop_api_client/types/benchmark_start_run_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">BenchmarkRunView</a></code>
29
31
 
30
32
  ## Runs
@@ -47,6 +49,7 @@ from runloop_api_client.types import (
47
49
  BlueprintListView,
48
50
  BlueprintPreviewView,
49
51
  BlueprintView,
52
+ BlueprintDeleteResponse,
50
53
  )
51
54
  ```
52
55
 
@@ -55,6 +58,7 @@ Methods:
55
58
  - <code title="post /v1/blueprints">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">create</a>(\*\*<a href="src/runloop_api_client/types/blueprint_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/blueprint_view.py">BlueprintView</a></code>
56
59
  - <code title="get /v1/blueprints/{id}">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/blueprint_view.py">BlueprintView</a></code>
57
60
  - <code title="get /v1/blueprints">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">list</a>(\*\*<a href="src/runloop_api_client/types/blueprint_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/blueprint_view.py">SyncBlueprintsCursorIDPage[BlueprintView]</a></code>
61
+ - <code title="post /v1/blueprints/{id}/delete">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">delete</a>(id) -> <a href="./src/runloop_api_client/types/blueprint_delete_response.py">object</a></code>
58
62
  - <code title="get /v1/blueprints/{id}/logs">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">logs</a>(id) -> <a href="./src/runloop_api_client/types/blueprint_build_logs_list_view.py">BlueprintBuildLogsListView</a></code>
59
63
  - <code title="post /v1/blueprints/preview">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">preview</a>(\*\*<a href="src/runloop_api_client/types/blueprint_preview_params.py">params</a>) -> <a href="./src/runloop_api_client/types/blueprint_preview_view.py">BlueprintPreviewView</a></code>
60
64
 
@@ -75,6 +79,7 @@ from runloop_api_client.types import (
75
79
  DevboxDeleteDiskSnapshotResponse,
76
80
  DevboxKeepAliveResponse,
77
81
  DevboxReadFileContentsResponse,
82
+ DevboxRemoveTunnelResponse,
78
83
  DevboxUploadFileResponse,
79
84
  )
80
85
  ```
@@ -94,7 +99,7 @@ Methods:
94
99
  - <code title="post /v1/devboxes/{id}/keep_alive">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">keep_alive</a>(id) -> <a href="./src/runloop_api_client/types/devbox_keep_alive_response.py">object</a></code>
95
100
  - <code title="get /v1/devboxes/disk_snapshots">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">list_disk_snapshots</a>(\*\*<a href="src/runloop_api_client/types/devbox_list_disk_snapshots_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">SyncDiskSnapshotsCursorIDPage[DevboxSnapshotView]</a></code>
96
101
  - <code title="post /v1/devboxes/{id}/read_file_contents">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">read_file_contents</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_read_file_contents_params.py">params</a>) -> str</code>
97
- - <code title="post /v1/devboxes/{id}/remove_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">remove_tunnel</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_remove_tunnel_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_tunnel_view.py">DevboxTunnelView</a></code>
102
+ - <code title="post /v1/devboxes/{id}/remove_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">remove_tunnel</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_remove_tunnel_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_remove_tunnel_response.py">object</a></code>
98
103
  - <code title="post /v1/devboxes/{id}/resume">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">resume</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
99
104
  - <code title="post /v1/devboxes/{id}/shutdown">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">shutdown</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
100
105
  - <code title="post /v1/devboxes/{id}/snapshot_disk">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">snapshot_disk</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_snapshot_disk_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">DevboxSnapshotView</a></code>
@@ -262,25 +267,28 @@ from runloop_api_client.types import (
262
267
  InputContext,
263
268
  ScenarioCreateParameters,
264
269
  ScenarioEnvironment,
265
- ScenarioListView,
266
270
  ScenarioRunListView,
267
271
  ScenarioRunView,
268
- ScenarioView,
269
272
  ScoringContract,
270
273
  ScoringContractResultView,
271
274
  ScoringFunction,
272
275
  ScoringFunctionResultView,
273
276
  StartScenarioRunParameters,
277
+ ScenarioCreateResponse,
278
+ ScenarioRetrieveResponse,
279
+ ScenarioUpdateResponse,
280
+ ScenarioListResponse,
281
+ ScenarioListPublicResponse,
274
282
  )
275
283
  ```
276
284
 
277
285
  Methods:
278
286
 
279
- - <code title="post /v1/scenarios">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">create</a>(\*\*<a href="src/runloop_api_client/types/scenario_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_view.py">ScenarioView</a></code>
280
- - <code title="get /v1/scenarios/{id}">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/scenario_view.py">ScenarioView</a></code>
281
- - <code title="post /v1/scenarios/{id}">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/scenario_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_view.py">ScenarioView</a></code>
282
- - <code title="get /v1/scenarios">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">list</a>(\*\*<a href="src/runloop_api_client/types/scenario_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_view.py">SyncScenariosCursorIDPage[ScenarioView]</a></code>
283
- - <code title="get /v1/scenarios/list_public">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/scenario_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_view.py">SyncScenariosCursorIDPage[ScenarioView]</a></code>
287
+ - <code title="post /v1/scenarios">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">create</a>(\*\*<a href="src/runloop_api_client/types/scenario_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_create_response.py">ScenarioCreateResponse</a></code>
288
+ - <code title="get /v1/scenarios/{id}">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/scenario_retrieve_response.py">ScenarioRetrieveResponse</a></code>
289
+ - <code title="post /v1/scenarios/{id}">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/scenario_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_update_response.py">ScenarioUpdateResponse</a></code>
290
+ - <code title="get /v1/scenarios">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">list</a>(\*\*<a href="src/runloop_api_client/types/scenario_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_list_response.py">SyncScenariosCursorIDPage[ScenarioListResponse]</a></code>
291
+ - <code title="get /v1/scenarios/list_public">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/scenario_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_list_public_response.py">SyncScenariosCursorIDPage[ScenarioListPublicResponse]</a></code>
284
292
  - <code title="post /v1/scenarios/start_run">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">start_run</a>(\*\*<a href="src/runloop_api_client/types/scenario_start_run_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">ScenarioRunView</a></code>
285
293
 
286
294
  ## Runs
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.29.0"
3
+ version = "0.30.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -147,6 +147,7 @@ exclude = [
147
147
  ]
148
148
 
149
149
  reportImplicitOverride = true
150
+ reportOverlappingOverload = false
150
151
 
151
152
  reportImportCycles = false
152
153
  reportPrivateUsage = false
@@ -409,7 +409,8 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
409
409
 
410
410
  idempotency_header = self._idempotency_header
411
411
  if idempotency_header and options.method.lower() != "get" and idempotency_header not in headers:
412
- headers[idempotency_header] = options.idempotency_key or self._idempotency_key()
412
+ options.idempotency_key = options.idempotency_key or self._idempotency_key()
413
+ headers[idempotency_header] = options.idempotency_key
413
414
 
414
415
  # Don't set these headers if they were already set or removed by the caller. We check
415
416
  # `custom_headers`, which can contain `Omit()`, instead of `headers` to account for the removal case.
@@ -943,6 +944,10 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
943
944
  request = self._build_request(options, retries_taken=retries_taken)
944
945
  self._prepare_request(request)
945
946
 
947
+ if options.idempotency_key:
948
+ # ensure the idempotency key is reused between requests
949
+ input_options.idempotency_key = options.idempotency_key
950
+
946
951
  kwargs: HttpxSendArgs = {}
947
952
  if self.custom_auth is not None:
948
953
  kwargs["auth"] = self.custom_auth
@@ -1475,6 +1480,10 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1475
1480
  request = self._build_request(options, retries_taken=retries_taken)
1476
1481
  await self._prepare_request(request)
1477
1482
 
1483
+ if options.idempotency_key:
1484
+ # ensure the idempotency key is reused between requests
1485
+ input_options.idempotency_key = options.idempotency_key
1486
+
1478
1487
  kwargs: HttpxSendArgs = {}
1479
1488
  if self.custom_auth is not None:
1480
1489
  kwargs["auth"] = self.custom_auth
@@ -681,7 +681,7 @@ def set_pydantic_config(typ: Any, config: pydantic.ConfigDict) -> None:
681
681
  setattr(typ, "__pydantic_config__", config) # noqa: B010
682
682
 
683
683
 
684
- # our use of subclasssing here causes weirdness for type checkers,
684
+ # our use of subclassing here causes weirdness for type checkers,
685
685
  # so we just pretend that we don't subclass
686
686
  if TYPE_CHECKING:
687
687
  GenericModel = BaseModel
@@ -5,13 +5,15 @@ import base64
5
5
  import pathlib
6
6
  from typing import Any, Mapping, TypeVar, cast
7
7
  from datetime import date, datetime
8
- from typing_extensions import Literal, get_args, override, get_type_hints
8
+ from typing_extensions import Literal, get_args, override, get_type_hints as _get_type_hints
9
9
 
10
10
  import anyio
11
11
  import pydantic
12
12
 
13
13
  from ._utils import (
14
14
  is_list,
15
+ is_given,
16
+ lru_cache,
15
17
  is_mapping,
16
18
  is_iterable,
17
19
  )
@@ -108,6 +110,7 @@ def transform(
108
110
  return cast(_T, transformed)
109
111
 
110
112
 
113
+ @lru_cache(maxsize=8096)
111
114
  def _get_annotated_type(type_: type) -> type | None:
112
115
  """If the given type is an `Annotated` type then it is returned, if not `None` is returned.
113
116
 
@@ -126,7 +129,7 @@ def _get_annotated_type(type_: type) -> type | None:
126
129
  def _maybe_transform_key(key: str, type_: type) -> str:
127
130
  """Transform the given `data` based on the annotations provided in `type_`.
128
131
 
129
- Note: this function only looks at `Annotated` types that contain `PropertInfo` metadata.
132
+ Note: this function only looks at `Annotated` types that contain `PropertyInfo` metadata.
130
133
  """
131
134
  annotated_type = _get_annotated_type(type_)
132
135
  if annotated_type is None:
@@ -142,6 +145,10 @@ def _maybe_transform_key(key: str, type_: type) -> str:
142
145
  return key
143
146
 
144
147
 
148
+ def _no_transform_needed(annotation: type) -> bool:
149
+ return annotation == float or annotation == int
150
+
151
+
145
152
  def _transform_recursive(
146
153
  data: object,
147
154
  *,
@@ -184,6 +191,15 @@ def _transform_recursive(
184
191
  return cast(object, data)
185
192
 
186
193
  inner_type = extract_type_arg(stripped_type, 0)
194
+ if _no_transform_needed(inner_type):
195
+ # for some types there is no need to transform anything, so we can get a small
196
+ # perf boost from skipping that work.
197
+ #
198
+ # but we still need to convert to a list to ensure the data is json-serializable
199
+ if is_list(data):
200
+ return data
201
+ return list(data)
202
+
187
203
  return [_transform_recursive(d, annotation=annotation, inner_type=inner_type) for d in data]
188
204
 
189
205
  if is_union_type(stripped_type):
@@ -245,6 +261,11 @@ def _transform_typeddict(
245
261
  result: dict[str, object] = {}
246
262
  annotations = get_type_hints(expected_type, include_extras=True)
247
263
  for key, value in data.items():
264
+ if not is_given(value):
265
+ # we don't need to include `NotGiven` values here as they'll
266
+ # be stripped out before the request is sent anyway
267
+ continue
268
+
248
269
  type_ = annotations.get(key)
249
270
  if type_ is None:
250
271
  # we do not have a type annotation for this field, leave it as is
@@ -332,6 +353,15 @@ async def _async_transform_recursive(
332
353
  return cast(object, data)
333
354
 
334
355
  inner_type = extract_type_arg(stripped_type, 0)
356
+ if _no_transform_needed(inner_type):
357
+ # for some types there is no need to transform anything, so we can get a small
358
+ # perf boost from skipping that work.
359
+ #
360
+ # but we still need to convert to a list to ensure the data is json-serializable
361
+ if is_list(data):
362
+ return data
363
+ return list(data)
364
+
335
365
  return [await _async_transform_recursive(d, annotation=annotation, inner_type=inner_type) for d in data]
336
366
 
337
367
  if is_union_type(stripped_type):
@@ -393,6 +423,11 @@ async def _async_transform_typeddict(
393
423
  result: dict[str, object] = {}
394
424
  annotations = get_type_hints(expected_type, include_extras=True)
395
425
  for key, value in data.items():
426
+ if not is_given(value):
427
+ # we don't need to include `NotGiven` values here as they'll
428
+ # be stripped out before the request is sent anyway
429
+ continue
430
+
396
431
  type_ = annotations.get(key)
397
432
  if type_ is None:
398
433
  # we do not have a type annotation for this field, leave it as is
@@ -400,3 +435,13 @@ async def _async_transform_typeddict(
400
435
  else:
401
436
  result[_maybe_transform_key(key, type_)] = await _async_transform_recursive(value, annotation=type_)
402
437
  return result
438
+
439
+
440
+ @lru_cache(maxsize=8096)
441
+ def get_type_hints(
442
+ obj: Any,
443
+ globalns: dict[str, Any] | None = None,
444
+ localns: Mapping[str, Any] | None = None,
445
+ include_extras: bool = False,
446
+ ) -> dict[str, Any]:
447
+ return _get_type_hints(obj, globalns=globalns, localns=localns, include_extras=include_extras)
@@ -13,6 +13,7 @@ from typing_extensions import (
13
13
  get_origin,
14
14
  )
15
15
 
16
+ from ._utils import lru_cache
16
17
  from .._types import InheritsGeneric
17
18
  from .._compat import is_union as _is_union
18
19
 
@@ -66,6 +67,7 @@ def is_type_alias_type(tp: Any, /) -> TypeIs[typing_extensions.TypeAliasType]:
66
67
 
67
68
 
68
69
  # Extracts T from Annotated[T, ...] or from Required[Annotated[T, ...]]
70
+ @lru_cache(maxsize=8096)
69
71
  def strip_annotated_type(typ: type) -> type:
70
72
  if is_required_type(typ) or is_annotated_type(typ):
71
73
  return strip_annotated_type(cast(type, get_args(typ)[0]))
@@ -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.29.0" # x-release-please-version
4
+ __version__ = "0.30.0" # x-release-please-version
@@ -35,8 +35,11 @@ from ..._response import (
35
35
  )
36
36
  from ...pagination import SyncBenchmarksCursorIDPage, AsyncBenchmarksCursorIDPage
37
37
  from ..._base_client import AsyncPaginator, make_request_options
38
- from ...types.benchmark_view import BenchmarkView
39
38
  from ...types.benchmark_run_view import BenchmarkRunView
39
+ from ...types.benchmark_list_response import BenchmarkListResponse
40
+ from ...types.benchmark_create_response import BenchmarkCreateResponse
41
+ from ...types.benchmark_retrieve_response import BenchmarkRetrieveResponse
42
+ from ...types.benchmark_list_public_response import BenchmarkListPublicResponse
40
43
 
41
44
  __all__ = ["BenchmarksResource", "AsyncBenchmarksResource"]
42
45
 
@@ -68,6 +71,7 @@ class BenchmarksResource(SyncAPIResource):
68
71
  def create(
69
72
  self,
70
73
  *,
74
+ is_public: bool,
71
75
  name: str,
72
76
  metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
73
77
  scenario_ids: Optional[List[str]] | NotGiven = NOT_GIVEN,
@@ -78,11 +82,13 @@ class BenchmarksResource(SyncAPIResource):
78
82
  extra_body: Body | None = None,
79
83
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
80
84
  idempotency_key: str | None = None,
81
- ) -> BenchmarkView:
85
+ ) -> BenchmarkCreateResponse:
82
86
  """
83
87
  Create a Benchmark with a set of Scenarios.
84
88
 
85
89
  Args:
90
+ is_public: Whether this benchmark is public.
91
+
86
92
  name: The name of the Benchmark.
87
93
 
88
94
  metadata: User defined metadata to attach to the benchmark for organization.
@@ -103,6 +109,7 @@ class BenchmarksResource(SyncAPIResource):
103
109
  "/v1/benchmarks",
104
110
  body=maybe_transform(
105
111
  {
112
+ "is_public": is_public,
106
113
  "name": name,
107
114
  "metadata": metadata,
108
115
  "scenario_ids": scenario_ids,
@@ -116,7 +123,7 @@ class BenchmarksResource(SyncAPIResource):
116
123
  timeout=timeout,
117
124
  idempotency_key=idempotency_key,
118
125
  ),
119
- cast_to=BenchmarkView,
126
+ cast_to=BenchmarkCreateResponse,
120
127
  )
121
128
 
122
129
  def retrieve(
@@ -129,7 +136,7 @@ class BenchmarksResource(SyncAPIResource):
129
136
  extra_query: Query | None = None,
130
137
  extra_body: Body | None = None,
131
138
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
132
- ) -> BenchmarkView:
139
+ ) -> BenchmarkRetrieveResponse:
133
140
  """
134
141
  Get a previously created Benchmark.
135
142
 
@@ -149,7 +156,7 @@ class BenchmarksResource(SyncAPIResource):
149
156
  options=make_request_options(
150
157
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
151
158
  ),
152
- cast_to=BenchmarkView,
159
+ cast_to=BenchmarkRetrieveResponse,
153
160
  )
154
161
 
155
162
  def list(
@@ -163,7 +170,7 @@ class BenchmarksResource(SyncAPIResource):
163
170
  extra_query: Query | None = None,
164
171
  extra_body: Body | None = None,
165
172
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
166
- ) -> SyncBenchmarksCursorIDPage[BenchmarkView]:
173
+ ) -> SyncBenchmarksCursorIDPage[BenchmarkListResponse]:
167
174
  """
168
175
  List all Benchmarks matching filter.
169
176
 
@@ -182,7 +189,7 @@ class BenchmarksResource(SyncAPIResource):
182
189
  """
183
190
  return self._get_api_list(
184
191
  "/v1/benchmarks",
185
- page=SyncBenchmarksCursorIDPage[BenchmarkView],
192
+ page=SyncBenchmarksCursorIDPage[BenchmarkListResponse],
186
193
  options=make_request_options(
187
194
  extra_headers=extra_headers,
188
195
  extra_query=extra_query,
@@ -196,7 +203,7 @@ class BenchmarksResource(SyncAPIResource):
196
203
  benchmark_list_params.BenchmarkListParams,
197
204
  ),
198
205
  ),
199
- model=BenchmarkView,
206
+ model=BenchmarkListResponse,
200
207
  )
201
208
 
202
209
  def list_public(
@@ -210,7 +217,7 @@ class BenchmarksResource(SyncAPIResource):
210
217
  extra_query: Query | None = None,
211
218
  extra_body: Body | None = None,
212
219
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
213
- ) -> SyncBenchmarksCursorIDPage[BenchmarkView]:
220
+ ) -> SyncBenchmarksCursorIDPage[BenchmarkListPublicResponse]:
214
221
  """
215
222
  List all public benchmarks matching filter.
216
223
 
@@ -229,7 +236,7 @@ class BenchmarksResource(SyncAPIResource):
229
236
  """
230
237
  return self._get_api_list(
231
238
  "/v1/benchmarks/list_public",
232
- page=SyncBenchmarksCursorIDPage[BenchmarkView],
239
+ page=SyncBenchmarksCursorIDPage[BenchmarkListPublicResponse],
233
240
  options=make_request_options(
234
241
  extra_headers=extra_headers,
235
242
  extra_query=extra_query,
@@ -243,7 +250,7 @@ class BenchmarksResource(SyncAPIResource):
243
250
  benchmark_list_public_params.BenchmarkListPublicParams,
244
251
  ),
245
252
  ),
246
- model=BenchmarkView,
253
+ model=BenchmarkListPublicResponse,
247
254
  )
248
255
 
249
256
  def start_run(
@@ -328,6 +335,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
328
335
  async def create(
329
336
  self,
330
337
  *,
338
+ is_public: bool,
331
339
  name: str,
332
340
  metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
333
341
  scenario_ids: Optional[List[str]] | NotGiven = NOT_GIVEN,
@@ -338,11 +346,13 @@ class AsyncBenchmarksResource(AsyncAPIResource):
338
346
  extra_body: Body | None = None,
339
347
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
340
348
  idempotency_key: str | None = None,
341
- ) -> BenchmarkView:
349
+ ) -> BenchmarkCreateResponse:
342
350
  """
343
351
  Create a Benchmark with a set of Scenarios.
344
352
 
345
353
  Args:
354
+ is_public: Whether this benchmark is public.
355
+
346
356
  name: The name of the Benchmark.
347
357
 
348
358
  metadata: User defined metadata to attach to the benchmark for organization.
@@ -363,6 +373,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
363
373
  "/v1/benchmarks",
364
374
  body=await async_maybe_transform(
365
375
  {
376
+ "is_public": is_public,
366
377
  "name": name,
367
378
  "metadata": metadata,
368
379
  "scenario_ids": scenario_ids,
@@ -376,7 +387,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
376
387
  timeout=timeout,
377
388
  idempotency_key=idempotency_key,
378
389
  ),
379
- cast_to=BenchmarkView,
390
+ cast_to=BenchmarkCreateResponse,
380
391
  )
381
392
 
382
393
  async def retrieve(
@@ -389,7 +400,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
389
400
  extra_query: Query | None = None,
390
401
  extra_body: Body | None = None,
391
402
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
392
- ) -> BenchmarkView:
403
+ ) -> BenchmarkRetrieveResponse:
393
404
  """
394
405
  Get a previously created Benchmark.
395
406
 
@@ -409,7 +420,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
409
420
  options=make_request_options(
410
421
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
411
422
  ),
412
- cast_to=BenchmarkView,
423
+ cast_to=BenchmarkRetrieveResponse,
413
424
  )
414
425
 
415
426
  def list(
@@ -423,7 +434,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
423
434
  extra_query: Query | None = None,
424
435
  extra_body: Body | None = None,
425
436
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
426
- ) -> AsyncPaginator[BenchmarkView, AsyncBenchmarksCursorIDPage[BenchmarkView]]:
437
+ ) -> AsyncPaginator[BenchmarkListResponse, AsyncBenchmarksCursorIDPage[BenchmarkListResponse]]:
427
438
  """
428
439
  List all Benchmarks matching filter.
429
440
 
@@ -442,7 +453,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
442
453
  """
443
454
  return self._get_api_list(
444
455
  "/v1/benchmarks",
445
- page=AsyncBenchmarksCursorIDPage[BenchmarkView],
456
+ page=AsyncBenchmarksCursorIDPage[BenchmarkListResponse],
446
457
  options=make_request_options(
447
458
  extra_headers=extra_headers,
448
459
  extra_query=extra_query,
@@ -456,7 +467,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
456
467
  benchmark_list_params.BenchmarkListParams,
457
468
  ),
458
469
  ),
459
- model=BenchmarkView,
470
+ model=BenchmarkListResponse,
460
471
  )
461
472
 
462
473
  def list_public(
@@ -470,7 +481,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
470
481
  extra_query: Query | None = None,
471
482
  extra_body: Body | None = None,
472
483
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
473
- ) -> AsyncPaginator[BenchmarkView, AsyncBenchmarksCursorIDPage[BenchmarkView]]:
484
+ ) -> AsyncPaginator[BenchmarkListPublicResponse, AsyncBenchmarksCursorIDPage[BenchmarkListPublicResponse]]:
474
485
  """
475
486
  List all public benchmarks matching filter.
476
487
 
@@ -489,7 +500,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
489
500
  """
490
501
  return self._get_api_list(
491
502
  "/v1/benchmarks/list_public",
492
- page=AsyncBenchmarksCursorIDPage[BenchmarkView],
503
+ page=AsyncBenchmarksCursorIDPage[BenchmarkListPublicResponse],
493
504
  options=make_request_options(
494
505
  extra_headers=extra_headers,
495
506
  extra_query=extra_query,
@@ -503,7 +514,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
503
514
  benchmark_list_public_params.BenchmarkListPublicParams,
504
515
  ),
505
516
  ),
506
- model=BenchmarkView,
517
+ model=BenchmarkListPublicResponse,
507
518
  )
508
519
 
509
520
  async def start_run(