runloop-api-client 0.25.0__tar.gz → 0.27.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 (276) hide show
  1. runloop_api_client-0.27.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/CHANGELOG.md +47 -0
  3. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/PKG-INFO +31 -5
  4. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/README.md +28 -1
  5. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/SECURITY.md +2 -2
  6. runloop_api_client-0.27.0/bin/publish-pypi +6 -0
  7. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/pyproject.toml +2 -4
  8. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_base_client.py +1 -96
  9. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_client.py +2 -2
  10. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_models.py +5 -2
  11. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_version.py +1 -1
  12. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/scenarios/runs.py +8 -4
  13. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/scenarios/scenarios.py +5 -1
  14. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/benchmark_list_view.py +2 -0
  15. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/benchmark_run_list_view.py +2 -0
  16. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/blueprint_list_view.py +2 -0
  17. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_list_view.py +2 -0
  18. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +2 -0
  19. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/repository_connection_list_view.py +2 -0
  20. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenario_list_view.py +2 -0
  21. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenario_run_list_view.py +2 -0
  22. runloop_api_client-0.27.0/src/runloop_api_client/types/scoring_function.py +23 -0
  23. runloop_api_client-0.27.0/src/runloop_api_client/types/scoring_function_param.py +121 -0
  24. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/shared/launch_parameters.py +6 -0
  25. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +6 -0
  26. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/scenarios/test_scorers.py +4 -0
  27. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/test_blueprints.py +8 -0
  28. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/test_devboxes.py +4 -0
  29. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/test_scenarios.py +102 -26
  30. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_models.py +32 -0
  31. runloop_api_client-0.27.0/uv.lock +295 -0
  32. runloop_api_client-0.25.0/.release-please-manifest.json +0 -3
  33. runloop_api_client-0.25.0/bin/publish-pypi +0 -9
  34. runloop_api_client-0.25.0/src/runloop_api_client/types/scoring_function.py +0 -39
  35. runloop_api_client-0.25.0/src/runloop_api_client/types/scoring_function_param.py +0 -40
  36. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/.gitignore +0 -0
  37. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/CONTRIBUTING.md +0 -0
  38. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/LICENSE +0 -0
  39. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/api.md +0 -0
  40. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/bin/check-release-environment +0 -0
  41. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/examples/.keep +0 -0
  42. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/mypy.ini +0 -0
  43. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/noxfile.py +0 -0
  44. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/release-please-config.json +0 -0
  45. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/requirements-dev.lock +0 -0
  46. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/requirements.lock +0 -0
  47. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop/lib/.keep +0 -0
  48. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/__init__.py +0 -0
  49. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_compat.py +0 -0
  50. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_constants.py +0 -0
  51. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_exceptions.py +0 -0
  52. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_files.py +0 -0
  53. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_qs.py +0 -0
  54. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_resource.py +0 -0
  55. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_response.py +0 -0
  56. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_streaming.py +0 -0
  57. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_types.py +0 -0
  58. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  59. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  60. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  61. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  62. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  63. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  64. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  65. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  66. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  67. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/lib/.keep +0 -0
  68. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/lib/polling.py +0 -0
  69. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  70. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/pagination.py +0 -0
  71. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/py.typed +0 -0
  72. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/__init__.py +0 -0
  73. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
  74. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +0 -0
  75. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
  76. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/blueprints.py +2 -2
  77. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  78. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  79. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  80. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/devboxes/devboxes.py +1 -1
  81. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  82. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  83. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  84. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/devboxes/lsp.py +0 -0
  85. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/repositories.py +0 -0
  86. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  87. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
  88. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/__init__.py +0 -0
  89. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
  90. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  91. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  92. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
  93. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  94. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
  95. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
  96. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
  97. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  98. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  99. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  100. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  101. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  102. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  103. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  104. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  105. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  106. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  107. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  108. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  109. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  110. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  111. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  112. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  113. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  114. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  115. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  116. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  117. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  118. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  119. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  120. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  121. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  122. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  123. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  124. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  125. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  126. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_code_action.py +0 -0
  127. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_command.py +0 -0
  128. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_command_param.py +0 -0
  129. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_diagnostic.py +0 -0
  130. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_diagnostic_param.py +0 -0
  131. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_location.py +0 -0
  132. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_markup_content.py +0 -0
  133. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_parameter_information.py +0 -0
  134. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_range.py +0 -0
  135. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_range_param.py +0 -0
  136. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_signature.py +0 -0
  137. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_workspace_edit.py +0 -0
  138. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/base_workspace_edit_param.py +0 -0
  139. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  140. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  141. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/code_action_application_result.py +0 -0
  142. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/code_action_context_param.py +0 -0
  143. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/code_action_kind.py +0 -0
  144. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/code_action_trigger_kind.py +0 -0
  145. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/code_actions_response.py +0 -0
  146. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/code_description_param.py +0 -0
  147. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/code_segment_info_response.py +0 -0
  148. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  149. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  150. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  151. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  152. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  153. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  154. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  155. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  156. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  157. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/diagnostic_param.py +0 -0
  158. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/diagnostic_related_information_param.py +0 -0
  159. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/diagnostic_severity.py +0 -0
  160. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/diagnostic_tag.py +0 -0
  161. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/diagnostics_response.py +0 -0
  162. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  163. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  164. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/document_symbol.py +0 -0
  165. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/document_symbol_response.py +0 -0
  166. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/document_uri.py +0 -0
  167. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  168. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  169. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  170. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/file_contents_response.py +0 -0
  171. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/file_definition_response.py +0 -0
  172. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/file_path.py +0 -0
  173. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/file_uri.py +0 -0
  174. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/formatting_response.py +0 -0
  175. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/health_status_response.py +0 -0
  176. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/integer.py +0 -0
  177. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/l_sp_any_param.py +0 -0
  178. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/location_param.py +0 -0
  179. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  180. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_apply_code_action_params.py +0 -0
  181. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_code_actions_params.py +0 -0
  182. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_diagnostics_params.py +0 -0
  183. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_document_symbols_params.py +0 -0
  184. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_file_definition_params.py +0 -0
  185. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_file_params.py +0 -0
  186. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_files_response.py +0 -0
  187. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_formatting_params.py +0 -0
  188. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_params.py +0 -0
  189. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_response.py +0 -0
  190. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_get_code_segment_info_params.py +0 -0
  191. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_get_signature_help_params.py +0 -0
  192. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_references_params.py +0 -0
  193. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_params.py +0 -0
  194. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_response.py +0 -0
  195. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/position.py +0 -0
  196. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/position_param.py +0 -0
  197. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/range.py +0 -0
  198. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/range_param.py +0 -0
  199. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array.py +0 -0
  200. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array_param.py +0 -0
  201. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/references_response.py +0 -0
  202. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/signature_help_response.py +0 -0
  203. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/symbol_kind.py +0 -0
  204. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/symbol_tag.py +0 -0
  205. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/symbol_type.py +0 -0
  206. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/text_edit.py +0 -0
  207. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/text_edit_param.py +0 -0
  208. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/u_ri.py +0 -0
  209. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/uinteger.py +0 -0
  210. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/devboxes/watched_file_response.py +0 -0
  211. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/input_context.py +0 -0
  212. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/input_context_param.py +0 -0
  213. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  214. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  215. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
  216. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/repository_version_details.py +0 -0
  217. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/repository_version_list_view.py +0 -0
  218. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  219. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
  220. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  221. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  222. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  223. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
  224. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  225. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenario_update_params.py +0 -0
  226. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenario_view.py +0 -0
  227. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  228. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  229. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  230. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
  231. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  232. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
  233. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
  234. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  235. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
  236. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
  237. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
  238. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  239. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  240. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  241. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  242. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  243. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  244. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  245. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  246. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  247. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  248. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/__init__.py +0 -0
  249. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/__init__.py +0 -0
  250. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/benchmarks/__init__.py +0 -0
  251. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/benchmarks/test_runs.py +0 -0
  252. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/devboxes/__init__.py +0 -0
  253. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
  254. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/devboxes/test_computers.py +0 -0
  255. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
  256. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  257. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  258. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/devboxes/test_lsp.py +0 -0
  259. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/scenarios/__init__.py +0 -0
  260. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/scenarios/test_runs.py +0 -0
  261. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/test_benchmarks.py +0 -0
  262. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/api_resources/test_repositories.py +0 -0
  263. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/conftest.py +0 -0
  264. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/sample_file.txt +0 -0
  265. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_client.py +0 -0
  266. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_deepcopy.py +0 -0
  267. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_extract_files.py +0 -0
  268. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_files.py +0 -0
  269. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_qs.py +0 -0
  270. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_required_args.py +0 -0
  271. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_response.py +0 -0
  272. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_streaming.py +0 -0
  273. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_transform.py +0 -0
  274. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_utils/test_proxy.py +0 -0
  275. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/test_utils/test_typing.py +0 -0
  276. {runloop_api_client-0.25.0 → runloop_api_client-0.27.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.27.0"
3
+ }
@@ -1,5 +1,52 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.27.0 (2025-03-21)
4
+
5
+ Full Changelog: [v0.26.0...v0.27.0](https://github.com/runloopai/api-client-python/compare/v0.26.0...v0.27.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([#573](https://github.com/runloopai/api-client-python/issues/573)) ([091f833](https://github.com/runloopai/api-client-python/commit/091f833d80096bb0470d505c0a0145648e52819b))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * **ci:** ensure pip is always available ([#571](https://github.com/runloopai/api-client-python/issues/571)) ([ddb9362](https://github.com/runloopai/api-client-python/commit/ddb93629704f116cafb2123dc8b302ddff883bb8))
15
+ * **ci:** remove publishing patch ([#572](https://github.com/runloopai/api-client-python/issues/572)) ([c71815a](https://github.com/runloopai/api-client-python/commit/c71815aaaf47e404e1bf3d44c6b26b5ed0b05054))
16
+ * **types:** handle more discriminated union shapes ([#570](https://github.com/runloopai/api-client-python/issues/570)) ([297cfbe](https://github.com/runloopai/api-client-python/commit/297cfbe93bfdcbbafd44a4501d5a81a7fb1651bd))
17
+
18
+
19
+ ### Chores
20
+
21
+ * **internal:** bump rye to 0.44.0 ([#569](https://github.com/runloopai/api-client-python/issues/569)) ([dd5b79a](https://github.com/runloopai/api-client-python/commit/dd5b79a221fff5b38fdbd655d78254fe7140fd73))
22
+ * **internal:** remove extra empty newlines ([#567](https://github.com/runloopai/api-client-python/issues/567)) ([49f34bd](https://github.com/runloopai/api-client-python/commit/49f34bd0b733f2a10592fff098d379501df3ac86))
23
+
24
+
25
+ ### Documentation
26
+
27
+ * revise readme docs about nested params ([#564](https://github.com/runloopai/api-client-python/issues/564)) ([a2df5d3](https://github.com/runloopai/api-client-python/commit/a2df5d3c9b32ab941ee83d3f5cac8b874b7bbe28))
28
+
29
+ ## 0.26.0 (2025-03-04)
30
+
31
+ Full Changelog: [v0.25.0...v0.26.0](https://github.com/runloopai/api-client-python/compare/v0.25.0...v0.26.0)
32
+
33
+ ### Features
34
+
35
+ * cp ([4675ff3](https://github.com/runloopai/api-client-python/commit/4675ff37c7bfbce34db1a2b1a2b95bfc90407c57))
36
+ * cp ([a0e7c26](https://github.com/runloopai/api-client-python/commit/a0e7c26d92b1f846e8e27ad80b4bcc3eec9a6b4c))
37
+ * cp ([2ed5f7a](https://github.com/runloopai/api-client-python/commit/2ed5f7a944582d29a5284ddc7ff455832dede033))
38
+
39
+
40
+ ### Chores
41
+
42
+ * **docs:** update client docstring ([#559](https://github.com/runloopai/api-client-python/issues/559)) ([aae64ef](https://github.com/runloopai/api-client-python/commit/aae64ef8fa7a03db23695b7dae48dba6d7b1d1e3))
43
+ * **internal:** remove unused http client options forwarding ([#561](https://github.com/runloopai/api-client-python/issues/561)) ([39fcd59](https://github.com/runloopai/api-client-python/commit/39fcd59664517ad7a088a087011cb38f1d9a58ae))
44
+
45
+
46
+ ### Documentation
47
+
48
+ * update URLs from stainlessapi.com to stainless.com ([#558](https://github.com/runloopai/api-client-python/issues/558)) ([cc0b37d](https://github.com/runloopai/api-client-python/commit/cc0b37d74d46c7796ae72a8d496ee733e50b70c0))
49
+
3
50
  ## 0.25.0 (2025-02-26)
4
51
 
5
52
  Full Changelog: [v0.24.0...v0.25.0](https://github.com/runloopai/api-client-python/compare/v0.24.0...v0.25.0)
@@ -1,12 +1,11 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.25.0
3
+ Version: 0.27.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
7
7
  Author-email: Runloop <support@runloop.ai>
8
- License-Expression: MIT
9
- License-File: LICENSE
8
+ License: MIT
10
9
  Classifier: Intended Audience :: Developers
11
10
  Classifier: License :: OSI Approved :: MIT License
12
11
  Classifier: Operating System :: MacOS
@@ -38,7 +37,7 @@ The Runloop Python library provides convenient access to the Runloop REST API fr
38
37
  application. The library includes type definitions for all request params and response fields,
39
38
  and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
40
39
 
41
- It is generated with [Stainless](https://www.stainlessapi.com/).
40
+ It is generated with [Stainless](https://www.stainless.com/).
42
41
 
43
42
  ## Documentation
44
43
 
@@ -168,6 +167,33 @@ for devbox in first_page.devboxes:
168
167
  # Remove `await` for non-async usage.
169
168
  ```
170
169
 
170
+ ## Nested params
171
+
172
+ Nested parameters are dictionaries, typed using `TypedDict`, for example:
173
+
174
+ ```python
175
+ from runloop_api_client import Runloop
176
+
177
+ client = Runloop()
178
+
179
+ blueprint_view = client.blueprints.create(
180
+ name="name",
181
+ launch_parameters={
182
+ "after_idle": {
183
+ "idle_time_seconds": 0,
184
+ "on_idle": "shutdown",
185
+ },
186
+ "available_ports": [0],
187
+ "custom_cpu_cores": 0,
188
+ "custom_gb_memory": 0,
189
+ "keep_alive_time_seconds": 0,
190
+ "launch_commands": ["string"],
191
+ "resource_size_request": "SMALL",
192
+ },
193
+ )
194
+ print(blueprint_view.launch_parameters)
195
+ ```
196
+
171
197
  ## File uploads
172
198
 
173
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)`.
@@ -6,7 +6,7 @@ The Runloop Python library provides convenient access to the Runloop REST API fr
6
6
  application. The library includes type definitions for all request params and response fields,
7
7
  and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
8
8
 
9
- It is generated with [Stainless](https://www.stainlessapi.com/).
9
+ It is generated with [Stainless](https://www.stainless.com/).
10
10
 
11
11
  ## Documentation
12
12
 
@@ -136,6 +136,33 @@ for devbox in first_page.devboxes:
136
136
  # Remove `await` for non-async usage.
137
137
  ```
138
138
 
139
+ ## Nested params
140
+
141
+ Nested parameters are dictionaries, typed using `TypedDict`, for example:
142
+
143
+ ```python
144
+ from runloop_api_client import Runloop
145
+
146
+ client = Runloop()
147
+
148
+ blueprint_view = client.blueprints.create(
149
+ name="name",
150
+ launch_parameters={
151
+ "after_idle": {
152
+ "idle_time_seconds": 0,
153
+ "on_idle": "shutdown",
154
+ },
155
+ "available_ports": [0],
156
+ "custom_cpu_cores": 0,
157
+ "custom_gb_memory": 0,
158
+ "keep_alive_time_seconds": 0,
159
+ "launch_commands": ["string"],
160
+ "resource_size_request": "SMALL",
161
+ },
162
+ )
163
+ print(blueprint_view.launch_parameters)
164
+ ```
165
+
139
166
  ## File uploads
140
167
 
141
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)`.
@@ -2,9 +2,9 @@
2
2
 
3
3
  ## Reporting Security Issues
4
4
 
5
- This SDK is generated by [Stainless Software Inc](http://stainlessapi.com). Stainless takes security seriously, and encourages you to report any security vulnerability promptly so that appropriate action can be taken.
5
+ This SDK is generated by [Stainless Software Inc](http://stainless.com). Stainless takes security seriously, and encourages you to report any security vulnerability promptly so that appropriate action can be taken.
6
6
 
7
- To report a security issue, please contact the Stainless team at security@stainlessapi.com.
7
+ To report a security issue, please contact the Stainless team at security@stainless.com.
8
8
 
9
9
  ## Responsible Disclosure
10
10
 
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -eux
4
+ mkdir -p dist
5
+ rye build --clean
6
+ rye publish --yes --token=$PYPI_TOKEN
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.25.0"
3
+ version = "0.27.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -38,7 +38,6 @@ Homepage = "https://github.com/runloopai/api-client-python"
38
38
  Repository = "https://github.com/runloopai/api-client-python"
39
39
 
40
40
 
41
-
42
41
  [tool.rye]
43
42
  managed = true
44
43
  # version pins are in requirements-dev.lock
@@ -87,7 +86,7 @@ typecheck = { chain = [
87
86
  "typecheck:mypy" = "mypy ."
88
87
 
89
88
  [build-system]
90
- requires = ["hatchling", "hatch-fancy-pypi-readme"]
89
+ requires = ["hatchling==1.26.3", "hatch-fancy-pypi-readme"]
91
90
  build-backend = "hatchling.build"
92
91
 
93
92
  [tool.hatch.build]
@@ -152,7 +151,6 @@ reportImplicitOverride = true
152
151
  reportImportCycles = false
153
152
  reportPrivateUsage = false
154
153
 
155
-
156
154
  [tool.ruff]
157
155
  line-length = 120
158
156
  output-format = "grouped"
@@ -9,7 +9,6 @@ import asyncio
9
9
  import inspect
10
10
  import logging
11
11
  import platform
12
- import warnings
13
12
  import email.utils
14
13
  from types import TracebackType
15
14
  from random import random
@@ -36,7 +35,7 @@ import anyio
36
35
  import httpx
37
36
  import distro
38
37
  import pydantic
39
- from httpx import URL, Limits
38
+ from httpx import URL
40
39
  from pydantic import PrivateAttr
41
40
 
42
41
  from . import _exceptions
@@ -51,13 +50,10 @@ from ._types import (
51
50
  Timeout,
52
51
  NotGiven,
53
52
  ResponseT,
54
- Transport,
55
53
  AnyMapping,
56
54
  PostParser,
57
- ProxiesTypes,
58
55
  RequestFiles,
59
56
  HttpxSendArgs,
60
- AsyncTransport,
61
57
  RequestOptions,
62
58
  HttpxRequestFiles,
63
59
  ModelBuilderProtocol,
@@ -337,9 +333,6 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
337
333
  _base_url: URL
338
334
  max_retries: int
339
335
  timeout: Union[float, Timeout, None]
340
- _limits: httpx.Limits
341
- _proxies: ProxiesTypes | None
342
- _transport: Transport | AsyncTransport | None
343
336
  _strict_response_validation: bool
344
337
  _idempotency_header: str | None
345
338
  _default_stream_cls: type[_DefaultStreamT] | None = None
@@ -352,9 +345,6 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
352
345
  _strict_response_validation: bool,
353
346
  max_retries: int = DEFAULT_MAX_RETRIES,
354
347
  timeout: float | Timeout | None = DEFAULT_TIMEOUT,
355
- limits: httpx.Limits,
356
- transport: Transport | AsyncTransport | None,
357
- proxies: ProxiesTypes | None,
358
348
  custom_headers: Mapping[str, str] | None = None,
359
349
  custom_query: Mapping[str, object] | None = None,
360
350
  ) -> None:
@@ -362,9 +352,6 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
362
352
  self._base_url = self._enforce_trailing_slash(URL(base_url))
363
353
  self.max_retries = max_retries
364
354
  self.timeout = timeout
365
- self._limits = limits
366
- self._proxies = proxies
367
- self._transport = transport
368
355
  self._custom_headers = custom_headers or {}
369
356
  self._custom_query = custom_query or {}
370
357
  self._strict_response_validation = _strict_response_validation
@@ -800,46 +787,11 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
800
787
  base_url: str | URL,
801
788
  max_retries: int = DEFAULT_MAX_RETRIES,
802
789
  timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
803
- transport: Transport | None = None,
804
- proxies: ProxiesTypes | None = None,
805
- limits: Limits | None = None,
806
790
  http_client: httpx.Client | None = None,
807
791
  custom_headers: Mapping[str, str] | None = None,
808
792
  custom_query: Mapping[str, object] | None = None,
809
793
  _strict_response_validation: bool,
810
794
  ) -> None:
811
- kwargs: dict[str, Any] = {}
812
- if limits is not None:
813
- warnings.warn(
814
- "The `connection_pool_limits` argument is deprecated. The `http_client` argument should be passed instead",
815
- category=DeprecationWarning,
816
- stacklevel=3,
817
- )
818
- if http_client is not None:
819
- raise ValueError("The `http_client` argument is mutually exclusive with `connection_pool_limits`")
820
- else:
821
- limits = DEFAULT_CONNECTION_LIMITS
822
-
823
- if transport is not None:
824
- kwargs["transport"] = transport
825
- warnings.warn(
826
- "The `transport` argument is deprecated. The `http_client` argument should be passed instead",
827
- category=DeprecationWarning,
828
- stacklevel=3,
829
- )
830
- if http_client is not None:
831
- raise ValueError("The `http_client` argument is mutually exclusive with `transport`")
832
-
833
- if proxies is not None:
834
- kwargs["proxies"] = proxies
835
- warnings.warn(
836
- "The `proxies` argument is deprecated. The `http_client` argument should be passed instead",
837
- category=DeprecationWarning,
838
- stacklevel=3,
839
- )
840
- if http_client is not None:
841
- raise ValueError("The `http_client` argument is mutually exclusive with `proxies`")
842
-
843
795
  if not is_given(timeout):
844
796
  # if the user passed in a custom http client with a non-default
845
797
  # timeout set then we use that timeout.
@@ -860,12 +812,9 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
860
812
 
861
813
  super().__init__(
862
814
  version=version,
863
- limits=limits,
864
815
  # cast to a valid type because mypy doesn't understand our type narrowing
865
816
  timeout=cast(Timeout, timeout),
866
- proxies=proxies,
867
817
  base_url=base_url,
868
- transport=transport,
869
818
  max_retries=max_retries,
870
819
  custom_query=custom_query,
871
820
  custom_headers=custom_headers,
@@ -875,9 +824,6 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
875
824
  base_url=base_url,
876
825
  # cast to a valid type because mypy doesn't understand our type narrowing
877
826
  timeout=cast(Timeout, timeout),
878
- limits=limits,
879
- follow_redirects=True,
880
- **kwargs, # type: ignore
881
827
  )
882
828
 
883
829
  def is_closed(self) -> bool:
@@ -1372,45 +1318,10 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1372
1318
  _strict_response_validation: bool,
1373
1319
  max_retries: int = DEFAULT_MAX_RETRIES,
1374
1320
  timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
1375
- transport: AsyncTransport | None = None,
1376
- proxies: ProxiesTypes | None = None,
1377
- limits: Limits | None = None,
1378
1321
  http_client: httpx.AsyncClient | None = None,
1379
1322
  custom_headers: Mapping[str, str] | None = None,
1380
1323
  custom_query: Mapping[str, object] | None = None,
1381
1324
  ) -> None:
1382
- kwargs: dict[str, Any] = {}
1383
- if limits is not None:
1384
- warnings.warn(
1385
- "The `connection_pool_limits` argument is deprecated. The `http_client` argument should be passed instead",
1386
- category=DeprecationWarning,
1387
- stacklevel=3,
1388
- )
1389
- if http_client is not None:
1390
- raise ValueError("The `http_client` argument is mutually exclusive with `connection_pool_limits`")
1391
- else:
1392
- limits = DEFAULT_CONNECTION_LIMITS
1393
-
1394
- if transport is not None:
1395
- kwargs["transport"] = transport
1396
- warnings.warn(
1397
- "The `transport` argument is deprecated. The `http_client` argument should be passed instead",
1398
- category=DeprecationWarning,
1399
- stacklevel=3,
1400
- )
1401
- if http_client is not None:
1402
- raise ValueError("The `http_client` argument is mutually exclusive with `transport`")
1403
-
1404
- if proxies is not None:
1405
- kwargs["proxies"] = proxies
1406
- warnings.warn(
1407
- "The `proxies` argument is deprecated. The `http_client` argument should be passed instead",
1408
- category=DeprecationWarning,
1409
- stacklevel=3,
1410
- )
1411
- if http_client is not None:
1412
- raise ValueError("The `http_client` argument is mutually exclusive with `proxies`")
1413
-
1414
1325
  if not is_given(timeout):
1415
1326
  # if the user passed in a custom http client with a non-default
1416
1327
  # timeout set then we use that timeout.
@@ -1432,11 +1343,8 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1432
1343
  super().__init__(
1433
1344
  version=version,
1434
1345
  base_url=base_url,
1435
- limits=limits,
1436
1346
  # cast to a valid type because mypy doesn't understand our type narrowing
1437
1347
  timeout=cast(Timeout, timeout),
1438
- proxies=proxies,
1439
- transport=transport,
1440
1348
  max_retries=max_retries,
1441
1349
  custom_query=custom_query,
1442
1350
  custom_headers=custom_headers,
@@ -1446,9 +1354,6 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1446
1354
  base_url=base_url,
1447
1355
  # cast to a valid type because mypy doesn't understand our type narrowing
1448
1356
  timeout=cast(Timeout, timeout),
1449
- limits=limits,
1450
- follow_redirects=True,
1451
- **kwargs, # type: ignore
1452
1357
  )
1453
1358
 
1454
1359
  def is_closed(self) -> bool:
@@ -74,7 +74,7 @@ class Runloop(SyncAPIClient):
74
74
  # part of our public interface in the future.
75
75
  _strict_response_validation: bool = False,
76
76
  ) -> None:
77
- """Construct a new synchronous runloop client instance.
77
+ """Construct a new synchronous Runloop client instance.
78
78
 
79
79
  This automatically infers the `bearer_token` argument from the `RUNLOOP_API_KEY` environment variable if it is not provided.
80
80
  """
@@ -252,7 +252,7 @@ class AsyncRunloop(AsyncAPIClient):
252
252
  # part of our public interface in the future.
253
253
  _strict_response_validation: bool = False,
254
254
  ) -> None:
255
- """Construct a new async runloop client instance.
255
+ """Construct a new async AsyncRunloop client instance.
256
256
 
257
257
  This automatically infers the `bearer_token` argument from the `RUNLOOP_API_KEY` environment variable if it is not provided.
258
258
  """
@@ -65,7 +65,7 @@ from ._compat import (
65
65
  from ._constants import RAW_RESPONSE_HEADER
66
66
 
67
67
  if TYPE_CHECKING:
68
- from pydantic_core.core_schema import ModelField, LiteralSchema, ModelFieldsSchema
68
+ from pydantic_core.core_schema import ModelField, ModelSchema, LiteralSchema, ModelFieldsSchema
69
69
 
70
70
  __all__ = ["BaseModel", "GenericModel"]
71
71
 
@@ -646,15 +646,18 @@ def _build_discriminated_union_meta(*, union: type, meta_annotations: tuple[Any,
646
646
 
647
647
  def _extract_field_schema_pv2(model: type[BaseModel], field_name: str) -> ModelField | None:
648
648
  schema = model.__pydantic_core_schema__
649
+ if schema["type"] == "definitions":
650
+ schema = schema["schema"]
651
+
649
652
  if schema["type"] != "model":
650
653
  return None
651
654
 
655
+ schema = cast("ModelSchema", schema)
652
656
  fields_schema = schema["schema"]
653
657
  if fields_schema["type"] != "model-fields":
654
658
  return None
655
659
 
656
660
  fields_schema = cast("ModelFieldsSchema", fields_schema)
657
-
658
661
  field = fields_schema["fields"].get(field_name)
659
662
  if not field:
660
663
  return None
@@ -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.25.0" # x-release-please-version
4
+ __version__ = "0.27.0" # x-release-please-version
@@ -141,8 +141,10 @@ class RunsResource(SyncAPIResource):
141
141
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
142
142
  idempotency_key: str | None = None,
143
143
  ) -> ScenarioRunView:
144
- """
145
- Complete a currently running ScenarioRun.
144
+ """Complete a currently running ScenarioRun.
145
+
146
+ Calling complete will shutdown
147
+ underlying Devbox resource.
146
148
 
147
149
  Args:
148
150
  extra_headers: Send extra headers
@@ -467,8 +469,10 @@ class AsyncRunsResource(AsyncAPIResource):
467
469
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
468
470
  idempotency_key: str | None = None,
469
471
  ) -> ScenarioRunView:
470
- """
471
- Complete a currently running ScenarioRun.
472
+ """Complete a currently running ScenarioRun.
473
+
474
+ Calling complete will shutdown
475
+ underlying Devbox resource.
472
476
 
473
477
  Args:
474
478
  extra_headers: Send extra headers
@@ -34,7 +34,6 @@ from ..._utils import (
34
34
  maybe_transform,
35
35
  async_maybe_transform,
36
36
  )
37
- from ...lib.polling import PollingConfig
38
37
  from ..._compat import cached_property
39
38
  from ..._resource import SyncAPIResource, AsyncAPIResource
40
39
  from ..._response import (
@@ -44,6 +43,7 @@ from ..._response import (
44
43
  async_to_streamed_response_wrapper,
45
44
  )
46
45
  from ...pagination import SyncScenariosCursorIDPage, AsyncScenariosCursorIDPage
46
+ from ...lib.polling import PollingConfig
47
47
  from ..._base_client import AsyncPaginator, make_request_options
48
48
  from ...types.scenario_view import ScenarioView
49
49
  from ...types.scenario_run_view import ScenarioRunView
@@ -422,6 +422,7 @@ class ScenariosResource(SyncAPIResource):
422
422
  *,
423
423
  scenario_id: str,
424
424
  benchmark_run_id: Optional[str] | NotGiven = NOT_GIVEN,
425
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
425
426
  run_name: Optional[str] | NotGiven = NOT_GIVEN,
426
427
  polling_config: PollingConfig | None = None,
427
428
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -455,6 +456,7 @@ class ScenariosResource(SyncAPIResource):
455
456
  run = self.start_run(
456
457
  scenario_id=scenario_id,
457
458
  benchmark_run_id=benchmark_run_id,
459
+ metadata=metadata,
458
460
  run_name=run_name,
459
461
  extra_headers=extra_headers,
460
462
  extra_query=extra_query,
@@ -842,6 +844,7 @@ class AsyncScenariosResource(AsyncAPIResource):
842
844
  self,
843
845
  scenario_id: str,
844
846
  benchmark_run_id: Optional[str] | NotGiven = NOT_GIVEN,
847
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
845
848
  run_name: Optional[str] | NotGiven = NOT_GIVEN,
846
849
  polling_config: PollingConfig | None = None,
847
850
  ) -> ScenarioRunView:
@@ -863,6 +866,7 @@ class AsyncScenariosResource(AsyncAPIResource):
863
866
  run = await self.start_run(
864
867
  scenario_id=scenario_id,
865
868
  benchmark_run_id=benchmark_run_id,
869
+ metadata=metadata,
866
870
  run_name=run_name,
867
871
  )
868
872
 
@@ -14,4 +14,6 @@ class BenchmarkListView(BaseModel):
14
14
 
15
15
  has_more: bool
16
16
 
17
+ remaining_count: int
18
+
17
19
  total_count: int
@@ -11,6 +11,8 @@ __all__ = ["BenchmarkRunListView"]
11
11
  class BenchmarkRunListView(BaseModel):
12
12
  has_more: bool
13
13
 
14
+ remaining_count: int
15
+
14
16
  runs: List[BenchmarkRunView]
15
17
  """List of BenchmarkRuns matching filter."""
16
18
 
@@ -14,4 +14,6 @@ class BlueprintListView(BaseModel):
14
14
 
15
15
  has_more: bool
16
16
 
17
+ remaining_count: int
18
+
17
19
  total_count: int
@@ -14,4 +14,6 @@ class DevboxListView(BaseModel):
14
14
 
15
15
  has_more: bool
16
16
 
17
+ remaining_count: int
18
+
17
19
  total_count: int
@@ -11,6 +11,8 @@ __all__ = ["DevboxSnapshotListView"]
11
11
  class DevboxSnapshotListView(BaseModel):
12
12
  has_more: bool
13
13
 
14
+ remaining_count: int
15
+
14
16
  snapshots: List[DevboxSnapshotView]
15
17
  """List of snapshots matching filter."""
16
18
 
@@ -11,6 +11,8 @@ __all__ = ["RepositoryConnectionListView"]
11
11
  class RepositoryConnectionListView(BaseModel):
12
12
  has_more: bool
13
13
 
14
+ remaining_count: int
15
+
14
16
  repositories: List[RepositoryConnectionView]
15
17
  """List of repositories matching filter."""
16
18
 
@@ -11,6 +11,8 @@ __all__ = ["ScenarioListView"]
11
11
  class ScenarioListView(BaseModel):
12
12
  has_more: bool
13
13
 
14
+ remaining_count: int
15
+
14
16
  scenarios: List[ScenarioView]
15
17
  """List of Scenarios matching filter."""
16
18
 
@@ -11,6 +11,8 @@ __all__ = ["ScenarioRunListView"]
11
11
  class ScenarioRunListView(BaseModel):
12
12
  has_more: bool
13
13
 
14
+ remaining_count: int
15
+
14
16
  runs: List[ScenarioRunView]
15
17
  """List of ScenarioRuns matching filter."""
16
18
 
@@ -0,0 +1,23 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+
4
+ from .._models import BaseModel
5
+
6
+ __all__ = ["ScoringFunction"]
7
+
8
+
9
+ class ScoringFunction(BaseModel):
10
+ name: str
11
+ """Name of scoring function. Names must only contain [a-zA-Z0-9_-]."""
12
+
13
+ scoring_function: ScoringFunction
14
+ """The scoring function to use for evaluating this scenario.
15
+
16
+ The type field determines which built-in function to use.
17
+ """
18
+
19
+ weight: float
20
+ """Weight to apply to scoring function score.
21
+
22
+ Weights of all scoring functions should sum to 1.0.
23
+ """