openrunner-sdk 2.37.24__tar.gz → 2.37.26__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 (186) hide show
  1. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/PKG-INFO +1 -1
  2. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/__init__.py +1 -1
  3. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/cli.py +28 -8
  4. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/install_commands.py +9 -8
  5. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/pyproject.toml +1 -1
  6. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/.gitignore +0 -0
  7. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/=6.0 +0 -0
  8. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/=8.1 +0 -0
  9. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/README.md +0 -0
  10. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/CLAUDE.md +0 -0
  11. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/_safepath.py +0 -0
  12. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/_secret_rules.py +0 -0
  13. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/api_client.py +0 -0
  14. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/artifact.py +0 -0
  15. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/autoresearch.py +0 -0
  16. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/buffer.py +0 -0
  17. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/cache.py +0 -0
  18. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/config.py +0 -0
  19. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/cost.py +0 -0
  20. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/dataset.py +0 -0
  21. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/datasets.py +0 -0
  22. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/environment.py +0 -0
  23. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/evaluation.py +0 -0
  24. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/feedback.py +0 -0
  25. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/git_info.py +0 -0
  26. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/__init__.py +0 -0
  27. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/api_integration.py +0 -0
  28. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/cost_guard.py +0 -0
  29. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/gpu_types.py +0 -0
  30. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/price_compare.py +0 -0
  31. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/provider_base.py +0 -0
  32. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/providers/__init__.py +0 -0
  33. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/providers/lambda_cloud.py +0 -0
  34. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/providers/modal_provider.py +0 -0
  35. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/providers/ovhcloud.py +0 -0
  36. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/providers/runpod.py +0 -0
  37. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/providers/vastai.py +0 -0
  38. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/runner.py +0 -0
  39. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/gpu/workspace_sync.py +0 -0
  40. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/guardrails.py +0 -0
  41. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/handover.py +0 -0
  42. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/hooks/patent-lab-post-commit +0 -0
  43. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/__init__.py +0 -0
  44. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/accelerate.py +0 -0
  45. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/anthropic_tracer.py +0 -0
  46. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/catboost.py +0 -0
  47. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/diffusers.py +0 -0
  48. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/fastai.py +0 -0
  49. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/forced_alignment.py +0 -0
  50. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/gladia.py +0 -0
  51. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/gymnasium.py +0 -0
  52. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/huggingface.py +0 -0
  53. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/hydra.py +0 -0
  54. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/ignite.py +0 -0
  55. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/jax.py +0 -0
  56. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/keras.py +0 -0
  57. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/langchain.py +0 -0
  58. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/lightgbm.py +0 -0
  59. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/lightning.py +0 -0
  60. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/llamaindex.py +0 -0
  61. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/openai_finetune.py +0 -0
  62. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/openai_tracer.py +0 -0
  63. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/optuna.py +0 -0
  64. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/pytorch.py +0 -0
  65. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/sb3.py +0 -0
  66. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/sklearn.py +0 -0
  67. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/skypilot.py +0 -0
  68. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/tensorflow.py +0 -0
  69. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/trl.py +0 -0
  70. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/tts.py +0 -0
  71. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/ultralytics.py +0 -0
  72. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/voice_agent.py +0 -0
  73. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/whisper.py +0 -0
  74. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/integration/xgboost.py +0 -0
  75. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/launch.py +0 -0
  76. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/machine.py +0 -0
  77. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/mcp_server.py +0 -0
  78. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/media.py +0 -0
  79. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/migrate.py +0 -0
  80. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/model.py +0 -0
  81. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/model_card.py +0 -0
  82. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/offline.py +0 -0
  83. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/patent_scan.py +0 -0
  84. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/pii.py +0 -0
  85. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/plot.py +0 -0
  86. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/projects.py +0 -0
  87. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/prompt.py +0 -0
  88. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/query_api.py +0 -0
  89. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/redact.py +0 -0
  90. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/reload.py +0 -0
  91. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/research.py +0 -0
  92. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/research_policy.py +0 -0
  93. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/run.py +0 -0
  94. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/scorers.py +0 -0
  95. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/sender.py +0 -0
  96. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/session.py +0 -0
  97. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/settings.py +0 -0
  98. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/summary.py +0 -0
  99. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/sweep.py +0 -0
  100. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/sync.py +0 -0
  101. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/system_metrics.py +0 -0
  102. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/tensorboard.py +0 -0
  103. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/tools/__init__.py +0 -0
  104. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/tools/patent_report.py +0 -0
  105. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/trace.py +0 -0
  106. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/transcript_formatter.py +0 -0
  107. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/wal.py +0 -0
  108. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/wandb_compat/__init__.py +0 -0
  109. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/wandb_compat/_shim.py +0 -0
  110. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/openrunner/wer.py +0 -0
  111. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/scripts/gen_betterleaks_rules.py +0 -0
  112. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/__init__.py +0 -0
  113. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/conftest.py +0 -0
  114. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-aaa/config.json +0 -0
  115. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-aaa/metadata.json +0 -0
  116. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-aaa/metrics.jsonl +0 -0
  117. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-aaa/summary.json +0 -0
  118. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/model-checkpoint/manifest.json +0 -0
  119. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/model-checkpoint/weights.bin +0 -0
  120. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/sample-image/manifest.json +0 -0
  121. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/sample-image/preview.png +0 -0
  122. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-bbb/config.json +0 -0
  123. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-bbb/metadata.json +0 -0
  124. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-bbb/metrics.jsonl +0 -0
  125. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/fixtures/wandb-export-mini/run-bbb/summary.json +0 -0
  126. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/integration/__init__.py +0 -0
  127. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/integration/conftest.py +0 -0
  128. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/integration/test_artifact_round_trip.py +0 -0
  129. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_alert.py +0 -0
  130. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_aliases.py +0 -0
  131. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_api_client.py +0 -0
  132. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_artifact.py +0 -0
  133. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_buffer.py +0 -0
  134. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_cache.py +0 -0
  135. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_class_scorers.py +0 -0
  136. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_cli.py +0 -0
  137. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_config.py +0 -0
  138. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_evaluation.py +0 -0
  139. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_finish.py +0 -0
  140. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_git_info.py +0 -0
  141. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/__init__.py +0 -0
  142. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/conftest.py +0 -0
  143. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_cost_guard.py +0 -0
  144. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_gpu_types.py +0 -0
  145. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_lambda.py +0 -0
  146. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_modal.py +0 -0
  147. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_ovhcloud.py +0 -0
  148. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_price_compare.py +0 -0
  149. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_provider_base.py +0 -0
  150. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_runner.py +0 -0
  151. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_runpod.py +0 -0
  152. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_sdk_gpu_api.py +0 -0
  153. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_vastai.py +0 -0
  154. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_gpu/test_workspace_sync.py +0 -0
  155. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_init.py +0 -0
  156. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_install_commands.py +0 -0
  157. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_integration_fastai.py +0 -0
  158. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_integration_huggingface.py +0 -0
  159. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_integration_keras.py +0 -0
  160. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_integration_langchain.py +0 -0
  161. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_integration_lightning.py +0 -0
  162. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_integration_pytorch.py +0 -0
  163. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_integration_sklearn.py +0 -0
  164. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_integration_xgboost.py +0 -0
  165. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_launch.py +0 -0
  166. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_log.py +0 -0
  167. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_log_code.py +0 -0
  168. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_mcp_decisions.py +0 -0
  169. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_mcp_monitor.py +0 -0
  170. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_mcp_predictions.py +0 -0
  171. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_media.py +0 -0
  172. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_migrate.py +0 -0
  173. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_offline.py +0 -0
  174. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_offline_sync.py +0 -0
  175. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_pii.py +0 -0
  176. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_plot.py +0 -0
  177. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_query_api.py +0 -0
  178. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_resume.py +0 -0
  179. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_sdk_features.py +0 -0
  180. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_sender.py +0 -0
  181. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_session_sync.py +0 -0
  182. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_summary.py +0 -0
  183. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_sweep.py +0 -0
  184. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_system_metrics.py +0 -0
  185. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_trace.py +0 -0
  186. {openrunner_sdk-2.37.24 → openrunner_sdk-2.37.26}/tests/test_wandb_compat.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openrunner-sdk
3
- Version: 2.37.24
3
+ Version: 2.37.26
4
4
  Summary: OpenRunner SDK - W&B-compatible ML experiment tracking client
5
5
  Project-URL: Homepage, https://github.com/jqueguiner/openrunner
6
6
  Project-URL: Repository, https://github.com/jqueguiner/openrunner
@@ -181,7 +181,7 @@ launch.from_run = _launch_from_run # type: ignore[attr-defined]
181
181
  # openrunner.trace.patch_openai() syntax
182
182
  trace.patch_openai = _patch_openai # type: ignore[attr-defined]
183
183
 
184
- __version__ = "2.37.24"
184
+ __version__ = "2.37.26"
185
185
 
186
186
  logger = logging.getLogger("openrunner")
187
187
 
@@ -5128,7 +5128,8 @@ def runner_rm(runner_id, org) -> None:
5128
5128
  @click.option("--exec", "exec_mode", type=click.Choice(["direct", "docker"]), default="direct", help="direct = run commands in-place (cloud pod, no docker); docker = run job images (box with a docker daemon)")
5129
5129
  @click.option("--sessions/--no-sessions", default=True, help="Include tmux install (interactive sessions)")
5130
5130
  @click.option("--poll", "poll_interval", default=2, type=int)
5131
- def runner_enroll(org, name, labels, gpu, gpu_count, exec_mode, sessions, poll_interval) -> None:
5131
+ @click.option("--cloud-init", "as_cloud_init", is_flag=True, help="Emit a #cloud-config (runcmd) for boot-time self-enroll — paste into OVH Public Cloud userData, AWS user-data, or a GCP startup-script.")
5132
+ def runner_enroll(org, name, labels, gpu, gpu_count, exec_mode, sessions, poll_interval, as_cloud_init) -> None:
5132
5133
  """Mint a runner token + print a paste-anywhere bootstrap command.
5133
5134
 
5134
5135
  Provider-AGNOSTIC: the worker/job/session mechanism works on ANY machine that
@@ -5140,6 +5141,9 @@ def runner_enroll(org, name, labels, gpu, gpu_count, exec_mode, sessions, poll_i
5140
5141
  * Vast.ai -> the instance "On-start script" field.
5141
5142
  * Lambda / a plain VM -> run it once on the box (after your normal boot/SSH).
5142
5143
  * GCP -> startup-script metadata; AWS -> user-data; k8s -> container command.
5144
+ With --cloud-init, emit a #cloud-config instead (paste into OVH Public Cloud
5145
+ "userData" / post-installation script, AWS user-data, or a GCP startup-script)
5146
+ so the box self-enrolls at first boot.
5143
5147
  Then send work with `openrunner jobs submit` / `openrunner session ...`.
5144
5148
  """
5145
5149
  client = _plain_client()
@@ -5166,18 +5170,34 @@ def runner_enroll(org, name, labels, gpu, gpu_count, exec_mode, sessions, poll_i
5166
5170
  "pip install -q -U openrunner-sdk && "
5167
5171
  f"openrunner runner start --exec {exec_mode} --poll {poll_interval}"
5168
5172
  )
5169
- click.echo(f"Registered runner '{name}' [{rec['id']}] on org {org_id}.")
5170
- click.echo("Run this ON the machine (Vast on-start script / Lambda box / VM startup / k8s cmd):\n")
5171
- click.echo(bootstrap)
5172
- click.echo(f"\nThen: openrunner jobs submit --org {org} --runner {rec['id']} -c \"<cmd>\"")
5173
- click.echo(f" openrunner session open s1 --org {org} --runner {rec['id']}")
5174
- click.echo("The token is shown once — it is the runner's credential (not a user key).")
5173
+ click.echo(f"Registered runner '{name}' [{rec['id']}] on org {org_id}.", err=True)
5174
+ if as_cloud_init:
5175
+ # #cloud-config so the box self-enrolls at first boot. pip3/tmux install is
5176
+ # best-effort (apt on Debian/Ubuntu images, incl. OVH Public Cloud Ubuntu).
5177
+ pkgs = "python3-pip" + (" tmux" if sessions else "")
5178
+ cloud_init = (
5179
+ "#cloud-config\n"
5180
+ "package_update: true\n"
5181
+ "packages:\n"
5182
+ f" - {pkgs.replace(' ', chr(10) + ' - ')}\n"
5183
+ "runcmd:\n"
5184
+ f" - [ bash, -lc, \"pip3 install -U openrunner-sdk && "
5185
+ f"OPENRUNNER_RUNNER_TOKEN={token} OPENRUNNER_BASE_URL={base_url} "
5186
+ f"openrunner runner start --exec {exec_mode} --poll {poll_interval}\" ]\n"
5187
+ )
5188
+ click.echo(cloud_init)
5189
+ else:
5190
+ click.echo("Run this ON the machine (Vast on-start script / Lambda box / VM startup / k8s cmd):\n", err=True)
5191
+ click.echo(bootstrap)
5192
+ click.echo(f"\nThen: openrunner jobs submit --org {org} --runner {rec['id']} -c \"<cmd>\"", err=True)
5193
+ click.echo(f" openrunner session open s1 --org {org} --runner {rec['id']}", err=True)
5194
+ click.echo("The token is shown once — it is the runner's credential (not a user key).", err=True)
5175
5195
 
5176
5196
 
5177
5197
  @runner_group.command("launch")
5178
5198
  @click.option("--org", required=True, help="Organization UUID or name/slug")
5179
5199
  @click.option("--name", "-n", required=True, help="Runner name")
5180
- @click.option("--provider", default="runpod", help="Cloud provider (runpod today)")
5200
+ @click.option("--provider", default="runpod", help="Cloud provider with a server-side adapter: runpod, vastai")
5181
5201
  @click.option("--gpu", required=True, help="GPU type, e.g. A100_80GB, H100")
5182
5202
  @click.option("--gpu-count", default=1, type=int)
5183
5203
  @click.option("--labels", "-l", default="", help="Comma-separated labels to target jobs at")
@@ -2895,14 +2895,15 @@ The worker/job/session mechanism works on ANY machine with outbound HTTPS —
2895
2895
  RunPod, Vast.ai, Lambda, a GCP/AWS VM, a k8s pod, a laptop. Only *auto-
2896
2896
  provisioning* is provider-specific.
2897
2897
  - Already registered box? Use its id from `runner ls`.
2898
- - **RunPod (auto-provision)**: `openrunner runner launch --org ORG --name N
2899
- --gpu H100 [--labels a100] [--web]` — registers + boots a pod that self-enrolls
2900
- (installs tmux + SDK, direct-exec). `--web` = browser terminal on `:7681`
2901
- (RunPod proxy URL). RunPod-only today (only server-side provisioning adapter).
2902
- - **Vast.ai / Lambda / any other platform**: `openrunner runner enroll --org ORG
2903
- --name N [--labels ...]` mints the token and PRINTS a paste-anywhere bootstrap
2904
- command. Paste it into Vast's **On-start script**, run it once on a Lambda box /
2905
- VM, a GCP **startup-script**, AWS **user-data**, or a k8s container command. The
2898
+ - **RunPod / Vast.ai (auto-provision)**: `openrunner runner launch --provider
2899
+ runpod|vastai --org ORG --name N --gpu H100 [--labels a100] [--web]` — registers
2900
+ + boots a pod that self-enrolls (installs tmux + SDK, direct-exec). On RunPod
2901
+ `--web` = browser terminal on `:7681` (proxy URL); on Vast the bootstrap runs
2902
+ via the instance onstart. These two have server-side provisioning adapters.
2903
+ - **Lambda / OVH / any other platform**: `openrunner runner enroll --org ORG
2904
+ --name N [--labels ...] [--cloud-init]` mints the token and PRINTS a paste-
2905
+ anywhere bootstrap. Run it once on a Lambda box / VM, or `--cloud-init` for OVH
2906
+ Public Cloud **userData** / AWS **user-data** / GCP **startup-script** / k8s. The
2906
2907
  box then polls like any worker — same jobs + sessions, no SSH. (No provider
2907
2908
  adapter needed; provision the box however you normally do, this just enrolls it.)
2908
2909
  - All of these print the runner **id** you target jobs/sessions at.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openrunner-sdk"
3
- version = "2.37.24"
3
+ version = "2.37.26"
4
4
  description = "OpenRunner SDK - W&B-compatible ML experiment tracking client"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
File without changes
File without changes