runloop-api-client 0.23.0__tar.gz → 0.25.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 (272) hide show
  1. runloop_api_client-0.25.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/CHANGELOG.md +42 -0
  3. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/PKG-INFO +20 -1
  4. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/README.md +19 -0
  5. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/api.md +1 -0
  6. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/pyproject.toml +1 -1
  7. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_base_client.py +8 -2
  8. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_files.py +1 -1
  9. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_utils/_sync.py +17 -2
  10. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_version.py +1 -1
  11. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +17 -1
  12. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/scenarios/scenarios.py +186 -1
  13. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/__init__.py +1 -0
  14. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/benchmark_create_params.py +4 -1
  15. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/benchmark_run_view.py +7 -4
  16. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/benchmark_start_run_params.py +4 -1
  17. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/benchmark_view.py +4 -1
  18. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenario_create_params.py +11 -1
  19. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenario_environment.py +10 -0
  20. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenario_environment_param.py +11 -0
  21. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenario_run_view.py +4 -1
  22. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenario_start_run_params.py +4 -1
  23. runloop_api_client-0.25.0/src/runloop_api_client/types/scenario_update_params.py +36 -0
  24. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenario_view.py +11 -1
  25. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scoring_function.py +10 -5
  26. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scoring_function_param.py +10 -5
  27. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scoring_function_result_view.py +4 -0
  28. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/scenarios/test_scorers.py +22 -0
  29. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/test_benchmarks.py +4 -0
  30. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/test_scenarios.py +274 -0
  31. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_client.py +6 -4
  32. runloop_api_client-0.23.0/.release-please-manifest.json +0 -3
  33. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/.gitignore +0 -0
  34. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/CONTRIBUTING.md +0 -0
  35. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/LICENSE +0 -0
  36. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/SECURITY.md +0 -0
  37. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/bin/check-release-environment +0 -0
  38. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/bin/publish-pypi +0 -0
  39. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/examples/.keep +0 -0
  40. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/mypy.ini +0 -0
  41. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/noxfile.py +0 -0
  42. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/release-please-config.json +0 -0
  43. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/requirements-dev.lock +0 -0
  44. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/requirements.lock +0 -0
  45. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop/lib/.keep +0 -0
  46. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/__init__.py +0 -0
  47. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_client.py +0 -0
  48. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_compat.py +0 -0
  49. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_constants.py +0 -0
  50. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_exceptions.py +0 -0
  51. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_models.py +0 -0
  52. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_qs.py +0 -0
  53. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_resource.py +0 -0
  54. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_response.py +0 -0
  55. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_streaming.py +0 -0
  56. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_types.py +0 -0
  57. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  58. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  59. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  60. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  61. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  62. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  63. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  64. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  65. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/lib/.keep +0 -0
  66. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/lib/polling.py +0 -0
  67. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  68. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/pagination.py +0 -0
  69. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/py.typed +0 -0
  70. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/__init__.py +0 -0
  71. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
  72. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
  73. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/blueprints.py +0 -0
  74. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  75. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  76. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  77. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/devboxes/devboxes.py +0 -0
  78. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  79. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  80. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  81. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/devboxes/lsp.py +0 -0
  82. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/repositories.py +0 -0
  83. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  84. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
  85. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
  86. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  87. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  88. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/benchmark_list_view.py +0 -0
  89. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  90. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
  91. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
  92. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  93. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  94. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  95. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  96. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  97. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  98. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  99. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  100. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  101. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  102. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  103. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  104. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  105. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  106. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  107. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  108. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  109. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  110. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  111. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  112. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  113. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  114. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  115. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  116. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  117. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  118. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  119. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  120. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  121. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  122. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  123. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  124. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_code_action.py +0 -0
  125. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_command.py +0 -0
  126. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_command_param.py +0 -0
  127. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_diagnostic.py +0 -0
  128. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_diagnostic_param.py +0 -0
  129. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_location.py +0 -0
  130. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_markup_content.py +0 -0
  131. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_parameter_information.py +0 -0
  132. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_range.py +0 -0
  133. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_range_param.py +0 -0
  134. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_signature.py +0 -0
  135. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_workspace_edit.py +0 -0
  136. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/base_workspace_edit_param.py +0 -0
  137. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  138. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  139. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/code_action_application_result.py +0 -0
  140. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/code_action_context_param.py +0 -0
  141. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/code_action_kind.py +0 -0
  142. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/code_action_trigger_kind.py +0 -0
  143. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/code_actions_response.py +0 -0
  144. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/code_description_param.py +0 -0
  145. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/code_segment_info_response.py +0 -0
  146. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  147. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  148. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  149. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  150. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  151. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  152. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  153. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  154. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  155. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/diagnostic_param.py +0 -0
  156. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/diagnostic_related_information_param.py +0 -0
  157. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/diagnostic_severity.py +0 -0
  158. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/diagnostic_tag.py +0 -0
  159. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/diagnostics_response.py +0 -0
  160. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  161. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  162. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/document_symbol.py +0 -0
  163. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/document_symbol_response.py +0 -0
  164. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/document_uri.py +0 -0
  165. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  166. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  167. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  168. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/file_contents_response.py +0 -0
  169. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/file_definition_response.py +0 -0
  170. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/file_path.py +0 -0
  171. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/file_uri.py +0 -0
  172. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/formatting_response.py +0 -0
  173. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/health_status_response.py +0 -0
  174. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/integer.py +0 -0
  175. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/l_sp_any_param.py +0 -0
  176. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/location_param.py +0 -0
  177. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  178. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_apply_code_action_params.py +0 -0
  179. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_code_actions_params.py +0 -0
  180. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_diagnostics_params.py +0 -0
  181. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_document_symbols_params.py +0 -0
  182. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_file_definition_params.py +0 -0
  183. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_file_params.py +0 -0
  184. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_files_response.py +0 -0
  185. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_formatting_params.py +0 -0
  186. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_params.py +0 -0
  187. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_response.py +0 -0
  188. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_get_code_segment_info_params.py +0 -0
  189. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_get_signature_help_params.py +0 -0
  190. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_references_params.py +0 -0
  191. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_params.py +0 -0
  192. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_response.py +0 -0
  193. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/position.py +0 -0
  194. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/position_param.py +0 -0
  195. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/range.py +0 -0
  196. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/range_param.py +0 -0
  197. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array.py +0 -0
  198. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array_param.py +0 -0
  199. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/references_response.py +0 -0
  200. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/signature_help_response.py +0 -0
  201. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/symbol_kind.py +0 -0
  202. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/symbol_tag.py +0 -0
  203. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/symbol_type.py +0 -0
  204. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/text_edit.py +0 -0
  205. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/text_edit_param.py +0 -0
  206. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/u_ri.py +0 -0
  207. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/uinteger.py +0 -0
  208. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/devboxes/watched_file_response.py +0 -0
  209. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/input_context.py +0 -0
  210. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/input_context_param.py +0 -0
  211. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  212. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  213. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  214. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
  215. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/repository_version_details.py +0 -0
  216. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/repository_version_list_view.py +0 -0
  217. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  218. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  219. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenario_list_view.py +0 -0
  220. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  221. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  222. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  223. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  224. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
  225. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  226. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
  227. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
  228. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  229. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
  230. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
  231. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
  232. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  233. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  234. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  235. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  236. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  237. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  238. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
  239. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  240. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  241. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  242. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
  243. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/__init__.py +0 -0
  244. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/__init__.py +0 -0
  245. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/benchmarks/__init__.py +0 -0
  246. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/benchmarks/test_runs.py +0 -0
  247. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/devboxes/__init__.py +0 -0
  248. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
  249. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/devboxes/test_computers.py +0 -0
  250. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
  251. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  252. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  253. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/devboxes/test_lsp.py +0 -0
  254. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/scenarios/__init__.py +0 -0
  255. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/scenarios/test_runs.py +0 -0
  256. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/test_blueprints.py +0 -0
  257. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/test_devboxes.py +0 -0
  258. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/api_resources/test_repositories.py +0 -0
  259. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/conftest.py +0 -0
  260. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/sample_file.txt +0 -0
  261. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_deepcopy.py +0 -0
  262. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_extract_files.py +0 -0
  263. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_files.py +0 -0
  264. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_models.py +0 -0
  265. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_qs.py +0 -0
  266. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_required_args.py +0 -0
  267. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_response.py +0 -0
  268. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_streaming.py +0 -0
  269. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_transform.py +0 -0
  270. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_utils/test_proxy.py +0 -0
  271. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/test_utils/test_typing.py +0 -0
  272. {runloop_api_client-0.23.0 → runloop_api_client-0.25.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.25.0"
3
+ }
@@ -1,5 +1,47 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.25.0 (2025-02-26)
4
+
5
+ Full Changelog: [v0.24.0...v0.25.0](https://github.com/runloopai/api-client-python/compare/v0.24.0...v0.25.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([#555](https://github.com/runloopai/api-client-python/issues/555)) ([7c1d55d](https://github.com/runloopai/api-client-python/commit/7c1d55de7fe3f157a30080ddc7e7f0ea5053304a))
10
+ * **client:** allow passing `NotGiven` for body ([#553](https://github.com/runloopai/api-client-python/issues/553)) ([dc21cae](https://github.com/runloopai/api-client-python/commit/dc21caec97e15ccde2c396c6a2f0fce0f2bad313))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **client:** mark some request bodies as optional ([dc21cae](https://github.com/runloopai/api-client-python/commit/dc21caec97e15ccde2c396c6a2f0fce0f2bad313))
16
+
17
+
18
+ ### Chores
19
+
20
+ * **internal:** codegen related update ([#551](https://github.com/runloopai/api-client-python/issues/551)) ([8dd01a1](https://github.com/runloopai/api-client-python/commit/8dd01a1e69d82ccbc4f05b72bd980d16cb93e5e5))
21
+ * **internal:** fix devcontainers setup ([#554](https://github.com/runloopai/api-client-python/issues/554)) ([9260eb4](https://github.com/runloopai/api-client-python/commit/9260eb4443fc50ecb07e99af2307896e32027158))
22
+ * **internal:** properly set __pydantic_private__ ([#556](https://github.com/runloopai/api-client-python/issues/556)) ([4496830](https://github.com/runloopai/api-client-python/commit/449683002d1fb31b01c4d167973058684b7ee654))
23
+
24
+ ## 0.24.0 (2025-02-19)
25
+
26
+ Full Changelog: [v0.23.0...v0.24.0](https://github.com/runloopai/api-client-python/compare/v0.23.0...v0.24.0)
27
+
28
+ ### Features
29
+
30
+ * **api:** api update ([#549](https://github.com/runloopai/api-client-python/issues/549)) ([3e19f41](https://github.com/runloopai/api-client-python/commit/3e19f41cf8e2b9cd225439d9df90f80b34d89660))
31
+
32
+
33
+ ### Bug Fixes
34
+
35
+ * asyncify on non-asyncio runtimes ([#547](https://github.com/runloopai/api-client-python/issues/547)) ([8ce7003](https://github.com/runloopai/api-client-python/commit/8ce700397fc5d6755f0a95b637efad74d6dc3fe4))
36
+
37
+
38
+ ### Chores
39
+
40
+ * **internal:** codegen related update ([#543](https://github.com/runloopai/api-client-python/issues/543)) ([5c44e84](https://github.com/runloopai/api-client-python/commit/5c44e84a8a029b22461df339c280885dc972fa96))
41
+ * **internal:** codegen related update ([#546](https://github.com/runloopai/api-client-python/issues/546)) ([d8b620d](https://github.com/runloopai/api-client-python/commit/d8b620d93c687d37a843262d5ac60fd4a9b815e8))
42
+ * **internal:** update client tests ([#545](https://github.com/runloopai/api-client-python/issues/545)) ([30307f4](https://github.com/runloopai/api-client-python/commit/30307f4b78ba76240793b851dd735a0beb835b75))
43
+ * **internal:** update client tests ([#548](https://github.com/runloopai/api-client-python/issues/548)) ([4e782f1](https://github.com/runloopai/api-client-python/commit/4e782f19bfa7e08ae318eca6f00fb4d5ffe5c9af))
44
+
3
45
  ## 0.23.0 (2025-02-11)
4
46
 
5
47
  Full Changelog: [v0.22.0...v0.23.0](https://github.com/runloopai/api-client-python/compare/v0.22.0...v0.23.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: runloop_api_client
3
- Version: 0.23.0
3
+ Version: 0.25.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
@@ -168,6 +168,25 @@ for devbox in first_page.devboxes:
168
168
  # Remove `await` for non-async usage.
169
169
  ```
170
170
 
171
+ ## File uploads
172
+
173
+ 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)`.
174
+
175
+ ```python
176
+ from pathlib import Path
177
+ from runloop_api_client import Runloop
178
+
179
+ client = Runloop()
180
+
181
+ client.devboxes.upload_file(
182
+ id="id",
183
+ path="path",
184
+ file=Path("/path/to/file"),
185
+ )
186
+ ```
187
+
188
+ The async client uses the exact same interface. If you pass a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance, the file contents will be read asynchronously automatically.
189
+
171
190
  ## Handling errors
172
191
 
173
192
  When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `runloop_api_client.APIConnectionError` is raised.
@@ -136,6 +136,25 @@ for devbox in first_page.devboxes:
136
136
  # Remove `await` for non-async usage.
137
137
  ```
138
138
 
139
+ ## File uploads
140
+
141
+ 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)`.
142
+
143
+ ```python
144
+ from pathlib import Path
145
+ from runloop_api_client import Runloop
146
+
147
+ client = Runloop()
148
+
149
+ client.devboxes.upload_file(
150
+ id="id",
151
+ path="path",
152
+ file=Path("/path/to/file"),
153
+ )
154
+ ```
155
+
156
+ The async client uses the exact same interface. If you pass a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance, the file contents will be read asynchronously automatically.
157
+
139
158
  ## Handling errors
140
159
 
141
160
  When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `runloop_api_client.APIConnectionError` is raised.
@@ -278,6 +278,7 @@ Methods:
278
278
 
279
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
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>
281
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>
282
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>
283
284
  - <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>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.23.0"
3
+ version = "0.25.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -63,7 +63,7 @@ from ._types import (
63
63
  ModelBuilderProtocol,
64
64
  )
65
65
  from ._utils import is_dict, is_list, asyncify, is_given, lru_cache, is_mapping
66
- from ._compat import model_copy, model_dump
66
+ from ._compat import PYDANTIC_V2, model_copy, model_dump
67
67
  from ._models import GenericModel, FinalRequestOptions, validate_type, construct_type
68
68
  from ._response import (
69
69
  APIResponse,
@@ -207,6 +207,9 @@ class BaseSyncPage(BasePage[_T], Generic[_T]):
207
207
  model: Type[_T],
208
208
  options: FinalRequestOptions,
209
209
  ) -> None:
210
+ if PYDANTIC_V2 and getattr(self, "__pydantic_private__", None) is None:
211
+ self.__pydantic_private__ = {}
212
+
210
213
  self._model = model
211
214
  self._client = client
212
215
  self._options = options
@@ -292,6 +295,9 @@ class BaseAsyncPage(BasePage[_T], Generic[_T]):
292
295
  client: AsyncAPIClient,
293
296
  options: FinalRequestOptions,
294
297
  ) -> None:
298
+ if PYDANTIC_V2 and getattr(self, "__pydantic_private__", None) is None:
299
+ self.__pydantic_private__ = {}
300
+
295
301
  self._model = model
296
302
  self._client = client
297
303
  self._options = options
@@ -518,7 +524,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
518
524
  # so that passing a `TypedDict` doesn't cause an error.
519
525
  # https://github.com/microsoft/pyright/issues/3526#event-6715453066
520
526
  params=self.qs.stringify(cast(Mapping[str, Any], params)) if params else None,
521
- json=json_data,
527
+ json=json_data if is_given(json_data) else None,
522
528
  files=files,
523
529
  **kwargs,
524
530
  )
@@ -34,7 +34,7 @@ def assert_is_file_content(obj: object, *, key: str | None = None) -> None:
34
34
  if not is_file_content(obj):
35
35
  prefix = f"Expected entry at `{key}`" if key is not None else f"Expected file input `{obj!r}`"
36
36
  raise RuntimeError(
37
- f"{prefix} to be bytes, an io.IOBase instance, PathLike or a tuple but received {type(obj)} instead."
37
+ f"{prefix} to be bytes, an io.IOBase instance, PathLike or a tuple but received {type(obj)} instead. See https://github.com/runloopai/api-client-python/tree/main#file-uploads"
38
38
  ) from None
39
39
 
40
40
 
@@ -7,16 +7,20 @@ import contextvars
7
7
  from typing import Any, TypeVar, Callable, Awaitable
8
8
  from typing_extensions import ParamSpec
9
9
 
10
+ import anyio
11
+ import sniffio
12
+ import anyio.to_thread
13
+
10
14
  T_Retval = TypeVar("T_Retval")
11
15
  T_ParamSpec = ParamSpec("T_ParamSpec")
12
16
 
13
17
 
14
18
  if sys.version_info >= (3, 9):
15
- to_thread = asyncio.to_thread
19
+ _asyncio_to_thread = asyncio.to_thread
16
20
  else:
17
21
  # backport of https://docs.python.org/3/library/asyncio-task.html#asyncio.to_thread
18
22
  # for Python 3.8 support
19
- async def to_thread(
23
+ async def _asyncio_to_thread(
20
24
  func: Callable[T_ParamSpec, T_Retval], /, *args: T_ParamSpec.args, **kwargs: T_ParamSpec.kwargs
21
25
  ) -> Any:
22
26
  """Asynchronously run function *func* in a separate thread.
@@ -34,6 +38,17 @@ else:
34
38
  return await loop.run_in_executor(None, func_call)
35
39
 
36
40
 
41
+ async def to_thread(
42
+ func: Callable[T_ParamSpec, T_Retval], /, *args: T_ParamSpec.args, **kwargs: T_ParamSpec.kwargs
43
+ ) -> T_Retval:
44
+ if sniffio.current_async_library() == "asyncio":
45
+ return await _asyncio_to_thread(func, *args, **kwargs)
46
+
47
+ return await anyio.to_thread.run_sync(
48
+ functools.partial(func, *args, **kwargs),
49
+ )
50
+
51
+
37
52
  # inspired by `asyncer`, https://github.com/tiangolo/asyncer
38
53
  def asyncify(function: Callable[T_ParamSpec, T_Retval]) -> Callable[T_ParamSpec, Awaitable[T_Retval]]:
39
54
  """
@@ -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.23.0" # x-release-please-version
4
+ __version__ = "0.25.0" # x-release-please-version
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List, Optional
5
+ from typing import Dict, List, Optional
6
6
 
7
7
  import httpx
8
8
 
@@ -69,6 +69,7 @@ class BenchmarksResource(SyncAPIResource):
69
69
  self,
70
70
  *,
71
71
  name: str,
72
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
72
73
  scenario_ids: Optional[List[str]] | NotGiven = NOT_GIVEN,
73
74
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
74
75
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -84,6 +85,8 @@ class BenchmarksResource(SyncAPIResource):
84
85
  Args:
85
86
  name: The name of the Benchmark.
86
87
 
88
+ metadata: User defined metadata to attach to the benchmark for organization.
89
+
87
90
  scenario_ids: The Scenario IDs that make up the Benchmark.
88
91
 
89
92
  extra_headers: Send extra headers
@@ -101,6 +104,7 @@ class BenchmarksResource(SyncAPIResource):
101
104
  body=maybe_transform(
102
105
  {
103
106
  "name": name,
107
+ "metadata": metadata,
104
108
  "scenario_ids": scenario_ids,
105
109
  },
106
110
  benchmark_create_params.BenchmarkCreateParams,
@@ -246,6 +250,7 @@ class BenchmarksResource(SyncAPIResource):
246
250
  self,
247
251
  *,
248
252
  benchmark_id: str,
253
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
249
254
  run_name: Optional[str] | NotGiven = NOT_GIVEN,
250
255
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
251
256
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -261,6 +266,8 @@ class BenchmarksResource(SyncAPIResource):
261
266
  Args:
262
267
  benchmark_id: ID of the Benchmark to run.
263
268
 
269
+ metadata: User defined metadata to attach to the benchmark run for organization.
270
+
264
271
  run_name: Display name of the run.
265
272
 
266
273
  extra_headers: Send extra headers
@@ -278,6 +285,7 @@ class BenchmarksResource(SyncAPIResource):
278
285
  body=maybe_transform(
279
286
  {
280
287
  "benchmark_id": benchmark_id,
288
+ "metadata": metadata,
281
289
  "run_name": run_name,
282
290
  },
283
291
  benchmark_start_run_params.BenchmarkStartRunParams,
@@ -321,6 +329,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
321
329
  self,
322
330
  *,
323
331
  name: str,
332
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
324
333
  scenario_ids: Optional[List[str]] | NotGiven = NOT_GIVEN,
325
334
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
326
335
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -336,6 +345,8 @@ class AsyncBenchmarksResource(AsyncAPIResource):
336
345
  Args:
337
346
  name: The name of the Benchmark.
338
347
 
348
+ metadata: User defined metadata to attach to the benchmark for organization.
349
+
339
350
  scenario_ids: The Scenario IDs that make up the Benchmark.
340
351
 
341
352
  extra_headers: Send extra headers
@@ -353,6 +364,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
353
364
  body=await async_maybe_transform(
354
365
  {
355
366
  "name": name,
367
+ "metadata": metadata,
356
368
  "scenario_ids": scenario_ids,
357
369
  },
358
370
  benchmark_create_params.BenchmarkCreateParams,
@@ -498,6 +510,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
498
510
  self,
499
511
  *,
500
512
  benchmark_id: str,
513
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
501
514
  run_name: Optional[str] | NotGiven = NOT_GIVEN,
502
515
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
503
516
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -513,6 +526,8 @@ class AsyncBenchmarksResource(AsyncAPIResource):
513
526
  Args:
514
527
  benchmark_id: ID of the Benchmark to run.
515
528
 
529
+ metadata: User defined metadata to attach to the benchmark run for organization.
530
+
516
531
  run_name: Display name of the run.
517
532
 
518
533
  extra_headers: Send extra headers
@@ -530,6 +545,7 @@ class AsyncBenchmarksResource(AsyncAPIResource):
530
545
  body=await async_maybe_transform(
531
546
  {
532
547
  "benchmark_id": benchmark_id,
548
+ "metadata": metadata,
533
549
  "run_name": run_name,
534
550
  },
535
551
  benchmark_start_run_params.BenchmarkStartRunParams,
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Optional
5
+ from typing import Dict, Optional
6
6
 
7
7
  import httpx
8
8
 
@@ -17,6 +17,7 @@ from .runs import (
17
17
  from ...types import (
18
18
  scenario_list_params,
19
19
  scenario_create_params,
20
+ scenario_update_params,
20
21
  scenario_start_run_params,
21
22
  scenario_list_public_params,
22
23
  )
@@ -88,6 +89,8 @@ class ScenariosResource(SyncAPIResource):
88
89
  name: str,
89
90
  scoring_contract: ScoringContractParam,
90
91
  environment_parameters: Optional[ScenarioEnvironmentParam] | NotGiven = NOT_GIVEN,
92
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
93
+ reference_output: Optional[str] | NotGiven = NOT_GIVEN,
91
94
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
92
95
  # The extra values given here take precedence over values defined on the client or passed to this method.
93
96
  extra_headers: Headers | None = None,
@@ -109,6 +112,12 @@ class ScenariosResource(SyncAPIResource):
109
112
 
110
113
  environment_parameters: The Environment in which the Scenario will run.
111
114
 
115
+ metadata: User defined metadata to attach to the scenario for organization.
116
+
117
+ reference_output: A string representation of the reference output to solve the scenario. Commonly
118
+ can be the result of a git diff or a sequence of command actions to apply to the
119
+ environment.
120
+
112
121
  extra_headers: Send extra headers
113
122
 
114
123
  extra_query: Add additional query parameters to the request
@@ -127,6 +136,8 @@ class ScenariosResource(SyncAPIResource):
127
136
  "name": name,
128
137
  "scoring_contract": scoring_contract,
129
138
  "environment_parameters": environment_parameters,
139
+ "metadata": metadata,
140
+ "reference_output": reference_output,
130
141
  },
131
142
  scenario_create_params.ScenarioCreateParams,
132
143
  ),
@@ -173,6 +184,78 @@ class ScenariosResource(SyncAPIResource):
173
184
  cast_to=ScenarioView,
174
185
  )
175
186
 
187
+ def update(
188
+ self,
189
+ id: str,
190
+ *,
191
+ input_context: InputContextParam,
192
+ name: str,
193
+ scoring_contract: ScoringContractParam,
194
+ environment_parameters: Optional[ScenarioEnvironmentParam] | NotGiven = NOT_GIVEN,
195
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
196
+ reference_output: Optional[str] | NotGiven = NOT_GIVEN,
197
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
198
+ # The extra values given here take precedence over values defined on the client or passed to this method.
199
+ extra_headers: Headers | None = None,
200
+ extra_query: Query | None = None,
201
+ extra_body: Body | None = None,
202
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
203
+ idempotency_key: str | None = None,
204
+ ) -> ScenarioView:
205
+ """
206
+ Update a Scenario, a repeatable AI coding evaluation test that defines the
207
+ starting environment as well as evaluation success criteria.
208
+
209
+ Args:
210
+ input_context: The input context for the Scenario.
211
+
212
+ name: Name of the scenario.
213
+
214
+ scoring_contract: The scoring contract for the Scenario.
215
+
216
+ environment_parameters: The Environment in which the Scenario will run.
217
+
218
+ metadata: User defined metadata to attach to the scenario for organization.
219
+
220
+ reference_output: A string representation of the reference output to solve the scenario. Commonly
221
+ can be the result of a git diff or a sequence of command actions to apply to the
222
+ environment.
223
+
224
+ extra_headers: Send extra headers
225
+
226
+ extra_query: Add additional query parameters to the request
227
+
228
+ extra_body: Add additional JSON properties to the request
229
+
230
+ timeout: Override the client-level default timeout for this request, in seconds
231
+
232
+ idempotency_key: Specify a custom idempotency key for this request
233
+ """
234
+ if not id:
235
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
236
+ return self._post(
237
+ f"/v1/scenarios/{id}",
238
+ body=maybe_transform(
239
+ {
240
+ "input_context": input_context,
241
+ "name": name,
242
+ "scoring_contract": scoring_contract,
243
+ "environment_parameters": environment_parameters,
244
+ "metadata": metadata,
245
+ "reference_output": reference_output,
246
+ },
247
+ scenario_update_params.ScenarioUpdateParams,
248
+ ),
249
+ options=make_request_options(
250
+ extra_headers=extra_headers,
251
+ extra_query=extra_query,
252
+ extra_body=extra_body,
253
+ timeout=timeout,
254
+ idempotency_key=idempotency_key,
255
+ ),
256
+ cast_to=ScenarioView,
257
+ )
258
+
176
259
  def list(
177
260
  self,
178
261
  *,
@@ -281,6 +364,7 @@ class ScenariosResource(SyncAPIResource):
281
364
  *,
282
365
  scenario_id: str,
283
366
  benchmark_run_id: Optional[str] | NotGiven = NOT_GIVEN,
367
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
284
368
  run_name: Optional[str] | NotGiven = NOT_GIVEN,
285
369
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
286
370
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -298,6 +382,8 @@ class ScenariosResource(SyncAPIResource):
298
382
 
299
383
  benchmark_run_id: Benchmark to associate the run.
300
384
 
385
+ metadata: User defined metadata to attach to the run for organization.
386
+
301
387
  run_name: Display name of the run.
302
388
 
303
389
  extra_headers: Send extra headers
@@ -316,6 +402,7 @@ class ScenariosResource(SyncAPIResource):
316
402
  {
317
403
  "scenario_id": scenario_id,
318
404
  "benchmark_run_id": benchmark_run_id,
405
+ "metadata": metadata,
319
406
  "run_name": run_name,
320
407
  },
321
408
  scenario_start_run_params.ScenarioStartRunParams,
@@ -423,6 +510,8 @@ class AsyncScenariosResource(AsyncAPIResource):
423
510
  name: str,
424
511
  scoring_contract: ScoringContractParam,
425
512
  environment_parameters: Optional[ScenarioEnvironmentParam] | NotGiven = NOT_GIVEN,
513
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
514
+ reference_output: Optional[str] | NotGiven = NOT_GIVEN,
426
515
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
427
516
  # The extra values given here take precedence over values defined on the client or passed to this method.
428
517
  extra_headers: Headers | None = None,
@@ -444,6 +533,12 @@ class AsyncScenariosResource(AsyncAPIResource):
444
533
 
445
534
  environment_parameters: The Environment in which the Scenario will run.
446
535
 
536
+ metadata: User defined metadata to attach to the scenario for organization.
537
+
538
+ reference_output: A string representation of the reference output to solve the scenario. Commonly
539
+ can be the result of a git diff or a sequence of command actions to apply to the
540
+ environment.
541
+
447
542
  extra_headers: Send extra headers
448
543
 
449
544
  extra_query: Add additional query parameters to the request
@@ -462,6 +557,8 @@ class AsyncScenariosResource(AsyncAPIResource):
462
557
  "name": name,
463
558
  "scoring_contract": scoring_contract,
464
559
  "environment_parameters": environment_parameters,
560
+ "metadata": metadata,
561
+ "reference_output": reference_output,
465
562
  },
466
563
  scenario_create_params.ScenarioCreateParams,
467
564
  ),
@@ -508,6 +605,78 @@ class AsyncScenariosResource(AsyncAPIResource):
508
605
  cast_to=ScenarioView,
509
606
  )
510
607
 
608
+ async def update(
609
+ self,
610
+ id: str,
611
+ *,
612
+ input_context: InputContextParam,
613
+ name: str,
614
+ scoring_contract: ScoringContractParam,
615
+ environment_parameters: Optional[ScenarioEnvironmentParam] | NotGiven = NOT_GIVEN,
616
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
617
+ reference_output: Optional[str] | NotGiven = NOT_GIVEN,
618
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
619
+ # The extra values given here take precedence over values defined on the client or passed to this method.
620
+ extra_headers: Headers | None = None,
621
+ extra_query: Query | None = None,
622
+ extra_body: Body | None = None,
623
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
624
+ idempotency_key: str | None = None,
625
+ ) -> ScenarioView:
626
+ """
627
+ Update a Scenario, a repeatable AI coding evaluation test that defines the
628
+ starting environment as well as evaluation success criteria.
629
+
630
+ Args:
631
+ input_context: The input context for the Scenario.
632
+
633
+ name: Name of the scenario.
634
+
635
+ scoring_contract: The scoring contract for the Scenario.
636
+
637
+ environment_parameters: The Environment in which the Scenario will run.
638
+
639
+ metadata: User defined metadata to attach to the scenario for organization.
640
+
641
+ reference_output: A string representation of the reference output to solve the scenario. Commonly
642
+ can be the result of a git diff or a sequence of command actions to apply to the
643
+ environment.
644
+
645
+ extra_headers: Send extra headers
646
+
647
+ extra_query: Add additional query parameters to the request
648
+
649
+ extra_body: Add additional JSON properties to the request
650
+
651
+ timeout: Override the client-level default timeout for this request, in seconds
652
+
653
+ idempotency_key: Specify a custom idempotency key for this request
654
+ """
655
+ if not id:
656
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
657
+ return await self._post(
658
+ f"/v1/scenarios/{id}",
659
+ body=await async_maybe_transform(
660
+ {
661
+ "input_context": input_context,
662
+ "name": name,
663
+ "scoring_contract": scoring_contract,
664
+ "environment_parameters": environment_parameters,
665
+ "metadata": metadata,
666
+ "reference_output": reference_output,
667
+ },
668
+ scenario_update_params.ScenarioUpdateParams,
669
+ ),
670
+ options=make_request_options(
671
+ extra_headers=extra_headers,
672
+ extra_query=extra_query,
673
+ extra_body=extra_body,
674
+ timeout=timeout,
675
+ idempotency_key=idempotency_key,
676
+ ),
677
+ cast_to=ScenarioView,
678
+ )
679
+
511
680
  def list(
512
681
  self,
513
682
  *,
@@ -616,6 +785,7 @@ class AsyncScenariosResource(AsyncAPIResource):
616
785
  *,
617
786
  scenario_id: str,
618
787
  benchmark_run_id: Optional[str] | NotGiven = NOT_GIVEN,
788
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
619
789
  run_name: Optional[str] | NotGiven = NOT_GIVEN,
620
790
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
621
791
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -633,6 +803,8 @@ class AsyncScenariosResource(AsyncAPIResource):
633
803
 
634
804
  benchmark_run_id: Benchmark to associate the run.
635
805
 
806
+ metadata: User defined metadata to attach to the run for organization.
807
+
636
808
  run_name: Display name of the run.
637
809
 
638
810
  extra_headers: Send extra headers
@@ -651,6 +823,7 @@ class AsyncScenariosResource(AsyncAPIResource):
651
823
  {
652
824
  "scenario_id": scenario_id,
653
825
  "benchmark_run_id": benchmark_run_id,
826
+ "metadata": metadata,
654
827
  "run_name": run_name,
655
828
  },
656
829
  scenario_start_run_params.ScenarioStartRunParams,
@@ -710,6 +883,9 @@ class ScenariosResourceWithRawResponse:
710
883
  self.retrieve = to_raw_response_wrapper(
711
884
  scenarios.retrieve,
712
885
  )
886
+ self.update = to_raw_response_wrapper(
887
+ scenarios.update,
888
+ )
713
889
  self.list = to_raw_response_wrapper(
714
890
  scenarios.list,
715
891
  )
@@ -739,6 +915,9 @@ class AsyncScenariosResourceWithRawResponse:
739
915
  self.retrieve = async_to_raw_response_wrapper(
740
916
  scenarios.retrieve,
741
917
  )
918
+ self.update = async_to_raw_response_wrapper(
919
+ scenarios.update,
920
+ )
742
921
  self.list = async_to_raw_response_wrapper(
743
922
  scenarios.list,
744
923
  )
@@ -768,6 +947,9 @@ class ScenariosResourceWithStreamingResponse:
768
947
  self.retrieve = to_streamed_response_wrapper(
769
948
  scenarios.retrieve,
770
949
  )
950
+ self.update = to_streamed_response_wrapper(
951
+ scenarios.update,
952
+ )
771
953
  self.list = to_streamed_response_wrapper(
772
954
  scenarios.list,
773
955
  )
@@ -797,6 +979,9 @@ class AsyncScenariosResourceWithStreamingResponse:
797
979
  self.retrieve = async_to_streamed_response_wrapper(
798
980
  scenarios.retrieve,
799
981
  )
982
+ self.update = async_to_streamed_response_wrapper(
983
+ scenarios.update,
984
+ )
800
985
  self.list = async_to_streamed_response_wrapper(
801
986
  scenarios.list,
802
987
  )
@@ -35,6 +35,7 @@ from .blueprint_preview_view import BlueprintPreviewView as BlueprintPreviewView
35
35
  from .repository_list_params import RepositoryListParams as RepositoryListParams
36
36
  from .scenario_create_params import ScenarioCreateParams as ScenarioCreateParams
37
37
  from .scenario_run_list_view import ScenarioRunListView as ScenarioRunListView
38
+ from .scenario_update_params import ScenarioUpdateParams as ScenarioUpdateParams
38
39
  from .scoring_contract_param import ScoringContractParam as ScoringContractParam
39
40
  from .scoring_function_param import ScoringFunctionParam as ScoringFunctionParam
40
41
  from .benchmark_create_params import BenchmarkCreateParams as BenchmarkCreateParams