openrunner-sdk 2.4.2__tar.gz → 2.4.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 (115) hide show
  1. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/PKG-INFO +1 -1
  2. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/__init__.py +1 -1
  3. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/api_client.py +14 -5
  4. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/pyproject.toml +1 -1
  5. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/.gitignore +0 -0
  6. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/=6.0 +0 -0
  7. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/=8.1 +0 -0
  8. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/README.md +0 -0
  9. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/artifact.py +0 -0
  10. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/buffer.py +0 -0
  11. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/cache.py +0 -0
  12. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/cli.py +0 -0
  13. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/config.py +0 -0
  14. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/cost.py +0 -0
  15. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/dataset.py +0 -0
  16. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/environment.py +0 -0
  17. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/evaluation.py +0 -0
  18. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/feedback.py +0 -0
  19. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/git_info.py +0 -0
  20. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/guardrails.py +0 -0
  21. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/__init__.py +0 -0
  22. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/accelerate.py +0 -0
  23. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/anthropic_tracer.py +0 -0
  24. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/catboost.py +0 -0
  25. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/diffusers.py +0 -0
  26. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/fastai.py +0 -0
  27. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/forced_alignment.py +0 -0
  28. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/gladia.py +0 -0
  29. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/gymnasium.py +0 -0
  30. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/huggingface.py +0 -0
  31. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/hydra.py +0 -0
  32. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/ignite.py +0 -0
  33. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/jax.py +0 -0
  34. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/keras.py +0 -0
  35. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/langchain.py +0 -0
  36. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/lightgbm.py +0 -0
  37. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/lightning.py +0 -0
  38. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/llamaindex.py +0 -0
  39. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/openai_finetune.py +0 -0
  40. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/openai_tracer.py +0 -0
  41. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/optuna.py +0 -0
  42. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/pytorch.py +0 -0
  43. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/sb3.py +0 -0
  44. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/sklearn.py +0 -0
  45. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/tensorflow.py +0 -0
  46. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/trl.py +0 -0
  47. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/tts.py +0 -0
  48. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/ultralytics.py +0 -0
  49. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/voice_agent.py +0 -0
  50. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/whisper.py +0 -0
  51. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/integration/xgboost.py +0 -0
  52. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/launch.py +0 -0
  53. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/media.py +0 -0
  54. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/migrate.py +0 -0
  55. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/model.py +0 -0
  56. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/offline.py +0 -0
  57. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/pii.py +0 -0
  58. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/plot.py +0 -0
  59. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/prompt.py +0 -0
  60. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/query_api.py +0 -0
  61. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/run.py +0 -0
  62. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/scorers.py +0 -0
  63. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/sender.py +0 -0
  64. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/settings.py +0 -0
  65. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/summary.py +0 -0
  66. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/sweep.py +0 -0
  67. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/system_metrics.py +0 -0
  68. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/tensorboard.py +0 -0
  69. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/trace.py +0 -0
  70. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/transcript_formatter.py +0 -0
  71. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/wal.py +0 -0
  72. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/wandb_compat/__init__.py +0 -0
  73. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/wandb_compat/_shim.py +0 -0
  74. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/openrunner/wer.py +0 -0
  75. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/__init__.py +0 -0
  76. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/conftest.py +0 -0
  77. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_alert.py +0 -0
  78. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_aliases.py +0 -0
  79. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_api_client.py +0 -0
  80. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_artifact.py +0 -0
  81. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_buffer.py +0 -0
  82. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_cache.py +0 -0
  83. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_class_scorers.py +0 -0
  84. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_cli.py +0 -0
  85. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_config.py +0 -0
  86. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_evaluation.py +0 -0
  87. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_finish.py +0 -0
  88. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_git_info.py +0 -0
  89. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_init.py +0 -0
  90. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_integration_fastai.py +0 -0
  91. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_integration_huggingface.py +0 -0
  92. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_integration_keras.py +0 -0
  93. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_integration_langchain.py +0 -0
  94. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_integration_lightning.py +0 -0
  95. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_integration_pytorch.py +0 -0
  96. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_integration_sklearn.py +0 -0
  97. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_integration_xgboost.py +0 -0
  98. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_launch.py +0 -0
  99. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_log.py +0 -0
  100. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_log_code.py +0 -0
  101. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_media.py +0 -0
  102. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_migrate.py +0 -0
  103. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_offline.py +0 -0
  104. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_offline_sync.py +0 -0
  105. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_pii.py +0 -0
  106. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_plot.py +0 -0
  107. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_query_api.py +0 -0
  108. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_resume.py +0 -0
  109. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_sdk_features.py +0 -0
  110. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_sender.py +0 -0
  111. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_summary.py +0 -0
  112. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_sweep.py +0 -0
  113. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_system_metrics.py +0 -0
  114. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/tests/test_trace.py +0 -0
  115. {openrunner_sdk-2.4.2 → openrunner_sdk-2.4.4}/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.4.2
3
+ Version: 2.4.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
@@ -120,7 +120,7 @@ launch.from_run = _launch_from_run # type: ignore[attr-defined]
120
120
  # openrunner.trace.patch_openai() syntax
121
121
  trace.patch_openai = _patch_openai # type: ignore[attr-defined]
122
122
 
123
- __version__ = "0.3.0"
123
+ __version__ = "2.4.4"
124
124
 
125
125
  logger = logging.getLogger("openrunner")
126
126
 
@@ -688,23 +688,32 @@ class APIClient:
688
688
  ) -> bool:
689
689
  """PUT raw file bytes to a presigned URL.
690
690
 
691
- Falls back to API proxy upload if presigned URL is unreachable
692
- (e.g., MinIO not exposed publicly).
691
+ Handles three cases:
692
+ 1. Relative proxy URL (/api/v1/runs/...) — use authenticated client
693
+ 2. Absolute URL — try direct PUT, fall back to proxy on ConnectError
694
+ 3. ConnectError fallback — PUT via /runs/{run_id}/files/{name}
693
695
  """
694
696
  try:
695
697
  with open(file_path, "rb") as f:
696
698
  data = f.read()
697
- # Try presigned URL first
699
+
700
+ # Case 1: relative proxy URL from server
701
+ if presigned_url.startswith("/"):
702
+ api_path = presigned_url.replace("/api/v1/", "/", 1) if presigned_url.startswith("/api/v1/") else presigned_url
703
+ resp = self._request("put", api_path, content=data)
704
+ return resp.status_code == 200
705
+
706
+ # Case 2: absolute presigned URL (direct to S3)
698
707
  try:
699
708
  resp = httpx.put(presigned_url, content=data, timeout=300.0)
700
709
  resp.raise_for_status()
701
710
  return True
702
711
  except (httpx.ConnectError, httpx.ConnectTimeout):
703
- # Presigned URL unreachable use API proxy
712
+ # Case 3: fallback to API proxy
704
713
  if run_id:
705
714
  import os
706
715
  fname = os.path.basename(file_path)
707
- proxy_resp = self._request("PUT", f"/runs/{run_id}/files/{fname}", content=data)
716
+ proxy_resp = self._request("put", f"/runs/{run_id}/files/{fname}", content=data)
708
717
  return proxy_resp.status_code == 200
709
718
  return False
710
719
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openrunner-sdk"
3
- version = "2.4.2"
3
+ version = "2.4.4"
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
File without changes