runloop-api-client 0.43.0__tar.gz → 0.44.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 (286) hide show
  1. runloop_api_client-0.44.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/CHANGELOG.md +28 -0
  3. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/PKG-INFO +38 -3
  4. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/README.md +34 -2
  5. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/api.md +1 -0
  6. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/pyproject.toml +3 -1
  7. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/requirements-dev.lock +27 -0
  8. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/requirements.lock +27 -0
  9. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/__init__.py +2 -1
  10. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_base_client.py +22 -0
  11. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_version.py +1 -1
  12. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/scenarios/scenarios.py +28 -26
  13. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenario_update_params.py +10 -10
  14. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/benchmarks/test_runs.py +3 -1
  15. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/devboxes/test_browsers.py +3 -1
  16. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/devboxes/test_computers.py +3 -1
  17. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/devboxes/test_disk_snapshots.py +3 -1
  18. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/devboxes/test_executions.py +3 -1
  19. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/devboxes/test_logs.py +3 -1
  20. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/devboxes/test_lsp.py +3 -1
  21. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/scenarios/test_runs.py +3 -1
  22. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/scenarios/test_scorers.py +3 -1
  23. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/test_benchmarks.py +3 -1
  24. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/test_blueprints.py +3 -1
  25. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/test_devboxes.py +3 -1
  26. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/test_repositories.py +3 -1
  27. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/test_scenarios.py +29 -147
  28. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/test_secrets.py +3 -1
  29. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/conftest.py +39 -6
  30. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_client.py +56 -33
  31. runloop_api_client-0.43.0/.release-please-manifest.json +0 -3
  32. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/.gitignore +0 -0
  33. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/CONTRIBUTING.md +0 -0
  34. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/LICENSE +0 -0
  35. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/SECURITY.md +0 -0
  36. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/bin/check-release-environment +0 -0
  37. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/bin/publish-pypi +0 -0
  38. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/examples/.keep +0 -0
  39. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/mypy.ini +0 -0
  40. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/noxfile.py +0 -0
  41. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/release-please-config.json +0 -0
  42. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop/lib/.keep +0 -0
  43. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_client.py +0 -0
  44. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_compat.py +0 -0
  45. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_constants.py +0 -0
  46. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_exceptions.py +0 -0
  47. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_files.py +0 -0
  48. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_models.py +0 -0
  49. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_qs.py +0 -0
  50. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_resource.py +0 -0
  51. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_response.py +0 -0
  52. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_streaming.py +0 -0
  53. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_types.py +0 -0
  54. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  55. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  56. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  57. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  58. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
  59. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  60. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  61. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  62. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  63. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  64. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/lib/.keep +0 -0
  65. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/lib/polling.py +0 -0
  66. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  67. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/pagination.py +0 -0
  68. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/py.typed +0 -0
  69. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/__init__.py +0 -0
  70. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
  71. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +0 -0
  72. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
  73. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/blueprints.py +0 -0
  74. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  75. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  76. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  77. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/devboxes/devboxes.py +0 -0
  78. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  79. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  80. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  81. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/devboxes/lsp.py +0 -0
  82. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/repositories.py +0 -0
  83. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  84. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
  85. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
  86. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/resources/secrets.py +0 -0
  87. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/__init__.py +0 -0
  88. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
  89. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
  90. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  91. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  92. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  93. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
  94. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  95. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
  96. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
  97. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
  98. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
  99. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/benchmarks/run_list_scenario_runs_params.py +0 -0
  100. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  101. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  102. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  103. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  104. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  105. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  106. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  107. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  108. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  109. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  110. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  111. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  112. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  113. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  114. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  115. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  116. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  117. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  118. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  119. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  120. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  121. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  122. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  123. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
  124. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  125. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  126. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  127. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  128. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  129. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  130. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  131. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  132. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  133. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_code_action.py +0 -0
  134. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_command.py +0 -0
  135. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_command_param.py +0 -0
  136. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_diagnostic.py +0 -0
  137. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_diagnostic_param.py +0 -0
  138. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_location.py +0 -0
  139. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_markup_content.py +0 -0
  140. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_parameter_information.py +0 -0
  141. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_range.py +0 -0
  142. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_range_param.py +0 -0
  143. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_signature.py +0 -0
  144. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_workspace_edit.py +0 -0
  145. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/base_workspace_edit_param.py +0 -0
  146. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  147. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  148. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/code_action_application_result.py +0 -0
  149. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/code_action_context_param.py +0 -0
  150. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/code_action_kind.py +0 -0
  151. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/code_action_trigger_kind.py +0 -0
  152. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/code_actions_response.py +0 -0
  153. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/code_description_param.py +0 -0
  154. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/code_segment_info_response.py +0 -0
  155. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  156. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  157. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  158. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  159. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  160. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  161. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  162. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  163. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  164. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
  165. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/diagnostic_param.py +0 -0
  166. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/diagnostic_related_information_param.py +0 -0
  167. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/diagnostic_severity.py +0 -0
  168. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/diagnostic_tag.py +0 -0
  169. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/diagnostics_response.py +0 -0
  170. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  171. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  172. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/document_symbol.py +0 -0
  173. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/document_symbol_response.py +0 -0
  174. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/document_uri.py +0 -0
  175. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  176. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  177. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  178. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/file_contents_response.py +0 -0
  179. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/file_definition_response.py +0 -0
  180. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/file_path.py +0 -0
  181. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/file_uri.py +0 -0
  182. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/formatting_response.py +0 -0
  183. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/health_status_response.py +0 -0
  184. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/integer.py +0 -0
  185. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/l_sp_any_param.py +0 -0
  186. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/location_param.py +0 -0
  187. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  188. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_apply_code_action_params.py +0 -0
  189. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_code_actions_params.py +0 -0
  190. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_diagnostics_params.py +0 -0
  191. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_document_symbols_params.py +0 -0
  192. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_file_definition_params.py +0 -0
  193. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_file_params.py +0 -0
  194. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_files_response.py +0 -0
  195. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_formatting_params.py +0 -0
  196. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_params.py +0 -0
  197. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_response.py +0 -0
  198. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_get_code_segment_info_params.py +0 -0
  199. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_get_signature_help_params.py +0 -0
  200. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_references_params.py +0 -0
  201. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_params.py +0 -0
  202. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_response.py +0 -0
  203. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/position.py +0 -0
  204. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/position_param.py +0 -0
  205. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/range.py +0 -0
  206. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/range_param.py +0 -0
  207. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array.py +0 -0
  208. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array_param.py +0 -0
  209. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/references_response.py +0 -0
  210. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/signature_help_response.py +0 -0
  211. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/symbol_kind.py +0 -0
  212. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/symbol_tag.py +0 -0
  213. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/symbol_type.py +0 -0
  214. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/text_edit.py +0 -0
  215. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/text_edit_param.py +0 -0
  216. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/u_ri.py +0 -0
  217. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/uinteger.py +0 -0
  218. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/devboxes/watched_file_response.py +0 -0
  219. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/input_context.py +0 -0
  220. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/input_context_param.py +0 -0
  221. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  222. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  223. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  224. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
  225. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
  226. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
  227. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/repository_manifest_view.py +0 -0
  228. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
  229. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  230. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
  231. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
  232. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  233. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  234. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  235. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  236. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
  237. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  238. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenario_view.py +0 -0
  239. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  240. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  241. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  242. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
  243. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  244. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
  245. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
  246. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  247. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
  248. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
  249. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
  250. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  251. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  252. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  253. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scoring_function.py +0 -0
  254. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
  255. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  256. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
  257. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/secret_list_view.py +0 -0
  258. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
  259. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/secret_view.py +0 -0
  260. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  261. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  262. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  263. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
  264. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  265. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  266. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  267. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
  268. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/__init__.py +0 -0
  269. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/__init__.py +0 -0
  270. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/benchmarks/__init__.py +0 -0
  271. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/devboxes/__init__.py +0 -0
  272. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/api_resources/scenarios/__init__.py +0 -0
  273. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/sample_file.txt +0 -0
  274. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_deepcopy.py +0 -0
  275. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_extract_files.py +0 -0
  276. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_files.py +0 -0
  277. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_models.py +0 -0
  278. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_qs.py +0 -0
  279. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_required_args.py +0 -0
  280. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_response.py +0 -0
  281. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_streaming.py +0 -0
  282. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_transform.py +0 -0
  283. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_utils/test_proxy.py +0 -0
  284. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/test_utils/test_typing.py +0 -0
  285. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/tests/utils.py +0 -0
  286. {runloop_api_client-0.43.0 → runloop_api_client-0.44.0}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.44.0"
3
+ }
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.44.0 (2025-06-21)
4
+
5
+ Full Changelog: [v0.43.0...v0.44.0](https://github.com/runloopai/api-client-python/compare/v0.43.0...v0.44.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([8bd0a39](https://github.com/runloopai/api-client-python/commit/8bd0a3937ff3d5b3e03a34ab2fc291377bbc4203))
10
+ * **api:** api update ([8ebd055](https://github.com/runloopai/api-client-python/commit/8ebd055bb3760c7a01193df890ca7e56d7ff9c01))
11
+ * **client:** add support for aiohttp ([4237321](https://github.com/runloopai/api-client-python/commit/4237321688934fcc89a17588800ce33fb47d9633))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **tests:** fix: tests which call HTTP endpoints directly with the example parameters ([038fe71](https://github.com/runloopai/api-client-python/commit/038fe71f5d0bee93bdcad12af69a8f5b09b6664f))
17
+
18
+
19
+ ### Chores
20
+
21
+ * **ci:** enable for pull requests ([f64b8a2](https://github.com/runloopai/api-client-python/commit/f64b8a2a52a28a86f25d8b8ad1998e9ce4dda542))
22
+ * **internal:** update conftest.py ([d840c86](https://github.com/runloopai/api-client-python/commit/d840c863eb3b080202874080e44b8ab0baa379c4))
23
+ * **readme:** update badges ([4b5af3f](https://github.com/runloopai/api-client-python/commit/4b5af3faf2f3cfbcee8474b864335eb0a4c0a78b))
24
+ * **tests:** add tests for httpx client instantiation & proxies ([938b9aa](https://github.com/runloopai/api-client-python/commit/938b9aa33ef7ae52809ca6e9111fc3265d70263d))
25
+
26
+
27
+ ### Documentation
28
+
29
+ * **client:** fix httpx.Timeout documentation reference ([b8df915](https://github.com/runloopai/api-client-python/commit/b8df91557df34f77ce5a6f85769305628d9f2a1d))
30
+
3
31
  ## 0.43.0 (2025-06-14)
4
32
 
5
33
  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.44.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
@@ -268,6 +268,7 @@ from runloop_api_client.types import (
268
268
  ScenarioEnvironment,
269
269
  ScenarioRunListView,
270
270
  ScenarioRunView,
271
+ ScenarioUpdateParameters,
271
272
  ScenarioView,
272
273
  ScoringContract,
273
274
  ScoringContractResultView,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.43.0"
3
+ version = "0.44.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.44.0" # x-release-please-version
@@ -185,12 +185,12 @@ class ScenariosResource(SyncAPIResource):
185
185
  self,
186
186
  id: str,
187
187
  *,
188
- input_context: InputContextParam,
189
- name: str,
190
- scoring_contract: ScoringContractParam,
191
188
  environment_parameters: Optional[ScenarioEnvironmentParam] | NotGiven = NOT_GIVEN,
189
+ input_context: Optional[InputContextParam] | NotGiven = NOT_GIVEN,
192
190
  metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
191
+ name: Optional[str] | NotGiven = NOT_GIVEN,
193
192
  reference_output: Optional[str] | NotGiven = NOT_GIVEN,
193
+ scoring_contract: Optional[ScoringContractParam] | NotGiven = NOT_GIVEN,
194
194
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
195
195
  # The extra values given here take precedence over values defined on the client or passed to this method.
196
196
  extra_headers: Headers | None = None,
@@ -201,23 +201,24 @@ class ScenariosResource(SyncAPIResource):
201
201
  ) -> ScenarioView:
202
202
  """
203
203
  Update a Scenario, a repeatable AI coding evaluation test that defines the
204
- starting environment as well as evaluation success criteria.
204
+ starting environment as well as evaluation success criteria. Only provided
205
+ fields will be updated.
205
206
 
206
207
  Args:
207
- input_context: The input context for the Scenario.
208
-
209
- name: Name of the scenario.
210
-
211
- scoring_contract: The scoring contract for the Scenario.
212
-
213
208
  environment_parameters: The Environment in which the Scenario will run.
214
209
 
210
+ input_context: The input context for the Scenario.
211
+
215
212
  metadata: User defined metadata to attach to the scenario for organization.
216
213
 
214
+ name: Name of the scenario.
215
+
217
216
  reference_output: A string representation of the reference output to solve the scenario. Commonly
218
217
  can be the result of a git diff or a sequence of command actions to apply to the
219
218
  environment.
220
219
 
220
+ scoring_contract: The scoring contract for the Scenario.
221
+
221
222
  extra_headers: Send extra headers
222
223
 
223
224
  extra_query: Add additional query parameters to the request
@@ -234,12 +235,12 @@ class ScenariosResource(SyncAPIResource):
234
235
  f"/v1/scenarios/{id}",
235
236
  body=maybe_transform(
236
237
  {
237
- "input_context": input_context,
238
- "name": name,
239
- "scoring_contract": scoring_contract,
240
238
  "environment_parameters": environment_parameters,
239
+ "input_context": input_context,
241
240
  "metadata": metadata,
241
+ "name": name,
242
242
  "reference_output": reference_output,
243
+ "scoring_contract": scoring_contract,
243
244
  },
244
245
  scenario_update_params.ScenarioUpdateParams,
245
246
  ),
@@ -611,12 +612,12 @@ class AsyncScenariosResource(AsyncAPIResource):
611
612
  self,
612
613
  id: str,
613
614
  *,
614
- input_context: InputContextParam,
615
- name: str,
616
- scoring_contract: ScoringContractParam,
617
615
  environment_parameters: Optional[ScenarioEnvironmentParam] | NotGiven = NOT_GIVEN,
616
+ input_context: Optional[InputContextParam] | NotGiven = NOT_GIVEN,
618
617
  metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
618
+ name: Optional[str] | NotGiven = NOT_GIVEN,
619
619
  reference_output: Optional[str] | NotGiven = NOT_GIVEN,
620
+ scoring_contract: Optional[ScoringContractParam] | NotGiven = NOT_GIVEN,
620
621
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
621
622
  # The extra values given here take precedence over values defined on the client or passed to this method.
622
623
  extra_headers: Headers | None = None,
@@ -627,23 +628,24 @@ class AsyncScenariosResource(AsyncAPIResource):
627
628
  ) -> ScenarioView:
628
629
  """
629
630
  Update a Scenario, a repeatable AI coding evaluation test that defines the
630
- starting environment as well as evaluation success criteria.
631
+ starting environment as well as evaluation success criteria. Only provided
632
+ fields will be updated.
631
633
 
632
634
  Args:
633
- input_context: The input context for the Scenario.
634
-
635
- name: Name of the scenario.
636
-
637
- scoring_contract: The scoring contract for the Scenario.
638
-
639
635
  environment_parameters: The Environment in which the Scenario will run.
640
636
 
637
+ input_context: The input context for the Scenario.
638
+
641
639
  metadata: User defined metadata to attach to the scenario for organization.
642
640
 
641
+ name: Name of the scenario.
642
+
643
643
  reference_output: A string representation of the reference output to solve the scenario. Commonly
644
644
  can be the result of a git diff or a sequence of command actions to apply to the
645
645
  environment.
646
646
 
647
+ scoring_contract: The scoring contract for the Scenario.
648
+
647
649
  extra_headers: Send extra headers
648
650
 
649
651
  extra_query: Add additional query parameters to the request
@@ -660,12 +662,12 @@ class AsyncScenariosResource(AsyncAPIResource):
660
662
  f"/v1/scenarios/{id}",
661
663
  body=await async_maybe_transform(
662
664
  {
663
- "input_context": input_context,
664
- "name": name,
665
- "scoring_contract": scoring_contract,
666
665
  "environment_parameters": environment_parameters,
666
+ "input_context": input_context,
667
667
  "metadata": metadata,
668
+ "name": name,
668
669
  "reference_output": reference_output,
670
+ "scoring_contract": scoring_contract,
669
671
  },
670
672
  scenario_update_params.ScenarioUpdateParams,
671
673
  ),
@@ -3,7 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from typing import Dict, Optional
6
- from typing_extensions import Required, TypedDict
6
+ from typing_extensions import TypedDict
7
7
 
8
8
  from .input_context_param import InputContextParam
9
9
  from .scoring_contract_param import ScoringContractParam
@@ -13,24 +13,24 @@ __all__ = ["ScenarioUpdateParams"]
13
13
 
14
14
 
15
15
  class ScenarioUpdateParams(TypedDict, total=False):
16
- input_context: Required[InputContextParam]
17
- """The input context for the Scenario."""
18
-
19
- name: Required[str]
20
- """Name of the scenario."""
21
-
22
- scoring_contract: Required[ScoringContractParam]
23
- """The scoring contract for the Scenario."""
24
-
25
16
  environment_parameters: Optional[ScenarioEnvironmentParam]
26
17
  """The Environment in which the Scenario will run."""
27
18
 
19
+ input_context: Optional[InputContextParam]
20
+ """The input context for the Scenario."""
21
+
28
22
  metadata: Optional[Dict[str, str]]
29
23
  """User defined metadata to attach to the scenario for organization."""
30
24
 
25
+ name: Optional[str]
26
+ """Name of the scenario."""
27
+
31
28
  reference_output: Optional[str]
32
29
  """A string representation of the reference output to solve the scenario.
33
30
 
34
31
  Commonly can be the result of a git diff or a sequence of command actions to
35
32
  apply to the environment.
36
33
  """
34
+
35
+ scoring_contract: Optional[ScoringContractParam]
36
+ """The scoring contract for the Scenario."""
@@ -216,7 +216,9 @@ class TestRuns:
216
216
 
217
217
 
218
218
  class TestAsyncRuns:
219
- parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
219
+ parametrize = pytest.mark.parametrize(
220
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
221
+ )
220
222
 
221
223
  @parametrize
222
224
  async def test_method_retrieve(self, async_client: AsyncRunloop) -> None:
@@ -89,7 +89,9 @@ class TestBrowsers:
89
89
 
90
90
 
91
91
  class TestAsyncBrowsers:
92
- parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
92
+ parametrize = pytest.mark.parametrize(
93
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
94
+ )
93
95
 
94
96
  @parametrize
95
97
  async def test_method_create(self, async_client: AsyncRunloop) -> None:
@@ -245,7 +245,9 @@ class TestComputers:
245
245
 
246
246
 
247
247
  class TestAsyncComputers:
248
- parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
248
+ parametrize = pytest.mark.parametrize(
249
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
250
+ )
249
251
 
250
252
  @parametrize
251
253
  async def test_method_create(self, async_client: AsyncRunloop) -> None:
@@ -182,7 +182,9 @@ class TestDiskSnapshots:
182
182
 
183
183
 
184
184
  class TestAsyncDiskSnapshots:
185
- parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
185
+ parametrize = pytest.mark.parametrize(
186
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
187
+ )
186
188
 
187
189
  @parametrize
188
190
  async def test_method_update(self, async_client: AsyncRunloop) -> None:
@@ -226,7 +226,9 @@ class TestExecutions:
226
226
 
227
227
 
228
228
  class TestAsyncExecutions:
229
- parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
229
+ parametrize = pytest.mark.parametrize(
230
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
231
+ )
230
232
 
231
233
  @parametrize
232
234
  async def test_method_retrieve(self, async_client: AsyncRunloop) -> None:
@@ -66,7 +66,9 @@ class TestLogs:
66
66
 
67
67
 
68
68
  class TestAsyncLogs:
69
- parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
69
+ parametrize = pytest.mark.parametrize(
70
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
71
+ )
70
72
 
71
73
  @parametrize
72
74
  async def test_method_list(self, async_client: AsyncRunloop) -> None:
@@ -822,7 +822,9 @@ class TestLsp:
822
822
 
823
823
 
824
824
  class TestAsyncLsp:
825
- parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
825
+ parametrize = pytest.mark.parametrize(
826
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
827
+ )
826
828
 
827
829
  @parametrize
828
830
  async def test_method_apply_code_action(self, async_client: AsyncRunloop) -> None:
@@ -206,7 +206,9 @@ class TestRuns:
206
206
 
207
207
 
208
208
  class TestAsyncRuns:
209
- parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
209
+ parametrize = pytest.mark.parametrize(
210
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
211
+ )
210
212
 
211
213
  @parametrize
212
214
  async def test_method_retrieve(self, async_client: AsyncRunloop) -> None: