runloop-api-client 1.1.0__tar.gz → 1.3.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 (384) hide show
  1. runloop_api_client-1.3.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/CHANGELOG.md +77 -0
  3. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/LICENSE +1 -1
  4. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/PKG-INFO +8 -5
  5. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/README-SDK.md +19 -27
  6. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/README.md +4 -3
  7. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/api.md +45 -17
  8. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/pyproject.toml +13 -44
  9. runloop_api_client-1.3.0/requirements-dev.lock +125 -0
  10. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_base_client.py +143 -14
  11. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_client.py +87 -2
  12. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_models.py +16 -1
  13. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_streaming.py +32 -32
  14. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_types.py +12 -2
  15. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_version.py +1 -1
  16. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/pagination.py +75 -0
  17. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/__init__.py +28 -0
  18. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/agents.py +18 -2
  19. runloop_api_client-1.1.0/src/runloop_api_client/resources/benchmarks/runs.py → runloop_api_client-1.3.0/src/runloop_api_client/resources/benchmark_runs.py +79 -71
  20. {runloop_api_client-1.1.0/src/runloop_api_client/resources/benchmarks → runloop_api_client-1.3.0/src/runloop_api_client/resources}/benchmarks.py +183 -80
  21. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/blueprints.py +66 -8
  22. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/devboxes/devboxes.py +14 -14
  23. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +2 -2
  24. runloop_api_client-1.3.0/src/runloop_api_client/resources/network_policies.py +680 -0
  25. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/objects.py +4 -4
  26. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/repositories.py +2 -2
  27. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/scenarios/runs.py +26 -2
  28. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/scenarios/scenarios.py +34 -24
  29. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/scenarios/scorers.py +2 -2
  30. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/secrets.py +2 -2
  31. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/__init__.py +36 -1
  32. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/_types.py +90 -19
  33. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/agent.py +4 -6
  34. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/async_.py +151 -30
  35. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/async_agent.py +0 -6
  36. runloop_api_client-1.3.0/src/runloop_api_client/sdk/async_benchmark.py +169 -0
  37. runloop_api_client-1.3.0/src/runloop_api_client/sdk/async_benchmark_run.py +127 -0
  38. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/async_devbox.py +22 -4
  39. runloop_api_client-1.3.0/src/runloop_api_client/sdk/async_network_policy.py +80 -0
  40. runloop_api_client-1.3.0/src/runloop_api_client/sdk/async_scenario_builder.py +480 -0
  41. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/async_scorer.py +1 -1
  42. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/async_storage_object.py +2 -2
  43. runloop_api_client-1.3.0/src/runloop_api_client/sdk/benchmark.py +167 -0
  44. runloop_api_client-1.3.0/src/runloop_api_client/sdk/benchmark_run.py +127 -0
  45. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/devbox.py +20 -7
  46. runloop_api_client-1.3.0/src/runloop_api_client/sdk/network_policy.py +80 -0
  47. runloop_api_client-1.3.0/src/runloop_api_client/sdk/scenario_builder.py +480 -0
  48. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/scorer.py +1 -1
  49. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/storage_object.py +2 -2
  50. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/sync.py +158 -33
  51. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/__init__.py +12 -2
  52. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/agent_create_params.py +3 -0
  53. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/agent_list_params.py +4 -1
  54. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/agent_list_view.py +2 -0
  55. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/agent_view.py +5 -0
  56. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/benchmark_create_params.py +3 -3
  57. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/benchmark_definitions_params.py +1 -1
  58. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/benchmark_list_params.py +4 -1
  59. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/benchmark_list_public_params.py +1 -1
  60. runloop_api_client-1.1.0/src/runloop_api_client/types/benchmarks/run_list_params.py → runloop_api_client-1.3.0/src/runloop_api_client/types/benchmark_run_list_params.py +6 -3
  61. runloop_api_client-1.1.0/src/runloop_api_client/types/benchmarks/run_list_scenario_runs_params.py → runloop_api_client-1.3.0/src/runloop_api_client/types/benchmark_run_list_scenario_runs_params.py +3 -3
  62. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/benchmark_run_view.py +10 -3
  63. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/benchmark_start_run_params.py +8 -4
  64. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/benchmark_update_params.py +13 -11
  65. runloop_api_client-1.3.0/src/runloop_api_client/types/benchmark_update_scenarios_params.py +18 -0
  66. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/benchmark_view.py +4 -0
  67. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/blueprint_build_parameters.py +13 -0
  68. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/blueprint_create_from_inspection_params.py +6 -0
  69. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/blueprint_create_params.py +13 -0
  70. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/blueprint_list_params.py +4 -1
  71. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/blueprint_list_public_params.py +4 -1
  72. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/blueprint_preview_params.py +13 -0
  73. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/blueprint_view.py +7 -0
  74. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +3 -0
  75. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_execute_params.py +2 -2
  76. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +1 -1
  77. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_list_params.py +1 -1
  78. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_view.py +6 -1
  79. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_wait_for_command_params.py +2 -2
  80. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/browser_view.py +4 -0
  81. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +2 -0
  82. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +5 -0
  83. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/computer_view.py +4 -0
  84. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +1 -1
  85. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/input_context.py +4 -0
  86. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/input_context_param.py +4 -0
  87. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/inspection_source_param.py +2 -0
  88. runloop_api_client-1.3.0/src/runloop_api_client/types/network_policy_create_params.py +40 -0
  89. runloop_api_client-1.3.0/src/runloop_api_client/types/network_policy_list_params.py +21 -0
  90. runloop_api_client-1.3.0/src/runloop_api_client/types/network_policy_list_view.py +21 -0
  91. runloop_api_client-1.3.0/src/runloop_api_client/types/network_policy_update_params.py +30 -0
  92. runloop_api_client-1.3.0/src/runloop_api_client/types/network_policy_view.py +52 -0
  93. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/object_download_url_view.py +2 -0
  94. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/object_list_params.py +1 -1
  95. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/object_list_public_params.py +1 -1
  96. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/object_list_view.py +2 -0
  97. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/object_view.py +2 -0
  98. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/repository_connection_view.py +2 -0
  99. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/repository_inspection_details.py +6 -0
  100. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/repository_list_params.py +1 -1
  101. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/repository_manifest_view.py +16 -0
  102. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenario_environment.py +4 -0
  103. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenario_environment_param.py +4 -0
  104. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenario_list_params.py +4 -1
  105. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenario_list_public_params.py +1 -1
  106. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenario_run_view.py +5 -0
  107. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenario_update_params.py +9 -6
  108. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenario_view.py +4 -0
  109. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenarios/run_list_params.py +10 -1
  110. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +2 -0
  111. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +1 -1
  112. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +2 -0
  113. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +2 -0
  114. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +2 -0
  115. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scoring_contract.py +4 -0
  116. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scoring_contract_param.py +4 -0
  117. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scoring_contract_result_view.py +4 -0
  118. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scoring_function.py +22 -0
  119. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scoring_function_param.py +22 -0
  120. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scoring_function_result_view.py +4 -0
  121. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/secret_list_params.py +1 -1
  122. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/secret_list_view.py +2 -0
  123. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/secret_view.py +4 -0
  124. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared/__init__.py +2 -2
  125. runloop_api_client-1.1.0/src/runloop_api_client/types/shared/agent_mount_parameters.py → runloop_api_client-1.3.0/src/runloop_api_client/types/shared/agent_mount.py +2 -2
  126. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared/agent_source.py +10 -6
  127. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -3
  128. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared/launch_parameters.py +17 -1
  129. runloop_api_client-1.3.0/src/runloop_api_client/types/shared/mount.py +43 -0
  130. runloop_api_client-1.1.0/src/runloop_api_client/types/shared/object_mount_parameters.py → runloop_api_client-1.3.0/src/runloop_api_client/types/shared/object_mount.py +2 -2
  131. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared_params/__init__.py +2 -2
  132. runloop_api_client-1.1.0/src/runloop_api_client/types/shared_params/agent_mount_parameters.py → runloop_api_client-1.3.0/src/runloop_api_client/types/shared_params/agent_mount.py +2 -2
  133. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared_params/agent_source.py +10 -6
  134. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +1 -3
  135. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +17 -1
  136. runloop_api_client-1.3.0/src/runloop_api_client/types/shared_params/mount.py +43 -0
  137. runloop_api_client-1.1.0/src/runloop_api_client/types/shared_params/object_mount_parameters.py → runloop_api_client-1.3.0/src/runloop_api_client/types/shared_params/object_mount.py +2 -2
  138. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/scenarios/test_runs.py +6 -0
  139. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/scenarios/test_scorers.py +2 -0
  140. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/test_agents.py +10 -4
  141. runloop_api_client-1.1.0/tests/api_resources/benchmarks/test_runs.py → runloop_api_client-1.3.0/tests/api_resources/test_benchmark_runs.py +104 -99
  142. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/test_benchmarks.py +100 -10
  143. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/test_blueprints.py +16 -4
  144. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/test_devboxes.py +2 -2
  145. runloop_api_client-1.3.0/tests/api_resources/test_network_policies.py +433 -0
  146. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/test_scenarios.py +8 -0
  147. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/async_devbox/test_core.py +62 -31
  148. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/async_devbox/test_edge_cases.py +1 -1
  149. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/async_devbox/test_interfaces.py +19 -19
  150. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/async_devbox/test_streaming.py +10 -10
  151. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/conftest.py +97 -18
  152. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/devbox/test_core.py +59 -33
  153. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/devbox/test_edge_cases.py +11 -11
  154. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/devbox/test_interfaces.py +37 -37
  155. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/devbox/test_streaming.py +12 -12
  156. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_agent.py +6 -6
  157. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_async_agent.py +6 -6
  158. runloop_api_client-1.3.0/tests/sdk/test_async_benchmark.py +130 -0
  159. runloop_api_client-1.3.0/tests/sdk/test_async_benchmark_run.py +120 -0
  160. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_async_blueprint.py +9 -9
  161. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_async_execution.py +39 -38
  162. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_async_execution_result.py +51 -51
  163. runloop_api_client-1.3.0/tests/sdk/test_async_network_policy.py +90 -0
  164. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_async_ops.py +219 -67
  165. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_async_scenario.py +4 -4
  166. runloop_api_client-1.3.0/tests/sdk/test_async_scenario_builder.py +292 -0
  167. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_async_scenario_run.py +29 -29
  168. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_async_scorer.py +8 -8
  169. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_async_snapshot.py +11 -11
  170. runloop_api_client-1.3.0/tests/sdk/test_benchmark.py +122 -0
  171. runloop_api_client-1.3.0/tests/sdk/test_benchmark_run.py +114 -0
  172. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_blueprint.py +13 -13
  173. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_execution.py +39 -38
  174. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_execution_result.py +51 -51
  175. runloop_api_client-1.3.0/tests/sdk/test_network_policy.py +106 -0
  176. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_ops.py +225 -73
  177. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_scenario.py +4 -4
  178. runloop_api_client-1.3.0/tests/sdk/test_scenario_builder.py +287 -0
  179. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_scenario_run.py +29 -29
  180. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_scorer.py +11 -11
  181. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_snapshot.py +16 -16
  182. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/conftest.py +7 -7
  183. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_agent.py +17 -4
  184. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_async_agent.py +11 -4
  185. runloop_api_client-1.3.0/tests/smoketests/sdk/test_async_benchmark.py +192 -0
  186. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_async_blueprint.py +10 -10
  187. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_async_devbox.py +45 -8
  188. runloop_api_client-1.3.0/tests/smoketests/sdk/test_async_network_policy.py +210 -0
  189. runloop_api_client-1.3.0/tests/smoketests/sdk/test_async_scenario.py +260 -0
  190. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_async_sdk.py +4 -1
  191. runloop_api_client-1.3.0/tests/smoketests/sdk/test_benchmark.py +190 -0
  192. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_blueprint.py +10 -10
  193. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_devbox.py +40 -3
  194. runloop_api_client-1.3.0/tests/smoketests/sdk/test_network_policy.py +210 -0
  195. runloop_api_client-1.3.0/tests/smoketests/sdk/test_scenario.py +259 -0
  196. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_sdk.py +4 -1
  197. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/test_snapshots.py +1 -1
  198. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_client.py +185 -2
  199. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/uv.lock +470 -404
  200. runloop_api_client-1.1.0/.release-please-manifest.json +0 -3
  201. runloop_api_client-1.1.0/requirements-dev.lock +0 -94
  202. runloop_api_client-1.1.0/src/runloop_api_client/resources/benchmarks/__init__.py +0 -33
  203. runloop_api_client-1.1.0/src/runloop_api_client/types/benchmarks/__init__.py +0 -6
  204. runloop_api_client-1.1.0/src/runloop_api_client/types/shared/mount.py +0 -28
  205. runloop_api_client-1.1.0/src/runloop_api_client/types/shared_params/mount.py +0 -25
  206. runloop_api_client-1.1.0/tests/api_resources/scenarios/__init__.py +0 -1
  207. runloop_api_client-1.1.0/tests/smoketests/sdk/test_async_scenario.py +0 -126
  208. runloop_api_client-1.1.0/tests/smoketests/sdk/test_scenario.py +0 -126
  209. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/.gitignore +0 -0
  210. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/CONTRIBUTING.md +0 -0
  211. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/SECURITY.md +0 -0
  212. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/bin/check-release-environment +0 -0
  213. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/bin/publish-pypi +0 -0
  214. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/examples/.keep +0 -0
  215. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/release-please-config.json +0 -0
  216. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop/lib/.keep +0 -0
  217. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/__init__.py +0 -0
  218. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_compat.py +0 -0
  219. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_constants.py +0 -0
  220. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_exceptions.py +0 -0
  221. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_files.py +0 -0
  222. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_qs.py +0 -0
  223. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_resource.py +0 -0
  224. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_response.py +0 -0
  225. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  226. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_compat.py +0 -0
  227. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_datetime_parse.py +0 -0
  228. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  229. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  230. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  231. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
  232. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  233. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  234. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  235. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  236. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  237. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/_utils/_validation.py +0 -0
  238. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/lib/.keep +0 -0
  239. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/lib/__init__.py +0 -0
  240. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/lib/_ignore.py +0 -0
  241. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/lib/context_loader.py +0 -0
  242. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/lib/polling.py +0 -0
  243. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  244. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/py.typed +0 -0
  245. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  246. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  247. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  248. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  249. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  250. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  251. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/_helpers.py +0 -0
  252. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/async_blueprint.py +0 -0
  253. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/async_execution.py +0 -0
  254. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/async_execution_result.py +0 -0
  255. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/async_scenario.py +0 -0
  256. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/async_scenario_run.py +0 -0
  257. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/async_snapshot.py +0 -0
  258. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/blueprint.py +0 -0
  259. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/execution.py +0 -0
  260. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/execution_result.py +0 -0
  261. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/scenario.py +0 -0
  262. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/scenario_run.py +0 -0
  263. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/sdk/snapshot.py +0 -0
  264. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  265. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  266. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  267. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  268. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  269. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  270. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  271. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  272. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  273. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  274. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  275. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  276. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  277. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  278. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  279. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  280. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_send_std_in_result.py +0 -0
  281. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
  282. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  283. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  284. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  285. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  286. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  287. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  288. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  289. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  290. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  291. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  292. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  293. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  294. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  295. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  296. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  297. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
  298. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  299. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  300. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  301. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/execution_kill_params.py +0 -0
  302. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  303. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/execution_send_std_in_params.py +0 -0
  304. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/execution_stream_stderr_updates_params.py +0 -0
  305. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/execution_stream_stdout_updates_params.py +0 -0
  306. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/execution_update_chunk.py +0 -0
  307. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  308. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/input_context_update_param.py +0 -0
  309. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/object_create_params.py +0 -0
  310. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/object_download_params.py +0 -0
  311. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  312. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  313. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/repository_inspect_params.py +0 -0
  314. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
  315. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
  316. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  317. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
  318. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  319. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  320. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  321. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  322. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  323. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
  324. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
  325. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
  326. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
  327. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
  328. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  329. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared/run_profile.py +0 -0
  330. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  331. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/src/runloop_api_client/types/shared_params/run_profile.py +0 -0
  332. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/__init__.py +0 -0
  333. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/__init__.py +0 -0
  334. {runloop_api_client-1.1.0/tests/api_resources/benchmarks → runloop_api_client-1.3.0/tests/api_resources/devboxes}/__init__.py +0 -0
  335. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
  336. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/devboxes/test_computers.py +0 -0
  337. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
  338. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  339. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  340. {runloop_api_client-1.1.0/tests/api_resources/devboxes → runloop_api_client-1.3.0/tests/api_resources/scenarios}/__init__.py +0 -0
  341. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/test_objects.py +0 -0
  342. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/test_repositories.py +0 -0
  343. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/api_resources/test_secrets.py +0 -0
  344. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/conftest.py +0 -0
  345. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sample_file.txt +0 -0
  346. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/__init__.py +0 -0
  347. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/async_devbox/__init__.py +0 -0
  348. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/async_devbox/conftest.py +0 -0
  349. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/devbox/__init__.py +0 -0
  350. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/devbox/conftest.py +0 -0
  351. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_async_storage_object.py +0 -0
  352. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_helpers.py +0 -0
  353. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/sdk/test_storage_object.py +0 -0
  354. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/README.md +0 -0
  355. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/__init__.py +0 -0
  356. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/conftest.py +0 -0
  357. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/README.md +0 -0
  358. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/__init__.py +0 -0
  359. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_async_scorer.py +0 -0
  360. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_async_snapshot.py +0 -0
  361. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_async_storage_object.py +0 -0
  362. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_scorer.py +0 -0
  363. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_snapshot.py +0 -0
  364. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/sdk/test_storage_object.py +0 -0
  365. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/test_blueprints.py +0 -0
  366. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/test_devboxes.py +0 -0
  367. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/test_executions.py +0 -0
  368. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/test_scenarios_benchmarks.py +0 -0
  369. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/smoketests/utils.py +0 -0
  370. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_deepcopy.py +0 -0
  371. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_extract_files.py +0 -0
  372. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_files.py +0 -0
  373. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_models.py +0 -0
  374. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_polling.py +0 -0
  375. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_qs.py +0 -0
  376. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_required_args.py +0 -0
  377. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_response.py +0 -0
  378. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_streaming.py +0 -0
  379. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_transform.py +0 -0
  380. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_utils/test_context_loader.py +0 -0
  381. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_utils/test_datetime_parse.py +0 -0
  382. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_utils/test_proxy.py +0 -0
  383. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/test_utils/test_typing.py +0 -0
  384. {runloop_api_client-1.1.0 → runloop_api_client-1.3.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.3.0"
3
+ }
@@ -1,5 +1,82 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.3.0 (2026-01-22)
4
+
5
+ Full Changelog: [v1.3.0-alpha...v1.3.0](https://github.com/runloopai/api-client-python/compare/v1.3.0-alpha...v1.3.0)
6
+
7
+ ### Features
8
+
9
+ * **network-policy:** add network policies ([#720](https://github.com/runloopai/api-client-python/issues/720)) ([9b31116](https://github.com/runloopai/api-client-python/commit/9b311168fcda2554f8ea03c9698c1e284dc1bdba))
10
+ * **benchmarks:** add `update_scenarios` method to benchmarks resource ([71ec221](https://github.com/runloopai/api-client-python/commit/71ec221f1d0cad7aac33c0299d3f8b1aa97d0741))
11
+ * **blueprint:** Set cilium network policy on blueprint build ([#7006](https://github.com/runloopai/api-client-python/issues/7006)) ([95c62ac](https://github.com/runloopai/api-client-python/commit/95c62ac1e2689acdd83cac2dc85f1a639490d982))
12
+ * **client:** add support for binary request streaming ([d6c2200](https://github.com/runloopai/api-client-python/commit/d6c22008f7cd8a6a07055f29bcb4eca4914ec5e0))
13
+ * **devbox:** added stdin streaming endpoint ([83ae56a](https://github.com/runloopai/api-client-python/commit/83ae56a22a9c1d4528719321b9565731532191f2))
14
+ * **devbox:** remove this one ([91854d5](https://github.com/runloopai/api-client-python/commit/91854d5d0db2d89bd0e787c5f56cf84a5ea5a89b))
15
+ * **network-policy:** add network policies to api ([1d98bb1](https://github.com/runloopai/api-client-python/commit/1d98bb1dbcaf428e36cfc099282c71312f838d8a))
16
+ * **scenarios:** add scenario builder to sdk ([#706](https://github.com/runloopai/api-client-python/issues/706)) ([2d41a15](https://github.com/runloopai/api-client-python/commit/2d41a15b4455ed8d7f6a8063cf19b82d51edeef8))
17
+ * **sdk:** add Benchmark and AsyncBenchmark classes ([#714](https://github.com/runloopai/api-client-python/issues/714)) ([8909d8a](https://github.com/runloopai/api-client-python/commit/8909d8aabfc2f1c80ff74b636225b42cac6725ff))
18
+ * **sdk:** add BenchmarkOps and AsyncBenchmarkOps to SDK ([#716](https://github.com/runloopai/api-client-python/issues/716)) ([9b434d9](https://github.com/runloopai/api-client-python/commit/9b434d9bc7ebdcea2b156689403d853a932f0d9e))
19
+ * **sdk:** add BenchmarkRun and AsyncBenchmarkRun classes ([#712](https://github.com/runloopai/api-client-python/issues/712)) ([6aa83e2](https://github.com/runloopai/api-client-python/commit/6aa83e2a6c8a55694435bd2b707340770f0a326a))
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **benchmarks:** `update()` for benchmarks and scenarios replaces all provided fields and does not modify unspecified fields ([#6702](https://github.com/runloopai/api-client-python/issues/6702)) ([cfd04b6](https://github.com/runloopai/api-client-python/commit/cfd04b6e7781534fd0e775e1b00793ad53814a47))
25
+ * **types:** allow pyright to infer TypedDict types within SequenceNotStr ([3241717](https://github.com/runloopai/api-client-python/commit/32417177128b5f5d90b852a5460fe6823198cf9b))
26
+ * use async_to_httpx_files in patch method ([88f8fb9](https://github.com/runloopai/api-client-python/commit/88f8fb92e1d48ff6f95833a7ee1e376bef76e0e1))
27
+
28
+
29
+ ### Chores
30
+
31
+ * fix stainless spec / remove deprecated benchmark/runs ([#7074](https://github.com/runloopai/api-client-python/issues/7074)) ([3ed7d80](https://github.com/runloopai/api-client-python/commit/3ed7d806edc349b4bb4cfb8e0e54b78f272a6d75))
32
+ * fix tests and linting ([#719](https://github.com/runloopai/api-client-python/issues/719)) ([74db814](https://github.com/runloopai/api-client-python/commit/74db81455af44b94896e8adc7a6e24ba71b9e2ef))
33
+ * update network policy create params descriptions ([#7069](https://github.com/runloopai/api-client-python/issues/7069)) ([b151692](https://github.com/runloopai/api-client-python/commit/b15169283ff344c447b203b6bc3589f05c400ea7))
34
+ * remove support for pydantic-v1, pydantic-v2 is now default ([#710](https://github.com/runloopai/api-client-python/issues/710))
35
+ * add documentation url to pypi project page ([#711](https://github.com/runloopai/api-client-python/issues/711)) ([7afb327](https://github.com/runloopai/api-client-python/commit/7afb32731842ebee4f479837959ccac856bd5e85))
36
+ * add missing docstrings ([a198632](https://github.com/runloopai/api-client-python/commit/a198632f6a3936bcf5b5b4f4e6324461c4853893))
37
+ * **devbox:** Remove network policy from devbox view; use launch params instead ([#7025](https://github.com/runloopai/api-client-python/issues/7025)) ([d53af14](https://github.com/runloopai/api-client-python/commit/d53af14f6f55144859c8257d936a115989563b6d))
38
+ * **internal:** add `--fix` argument to lint script ([c381201](https://github.com/runloopai/api-client-python/commit/c381201ca37e7e438413c33e6be521fc43fbc762))
39
+ * **internal:** add missing files argument to base client ([b7065e2](https://github.com/runloopai/api-client-python/commit/b7065e204d00f853bcac75637680dc198346a804))
40
+ * **internal:** codegen related update ([75fecdf](https://github.com/runloopai/api-client-python/commit/75fecdf043eb67baa1bf13dbd9f5fabd7042c3f4))
41
+ * **internal:** update `actions/checkout` version ([7a57030](https://github.com/runloopai/api-client-python/commit/7a570300fe84dbd9e057c606bb0702b1e6ffe419))
42
+ * remove support for pydantic-v1, pydantic-v2 is now default ([#710](https://github.com/runloopai/api-client-python/issues/710)) ([fb3cc3d](https://github.com/runloopai/api-client-python/commit/fb3cc3d354d4279542cd20f44857f2ec28be7082))
43
+
44
+
45
+ ### Documentation
46
+
47
+ * reformat sidebar and index pages to be more transparent, add favicon to browser tab ([#715](https://github.com/runloopai/api-client-python/issues/715)) ([1161b8f](https://github.com/runloopai/api-client-python/commit/1161b8fbe8d78dc572e0310da009e1bcc7dec36f))
48
+
49
+
50
+ ### Refactors
51
+
52
+ * **benchmark:** Deprecate /benchmark/{id}/runs in favor of /benchmark_runs ([#7019](https://github.com/runloopai/api-client-python/issues/7019)) ([793507a](https://github.com/runloopai/api-client-python/commit/793507a2508945d80f670550493773cc89c43752))
53
+
54
+ ## 1.2.0 (2025-12-09)
55
+
56
+ Full Changelog: [v1.1.0...v1.2.0](https://github.com/runloopai/api-client-python/compare/v1.1.0...v1.2.0)
57
+
58
+ ### Features
59
+
60
+ * **devbox:** default to x86 arch ([501de0b](https://github.com/runloopai/api-client-python/commit/501de0bb1d76c836ff9f448513a16155641345ae))
61
+ * **devbox:** return user for createSshKey ([f094bf7](https://github.com/runloopai/api-client-python/commit/f094bf7443a0ca5bab6d47a53b7b14bade3cecd0))
62
+
63
+
64
+ ### Bug Fixes
65
+
66
+ * ensure streams are always closed ([d01aae2](https://github.com/runloopai/api-client-python/commit/d01aae204d8c57ac76646df0e0e1078e64ad9891))
67
+
68
+
69
+ ### Chores
70
+
71
+ * bump required `uv` version ([8ad519f](https://github.com/runloopai/api-client-python/commit/8ad519fd26d389628d157a413a0b0f1f5d435e9e))
72
+ * **deps:** mypy 1.18.1 has a regression, pin to 1.17 ([e56582a](https://github.com/runloopai/api-client-python/commit/e56582a93590445d8e545b6123be0f14db39a8f5))
73
+ * **docs:** use environment variables for authentication in code snippets ([55cf613](https://github.com/runloopai/api-client-python/commit/55cf6131edb8d38144761c5dbbbcf9389093ed7b))
74
+ * **internal:** version bump ([2fa85c6](https://github.com/runloopai/api-client-python/commit/2fa85c6694dc468280eedb28136aadcda4f11801))
75
+ * remove some unnecessary changes to reduce diff from Stainless ([#705](https://github.com/runloopai/api-client-python/issues/705)) ([715c9d0](https://github.com/runloopai/api-client-python/commit/715c9d09f4e874032ee1d4d6c81d80ab6a72ec45))
76
+ * update lockfile ([7e0136d](https://github.com/runloopai/api-client-python/commit/7e0136dfcd62a2843138ae382bd6fedfd881e1b3))
77
+ * update requirements-dev.lock ([#707](https://github.com/runloopai/api-client-python/issues/707)) ([a2d5326](https://github.com/runloopai/api-client-python/commit/a2d5326634cad5afe6c74252d26b01916ed41bcb))
78
+ * update uv.lock ([b9e0729](https://github.com/runloopai/api-client-python/commit/b9e07291745291d16f122dbca5ef513ed134c5dd))
79
+
3
80
  ## 1.1.0 (2025-12-06)
4
81
 
5
82
  Full Changelog: [v1.0.0...v1.1.0](https://github.com/runloopai/api-client-python/compare/v1.0.0...v1.1.0)
@@ -1,4 +1,4 @@
1
- Copyright 2025 runloop
1
+ Copyright 2026 runloop
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
4
 
@@ -1,9 +1,10 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 1.1.0
3
+ Version: 1.3.0
4
4
  Summary: The official Python library for the runloop API
5
5
  Project-URL: Homepage, https://github.com/runloopai/api-client-python
6
6
  Project-URL: Repository, https://github.com/runloopai/api-client-python
7
+ Project-URL: Documentation, https://runloopai.github.io/api-client-python/
7
8
  Author-email: Runloop <support@runloop.ai>
8
9
  License: MIT
9
10
  Classifier: Intended Audience :: Developers
@@ -18,13 +19,14 @@ Classifier: Programming Language :: Python :: 3.10
18
19
  Classifier: Programming Language :: Python :: 3.11
19
20
  Classifier: Programming Language :: Python :: 3.12
20
21
  Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
21
23
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
24
  Classifier: Typing :: Typed
23
25
  Requires-Python: >=3.9
24
26
  Requires-Dist: anyio<5,>=3.5.0
25
27
  Requires-Dist: distro<2,>=1.7.0
26
28
  Requires-Dist: httpx<1,>=0.23.0
27
- Requires-Dist: pydantic<3,>=1.9.0
29
+ Requires-Dist: pydantic<3,>=2.0
28
30
  Requires-Dist: sniffio
29
31
  Requires-Dist: typing-extensions<5,>=4.10
30
32
  Requires-Dist: uuid-utils>=0.11.0
@@ -68,10 +70,10 @@ For a higher-level, Pythonic interface, check out the new [`RunloopSDK`](README-
68
70
  ```python
69
71
  from runloop_api_client import RunloopSDK
70
72
 
71
- sdk = RunloopSDK() # Uses RUNLOOP_API_KEY environment variable by default
73
+ runloop = RunloopSDK() # Uses RUNLOOP_API_KEY environment variable by default
72
74
 
73
75
  # Create a devbox and execute commands with a clean, object-oriented interface
74
- with sdk.devbox.create(name="my-devbox") as devbox:
76
+ with runloop.devbox.create(name="my-devbox") as devbox:
75
77
  result = devbox.cmd.exec("echo 'Hello from Runloop!'")
76
78
  print(result.stdout())
77
79
  ```
@@ -137,6 +139,7 @@ pip install runloop_api_client[aiohttp]
137
139
  Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
138
140
 
139
141
  ```python
142
+ import os
140
143
  import asyncio
141
144
  from runloop_api_client import DefaultAioHttpClient
142
145
  from runloop_api_client import AsyncRunloop
@@ -144,7 +147,7 @@ from runloop_api_client import AsyncRunloop
144
147
 
145
148
  async def main() -> None:
146
149
  async with AsyncRunloop(
147
- bearer_token="My Bearer Token",
150
+ bearer_token=os.environ.get("RUNLOOP_API_KEY"), # This is the default and can be omitted
148
151
  http_client=DefaultAioHttpClient(),
149
152
  ) as client:
150
153
  devbox_view = await client.devboxes.create()
@@ -77,6 +77,7 @@ print(obj.download_as_text())
77
77
  import asyncio
78
78
  from runloop_api_client import AsyncRunloopSDK
79
79
 
80
+
80
81
  async def main():
81
82
  runloop = AsyncRunloopSDK()
82
83
  async with await runloop.devbox.create(name="async-devbox") as devbox:
@@ -88,6 +89,7 @@ async def main():
88
89
 
89
90
  await devbox.cmd.exec("ls", stdout=capture)
90
91
 
92
+
91
93
  asyncio.run(main())
92
94
  ```
93
95
 
@@ -194,7 +196,7 @@ print("Devbox ID:", execution.devbox_id)
194
196
  # Poll for current state
195
197
  state = execution.get_state()
196
198
  print("Status:", state.status) # "running", "completed", etc.
197
- print("Exit code:", state.exit_status) # only set when execution has completed
199
+ print("Exit code:", state.exit_status) # only set when execution has completed
198
200
 
199
201
  # Wait for completion and get results
200
202
  result = execution.result()
@@ -229,7 +231,7 @@ result = execution.result()
229
231
  # Access execution results
230
232
  print("Exit code:", result.exit_code)
231
233
  print("Success:", result.success) # True if exit code is 0
232
- print("Failed:", result.failed) # True if exit code is non-zero
234
+ print("Failed:", result.failed) # True if exit code is non-zero
233
235
 
234
236
  # Get output streams
235
237
  stdout = result.stdout()
@@ -261,6 +263,7 @@ Pass callbacks into `cmd.exec` / `cmd.exec_async` to process logs in real time:
261
263
  def handle_output(line: str) -> None:
262
264
  print("LOG:", line)
263
265
 
266
+
264
267
  result = devbox.cmd.exec(
265
268
  "python train.py",
266
269
  stdout=handle_output,
@@ -278,6 +281,7 @@ def capture(line: str) -> None:
278
281
  # Use thread-safe data structures if needed
279
282
  log_queue.put_nowait(line)
280
283
 
284
+
281
285
  await devbox.cmd.exec(
282
286
  "tail -f /var/log/app.log",
283
287
  stdout=capture,
@@ -299,6 +303,7 @@ print(content)
299
303
 
300
304
  # Upload files
301
305
  from pathlib import Path
306
+
302
307
  devbox.file.upload(
303
308
  path="/home/user/upload.txt",
304
309
  file=Path("local_file.txt"),
@@ -434,15 +439,6 @@ build_ctx_obj = runloop.storage_object.upload_from_bytes(
434
439
  content_type="tgz",
435
440
  )
436
441
 
437
- shared_root = Path("./shared-lib")
438
- shared_tar = build_docker_context_tar(shared_root)
439
-
440
- shared_ctx_obj = runloop.storage_object.upload_from_bytes(
441
- data=shared_tar,
442
- name="shared-lib-context.tar.gz",
443
- content_type="tgz",
444
- )
445
-
446
442
  blueprint_with_context = runloop.blueprint.create(
447
443
  name="my-blueprint-with-context",
448
444
  dockerfile="""\
@@ -453,18 +449,11 @@ WORKDIR /usr/src/app
453
449
  COPY package.json package.json
454
450
  COPY src src
455
451
 
456
- # copy from named context
457
- COPY --from=shared / ./libs
458
-
459
452
  RUN npm install --only=production
460
453
  CMD ["node", "src/app.js"]
461
454
  """,
462
- # Primary build context
455
+ # Build context
463
456
  build_context=build_ctx_obj.as_build_context(),
464
- # Additional named build contexts (for Docker buildx-style usage)
465
- named_build_contexts={
466
- "shared": shared_ctx_obj.as_build_context(),
467
- },
468
457
  )
469
458
 
470
459
  # Or get an existing one
@@ -551,6 +540,7 @@ storage_object.complete()
551
540
 
552
541
  # Upload from file
553
542
  from pathlib import Path
543
+
554
544
  uploaded = runloop.storage_object.upload_from_file(
555
545
  Path("/path/to/file.txt"),
556
546
  name="my-file.txt",
@@ -600,7 +590,7 @@ obj = runloop.storage_object.create(
600
590
  name="data.bin",
601
591
  content_type="binary",
602
592
  )
603
- obj.upload_content(b"\xDE\xAD\xBE\xEF")
593
+ obj.upload_content(b"\xde\xad\xbe\xef")
604
594
  obj.complete()
605
595
  ```
606
596
 
@@ -747,28 +737,30 @@ The async SDK has the same interface as the synchronous version, but all I/O ope
747
737
  import asyncio
748
738
  from runloop_api_client import AsyncRunloopSDK
749
739
 
740
+
750
741
  async def main():
751
742
  runloop = AsyncRunloopSDK()
752
-
743
+
753
744
  # All the same operations, but with await
754
745
  async with await runloop.devbox.create(name="async-devbox") as devbox:
755
746
  result = await devbox.cmd.exec("pwd")
756
747
  print(await result.stdout())
757
-
748
+
758
749
  # Streaming (note: callbacks must be synchronous)
759
750
  def capture(line: str) -> None:
760
751
  print(">>", line)
761
-
752
+
762
753
  await devbox.cmd.exec("ls", stdout=capture)
763
-
754
+
764
755
  # Async file operations
765
756
  await devbox.file.write(path="/tmp/test.txt", contents="Hello")
766
757
  content = await devbox.file.read(path="/tmp/test.txt")
767
-
758
+
768
759
  # Async network operations
769
760
  tunnel = await devbox.net.create_tunnel(port=8080)
770
761
  print("Tunnel URL:", tunnel.url)
771
762
 
763
+
772
764
  asyncio.run(main())
773
765
  ```
774
766
 
@@ -784,7 +776,7 @@ devbox = runloop.devbox.create(
784
776
  name="my-devbox",
785
777
  polling_config=PollingConfig(
786
778
  timeout_seconds=300.0, # Wait up to 5 minutes
787
- interval_seconds=2.0, # Poll every 2 seconds
779
+ interval_seconds=2.0, # Poll every 2 seconds
788
780
  ),
789
781
  )
790
782
 
@@ -792,7 +784,7 @@ devbox = runloop.devbox.create(
792
784
  snapshot.await_completed(
793
785
  polling_config=PollingConfig(
794
786
  timeout_seconds=600.0, # Wait up to 10 minutes
795
- interval_seconds=5.0, # Poll every 5 seconds
787
+ interval_seconds=5.0, # Poll every 5 seconds
796
788
  ),
797
789
  )
798
790
  ```
@@ -33,10 +33,10 @@ For a higher-level, Pythonic interface, check out the new [`RunloopSDK`](README-
33
33
  ```python
34
34
  from runloop_api_client import RunloopSDK
35
35
 
36
- sdk = RunloopSDK() # Uses RUNLOOP_API_KEY environment variable by default
36
+ runloop = RunloopSDK() # Uses RUNLOOP_API_KEY environment variable by default
37
37
 
38
38
  # Create a devbox and execute commands with a clean, object-oriented interface
39
- with sdk.devbox.create(name="my-devbox") as devbox:
39
+ with runloop.devbox.create(name="my-devbox") as devbox:
40
40
  result = devbox.cmd.exec("echo 'Hello from Runloop!'")
41
41
  print(result.stdout())
42
42
  ```
@@ -102,6 +102,7 @@ pip install runloop_api_client[aiohttp]
102
102
  Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
103
103
 
104
104
  ```python
105
+ import os
105
106
  import asyncio
106
107
  from runloop_api_client import DefaultAioHttpClient
107
108
  from runloop_api_client import AsyncRunloop
@@ -109,7 +110,7 @@ from runloop_api_client import AsyncRunloop
109
110
 
110
111
  async def main() -> None:
111
112
  async with AsyncRunloop(
112
- bearer_token="My Bearer Token",
113
+ bearer_token=os.environ.get("RUNLOOP_API_KEY"), # This is the default and can be omitted
113
114
  http_client=DefaultAioHttpClient(),
114
115
  ) as client:
115
116
  devbox_view = await client.devboxes.create()
@@ -3,12 +3,12 @@
3
3
  ```python
4
4
  from runloop_api_client.types import (
5
5
  AfterIdle,
6
- AgentMountParameters,
6
+ AgentMount,
7
7
  AgentSource,
8
8
  CodeMountParameters,
9
9
  LaunchParameters,
10
10
  Mount,
11
- ObjectMountParameters,
11
+ ObjectMount,
12
12
  RunProfile,
13
13
  )
14
14
  ```
@@ -20,8 +20,8 @@ Types:
20
20
  ```python
21
21
  from runloop_api_client.types import (
22
22
  BenchmarkCreateParameters,
23
- BenchmarkRunListView,
24
- BenchmarkRunView,
23
+ BenchmarkScenarioUpdateParameters,
24
+ BenchmarkUpdateParameters,
25
25
  BenchmarkView,
26
26
  ScenarioDefinitionListView,
27
27
  StartBenchmarkRunParameters,
@@ -30,23 +30,30 @@ from runloop_api_client.types import (
30
30
 
31
31
  Methods:
32
32
 
33
- - <code title="post /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">create</a>(\*\*<a href="src/runloop_api_client/types/benchmark_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">BenchmarkView</a></code>
34
- - <code title="get /v1/benchmarks/{id}">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/benchmark_view.py">BenchmarkView</a></code>
35
- - <code title="post /v1/benchmarks/{id}">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/benchmark_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">BenchmarkView</a></code>
36
- - <code title="get /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">list</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">SyncBenchmarksCursorIDPage[BenchmarkView]</a></code>
37
- - <code title="get /v1/benchmarks/{id}/definitions">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">definitions</a>(id, \*\*<a href="src/runloop_api_client/types/benchmark_definitions_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_definition_list_view.py">ScenarioDefinitionListView</a></code>
38
- - <code title="get /v1/benchmarks/list_public">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">SyncBenchmarksCursorIDPage[BenchmarkView]</a></code>
39
- - <code title="post /v1/benchmarks/start_run">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">start_run</a>(\*\*<a href="src/runloop_api_client/types/benchmark_start_run_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">BenchmarkRunView</a></code>
33
+ - <code title="post /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks.py">create</a>(\*\*<a href="src/runloop_api_client/types/benchmark_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">BenchmarkView</a></code>
34
+ - <code title="get /v1/benchmarks/{id}">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/benchmark_view.py">BenchmarkView</a></code>
35
+ - <code title="post /v1/benchmarks/{id}">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/benchmark_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">BenchmarkView</a></code>
36
+ - <code title="get /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks.py">list</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">SyncBenchmarksCursorIDPage[BenchmarkView]</a></code>
37
+ - <code title="get /v1/benchmarks/{id}/definitions">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks.py">definitions</a>(id, \*\*<a href="src/runloop_api_client/types/benchmark_definitions_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_definition_list_view.py">ScenarioDefinitionListView</a></code>
38
+ - <code title="get /v1/benchmarks/list_public">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">SyncBenchmarksCursorIDPage[BenchmarkView]</a></code>
39
+ - <code title="post /v1/benchmarks/start_run">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks.py">start_run</a>(\*\*<a href="src/runloop_api_client/types/benchmark_start_run_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">BenchmarkRunView</a></code>
40
+ - <code title="post /v1/benchmarks/{id}/scenarios">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks.py">update_scenarios</a>(id, \*\*<a href="src/runloop_api_client/types/benchmark_update_scenarios_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_view.py">BenchmarkView</a></code>
40
41
 
41
- ## Runs
42
+ # BenchmarkRuns
43
+
44
+ Types:
45
+
46
+ ```python
47
+ from runloop_api_client.types import BenchmarkRunListView, BenchmarkRunView
48
+ ```
42
49
 
43
50
  Methods:
44
51
 
45
- - <code title="get /v1/benchmarks/runs/{id}">client.benchmarks.runs.<a href="./src/runloop_api_client/resources/benchmarks/runs.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">BenchmarkRunView</a></code>
46
- - <code title="get /v1/benchmarks/runs">client.benchmarks.runs.<a href="./src/runloop_api_client/resources/benchmarks/runs.py">list</a>(\*\*<a href="src/runloop_api_client/types/benchmarks/run_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">SyncBenchmarkRunsCursorIDPage[BenchmarkRunView]</a></code>
47
- - <code title="post /v1/benchmarks/runs/{id}/cancel">client.benchmarks.runs.<a href="./src/runloop_api_client/resources/benchmarks/runs.py">cancel</a>(id) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">BenchmarkRunView</a></code>
48
- - <code title="post /v1/benchmarks/runs/{id}/complete">client.benchmarks.runs.<a href="./src/runloop_api_client/resources/benchmarks/runs.py">complete</a>(id) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">BenchmarkRunView</a></code>
49
- - <code title="get /v1/benchmarks/runs/{id}/scenario_runs">client.benchmarks.runs.<a href="./src/runloop_api_client/resources/benchmarks/runs.py">list_scenario_runs</a>(id, \*\*<a href="src/runloop_api_client/types/benchmarks/run_list_scenario_runs_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">SyncBenchmarkRunsCursorIDPage[ScenarioRunView]</a></code>
52
+ - <code title="get /v1/benchmark_runs/{id}">client.benchmark_runs.<a href="./src/runloop_api_client/resources/benchmark_runs.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">BenchmarkRunView</a></code>
53
+ - <code title="get /v1/benchmark_runs">client.benchmark_runs.<a href="./src/runloop_api_client/resources/benchmark_runs.py">list</a>(\*\*<a href="src/runloop_api_client/types/benchmark_run_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">SyncBenchmarkRunsCursorIDPage[BenchmarkRunView]</a></code>
54
+ - <code title="post /v1/benchmark_runs/{id}/cancel">client.benchmark_runs.<a href="./src/runloop_api_client/resources/benchmark_runs.py">cancel</a>(id) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">BenchmarkRunView</a></code>
55
+ - <code title="post /v1/benchmark_runs/{id}/complete">client.benchmark_runs.<a href="./src/runloop_api_client/resources/benchmark_runs.py">complete</a>(id) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">BenchmarkRunView</a></code>
56
+ - <code title="get /v1/benchmark_runs/{id}/scenario_runs">client.benchmark_runs.<a href="./src/runloop_api_client/resources/benchmark_runs.py">list_scenario_runs</a>(id, \*\*<a href="src/runloop_api_client/types/benchmark_run_list_scenario_runs_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">SyncBenchmarkRunsCursorIDPage[ScenarioRunView]</a></code>
50
57
 
51
58
  # Agents
52
59
 
@@ -351,3 +358,24 @@ Methods:
351
358
  - <code title="post /v1/secrets/{name}">client.secrets.<a href="./src/runloop_api_client/resources/secrets.py">update</a>(name, \*\*<a href="src/runloop_api_client/types/secret_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/secret_view.py">SecretView</a></code>
352
359
  - <code title="get /v1/secrets">client.secrets.<a href="./src/runloop_api_client/resources/secrets.py">list</a>(\*\*<a href="src/runloop_api_client/types/secret_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/secret_list_view.py">SecretListView</a></code>
353
360
  - <code title="post /v1/secrets/{name}/delete">client.secrets.<a href="./src/runloop_api_client/resources/secrets.py">delete</a>(name) -> <a href="./src/runloop_api_client/types/secret_view.py">SecretView</a></code>
361
+
362
+ # NetworkPolicies
363
+
364
+ Types:
365
+
366
+ ```python
367
+ from runloop_api_client.types import (
368
+ NetworkPolicyCreateParameters,
369
+ NetworkPolicyListView,
370
+ NetworkPolicyUpdateParameters,
371
+ NetworkPolicyView,
372
+ )
373
+ ```
374
+
375
+ Methods:
376
+
377
+ - <code title="post /v1/network-policies">client.network_policies.<a href="./src/runloop_api_client/resources/network_policies.py">create</a>(\*\*<a href="src/runloop_api_client/types/network_policy_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/network_policy_view.py">NetworkPolicyView</a></code>
378
+ - <code title="get /v1/network-policies/{id}">client.network_policies.<a href="./src/runloop_api_client/resources/network_policies.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/network_policy_view.py">NetworkPolicyView</a></code>
379
+ - <code title="post /v1/network-policies/{id}">client.network_policies.<a href="./src/runloop_api_client/resources/network_policies.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/network_policy_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/network_policy_view.py">NetworkPolicyView</a></code>
380
+ - <code title="get /v1/network-policies">client.network_policies.<a href="./src/runloop_api_client/resources/network_policies.py">list</a>(\*\*<a href="src/runloop_api_client/types/network_policy_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/network_policy_view.py">SyncNetworkPoliciesCursorIDPage[NetworkPolicyView]</a></code>
381
+ - <code title="post /v1/network-policies/{id}/delete">client.network_policies.<a href="./src/runloop_api_client/resources/network_policies.py">delete</a>(id) -> <a href="./src/runloop_api_client/types/network_policy_view.py">NetworkPolicyView</a></code>
@@ -1,20 +1,21 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "1.1.0"
3
+ version = "1.3.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
7
7
  authors = [
8
8
  { name = "Runloop", email = "support@runloop.ai" },
9
9
  ]
10
+
10
11
  dependencies = [
11
- "httpx>=0.23.0, <1",
12
- "pydantic>=1.9.0, <3",
13
- "typing-extensions>=4.10, <5",
14
- "anyio>=3.5.0, <5",
15
- "distro>=1.7.0, <2",
16
- "sniffio",
17
- "uuid-utils>=0.11.0",
12
+ "httpx>=0.23.0, <1",
13
+ "pydantic>=2.0, <3",
14
+ "typing-extensions>=4.10, <5",
15
+ "anyio>=3.5.0, <5",
16
+ "distro>=1.7.0, <2",
17
+ "sniffio",
18
+ "uuid-utils>=0.11.0",
18
19
  ]
19
20
 
20
21
  requires-python = ">= 3.9"
@@ -26,6 +27,7 @@ classifiers = [
26
27
  "Programming Language :: Python :: 3.11",
27
28
  "Programming Language :: Python :: 3.12",
28
29
  "Programming Language :: Python :: 3.13",
30
+ "Programming Language :: Python :: 3.14",
29
31
  "Operating System :: OS Independent",
30
32
  "Operating System :: POSIX",
31
33
  "Operating System :: MacOS",
@@ -38,19 +40,20 @@ classifiers = [
38
40
  [project.urls]
39
41
  Homepage = "https://github.com/runloopai/api-client-python"
40
42
  Repository = "https://github.com/runloopai/api-client-python"
43
+ Documentation = "https://runloopai.github.io/api-client-python/"
41
44
 
42
45
  [project.optional-dependencies]
43
46
  aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"]
44
47
 
45
48
  [tool.uv]
46
49
  managed = true
47
- required-version = ">=0.5.0"
50
+ required-version = ">=0.9"
48
51
 
49
52
  [dependency-groups]
50
53
  # version pins are in uv.lock
51
54
  dev = [
52
55
  "pyright==1.1.399",
53
- "mypy",
56
+ "mypy==1.17",
54
57
  "respx",
55
58
  "pytest",
56
59
  "pytest-asyncio",
@@ -70,45 +73,11 @@ docs = [
70
73
  "sphinx-autodoc-typehints>=2.3.0",
71
74
  "sphinx-toolbox>=4.0.0",
72
75
  ]
73
- pydantic-v1 = [
74
- "pydantic>=1.9.0, <2",
75
- ]
76
-
77
- [tool.rye.scripts]
78
- format = { chain = [
79
- "format:ruff",
80
- "format:docs",
81
- "fix:ruff",
82
- # run formatting again to fix any inconsistencies when imports are stripped
83
- "format:ruff",
84
- ]}
85
- "format:docs" = "python scripts/utils/ruffen-docs.py README.md api.md"
86
- "format:ruff" = "ruff format"
87
-
88
- "lint" = { chain = [
89
- "check:ruff",
90
- "typecheck",
91
- "check:importable",
92
- ]}
93
- "check:ruff" = "ruff check ."
94
- "fix:ruff" = "ruff check --fix ."
95
-
96
- "check:importable" = "python -c 'import runloop_api_client'"
97
-
98
- typecheck = { chain = [
99
- "typecheck:pyright",
100
- "typecheck:mypy"
101
- ]}
102
-
103
- "typecheck:pyright" = "pyright"
104
- "typecheck:verify-types" = "pyright --verifytypes runloop_api_client --ignoreexternal"
105
- "typecheck:mypy" = "mypy ."
106
76
 
107
77
  [build-system]
108
78
  requires = ["hatchling==1.26.3", "hatch-fancy-pypi-readme"]
109
79
  build-backend = "hatchling.build"
110
80
 
111
-
112
81
  [tool.hatch.build]
113
82
  include = [
114
83
  "src/*"