openrunner-sdk 2.37.35__tar.gz → 2.37.36__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 (219) hide show
  1. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/PKG-INFO +1 -1
  2. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/__init__.py +1 -1
  3. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/run.py +17 -2
  4. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/pyproject.toml +1 -1
  5. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_run_module.py +29 -0
  6. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/.gitignore +0 -0
  7. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/=6.0 +0 -0
  8. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/=8.1 +0 -0
  9. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/README.md +0 -0
  10. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/CLAUDE.md +0 -0
  11. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/_safepath.py +0 -0
  12. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/_secret_rules.py +0 -0
  13. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/api_client.py +0 -0
  14. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/artifact.py +0 -0
  15. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/autoresearch.py +0 -0
  16. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/buffer.py +0 -0
  17. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/cache.py +0 -0
  18. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/cli.py +0 -0
  19. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/config.py +0 -0
  20. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/cost.py +0 -0
  21. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/dataset.py +0 -0
  22. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/datasets.py +0 -0
  23. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/environment.py +0 -0
  24. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/evaluation.py +0 -0
  25. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/feedback.py +0 -0
  26. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/git_info.py +0 -0
  27. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/__init__.py +0 -0
  28. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/api_integration.py +0 -0
  29. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/cost_guard.py +0 -0
  30. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/gpu_types.py +0 -0
  31. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/price_compare.py +0 -0
  32. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/provider_base.py +0 -0
  33. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/providers/__init__.py +0 -0
  34. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/providers/lambda_cloud.py +0 -0
  35. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/providers/modal_provider.py +0 -0
  36. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/providers/ovhcloud.py +0 -0
  37. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/providers/runpod.py +0 -0
  38. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/providers/vastai.py +0 -0
  39. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/runner.py +0 -0
  40. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/gpu/workspace_sync.py +0 -0
  41. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/guardrails.py +0 -0
  42. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/handover.py +0 -0
  43. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/hooks/patent-lab-post-commit +0 -0
  44. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/install_commands.py +0 -0
  45. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/__init__.py +0 -0
  46. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/accelerate.py +0 -0
  47. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/anthropic_tracer.py +0 -0
  48. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/catboost.py +0 -0
  49. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/diffusers.py +0 -0
  50. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/fastai.py +0 -0
  51. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/forced_alignment.py +0 -0
  52. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/gladia.py +0 -0
  53. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/gymnasium.py +0 -0
  54. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/huggingface.py +0 -0
  55. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/hydra.py +0 -0
  56. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/ignite.py +0 -0
  57. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/jax.py +0 -0
  58. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/keras.py +0 -0
  59. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/langchain.py +0 -0
  60. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/lightgbm.py +0 -0
  61. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/lightning.py +0 -0
  62. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/llamaindex.py +0 -0
  63. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/openai_finetune.py +0 -0
  64. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/openai_tracer.py +0 -0
  65. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/optuna.py +0 -0
  66. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/pytorch.py +0 -0
  67. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/sb3.py +0 -0
  68. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/sklearn.py +0 -0
  69. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/skypilot.py +0 -0
  70. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/tensorflow.py +0 -0
  71. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/trl.py +0 -0
  72. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/tts.py +0 -0
  73. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/ultralytics.py +0 -0
  74. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/voice_agent.py +0 -0
  75. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/whisper.py +0 -0
  76. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/integration/xgboost.py +0 -0
  77. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/launch.py +0 -0
  78. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/machine.py +0 -0
  79. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/mcp_server.py +0 -0
  80. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/media.py +0 -0
  81. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/migrate.py +0 -0
  82. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/model.py +0 -0
  83. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/model_card.py +0 -0
  84. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/offline.py +0 -0
  85. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/patent_scan.py +0 -0
  86. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/pii.py +0 -0
  87. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/plot.py +0 -0
  88. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/projects.py +0 -0
  89. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/prompt.py +0 -0
  90. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/query_api.py +0 -0
  91. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/redact.py +0 -0
  92. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/reload.py +0 -0
  93. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/research.py +0 -0
  94. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/research_policy.py +0 -0
  95. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/scorers.py +0 -0
  96. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/sender.py +0 -0
  97. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/session.py +0 -0
  98. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/settings.py +0 -0
  99. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/summary.py +0 -0
  100. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/sweep.py +0 -0
  101. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/sync.py +0 -0
  102. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/system_metrics.py +0 -0
  103. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/tensorboard.py +0 -0
  104. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/tools/__init__.py +0 -0
  105. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/tools/patent_report.py +0 -0
  106. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/trace.py +0 -0
  107. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/transcript_formatter.py +0 -0
  108. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/wal.py +0 -0
  109. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/wandb_compat/__init__.py +0 -0
  110. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/wandb_compat/_shim.py +0 -0
  111. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/openrunner/wer.py +0 -0
  112. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/scripts/gen_betterleaks_rules.py +0 -0
  113. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/__init__.py +0 -0
  114. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/conftest.py +0 -0
  115. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-aaa/config.json +0 -0
  116. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-aaa/metadata.json +0 -0
  117. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-aaa/metrics.jsonl +0 -0
  118. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-aaa/summary.json +0 -0
  119. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/model-checkpoint/manifest.json +0 -0
  120. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/model-checkpoint/weights.bin +0 -0
  121. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/sample-image/manifest.json +0 -0
  122. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/sample-image/preview.png +0 -0
  123. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-bbb/config.json +0 -0
  124. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-bbb/metadata.json +0 -0
  125. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-bbb/metrics.jsonl +0 -0
  126. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/fixtures/wandb-export-mini/run-bbb/summary.json +0 -0
  127. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/integration/__init__.py +0 -0
  128. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/integration/conftest.py +0 -0
  129. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/integration/test_artifact_round_trip.py +0 -0
  130. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_alert.py +0 -0
  131. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_aliases.py +0 -0
  132. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_api_client.py +0 -0
  133. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_api_client_methods.py +0 -0
  134. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_api_client_transport.py +0 -0
  135. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_artifact.py +0 -0
  136. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_buffer.py +0 -0
  137. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_cache.py +0 -0
  138. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_class_scorers.py +0 -0
  139. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_cli.py +0 -0
  140. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_cli_artifact_sweep.py +0 -0
  141. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_cli_datasets.py +0 -0
  142. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_cli_gpu_registry_deploy.py +0 -0
  143. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_cli_infra.py +0 -0
  144. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_cli_remainder.py +0 -0
  145. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_cli_topup.py +0 -0
  146. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_config.py +0 -0
  147. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_datasets_module.py +0 -0
  148. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_evaluation.py +0 -0
  149. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_finish.py +0 -0
  150. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_git_info.py +0 -0
  151. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/__init__.py +0 -0
  152. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/conftest.py +0 -0
  153. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_cost_guard.py +0 -0
  154. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_gpu_cluster.py +0 -0
  155. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_gpu_types.py +0 -0
  156. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_lambda.py +0 -0
  157. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_modal.py +0 -0
  158. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_ovhcloud.py +0 -0
  159. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_price_compare.py +0 -0
  160. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_provider_base.py +0 -0
  161. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_runner.py +0 -0
  162. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_runpod.py +0 -0
  163. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_sdk_gpu_api.py +0 -0
  164. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_vastai.py +0 -0
  165. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu/test_workspace_sync.py +0 -0
  166. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_gpu_modal_creds.py +0 -0
  167. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_init.py +0 -0
  168. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_init_facade.py +0 -0
  169. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_install_commands.py +0 -0
  170. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_integration_fastai.py +0 -0
  171. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_integration_huggingface.py +0 -0
  172. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_integration_keras.py +0 -0
  173. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_integration_langchain.py +0 -0
  174. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_integration_lightning.py +0 -0
  175. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_integration_pytorch.py +0 -0
  176. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_integration_setA.py +0 -0
  177. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_integration_setB.py +0 -0
  178. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_integration_setC.py +0 -0
  179. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_integration_sklearn.py +0 -0
  180. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_integration_xgboost.py +0 -0
  181. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_launch.py +0 -0
  182. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_log.py +0 -0
  183. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_log_code.py +0 -0
  184. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_machine_migrate.py +0 -0
  185. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_mcp_decisions.py +0 -0
  186. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_mcp_monitor.py +0 -0
  187. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_mcp_predictions.py +0 -0
  188. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_mcp_server.py +0 -0
  189. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_media.py +0 -0
  190. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_media_extra.py +0 -0
  191. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_migrate.py +0 -0
  192. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_offline.py +0 -0
  193. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_offline_sync.py +0 -0
  194. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_patent_scan.py +0 -0
  195. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_pii.py +0 -0
  196. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_plot.py +0 -0
  197. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_plot_media_extra2.py +0 -0
  198. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_prompt_module.py +0 -0
  199. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_pure_modules.py +0 -0
  200. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_query_api.py +0 -0
  201. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_redact.py +0 -0
  202. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_reload_module.py +0 -0
  203. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_research_module.py +0 -0
  204. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_resume.py +0 -0
  205. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_sdk_cluster_j1.py +0 -0
  206. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_sdk_cluster_j2.py +0 -0
  207. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_sdk_cluster_j3.py +0 -0
  208. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_sdk_cluster_j4.py +0 -0
  209. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_sdk_core_edges.py +0 -0
  210. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_sdk_features.py +0 -0
  211. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_sender.py +0 -0
  212. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_session_module.py +0 -0
  213. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_session_sync.py +0 -0
  214. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_summary.py +0 -0
  215. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_sweep.py +0 -0
  216. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_system_metrics.py +0 -0
  217. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_topup_hi.py +0 -0
  218. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/tests/test_trace.py +0 -0
  219. {openrunner_sdk-2.37.35 → openrunner_sdk-2.37.36}/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.35
3
+ Version: 2.37.36
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.34"
184
+ __version__ = "2.37.36"
185
185
 
186
186
  logger = logging.getLogger("openrunner")
187
187
 
@@ -921,7 +921,7 @@ class Run:
921
921
 
922
922
  # Get artifact by project lookup
923
923
  art_result = self._client._client.get(
924
- f"/projects/{self._project}/artifacts"
924
+ f"/projects/{self._project_ref()}/artifacts"
925
925
  )
926
926
  if art_result.status_code == 200:
927
927
  arts = art_result.json()
@@ -940,10 +940,25 @@ class Run:
940
940
 
941
941
  return result
942
942
 
943
+ def _project_ref(self) -> str:
944
+ """Path segment for ``/projects/{ref}/*`` endpoints.
945
+
946
+ Those endpoints are keyed by the project **UUID**, but a run may have
947
+ been constructed with a project *name* (``org/name``). Prefer the
948
+ server-resolved UUID (``self._project_id``, populated from the
949
+ create_run response) and fall back to the name only when it is absent
950
+ (e.g. offline mode). Using the bare name against a UUID-keyed endpoint
951
+ 404s -- the bug that made ``set_model_card``/``get_model_card`` and
952
+ artifact-alias resolution silently no-op.
953
+ """
954
+ return getattr(self, "_project_id", None) or self._project
955
+
943
956
  def _resolve_artifact_id(self, name: str) -> str | None:
944
957
  """Look up an artifact's id by name within this run's project."""
945
958
  try:
946
- resp = self._client._client.get(f"/projects/{self._project}/artifacts")
959
+ resp = self._client._client.get(
960
+ f"/projects/{self._project_ref()}/artifacts"
961
+ )
947
962
  if resp.status_code == 200:
948
963
  for a in resp.json():
949
964
  if a.get("name") == name:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openrunner-sdk"
3
- version = "2.37.35"
3
+ version = "2.37.36"
4
4
  description = "OpenRunner SDK - W&B-compatible ML experiment tracking client"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
@@ -729,6 +729,35 @@ def test_resolve_artifact_id_exception():
729
729
  assert run._resolve_artifact_id("m") is None
730
730
 
731
731
 
732
+ def test_resolve_artifact_id_uses_project_uuid():
733
+ # Regression: the /projects/{ref}/artifacts endpoint is keyed by the
734
+ # project UUID, not the project name. When the server-resolved UUID is
735
+ # available it must be used, else the lookup 404s and set_model_card
736
+ # silently no-ops.
737
+ run = _bare_run(project="gladia/openpii")
738
+ run._project_id = "96de4897-38b0-4327-a07b-1c5a71871ef9"
739
+ run._client._client = MagicMock()
740
+ resp = MagicMock(status_code=200)
741
+ resp.json.return_value = [{"id": "aid", "name": "m"}]
742
+ run._client._client.get.return_value = resp
743
+ assert run._resolve_artifact_id("m") == "aid"
744
+ run._client._client.get.assert_called_once_with(
745
+ "/projects/96de4897-38b0-4327-a07b-1c5a71871ef9/artifacts"
746
+ )
747
+
748
+
749
+ def test_resolve_artifact_id_falls_back_to_name_without_uuid():
750
+ # Offline / pre-create: no UUID yet -> fall back to the project name so
751
+ # behavior is unchanged when _project_id is absent.
752
+ run = _bare_run(project="gladia/openpii") # _bare_run sets no _project_id
753
+ run._client._client = MagicMock()
754
+ resp = MagicMock(status_code=200)
755
+ resp.json.return_value = [{"id": "aid", "name": "m"}]
756
+ run._client._client.get.return_value = resp
757
+ assert run._resolve_artifact_id("m") == "aid"
758
+ run._client._client.get.assert_called_once_with("/projects/openpii/artifacts")
759
+
760
+
732
761
  def test_set_model_card_success():
733
762
  run = _bare_run()
734
763
  run._client._client = MagicMock()
File without changes
File without changes