runloop-api-client 0.43.0__tar.gz → 0.45.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. runloop_api_client-0.45.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/CHANGELOG.md +43 -0
  3. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/PKG-INFO +38 -3
  4. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/README.md +34 -2
  5. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/api.md +4 -0
  6. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/pyproject.toml +3 -1
  7. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/requirements-dev.lock +27 -0
  8. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/requirements.lock +27 -0
  9. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/__init__.py +2 -1
  10. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_base_client.py +22 -0
  11. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_version.py +1 -1
  12. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/scenarios/runs.py +108 -0
  13. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/scenarios/scenarios.py +30 -26
  14. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/__init__.py +2 -0
  15. runloop_api_client-0.45.0/src/runloop_api_client/types/input_context_update_param.py +16 -0
  16. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_update_params.py +12 -12
  17. runloop_api_client-0.45.0/src/runloop_api_client/types/scoring_contract_update_param.py +15 -0
  18. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/benchmarks/test_runs.py +3 -1
  19. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_browsers.py +3 -1
  20. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_computers.py +3 -1
  21. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_disk_snapshots.py +3 -1
  22. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_executions.py +3 -1
  23. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_logs.py +3 -1
  24. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/test_lsp.py +3 -1
  25. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/scenarios/test_runs.py +123 -1
  26. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/scenarios/test_scorers.py +3 -1
  27. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/test_benchmarks.py +3 -1
  28. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/test_blueprints.py +3 -1
  29. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/test_devboxes.py +3 -1
  30. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/test_repositories.py +3 -1
  31. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/test_scenarios.py +29 -147
  32. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/test_secrets.py +3 -1
  33. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/conftest.py +39 -6
  34. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_client.py +58 -33
  35. runloop_api_client-0.43.0/.release-please-manifest.json +0 -3
  36. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/.gitignore +0 -0
  37. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/CONTRIBUTING.md +0 -0
  38. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/LICENSE +0 -0
  39. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/SECURITY.md +0 -0
  40. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/bin/check-release-environment +0 -0
  41. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/bin/publish-pypi +0 -0
  42. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/examples/.keep +0 -0
  43. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/mypy.ini +0 -0
  44. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/noxfile.py +0 -0
  45. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/release-please-config.json +0 -0
  46. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop/lib/.keep +0 -0
  47. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_client.py +0 -0
  48. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_compat.py +0 -0
  49. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_constants.py +0 -0
  50. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_exceptions.py +0 -0
  51. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_files.py +0 -0
  52. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_models.py +0 -0
  53. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_qs.py +0 -0
  54. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_resource.py +0 -0
  55. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_response.py +0 -0
  56. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_streaming.py +0 -0
  57. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_types.py +0 -0
  58. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  59. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  60. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  61. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  62. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
  63. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  64. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  65. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  66. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  67. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  68. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/lib/.keep +0 -0
  69. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/lib/polling.py +0 -0
  70. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  71. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/pagination.py +0 -0
  72. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/py.typed +0 -0
  73. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/__init__.py +0 -0
  74. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
  75. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +0 -0
  76. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
  77. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/blueprints.py +0 -0
  78. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  79. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  80. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  81. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/devboxes.py +0 -0
  82. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  83. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  84. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  85. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/devboxes/lsp.py +0 -0
  86. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/repositories.py +0 -0
  87. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  88. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
  89. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/resources/secrets.py +0 -0
  90. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
  91. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
  92. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  93. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  94. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  95. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
  96. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  97. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
  98. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
  99. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
  100. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
  101. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/benchmarks/run_list_scenario_runs_params.py +0 -0
  102. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  103. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  104. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  105. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  106. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  107. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  108. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  109. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  110. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  111. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  112. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  113. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  114. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  115. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  116. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  117. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  118. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  119. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  120. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  121. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  122. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  123. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  124. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  125. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
  126. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  127. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  128. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  129. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  130. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  131. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  132. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  133. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  134. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  135. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_code_action.py +0 -0
  136. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_command.py +0 -0
  137. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_command_param.py +0 -0
  138. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_diagnostic.py +0 -0
  139. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_diagnostic_param.py +0 -0
  140. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_location.py +0 -0
  141. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_markup_content.py +0 -0
  142. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_parameter_information.py +0 -0
  143. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_range.py +0 -0
  144. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_range_param.py +0 -0
  145. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_signature.py +0 -0
  146. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_workspace_edit.py +0 -0
  147. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/base_workspace_edit_param.py +0 -0
  148. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  149. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  150. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_action_application_result.py +0 -0
  151. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_action_context_param.py +0 -0
  152. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_action_kind.py +0 -0
  153. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_action_trigger_kind.py +0 -0
  154. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_actions_response.py +0 -0
  155. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_description_param.py +0 -0
  156. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/code_segment_info_response.py +0 -0
  157. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  158. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  159. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  160. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  161. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  162. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  163. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  164. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  165. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  166. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
  167. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/diagnostic_param.py +0 -0
  168. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/diagnostic_related_information_param.py +0 -0
  169. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/diagnostic_severity.py +0 -0
  170. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/diagnostic_tag.py +0 -0
  171. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/diagnostics_response.py +0 -0
  172. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  173. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  174. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/document_symbol.py +0 -0
  175. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/document_symbol_response.py +0 -0
  176. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/document_uri.py +0 -0
  177. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  178. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  179. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  180. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/file_contents_response.py +0 -0
  181. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/file_definition_response.py +0 -0
  182. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/file_path.py +0 -0
  183. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/file_uri.py +0 -0
  184. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/formatting_response.py +0 -0
  185. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/health_status_response.py +0 -0
  186. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/integer.py +0 -0
  187. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/l_sp_any_param.py +0 -0
  188. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/location_param.py +0 -0
  189. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  190. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_apply_code_action_params.py +0 -0
  191. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_code_actions_params.py +0 -0
  192. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_diagnostics_params.py +0 -0
  193. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_document_symbols_params.py +0 -0
  194. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_file_definition_params.py +0 -0
  195. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_file_params.py +0 -0
  196. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_files_response.py +0 -0
  197. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_formatting_params.py +0 -0
  198. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_params.py +0 -0
  199. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_response.py +0 -0
  200. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_get_code_segment_info_params.py +0 -0
  201. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_get_signature_help_params.py +0 -0
  202. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_references_params.py +0 -0
  203. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_params.py +0 -0
  204. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_response.py +0 -0
  205. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/position.py +0 -0
  206. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/position_param.py +0 -0
  207. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/range.py +0 -0
  208. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/range_param.py +0 -0
  209. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array.py +0 -0
  210. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array_param.py +0 -0
  211. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/references_response.py +0 -0
  212. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/signature_help_response.py +0 -0
  213. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/symbol_kind.py +0 -0
  214. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/symbol_tag.py +0 -0
  215. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/symbol_type.py +0 -0
  216. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/text_edit.py +0 -0
  217. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/text_edit_param.py +0 -0
  218. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/u_ri.py +0 -0
  219. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/uinteger.py +0 -0
  220. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/devboxes/watched_file_response.py +0 -0
  221. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/input_context.py +0 -0
  222. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/input_context_param.py +0 -0
  223. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  224. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  225. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  226. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
  227. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
  228. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
  229. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_manifest_view.py +0 -0
  230. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
  231. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  232. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
  233. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
  234. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  235. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  236. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  237. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  238. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
  239. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  240. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenario_view.py +0 -0
  241. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  242. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  243. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  244. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
  245. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  246. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
  247. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
  248. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  249. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
  250. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
  251. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
  252. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  253. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  254. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  255. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_function.py +0 -0
  256. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
  257. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  258. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
  259. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/secret_list_view.py +0 -0
  260. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
  261. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/secret_view.py +0 -0
  262. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  263. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  264. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  265. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
  266. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  267. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  268. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  269. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
  270. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/__init__.py +0 -0
  271. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/__init__.py +0 -0
  272. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/benchmarks/__init__.py +0 -0
  273. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/devboxes/__init__.py +0 -0
  274. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/api_resources/scenarios/__init__.py +0 -0
  275. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/sample_file.txt +0 -0
  276. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_deepcopy.py +0 -0
  277. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_extract_files.py +0 -0
  278. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_files.py +0 -0
  279. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_models.py +0 -0
  280. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_qs.py +0 -0
  281. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_required_args.py +0 -0
  282. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_response.py +0 -0
  283. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_streaming.py +0 -0
  284. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_transform.py +0 -0
  285. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_utils/test_proxy.py +0 -0
  286. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/test_utils/test_typing.py +0 -0
  287. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/tests/utils.py +0 -0
  288. {runloop_api_client-0.43.0 → runloop_api_client-0.45.0}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.45.0"
3
+ }
@@ -1,5 +1,48 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.45.0 (2025-06-24)
4
+
5
+ Full Changelog: [v0.44.0...v0.45.0](https://github.com/runloopai/api-client-python/compare/v0.44.0...v0.45.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([382b901](https://github.com/runloopai/api-client-python/commit/382b9018d26ce11e12d7143a84b80147be63ac2e))
10
+ * **api:** api update ([3f896cf](https://github.com/runloopai/api-client-python/commit/3f896cf907ef15fc2f0d01f681844eef0bca9479))
11
+ * **api:** api update ([9bb3abf](https://github.com/runloopai/api-client-python/commit/9bb3abf4b274d9e75940cc859eafd0f4f37027b8))
12
+
13
+
14
+ ### Chores
15
+
16
+ * **tests:** skip some failing tests on the latest python versions ([27007c0](https://github.com/runloopai/api-client-python/commit/27007c0a1500e80cc9ac93cb634021a7cfb569e6))
17
+
18
+ ## 0.44.0 (2025-06-21)
19
+
20
+ Full Changelog: [v0.43.0...v0.44.0](https://github.com/runloopai/api-client-python/compare/v0.43.0...v0.44.0)
21
+
22
+ ### Features
23
+
24
+ * **api:** api update ([8bd0a39](https://github.com/runloopai/api-client-python/commit/8bd0a3937ff3d5b3e03a34ab2fc291377bbc4203))
25
+ * **api:** api update ([8ebd055](https://github.com/runloopai/api-client-python/commit/8ebd055bb3760c7a01193df890ca7e56d7ff9c01))
26
+ * **client:** add support for aiohttp ([4237321](https://github.com/runloopai/api-client-python/commit/4237321688934fcc89a17588800ce33fb47d9633))
27
+
28
+
29
+ ### Bug Fixes
30
+
31
+ * **tests:** fix: tests which call HTTP endpoints directly with the example parameters ([038fe71](https://github.com/runloopai/api-client-python/commit/038fe71f5d0bee93bdcad12af69a8f5b09b6664f))
32
+
33
+
34
+ ### Chores
35
+
36
+ * **ci:** enable for pull requests ([f64b8a2](https://github.com/runloopai/api-client-python/commit/f64b8a2a52a28a86f25d8b8ad1998e9ce4dda542))
37
+ * **internal:** update conftest.py ([d840c86](https://github.com/runloopai/api-client-python/commit/d840c863eb3b080202874080e44b8ab0baa379c4))
38
+ * **readme:** update badges ([4b5af3f](https://github.com/runloopai/api-client-python/commit/4b5af3faf2f3cfbcee8474b864335eb0a4c0a78b))
39
+ * **tests:** add tests for httpx client instantiation & proxies ([938b9aa](https://github.com/runloopai/api-client-python/commit/938b9aa33ef7ae52809ca6e9111fc3265d70263d))
40
+
41
+
42
+ ### Documentation
43
+
44
+ * **client:** fix httpx.Timeout documentation reference ([b8df915](https://github.com/runloopai/api-client-python/commit/b8df91557df34f77ce5a6f85769305628d9f2a1d))
45
+
3
46
  ## 0.43.0 (2025-06-14)
4
47
 
5
48
  Full Changelog: [v0.42.0...v0.43.0](https://github.com/runloopai/api-client-python/compare/v0.42.0...v0.43.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.43.0
3
+ Version: 0.45.0
4
4
  Summary: The official Python library for the runloop API
5
5
  Project-URL: Homepage, https://github.com/runloopai/api-client-python
6
6
  Project-URL: Repository, https://github.com/runloopai/api-client-python
@@ -27,11 +27,14 @@ Requires-Dist: httpx<1,>=0.23.0
27
27
  Requires-Dist: pydantic<3,>=1.9.0
28
28
  Requires-Dist: sniffio
29
29
  Requires-Dist: typing-extensions<5,>=4.10
30
+ Provides-Extra: aiohttp
31
+ Requires-Dist: aiohttp; extra == 'aiohttp'
32
+ Requires-Dist: httpx-aiohttp>=0.1.6; extra == 'aiohttp'
30
33
  Description-Content-Type: text/markdown
31
34
 
32
35
  # Runloop Python API library
33
36
 
34
- [![PyPI version](https://img.shields.io/pypi/v/runloop_api_client.svg)](https://pypi.org/project/runloop_api_client/)
37
+ [![PyPI version](https://github.com/runloopai/api-client-python/tree/main/<https://img.shields.io/pypi/v/runloop_api_client.svg?label=pypi%20(stable)>)](https://pypi.org/project/runloop_api_client/)
35
38
 
36
39
  The Runloop Python library provides convenient access to the Runloop REST API from any Python 3.8+
37
40
  application. The library includes type definitions for all request params and response fields,
@@ -95,6 +98,38 @@ asyncio.run(main())
95
98
 
96
99
  Functionality between the synchronous and asynchronous clients is otherwise identical.
97
100
 
101
+ ### With aiohttp
102
+
103
+ By default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.
104
+
105
+ You can enable this by installing `aiohttp`:
106
+
107
+ ```sh
108
+ # install from PyPI
109
+ pip install runloop_api_client[aiohttp]
110
+ ```
111
+
112
+ Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
113
+
114
+ ```python
115
+ import os
116
+ import asyncio
117
+ from runloop_api_client import DefaultAioHttpClient
118
+ from runloop_api_client import AsyncRunloop
119
+
120
+
121
+ async def main() -> None:
122
+ async with AsyncRunloop(
123
+ bearer_token=os.environ.get("RUNLOOP_API_KEY"), # This is the default and can be omitted
124
+ http_client=DefaultAioHttpClient(),
125
+ ) as client:
126
+ devbox_view = await client.devboxes.create()
127
+ print(devbox_view.id)
128
+
129
+
130
+ asyncio.run(main())
131
+ ```
132
+
98
133
  ## Using types
99
134
 
100
135
  Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typing.html#typing.TypedDict). Responses are [Pydantic models](https://docs.pydantic.dev) which also provide helper methods for things like:
@@ -266,7 +301,7 @@ client.with_options(max_retries=5).devboxes.create()
266
301
  ### Timeouts
267
302
 
268
303
  By default requests time out after 1 minute. You can configure this with a `timeout` option,
269
- which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
304
+ which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/timeouts/#fine-tuning-the-configuration) object:
270
305
 
271
306
  ```python
272
307
  from runloop_api_client import Runloop
@@ -1,6 +1,6 @@
1
1
  # Runloop Python API library
2
2
 
3
- [![PyPI version](https://img.shields.io/pypi/v/runloop_api_client.svg)](https://pypi.org/project/runloop_api_client/)
3
+ [![PyPI version](<https://img.shields.io/pypi/v/runloop_api_client.svg?label=pypi%20(stable)>)](https://pypi.org/project/runloop_api_client/)
4
4
 
5
5
  The Runloop Python library provides convenient access to the Runloop REST API from any Python 3.8+
6
6
  application. The library includes type definitions for all request params and response fields,
@@ -64,6 +64,38 @@ asyncio.run(main())
64
64
 
65
65
  Functionality between the synchronous and asynchronous clients is otherwise identical.
66
66
 
67
+ ### With aiohttp
68
+
69
+ By default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.
70
+
71
+ You can enable this by installing `aiohttp`:
72
+
73
+ ```sh
74
+ # install from PyPI
75
+ pip install runloop_api_client[aiohttp]
76
+ ```
77
+
78
+ Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
79
+
80
+ ```python
81
+ import os
82
+ import asyncio
83
+ from runloop_api_client import DefaultAioHttpClient
84
+ from runloop_api_client import AsyncRunloop
85
+
86
+
87
+ async def main() -> None:
88
+ async with AsyncRunloop(
89
+ bearer_token=os.environ.get("RUNLOOP_API_KEY"), # This is the default and can be omitted
90
+ http_client=DefaultAioHttpClient(),
91
+ ) as client:
92
+ devbox_view = await client.devboxes.create()
93
+ print(devbox_view.id)
94
+
95
+
96
+ asyncio.run(main())
97
+ ```
98
+
67
99
  ## Using types
68
100
 
69
101
  Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typing.html#typing.TypedDict). Responses are [Pydantic models](https://docs.pydantic.dev) which also provide helper methods for things like:
@@ -235,7 +267,7 @@ client.with_options(max_retries=5).devboxes.create()
235
267
  ### Timeouts
236
268
 
237
269
  By default requests time out after 1 minute. You can configure this with a `timeout` option,
238
- which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
270
+ which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/timeouts/#fine-tuning-the-configuration) object:
239
271
 
240
272
  ```python
241
273
  from runloop_api_client import Runloop
@@ -264,13 +264,16 @@ Types:
264
264
  ```python
265
265
  from runloop_api_client.types import (
266
266
  InputContext,
267
+ InputContextUpdate,
267
268
  ScenarioCreateParameters,
268
269
  ScenarioEnvironment,
269
270
  ScenarioRunListView,
270
271
  ScenarioRunView,
272
+ ScenarioUpdateParameters,
271
273
  ScenarioView,
272
274
  ScoringContract,
273
275
  ScoringContractResultView,
276
+ ScoringContractUpdate,
274
277
  ScoringFunction,
275
278
  ScoringFunctionResultView,
276
279
  StartScenarioRunParameters,
@@ -294,6 +297,7 @@ Methods:
294
297
  - <code title="get /v1/scenarios/runs">client.scenarios.runs.<a href="./src/runloop_api_client/resources/scenarios/runs.py">list</a>(\*\*<a href="src/runloop_api_client/types/scenarios/run_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">SyncBenchmarkRunsCursorIDPage[ScenarioRunView]</a></code>
295
298
  - <code title="post /v1/scenarios/runs/{id}/cancel">client.scenarios.runs.<a href="./src/runloop_api_client/resources/scenarios/runs.py">cancel</a>(id) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">ScenarioRunView</a></code>
296
299
  - <code title="post /v1/scenarios/runs/{id}/complete">client.scenarios.runs.<a href="./src/runloop_api_client/resources/scenarios/runs.py">complete</a>(id) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">ScenarioRunView</a></code>
300
+ - <code title="post /v1/scenarios/runs/{id}/download_logs">client.scenarios.runs.<a href="./src/runloop_api_client/resources/scenarios/runs.py">download_logs</a>(id) -> BinaryAPIResponse</code>
297
301
  - <code title="post /v1/scenarios/runs/{id}/score">client.scenarios.runs.<a href="./src/runloop_api_client/resources/scenarios/runs.py">score</a>(id) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">ScenarioRunView</a></code>
298
302
 
299
303
  ## Scorers
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.43.0"
3
+ version = "0.45.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -37,6 +37,8 @@ classifiers = [
37
37
  Homepage = "https://github.com/runloopai/api-client-python"
38
38
  Repository = "https://github.com/runloopai/api-client-python"
39
39
 
40
+ [project.optional-dependencies]
41
+ aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.6"]
40
42
 
41
43
  [tool.rye]
42
44
  managed = true
@@ -10,6 +10,13 @@
10
10
  # universal: false
11
11
 
12
12
  -e file:.
13
+ aiohappyeyeballs==2.6.1
14
+ # via aiohttp
15
+ aiohttp==3.12.8
16
+ # via httpx-aiohttp
17
+ # via runloop-api-client
18
+ aiosignal==1.3.2
19
+ # via aiohttp
13
20
  annotated-types==0.6.0
14
21
  # via pydantic
15
22
  anyio==4.4.0
@@ -17,6 +24,10 @@ anyio==4.4.0
17
24
  # via runloop-api-client
18
25
  argcomplete==3.1.2
19
26
  # via nox
27
+ async-timeout==5.0.1
28
+ # via aiohttp
29
+ attrs==25.3.0
30
+ # via aiohttp
20
31
  certifi==2023.7.22
21
32
  # via httpcore
22
33
  # via httpx
@@ -34,16 +45,23 @@ execnet==2.1.1
34
45
  # via pytest-xdist
35
46
  filelock==3.12.4
36
47
  # via virtualenv
48
+ frozenlist==1.6.2
49
+ # via aiohttp
50
+ # via aiosignal
37
51
  h11==0.14.0
38
52
  # via httpcore
39
53
  httpcore==1.0.2
40
54
  # via httpx
41
55
  httpx==0.28.1
56
+ # via httpx-aiohttp
42
57
  # via respx
43
58
  # via runloop-api-client
59
+ httpx-aiohttp==0.1.6
60
+ # via runloop-api-client
44
61
  idna==3.4
45
62
  # via anyio
46
63
  # via httpx
64
+ # via yarl
47
65
  importlib-metadata==7.0.0
48
66
  iniconfig==2.0.0
49
67
  # via pytest
@@ -51,6 +69,9 @@ markdown-it-py==3.0.0
51
69
  # via rich
52
70
  mdurl==0.1.2
53
71
  # via markdown-it-py
72
+ multidict==6.4.4
73
+ # via aiohttp
74
+ # via yarl
54
75
  mypy==1.14.1
55
76
  mypy-extensions==1.0.0
56
77
  # via mypy
@@ -65,6 +86,9 @@ platformdirs==3.11.0
65
86
  # via virtualenv
66
87
  pluggy==1.5.0
67
88
  # via pytest
89
+ propcache==0.3.1
90
+ # via aiohttp
91
+ # via yarl
68
92
  pydantic==2.10.3
69
93
  # via runloop-api-client
70
94
  pydantic-core==2.27.1
@@ -97,6 +121,7 @@ tomli==2.0.2
97
121
  # via pytest
98
122
  typing-extensions==4.12.2
99
123
  # via anyio
124
+ # via multidict
100
125
  # via mypy
101
126
  # via pydantic
102
127
  # via pydantic-core
@@ -104,5 +129,7 @@ typing-extensions==4.12.2
104
129
  # via runloop-api-client
105
130
  virtualenv==20.24.5
106
131
  # via nox
132
+ yarl==1.20.0
133
+ # via aiohttp
107
134
  zipp==3.17.0
108
135
  # via importlib-metadata
@@ -10,11 +10,22 @@
10
10
  # universal: false
11
11
 
12
12
  -e file:.
13
+ aiohappyeyeballs==2.6.1
14
+ # via aiohttp
15
+ aiohttp==3.12.8
16
+ # via httpx-aiohttp
17
+ # via runloop-api-client
18
+ aiosignal==1.3.2
19
+ # via aiohttp
13
20
  annotated-types==0.6.0
14
21
  # via pydantic
15
22
  anyio==4.4.0
16
23
  # via httpx
17
24
  # via runloop-api-client
25
+ async-timeout==5.0.1
26
+ # via aiohttp
27
+ attrs==25.3.0
28
+ # via aiohttp
18
29
  certifi==2023.7.22
19
30
  # via httpcore
20
31
  # via httpx
@@ -22,15 +33,28 @@ distro==1.8.0
22
33
  # via runloop-api-client
23
34
  exceptiongroup==1.2.2
24
35
  # via anyio
36
+ frozenlist==1.6.2
37
+ # via aiohttp
38
+ # via aiosignal
25
39
  h11==0.14.0
26
40
  # via httpcore
27
41
  httpcore==1.0.2
28
42
  # via httpx
29
43
  httpx==0.28.1
44
+ # via httpx-aiohttp
45
+ # via runloop-api-client
46
+ httpx-aiohttp==0.1.6
30
47
  # via runloop-api-client
31
48
  idna==3.4
32
49
  # via anyio
33
50
  # via httpx
51
+ # via yarl
52
+ multidict==6.4.4
53
+ # via aiohttp
54
+ # via yarl
55
+ propcache==0.3.1
56
+ # via aiohttp
57
+ # via yarl
34
58
  pydantic==2.10.3
35
59
  # via runloop-api-client
36
60
  pydantic-core==2.27.1
@@ -40,6 +64,9 @@ sniffio==1.3.0
40
64
  # via runloop-api-client
41
65
  typing-extensions==4.12.2
42
66
  # via anyio
67
+ # via multidict
43
68
  # via pydantic
44
69
  # via pydantic-core
45
70
  # via runloop-api-client
71
+ yarl==1.20.0
72
+ # via aiohttp
@@ -26,7 +26,7 @@ from ._exceptions import (
26
26
  UnprocessableEntityError,
27
27
  APIResponseValidationError,
28
28
  )
29
- from ._base_client import DefaultHttpxClient, DefaultAsyncHttpxClient
29
+ from ._base_client import DefaultHttpxClient, DefaultAioHttpClient, DefaultAsyncHttpxClient
30
30
  from ._utils._logs import setup_logging as _setup_logging
31
31
 
32
32
  __all__ = [
@@ -68,6 +68,7 @@ __all__ = [
68
68
  "DEFAULT_CONNECTION_LIMITS",
69
69
  "DefaultHttpxClient",
70
70
  "DefaultAsyncHttpxClient",
71
+ "DefaultAioHttpClient",
71
72
  ]
72
73
 
73
74
  if not _t.TYPE_CHECKING:
@@ -1289,6 +1289,24 @@ class _DefaultAsyncHttpxClient(httpx.AsyncClient):
1289
1289
  super().__init__(**kwargs)
1290
1290
 
1291
1291
 
1292
+ try:
1293
+ import httpx_aiohttp
1294
+ except ImportError:
1295
+
1296
+ class _DefaultAioHttpClient(httpx.AsyncClient):
1297
+ def __init__(self, **_kwargs: Any) -> None:
1298
+ raise RuntimeError("To use the aiohttp client you must have installed the package with the `aiohttp` extra")
1299
+ else:
1300
+
1301
+ class _DefaultAioHttpClient(httpx_aiohttp.HttpxAiohttpClient): # type: ignore
1302
+ def __init__(self, **kwargs: Any) -> None:
1303
+ kwargs.setdefault("timeout", DEFAULT_TIMEOUT)
1304
+ kwargs.setdefault("limits", DEFAULT_CONNECTION_LIMITS)
1305
+ kwargs.setdefault("follow_redirects", True)
1306
+
1307
+ super().__init__(**kwargs)
1308
+
1309
+
1292
1310
  if TYPE_CHECKING:
1293
1311
  DefaultAsyncHttpxClient = httpx.AsyncClient
1294
1312
  """An alias to `httpx.AsyncClient` that provides the same defaults that this SDK
@@ -1297,8 +1315,12 @@ if TYPE_CHECKING:
1297
1315
  This is useful because overriding the `http_client` with your own instance of
1298
1316
  `httpx.AsyncClient` will result in httpx's defaults being used, not ours.
1299
1317
  """
1318
+
1319
+ DefaultAioHttpClient = httpx.AsyncClient
1320
+ """An alias to `httpx.AsyncClient` that changes the default HTTP transport to `aiohttp`."""
1300
1321
  else:
1301
1322
  DefaultAsyncHttpxClient = _DefaultAsyncHttpxClient
1323
+ DefaultAioHttpClient = _DefaultAioHttpClient
1302
1324
 
1303
1325
 
1304
1326
  class AsyncHttpxClientWrapper(DefaultAsyncHttpxClient):
@@ -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.43.0" # x-release-please-version
4
+ __version__ = "0.45.0" # x-release-please-version
@@ -9,10 +9,18 @@ from ..._utils import maybe_transform
9
9
  from ..._compat import cached_property
10
10
  from ..._resource import SyncAPIResource, AsyncAPIResource
11
11
  from ..._response import (
12
+ BinaryAPIResponse,
13
+ AsyncBinaryAPIResponse,
14
+ StreamedBinaryAPIResponse,
15
+ AsyncStreamedBinaryAPIResponse,
12
16
  to_raw_response_wrapper,
13
17
  to_streamed_response_wrapper,
14
18
  async_to_raw_response_wrapper,
19
+ to_custom_raw_response_wrapper,
15
20
  async_to_streamed_response_wrapper,
21
+ to_custom_streamed_response_wrapper,
22
+ async_to_custom_raw_response_wrapper,
23
+ async_to_custom_streamed_response_wrapper,
16
24
  )
17
25
  from ...pagination import SyncBenchmarkRunsCursorIDPage, AsyncBenchmarkRunsCursorIDPage
18
26
  from ..._exceptions import RunloopError
@@ -213,6 +221,48 @@ class RunsResource(SyncAPIResource):
213
221
  cast_to=ScenarioRunView,
214
222
  )
215
223
 
224
+ def download_logs(
225
+ self,
226
+ id: str,
227
+ *,
228
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
229
+ # The extra values given here take precedence over values defined on the client or passed to this method.
230
+ extra_headers: Headers | None = None,
231
+ extra_query: Query | None = None,
232
+ extra_body: Body | None = None,
233
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
234
+ idempotency_key: str | None = None,
235
+ ) -> BinaryAPIResponse:
236
+ """
237
+ Download a zip file containing all logs for a Scenario run from the associated
238
+ devbox.
239
+
240
+ Args:
241
+ extra_headers: Send extra headers
242
+
243
+ extra_query: Add additional query parameters to the request
244
+
245
+ extra_body: Add additional JSON properties to the request
246
+
247
+ timeout: Override the client-level default timeout for this request, in seconds
248
+
249
+ idempotency_key: Specify a custom idempotency key for this request
250
+ """
251
+ if not id:
252
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
253
+ extra_headers = {"Accept": "application/zip", **(extra_headers or {})}
254
+ return self._post(
255
+ f"/v1/scenarios/runs/{id}/download_logs",
256
+ options=make_request_options(
257
+ extra_headers=extra_headers,
258
+ extra_query=extra_query,
259
+ extra_body=extra_body,
260
+ timeout=timeout,
261
+ idempotency_key=idempotency_key,
262
+ ),
263
+ cast_to=BinaryAPIResponse,
264
+ )
265
+
216
266
  def score(
217
267
  self,
218
268
  id: str,
@@ -583,6 +633,48 @@ class AsyncRunsResource(AsyncAPIResource):
583
633
  cast_to=ScenarioRunView,
584
634
  )
585
635
 
636
+ async def download_logs(
637
+ self,
638
+ id: str,
639
+ *,
640
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
641
+ # The extra values given here take precedence over values defined on the client or passed to this method.
642
+ extra_headers: Headers | None = None,
643
+ extra_query: Query | None = None,
644
+ extra_body: Body | None = None,
645
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
646
+ idempotency_key: str | None = None,
647
+ ) -> AsyncBinaryAPIResponse:
648
+ """
649
+ Download a zip file containing all logs for a Scenario run from the associated
650
+ devbox.
651
+
652
+ Args:
653
+ extra_headers: Send extra headers
654
+
655
+ extra_query: Add additional query parameters to the request
656
+
657
+ extra_body: Add additional JSON properties to the request
658
+
659
+ timeout: Override the client-level default timeout for this request, in seconds
660
+
661
+ idempotency_key: Specify a custom idempotency key for this request
662
+ """
663
+ if not id:
664
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
665
+ extra_headers = {"Accept": "application/zip", **(extra_headers or {})}
666
+ return await self._post(
667
+ f"/v1/scenarios/runs/{id}/download_logs",
668
+ options=make_request_options(
669
+ extra_headers=extra_headers,
670
+ extra_query=extra_query,
671
+ extra_body=extra_body,
672
+ timeout=timeout,
673
+ idempotency_key=idempotency_key,
674
+ ),
675
+ cast_to=AsyncBinaryAPIResponse,
676
+ )
677
+
586
678
  async def score(
587
679
  self,
588
680
  id: str,
@@ -782,6 +874,10 @@ class RunsResourceWithRawResponse:
782
874
  self.complete = to_raw_response_wrapper(
783
875
  runs.complete,
784
876
  )
877
+ self.download_logs = to_custom_raw_response_wrapper(
878
+ runs.download_logs,
879
+ BinaryAPIResponse,
880
+ )
785
881
  self.score = to_raw_response_wrapper(
786
882
  runs.score,
787
883
  )
@@ -803,6 +899,10 @@ class AsyncRunsResourceWithRawResponse:
803
899
  self.complete = async_to_raw_response_wrapper(
804
900
  runs.complete,
805
901
  )
902
+ self.download_logs = async_to_custom_raw_response_wrapper(
903
+ runs.download_logs,
904
+ AsyncBinaryAPIResponse,
905
+ )
806
906
  self.score = async_to_raw_response_wrapper(
807
907
  runs.score,
808
908
  )
@@ -824,6 +924,10 @@ class RunsResourceWithStreamingResponse:
824
924
  self.complete = to_streamed_response_wrapper(
825
925
  runs.complete,
826
926
  )
927
+ self.download_logs = to_custom_streamed_response_wrapper(
928
+ runs.download_logs,
929
+ StreamedBinaryAPIResponse,
930
+ )
827
931
  self.score = to_streamed_response_wrapper(
828
932
  runs.score,
829
933
  )
@@ -845,6 +949,10 @@ class AsyncRunsResourceWithStreamingResponse:
845
949
  self.complete = async_to_streamed_response_wrapper(
846
950
  runs.complete,
847
951
  )
952
+ self.download_logs = async_to_custom_streamed_response_wrapper(
953
+ runs.download_logs,
954
+ AsyncStreamedBinaryAPIResponse,
955
+ )
848
956
  self.score = async_to_streamed_response_wrapper(
849
957
  runs.score,
850
958
  )