openrunner-sdk 2.41.5__tar.gz → 2.41.6__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 (227) hide show
  1. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/PKG-INFO +1 -1
  2. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/CLAUDE.md +2 -1
  3. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/__init__.py +1 -0
  4. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/_native.py +2 -2
  5. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/datasets.py +26 -1
  6. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/install_commands.py +3 -3
  7. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/pyproject.toml +1 -1
  8. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_datasets_module.py +39 -0
  9. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/.gitignore +0 -0
  10. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/=6.0 +0 -0
  11. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/=8.1 +0 -0
  12. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/README.md +0 -0
  13. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/_retry_transport.py +0 -0
  14. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/_safepath.py +0 -0
  15. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/_secret_rules.py +0 -0
  16. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/api_client.py +0 -0
  17. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/artifact.py +0 -0
  18. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/autoresearch.py +0 -0
  19. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/buffer.py +0 -0
  20. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/cache.py +0 -0
  21. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/cli.py +0 -0
  22. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/config.py +0 -0
  23. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/cost.py +0 -0
  24. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/dataset.py +0 -0
  25. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/environment.py +0 -0
  26. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/evaluation.py +0 -0
  27. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/feedback.py +0 -0
  28. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/git_info.py +0 -0
  29. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/__init__.py +0 -0
  30. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/api_integration.py +0 -0
  31. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/cost_guard.py +0 -0
  32. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/gpu_types.py +0 -0
  33. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/price_compare.py +0 -0
  34. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/provider_base.py +0 -0
  35. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/providers/__init__.py +0 -0
  36. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/providers/forge_provider.py +0 -0
  37. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/providers/lambda_cloud.py +0 -0
  38. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/providers/modal_provider.py +0 -0
  39. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/providers/ovhcloud.py +0 -0
  40. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/providers/runpod.py +0 -0
  41. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/providers/vastai.py +0 -0
  42. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/runner.py +0 -0
  43. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/gpu/workspace_sync.py +0 -0
  44. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/guardrails.py +0 -0
  45. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/handover.py +0 -0
  46. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/hooks/patent-lab-post-commit +0 -0
  47. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/__init__.py +0 -0
  48. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/accelerate.py +0 -0
  49. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/anthropic_tracer.py +0 -0
  50. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/catboost.py +0 -0
  51. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/diffusers.py +0 -0
  52. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/fastai.py +0 -0
  53. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/forced_alignment.py +0 -0
  54. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/gladia.py +0 -0
  55. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/gymnasium.py +0 -0
  56. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/huggingface.py +0 -0
  57. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/hydra.py +0 -0
  58. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/ignite.py +0 -0
  59. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/jax.py +0 -0
  60. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/keras.py +0 -0
  61. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/langchain.py +0 -0
  62. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/lightgbm.py +0 -0
  63. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/lightning.py +0 -0
  64. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/llamaindex.py +0 -0
  65. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/openai_finetune.py +0 -0
  66. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/openai_tracer.py +0 -0
  67. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/optuna.py +0 -0
  68. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/pytorch.py +0 -0
  69. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/sb3.py +0 -0
  70. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/sklearn.py +0 -0
  71. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/skypilot.py +0 -0
  72. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/tensorflow.py +0 -0
  73. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/trl.py +0 -0
  74. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/tts.py +0 -0
  75. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/ultralytics.py +0 -0
  76. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/voice_agent.py +0 -0
  77. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/whisper.py +0 -0
  78. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/integration/xgboost.py +0 -0
  79. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/launch.py +0 -0
  80. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/machine.py +0 -0
  81. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/mcp_server.py +0 -0
  82. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/media.py +0 -0
  83. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/migrate.py +0 -0
  84. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/model.py +0 -0
  85. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/model_card.py +0 -0
  86. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/offline.py +0 -0
  87. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/patent_scan.py +0 -0
  88. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/pii.py +0 -0
  89. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/plot.py +0 -0
  90. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/projects.py +0 -0
  91. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/prompt.py +0 -0
  92. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/query_api.py +0 -0
  93. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/redact.py +0 -0
  94. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/reload.py +0 -0
  95. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/research.py +0 -0
  96. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/research_policy.py +0 -0
  97. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/run.py +0 -0
  98. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/scorers.py +0 -0
  99. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/sender.py +0 -0
  100. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/session.py +0 -0
  101. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/settings.py +0 -0
  102. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/summary.py +0 -0
  103. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/sweep.py +0 -0
  104. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/sync.py +0 -0
  105. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/system_metrics.py +0 -0
  106. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/tensorboard.py +0 -0
  107. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/tools/__init__.py +0 -0
  108. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/tools/patent_report.py +0 -0
  109. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/trace.py +0 -0
  110. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/transcript_formatter.py +0 -0
  111. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/wal.py +0 -0
  112. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/wandb_compat/__init__.py +0 -0
  113. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/wandb_compat/_shim.py +0 -0
  114. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/openrunner/wer.py +0 -0
  115. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/scripts/gen_betterleaks_rules.py +0 -0
  116. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/__init__.py +0 -0
  117. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/conftest.py +0 -0
  118. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-aaa/config.json +0 -0
  119. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-aaa/metadata.json +0 -0
  120. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-aaa/metrics.jsonl +0 -0
  121. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-aaa/summary.json +0 -0
  122. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/model-checkpoint/manifest.json +0 -0
  123. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/model-checkpoint/weights.bin +0 -0
  124. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/sample-image/manifest.json +0 -0
  125. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/sample-image/preview.png +0 -0
  126. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-bbb/config.json +0 -0
  127. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-bbb/metadata.json +0 -0
  128. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-bbb/metrics.jsonl +0 -0
  129. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/fixtures/wandb-export-mini/run-bbb/summary.json +0 -0
  130. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/integration/__init__.py +0 -0
  131. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/integration/conftest.py +0 -0
  132. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/integration/test_artifact_round_trip.py +0 -0
  133. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_alert.py +0 -0
  134. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_aliases.py +0 -0
  135. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_api_client.py +0 -0
  136. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_api_client_methods.py +0 -0
  137. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_api_client_transport.py +0 -0
  138. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_artifact.py +0 -0
  139. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_buffer.py +0 -0
  140. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_cache.py +0 -0
  141. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_class_scorers.py +0 -0
  142. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_cli.py +0 -0
  143. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_cli_artifact_sweep.py +0 -0
  144. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_cli_datasets.py +0 -0
  145. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_cli_gpu_registry_deploy.py +0 -0
  146. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_cli_infra.py +0 -0
  147. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_cli_remainder.py +0 -0
  148. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_cli_topup.py +0 -0
  149. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_config.py +0 -0
  150. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_evaluation.py +0 -0
  151. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_finish.py +0 -0
  152. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_git_info.py +0 -0
  153. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/__init__.py +0 -0
  154. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/conftest.py +0 -0
  155. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_cost_guard.py +0 -0
  156. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_engine_serverside.py +0 -0
  157. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_forge.py +0 -0
  158. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_governed_jobs.py +0 -0
  159. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_gpu_cluster.py +0 -0
  160. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_gpu_types.py +0 -0
  161. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_lambda.py +0 -0
  162. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_modal.py +0 -0
  163. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_ovh_training.py +0 -0
  164. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_ovhcloud.py +0 -0
  165. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_price_compare.py +0 -0
  166. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_provider_base.py +0 -0
  167. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_runner.py +0 -0
  168. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_runpod.py +0 -0
  169. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_sdk_gpu_api.py +0 -0
  170. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_vastai.py +0 -0
  171. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu/test_workspace_sync.py +0 -0
  172. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_gpu_modal_creds.py +0 -0
  173. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_init.py +0 -0
  174. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_init_facade.py +0 -0
  175. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_install_commands.py +0 -0
  176. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_integration_fastai.py +0 -0
  177. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_integration_huggingface.py +0 -0
  178. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_integration_keras.py +0 -0
  179. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_integration_langchain.py +0 -0
  180. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_integration_lightning.py +0 -0
  181. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_integration_pytorch.py +0 -0
  182. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_integration_setA.py +0 -0
  183. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_integration_setB.py +0 -0
  184. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_integration_setC.py +0 -0
  185. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_integration_sklearn.py +0 -0
  186. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_integration_xgboost.py +0 -0
  187. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_launch.py +0 -0
  188. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_log.py +0 -0
  189. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_log_code.py +0 -0
  190. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_machine_migrate.py +0 -0
  191. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_mcp_decisions.py +0 -0
  192. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_mcp_monitor.py +0 -0
  193. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_mcp_predictions.py +0 -0
  194. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_mcp_server.py +0 -0
  195. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_media.py +0 -0
  196. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_media_extra.py +0 -0
  197. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_migrate.py +0 -0
  198. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_offline.py +0 -0
  199. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_offline_sync.py +0 -0
  200. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_patent_scan.py +0 -0
  201. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_pii.py +0 -0
  202. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_plot.py +0 -0
  203. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_plot_media_extra2.py +0 -0
  204. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_prompt_module.py +0 -0
  205. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_pure_modules.py +0 -0
  206. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_query_api.py +0 -0
  207. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_redact.py +0 -0
  208. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_reload_module.py +0 -0
  209. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_research_module.py +0 -0
  210. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_resume.py +0 -0
  211. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_retry_transport.py +0 -0
  212. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_run_module.py +0 -0
  213. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_sdk_cluster_j1.py +0 -0
  214. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_sdk_cluster_j2.py +0 -0
  215. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_sdk_cluster_j3.py +0 -0
  216. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_sdk_cluster_j4.py +0 -0
  217. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_sdk_core_edges.py +0 -0
  218. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_sdk_features.py +0 -0
  219. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_sender.py +0 -0
  220. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_session_module.py +0 -0
  221. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_session_sync.py +0 -0
  222. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_summary.py +0 -0
  223. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_sweep.py +0 -0
  224. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_system_metrics.py +0 -0
  225. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_topup_hi.py +0 -0
  226. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/tests/test_trace.py +0 -0
  227. {openrunner_sdk-2.41.5 → openrunner_sdk-2.41.6}/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.41.5
3
+ Version: 2.41.6
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
@@ -96,10 +96,11 @@ falling back to pure-Python httpx otherwise:
96
96
  ord.search_dataset(repo, q, mode="mixed"|"exact", lang="fr") # BM25 / phrase, lang filter
97
97
  ord.optimize_embedding_search(repo) # build ANN index (once)
98
98
  ord.semantic_search(repo, q, lang="en,fr") # vector (cosine) search
99
+ ord.regex_search(repo, r"\bcancel(led)?\b", lang="en") # Python-re over the text column (bounded)
99
100
  ord.word_lookup(repo, "medical,doctor", op="union"|"intersect", lang="fr") # lexical_map
100
101
  ord.keyword_expand("medical terms in french", count=300) # LLM -> {keywords, csv, count}
101
102
 
102
- # derive: mode = word (op union/intersect) | fts | exact | semantic; lang filter; append via target_repo_id
103
+ # derive: mode = word (op union/intersect) | fts | exact | regex | semantic; lang filter; append via target_repo_id
103
104
  child = ord.derive_by_query(parent, keywords_csv, name="org/medical-fr",
104
105
  mode="word", lang="fr", limit=5000)
105
106
  ord.derive_by_query(parent, "more,terms", target_repo_id="org/medical-fr", mode="word") # append, de-dup
@@ -107,6 +107,7 @@ from openrunner.datasets import (
107
107
  optimize_embedding_search,
108
108
  push_dataset,
109
109
  search_dataset,
110
+ regex_search,
110
111
  semantic_search,
111
112
  word_lookup,
112
113
  set_dataset_card,
@@ -11,8 +11,8 @@ Covered surface today: projects (incl. linked repo), artifacts/versions,
11
11
  presigned downloads (selective, GIL released during transfers), container
12
12
  registries + broker login tokens, dataset editable-overlay columns
13
13
  (add column / set cell / edit row / get row — source columns stay read-only),
14
- and dataset search + query-derivation (full-text / semantic / word union·intersect,
15
- LLM keyword-expand, derive-by-query + derived rows).
14
+ and dataset search + query-derivation (full-text / semantic / regex / word
15
+ union·intersect, LLM keyword-expand, derive-by-query + derived rows).
16
16
  """
17
17
 
18
18
  from __future__ import annotations
@@ -794,6 +794,25 @@ class DatasetsClient:
794
794
  _check(r)
795
795
  return r.json().get("rows", r.json().get("hits", []))
796
796
 
797
+ def regex_search(
798
+ self, repo_id: str, pattern: str, *, limit: int = 20, lang: str = ""
799
+ ) -> list[dict]:
800
+ """Regex search: match a Python-``re`` ``pattern`` against the dataset's
801
+ text column (streamed, bounded — no index needed). Case-insensitive is
802
+ opt-in via an inline ``(?i)`` flag. Native core when available, else httpx.
803
+ Pairs with ``derive_by_query(mode="regex")`` to build a regex-derived set.
804
+ """
805
+ ds = self._resolve(repo_id)
806
+ nat = self._native_client()
807
+ if nat is not None:
808
+ return nat.regex_search(str(ds.id), pattern, lang, limit).get("rows", [])
809
+ params: dict[str, Any] = {"q": pattern, "limit": limit, "mode": "regex"}
810
+ if lang:
811
+ params["lang"] = lang
812
+ r = self._http.get(f"/datasets/{ds.id}/search", params=params)
813
+ _check(r)
814
+ return r.json().get("rows", [])
815
+
797
816
  def optimize_embedding_search(
798
817
  self,
799
818
  repo_id: str,
@@ -869,7 +888,8 @@ class DatasetsClient:
869
888
  """Create (or append to) a dataset **derived from a query** over ``repo_id``.
870
889
 
871
890
  ``mode``: "word" (``q`` = term / CSV; pairs with LLM ``keyword_expand``),
872
- "fts" (BM25), "exact" (phrase), "semantic" (vector — needs
891
+ "fts" (BM25), "exact" (phrase), "regex" (``q`` = a Python-``re`` pattern
892
+ matched over the text column, bounded), "semantic" (vector — needs
873
893
  ``optimize_embedding_search``). ``lang`` filters by language / CSV. Pass
874
894
  ``name`` to create, or ``target_repo_id`` to append (must derive from the
875
895
  same parent). Lineage is recorded automatically. The query runs and
@@ -1292,6 +1312,11 @@ def semantic_search(repo_id: str, query: str, **kwargs: Any) -> list[dict]:
1292
1312
  return _c().semantic_search(repo_id, query, **kwargs)
1293
1313
 
1294
1314
 
1315
+ def regex_search(repo_id: str, pattern: str, **kwargs: Any) -> list[dict]:
1316
+ """Regex search — Python-``re`` ``pattern`` over the text column (bounded)."""
1317
+ return _c().regex_search(repo_id, pattern, **kwargs)
1318
+
1319
+
1295
1320
  def optimize_embedding_search(repo_id: str, **kwargs: Any) -> dict:
1296
1321
  """Embed rows + build the ANN index for semantic search / semantic-derive."""
1297
1322
  return _c().optimize_embedding_search(repo_id, **kwargs)
@@ -2135,7 +2135,7 @@ Give the dataset **URL** (`<base>/datasets/<id>`), the modality/tasks/languages,
2135
2135
 
2136
2136
  DERIVE_DATASET_CMD = """---
2137
2137
  name: {prefix}derive-dataset
2138
- description: Derive a dataset from an existing one — either by a SEARCH QUERY (semantic / word union·intersect / fts / exact, with language filter + LLM keyword expansion) or by adding a computed column. Keeps lineage, never re-uploads the parent's media.
2138
+ description: Derive a dataset from an existing one — either by a SEARCH QUERY (semantic / regex / word union·intersect / fts / exact, with language filter + LLM keyword expansion) or by adding a computed column. Keeps lineage, never re-uploads the parent's media.
2139
2139
  argument-hint: "[parent org/name] [child org/name] [--query ... | --column NAME]"
2140
2140
  allowed-tools:
2141
2141
  - Bash
@@ -2152,7 +2152,7 @@ Pick by intent: **subset/select rows -> A**; **annotate/flag rows -> B**.
2152
2152
 
2153
2153
  ---
2154
2154
 
2155
- ## A. Query-derivation (semantic / word union·intersect / fts / exact + lang + LLM keywords)
2155
+ ## A. Query-derivation (semantic / regex / word union·intersect / fts / exact + lang + LLM keywords)
2156
2156
 
2157
2157
  All server-side; the SDK delegates to the native Rust core when installed. `PARENT` must be indexed (`ds.index_dataset(...)`; for `semantic`, also `ds.optimize_embedding_search(...)`).
2158
2158
 
@@ -2177,7 +2177,7 @@ print(ds.derived_rows('ORG/medical-fr', limit=10))
2177
2177
  "
2178
2178
  ```
2179
2179
 
2180
- Query modes (`mode=`): `word` (CSV of terms; `op='union'|'intersect'`), `fts` (BM25), `exact` (phrase), `semantic` (vector ANN). `lang=` takes a language or CSV ("fr" / "en,fr"); "" = all. Lineage to `PARENT` is recorded automatically by `derive_by_query`.
2180
+ Query modes (`mode=`): `word` (CSV of terms; `op='union'|'intersect'`), `fts` (BM25), `exact` (phrase), `regex` (a Python-`re` pattern over the text column, e.g. `ds.regex_search('ORG/PARENT', r'\\bcancel(led)?\\b')` / `ds.derive_by_query('ORG/PARENT', r'\\brefund', name='ORG/refunds', mode='regex')`), `semantic` (vector ANN). `lang=` takes a language or CSV ("fr" / "en,fr"); "" = all. Lineage to `PARENT` is recorded automatically by `derive_by_query`.
2181
2181
 
2182
2182
  ---
2183
2183
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openrunner-sdk"
3
- version = "2.41.5"
3
+ version = "2.41.6"
4
4
  description = "OpenRunner SDK - W&B-compatible ML experiment tracking client"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
@@ -720,6 +720,40 @@ def test_semantic_search(monkeypatch):
720
720
  assert "/semantic" in c._http.get.call_args.args[0]
721
721
 
722
722
 
723
+ def test_regex_search(monkeypatch):
724
+ c = _client(monkeypatch)
725
+ c._native = None
726
+ c._resolve = MagicMock(return_value=DatasetInfo._from_json(_DS_JSON))
727
+ c._http.get.return_value = _resp(200, {"rows": [{"debug_id": "r1"}]})
728
+ out = c.regex_search("g/n", r"\bcancel(led)?\b", lang="en", limit=5)
729
+ assert out[0]["debug_id"] == "r1"
730
+ params = c._http.get.call_args.kwargs["params"]
731
+ assert params["mode"] == "regex" and params["q"] == r"\bcancel(led)?\b"
732
+ assert params["lang"] == "en"
733
+ assert "/search" in c._http.get.call_args.args[0]
734
+
735
+
736
+ def test_regex_search_native_delegates(monkeypatch):
737
+ c = _client(monkeypatch)
738
+ c._resolve = MagicMock(return_value=DatasetInfo._from_json(_DS_JSON))
739
+ nat = MagicMock()
740
+ nat.regex_search.return_value = {"rows": [{"debug_id": "x"}]}
741
+ c._native = nat
742
+ assert c.regex_search("g/n", "foo.*bar", lang="fr", limit=7) == [{"debug_id": "x"}]
743
+ nat.regex_search.assert_called_once_with("ds-1", "foo.*bar", "fr", 7)
744
+ c._http.get.assert_not_called()
745
+
746
+
747
+ def test_derive_by_query_regex_mode(monkeypatch):
748
+ c = _client(monkeypatch)
749
+ c._native = None
750
+ c._resolve = MagicMock(return_value=DatasetInfo._from_json(_DS_JSON))
751
+ c._http.post.return_value = _resp(200, dict(_DS_JSON, name="cancels"))
752
+ c.derive_by_query("g/parent", r"\bcancel", name="g/cancels", mode="regex", lang="en")
753
+ body = c._http.post.call_args.kwargs["json"]
754
+ assert body["mode"] == "regex" and body["q"] == r"\bcancel" and body["lang"] == "en"
755
+
756
+
723
757
  def test_optimize_embedding_search(monkeypatch):
724
758
  c = _client(monkeypatch)
725
759
  c._native = None
@@ -1093,6 +1127,11 @@ def test_module_semantic_search(fake_singleton):
1093
1127
  assert ds_mod.semantic_search("g/n", "q", lang="fr") == [{"id": 2}]
1094
1128
 
1095
1129
 
1130
+ def test_module_regex_search(fake_singleton):
1131
+ fake_singleton.regex_search.return_value = [{"debug_id": "r1"}]
1132
+ assert ds_mod.regex_search("g/n", r"\bfoo", lang="en") == [{"debug_id": "r1"}]
1133
+
1134
+
1096
1135
  def test_module_optimize_embedding_search(fake_singleton):
1097
1136
  fake_singleton.optimize_embedding_search.return_value = {"status": "ready"}
1098
1137
  assert ds_mod.optimize_embedding_search("g/n") == {"status": "ready"}
File without changes
File without changes