openrunner-sdk 2.24.2__tar.gz → 2.37.4__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 (190) hide show
  1. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/.gitignore +4 -0
  2. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/PKG-INFO +1 -1
  3. openrunner_sdk-2.37.4/openrunner/CLAUDE.md +151 -0
  4. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/__init__.py +449 -3
  5. openrunner_sdk-2.37.4/openrunner/_safepath.py +33 -0
  6. openrunner_sdk-2.37.4/openrunner/_secret_rules.py +284 -0
  7. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/api_client.py +280 -10
  8. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/artifact.py +23 -12
  9. openrunner_sdk-2.37.4/openrunner/autoresearch.py +108 -0
  10. openrunner_sdk-2.37.4/openrunner/cache.py +263 -0
  11. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/cli.py +955 -1
  12. openrunner_sdk-2.37.4/openrunner/datasets.py +1011 -0
  13. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/environment.py +66 -28
  14. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/__init__.py +2 -0
  15. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/api_integration.py +23 -0
  16. openrunner_sdk-2.37.4/openrunner/gpu/runner.py +214 -0
  17. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/workspace_sync.py +2 -5
  18. openrunner_sdk-2.37.4/openrunner/handover.py +230 -0
  19. openrunner_sdk-2.37.4/openrunner/install_commands.py +2920 -0
  20. openrunner_sdk-2.37.4/openrunner/machine.py +236 -0
  21. openrunner_sdk-2.37.4/openrunner/mcp_server.py +4176 -0
  22. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/migrate.py +2 -3
  23. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/model.py +12 -2
  24. openrunner_sdk-2.37.4/openrunner/model_card.py +314 -0
  25. openrunner_sdk-2.37.4/openrunner/projects.py +72 -0
  26. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/query_api.py +75 -3
  27. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/redact.py +152 -8
  28. openrunner_sdk-2.37.4/openrunner/reload.py +564 -0
  29. openrunner_sdk-2.37.4/openrunner/research.py +376 -0
  30. openrunner_sdk-2.37.4/openrunner/research_policy.py +200 -0
  31. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/run.py +188 -51
  32. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/session.py +162 -24
  33. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/settings.py +69 -6
  34. openrunner_sdk-2.37.4/openrunner/sync.py +162 -0
  35. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/pyproject.toml +1 -1
  36. openrunner_sdk-2.37.4/scripts/gen_betterleaks_rules.py +175 -0
  37. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_api_client.py +33 -0
  38. openrunner_sdk-2.37.4/tests/test_gpu/test_runner.py +154 -0
  39. openrunner_sdk-2.37.4/tests/test_install_commands.py +35 -0
  40. openrunner_sdk-2.37.4/tests/test_mcp_decisions.py +187 -0
  41. openrunner_sdk-2.37.4/tests/test_mcp_monitor.py +146 -0
  42. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_query_api.py +47 -0
  43. openrunner_sdk-2.37.4/tests/test_session_sync.py +117 -0
  44. openrunner_sdk-2.24.2/openrunner/CLAUDE.md +0 -15
  45. openrunner_sdk-2.24.2/openrunner/cache.py +0 -92
  46. openrunner_sdk-2.24.2/openrunner/install_commands.py +0 -1505
  47. openrunner_sdk-2.24.2/openrunner/mcp_server.py +0 -1986
  48. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/=6.0 +0 -0
  49. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/=8.1 +0 -0
  50. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/README.md +0 -0
  51. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/buffer.py +0 -0
  52. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/config.py +0 -0
  53. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/cost.py +0 -0
  54. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/dataset.py +0 -0
  55. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/evaluation.py +0 -0
  56. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/feedback.py +0 -0
  57. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/git_info.py +0 -0
  58. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/cost_guard.py +0 -0
  59. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/gpu_types.py +0 -0
  60. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/price_compare.py +0 -0
  61. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/provider_base.py +0 -0
  62. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/providers/__init__.py +0 -0
  63. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/providers/lambda_cloud.py +0 -0
  64. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/providers/modal_provider.py +0 -0
  65. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/providers/ovhcloud.py +0 -0
  66. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/providers/runpod.py +0 -0
  67. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/gpu/providers/vastai.py +0 -0
  68. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/guardrails.py +0 -0
  69. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/hooks/patent-lab-post-commit +0 -0
  70. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/__init__.py +0 -0
  71. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/accelerate.py +0 -0
  72. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/anthropic_tracer.py +0 -0
  73. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/catboost.py +0 -0
  74. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/diffusers.py +0 -0
  75. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/fastai.py +0 -0
  76. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/forced_alignment.py +0 -0
  77. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/gladia.py +0 -0
  78. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/gymnasium.py +0 -0
  79. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/huggingface.py +0 -0
  80. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/hydra.py +0 -0
  81. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/ignite.py +0 -0
  82. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/jax.py +0 -0
  83. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/keras.py +0 -0
  84. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/langchain.py +0 -0
  85. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/lightgbm.py +0 -0
  86. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/lightning.py +0 -0
  87. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/llamaindex.py +0 -0
  88. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/openai_finetune.py +0 -0
  89. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/openai_tracer.py +0 -0
  90. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/optuna.py +0 -0
  91. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/pytorch.py +0 -0
  92. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/sb3.py +0 -0
  93. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/sklearn.py +0 -0
  94. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/skypilot.py +0 -0
  95. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/tensorflow.py +0 -0
  96. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/trl.py +0 -0
  97. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/tts.py +0 -0
  98. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/ultralytics.py +0 -0
  99. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/voice_agent.py +0 -0
  100. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/whisper.py +0 -0
  101. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/integration/xgboost.py +0 -0
  102. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/launch.py +0 -0
  103. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/media.py +0 -0
  104. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/offline.py +0 -0
  105. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/patent_scan.py +0 -0
  106. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/pii.py +0 -0
  107. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/plot.py +0 -0
  108. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/prompt.py +0 -0
  109. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/scorers.py +0 -0
  110. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/sender.py +0 -0
  111. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/summary.py +0 -0
  112. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/sweep.py +0 -0
  113. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/system_metrics.py +0 -0
  114. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/tensorboard.py +0 -0
  115. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/tools/__init__.py +0 -0
  116. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/tools/patent_report.py +0 -0
  117. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/trace.py +0 -0
  118. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/transcript_formatter.py +0 -0
  119. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/wal.py +0 -0
  120. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/wandb_compat/__init__.py +0 -0
  121. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/wandb_compat/_shim.py +0 -0
  122. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/openrunner/wer.py +0 -0
  123. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/__init__.py +0 -0
  124. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/conftest.py +0 -0
  125. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-aaa/config.json +0 -0
  126. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-aaa/metadata.json +0 -0
  127. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-aaa/metrics.jsonl +0 -0
  128. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-aaa/summary.json +0 -0
  129. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/model-checkpoint/manifest.json +0 -0
  130. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/model-checkpoint/weights.bin +0 -0
  131. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/sample-image/manifest.json +0 -0
  132. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/sample-image/preview.png +0 -0
  133. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-bbb/config.json +0 -0
  134. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-bbb/metadata.json +0 -0
  135. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-bbb/metrics.jsonl +0 -0
  136. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/fixtures/wandb-export-mini/run-bbb/summary.json +0 -0
  137. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/integration/__init__.py +0 -0
  138. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/integration/conftest.py +0 -0
  139. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/integration/test_artifact_round_trip.py +0 -0
  140. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_alert.py +0 -0
  141. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_aliases.py +0 -0
  142. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_artifact.py +0 -0
  143. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_buffer.py +0 -0
  144. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_cache.py +0 -0
  145. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_class_scorers.py +0 -0
  146. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_cli.py +0 -0
  147. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_config.py +0 -0
  148. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_evaluation.py +0 -0
  149. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_finish.py +0 -0
  150. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_git_info.py +0 -0
  151. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/__init__.py +0 -0
  152. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/conftest.py +0 -0
  153. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/test_cost_guard.py +0 -0
  154. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/test_gpu_types.py +0 -0
  155. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/test_lambda.py +0 -0
  156. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/test_modal.py +0 -0
  157. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/test_ovhcloud.py +0 -0
  158. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/test_price_compare.py +0 -0
  159. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/test_provider_base.py +0 -0
  160. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/test_runpod.py +0 -0
  161. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/test_sdk_gpu_api.py +0 -0
  162. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/test_vastai.py +0 -0
  163. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_gpu/test_workspace_sync.py +0 -0
  164. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_init.py +0 -0
  165. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_integration_fastai.py +0 -0
  166. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_integration_huggingface.py +0 -0
  167. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_integration_keras.py +0 -0
  168. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_integration_langchain.py +0 -0
  169. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_integration_lightning.py +0 -0
  170. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_integration_pytorch.py +0 -0
  171. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_integration_sklearn.py +0 -0
  172. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_integration_xgboost.py +0 -0
  173. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_launch.py +0 -0
  174. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_log.py +0 -0
  175. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_log_code.py +0 -0
  176. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_mcp_predictions.py +0 -0
  177. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_media.py +0 -0
  178. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_migrate.py +0 -0
  179. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_offline.py +0 -0
  180. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_offline_sync.py +0 -0
  181. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_pii.py +0 -0
  182. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_plot.py +0 -0
  183. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_resume.py +0 -0
  184. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_sdk_features.py +0 -0
  185. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_sender.py +0 -0
  186. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_summary.py +0 -0
  187. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_sweep.py +0 -0
  188. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_system_metrics.py +0 -0
  189. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_trace.py +0 -0
  190. {openrunner_sdk-2.24.2 → openrunner_sdk-2.37.4}/tests/test_wandb_compat.py +0 -0
@@ -237,3 +237,7 @@ data/
237
237
  # MkDocs build output
238
238
  /site/
239
239
  .claude/worktrees/
240
+
241
+ # Never commit DB dumps / backups (may contain prod user data)
242
+ *.sql
243
+ backup_*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openrunner-sdk
3
- Version: 2.24.2
3
+ Version: 2.37.4
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
@@ -0,0 +1,151 @@
1
+ # OpenRunner SDK — Datasets (HuggingFace-style)
2
+
3
+ `openrunner.datasets` is a near drop-in replacement for `huggingface_hub` +
4
+ `datasets` for **org-level, reference-only** datasets (metadata, tags, card,
5
+ optional small preview — no full content stored). `repo_id` is `"org/name"`.
6
+
7
+ ```python
8
+ from openrunner import datasets as ord
9
+
10
+ ord.create_dataset("gladia/wmt-en-fr", modality="Text", tasks=["translation"],
11
+ languages=["en", "fr"], num_examples=40_000_000,
12
+ format="parquet", source_uri="hf:wmt/wmt14",
13
+ card="# WMT En-Fr\n...", preview=[{"en": "hi", "fr": "salut"}])
14
+
15
+ ord.list_datasets(org="gladia") # -> [DatasetInfo, ...]
16
+ info = ord.dataset_info("gladia/wmt-en-fr")
17
+ ds = ord.load_dataset("gladia/wmt-en-fr") # HF rows if source is hf:*, else metadata+preview
18
+ ord.set_dataset_card("gladia/wmt-en-fr", md) # update README
19
+ ord.link_run("gladia/wmt-en-fr", run_id) # lineage dataset -> run -> model
20
+ ord.push_dataset("gladia/wmt-en-fr", license="cc-by-4.0") # create-or-update
21
+ ```
22
+
23
+ **ALWAYS link the dataset(s) a run uses** — pass `datasets=` to `init` so every
24
+ run has data lineage (no "no dataset linked" reproducibility gap):
25
+
26
+ ```python
27
+ openrunner.init(project="gladia/age-gender-sentiment-emotion", name="v15",
28
+ datasets=["03822df0-...", "gladia/fleurs"]) # UUID or org/name
29
+ ```
30
+
31
+ (`openrunner.sync_environment(..., link_datasets=[...])` and
32
+ `/openrunner:sync-env --link-dataset ID` do the same when pushing a local env.)
33
+
34
+ `load_dataset` delegates to HF `datasets.load_dataset` when `source_uri` is
35
+ `hf:org/name` and the package is installed; otherwise returns a `LoadedDataset`
36
+ (`.info`, `.rows`, iterable). Facets match the HF Hub: modality, format,
37
+ dataset_type (standard/benchmark/traces), tasks, languages, size.
38
+
39
+ ### Charts & diagrams in cards
40
+ Dataset cards and model cards render markdown with two live graphic blocks —
41
+ use them instead of static tables/images, with REAL data only:
42
+ - ```` ```echarts ```` + a valid ECharts option (JSON) → a live chart
43
+ (line/bar/scatter/pie, and `series.type:"graph"` for node-edge dependency
44
+ graphs). e.g. plot per-subset row counts or eval metrics.
45
+ - ```` ```mermaid ```` → a flowchart / sequence / ER diagram for pipeline or
46
+ schema. Rendered in `securityLevel:"strict"`.
47
+
48
+ ## Managed (governed) uploads
49
+
50
+ Bind a dataset to **one** org storage connection so uploads flow through the API
51
+ — credentials never leave the server, and every file is tracked (who/what/size/
52
+ sha256/content-type). This avoids scattered connections and opaque bucket blobs.
53
+
54
+ ```python
55
+ # bind at create (connection = org storage-connection NAME or UUID)
56
+ ord.create_dataset("gladia/my-text-set", modality="Text", format="parquet",
57
+ connection="ML.text-datasets") # -> source_type="managed"
58
+
59
+ ord.upload_file("gladia/my-text-set", "train.parquet") # one file
60
+ ord.upload_folder("gladia/my-text-set", "./data") # whole tree
61
+ ord.list_files("gladia/my-text-set") # [{path,size_bytes,sha256,content_type,uploaded_by}]
62
+
63
+ # or bind lazily on first upload of an unbound dataset:
64
+ ord.upload_file("gladia/my-text-set", "train.parquet", connection="ML.text-datasets")
65
+ ```
66
+
67
+ CLI: `openrunner datasets create … --connection ML.text-datasets`,
68
+ `openrunner datasets upload org/name FILE_OR_DIR…`, `openrunner datasets files org/name`.
69
+
70
+ Files land under `s3://<bucket>/<conn.prefix>/datasets/<org_id>/<name>/<path>`;
71
+ `source_uri` is set to that prefix and `source_type` becomes `managed`.
72
+
73
+ Uploading does **not** index/embed. To make a managed dataset searchable, build
74
+ a LanceDB index (written to the same connection) — opt-in:
75
+
76
+ ```python
77
+ ord.index_dataset("gladia/my-text-set", text_columns=["en", "fr"]) # FTS, no external svc
78
+ ord.search_dataset("gladia/my-text-set", "translation", limit=10)
79
+ ord.index_dataset("gladia/my-text-set", embed=True) # + vectors, only if a server embedder is set
80
+ ```
81
+
82
+ CLI: `openrunner datasets index org/name --text-col en --text-col fr`,
83
+ `openrunner datasets search org/name "translation"`. FTS indexes a single
84
+ combined `_text` column so one query spans all text fields; preview/search read
85
+ the LanceDB table on the dataset's own connection.
86
+
87
+ # OpenRunner MCP Integration
88
+
89
+ When the user publishes a MODEL, or asks to write/update a model card:
90
+ - FIRST call `mcp__openrunner__openrunner_model_card_standard` (pass `model_type`/`task`)
91
+ to get the rules + a fill-in template. Follow it exactly.
92
+ - Ground every number in REAL data — read run `summary` (metrics live there),
93
+ `config`, environment, the project's AI sessions and repo reports. NEVER
94
+ fabricate a number; flag unknowns as `must benchmark`. Label each figure
95
+ `(ours, measured, <protocol>)` or as an external published reference.
96
+ - Write the card with `mcp__openrunner__openrunner_set_model_card` (it validates
97
+ against the standard and returns non-blocking warnings). It only ever PATCHes
98
+ `card_markdown` — never touch other fields/runs/weights.
99
+ - From the SDK: `openrunner.set_model_card(name, md)` / `openrunner.get_model_card(name)`,
100
+ `openrunner.MODEL_CARD_STANDARD`, `openrunner.model_card_template()`,
101
+ `openrunner.validate_model_card(md)`. CLI: `openrunner upload-artifact ... --card card.md`.
102
+ Call `log_artifact`/`link_artifact` EXACTLY ONCE per version (a second call
103
+ duplicates the version).
104
+
105
+ When the user says a model is "done", wants to hand it over / ship / deploy it, or
106
+ asks how to make a model ready for product (the ML / inference / foundations teams):
107
+ - FIRST call `mcp__openrunner__openrunner_handover_standard` (pass `model_name`) to
108
+ get the Gladia Model Handover Standard: 13 mandatory deliverables, Definition of
109
+ Done, enablement session, ownership transfer, maturity tags POC/BETA/PROD-READY.
110
+ - "It's done" != "ready for product". Ownership only transfers when the receiving
111
+ team can operate, modify, retrain and deploy WITHOUT the author.
112
+ - Assess each deliverable against REAL artifacts/runs; fill gaps (model card via
113
+ `openrunner_model_card_standard`, benchmarks vs Solaria baselines, license
114
+ analysis, repro script, ops/COGS, known gaps with owner+ETA).
115
+ - Validate with `mcp__openrunner__openrunner_validate_handover` (pass a `status`
116
+ map + `maturity`). Never call a model PROD-READY while a BLOCKING gap is open.
117
+ - SDK: `openrunner.HANDOVER_STANDARD`, `handover_ticket_template(name)`,
118
+ `validate_handover(status, maturity=...)`. CLI: `openrunner handover standard|ticket|check`.
119
+ Slash command: `/openrunner:handover`.
120
+
121
+ When the user asks about training metrics, loss charts, run data, or experiment results:
122
+ - Use `mcp__openrunner__openrunner_watch_run` to show ASCII sparkline charts
123
+ - Use `mcp__openrunner__openrunner_get_run_metrics` for raw metrics
124
+ - Use `mcp__openrunner__openrunner_list_runs` to find runs
125
+ - Use `mcp__openrunner__openrunner_search_sessions` to search AI session history
126
+
127
+ Do NOT parse log files or grep for metrics when OpenRunner MCP tools are available.
128
+
129
+ When the user asks to monitor a training, diagnose loss curves, or get training
130
+ advice (diverging, overfitting, plateau, NaN loss, LR tuning):
131
+ - Use `mcp__openrunner__openrunner_monitor_training` for a health verdict
132
+ (HEALTHY / IMPROVING / PLATEAUED / OVERFITTING / UNSTABLE / DIVERGING) plus
133
+ per-metric trend, plateau, instability and overfitting signals.
134
+ - Run `/openrunner:training-recommendations [run_id]` for actionable fixes.
135
+
136
+ When the user makes or describes a deliberate decision (changing a param,
137
+ switching strategy, picking an architecture, a data/process/tooling choice):
138
+ - Use `mcp__openrunner__openrunner_log_decision` to document it (context,
139
+ rationale, alternatives; `source_runs` for the run(s) it was decided from,
140
+ `param`/`old_value`/`new_value` for a param change, optional `markdown` body
141
+ + `attachment_url` PDF).
142
+ - Use `mcp__openrunner__openrunner_set_decision_runs` to attach resulting runs.
143
+ - Use `mcp__openrunner__openrunner_list_decisions` to review the decision log.
144
+ - Run `/openrunner:log-decision` for a guided capture.
145
+ - Decisions render to HTML/PDF: `GET /projects/{id}/decisions/{id}/render?format=pdf`.
146
+
147
+ When the user asks about papers, research, or sessions:
148
+ - Use `mcp__openrunner__openrunner_search_papers` for paper content
149
+ - Use `mcp__openrunner__openrunner_search_research` for research plans
150
+ - Use `mcp__openrunner__openrunner_search_sessions` for AI session history
151
+ - Use `mcp__openrunner__openrunner_update_paper` to modify paper sections