openrunner-sdk 2.14.2__tar.gz → 2.14.3__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 (118) hide show
  1. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/PKG-INFO +1 -1
  2. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/__init__.py +1 -1
  3. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/install_commands.py +39 -51
  4. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/pyproject.toml +1 -1
  5. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/.gitignore +0 -0
  6. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/=6.0 +0 -0
  7. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/=8.1 +0 -0
  8. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/README.md +0 -0
  9. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/api_client.py +0 -0
  10. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/artifact.py +0 -0
  11. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/buffer.py +0 -0
  12. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/cache.py +0 -0
  13. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/cli.py +0 -0
  14. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/config.py +0 -0
  15. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/cost.py +0 -0
  16. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/dataset.py +0 -0
  17. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/environment.py +0 -0
  18. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/evaluation.py +0 -0
  19. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/feedback.py +0 -0
  20. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/git_info.py +0 -0
  21. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/guardrails.py +0 -0
  22. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/__init__.py +0 -0
  23. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/accelerate.py +0 -0
  24. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/anthropic_tracer.py +0 -0
  25. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/catboost.py +0 -0
  26. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/diffusers.py +0 -0
  27. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/fastai.py +0 -0
  28. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/forced_alignment.py +0 -0
  29. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/gladia.py +0 -0
  30. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/gymnasium.py +0 -0
  31. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/huggingface.py +0 -0
  32. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/hydra.py +0 -0
  33. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/ignite.py +0 -0
  34. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/jax.py +0 -0
  35. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/keras.py +0 -0
  36. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/langchain.py +0 -0
  37. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/lightgbm.py +0 -0
  38. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/lightning.py +0 -0
  39. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/llamaindex.py +0 -0
  40. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/openai_finetune.py +0 -0
  41. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/openai_tracer.py +0 -0
  42. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/optuna.py +0 -0
  43. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/pytorch.py +0 -0
  44. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/sb3.py +0 -0
  45. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/sklearn.py +0 -0
  46. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/tensorflow.py +0 -0
  47. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/trl.py +0 -0
  48. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/tts.py +0 -0
  49. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/ultralytics.py +0 -0
  50. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/voice_agent.py +0 -0
  51. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/whisper.py +0 -0
  52. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/integration/xgboost.py +0 -0
  53. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/launch.py +0 -0
  54. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/media.py +0 -0
  55. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/migrate.py +0 -0
  56. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/model.py +0 -0
  57. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/offline.py +0 -0
  58. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/pii.py +0 -0
  59. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/plot.py +0 -0
  60. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/prompt.py +0 -0
  61. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/query_api.py +0 -0
  62. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/redact.py +0 -0
  63. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/run.py +0 -0
  64. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/scorers.py +0 -0
  65. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/sender.py +0 -0
  66. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/session.py +0 -0
  67. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/settings.py +0 -0
  68. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/summary.py +0 -0
  69. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/sweep.py +0 -0
  70. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/system_metrics.py +0 -0
  71. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/tensorboard.py +0 -0
  72. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/trace.py +0 -0
  73. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/transcript_formatter.py +0 -0
  74. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/wal.py +0 -0
  75. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/wandb_compat/__init__.py +0 -0
  76. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/wandb_compat/_shim.py +0 -0
  77. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/openrunner/wer.py +0 -0
  78. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/__init__.py +0 -0
  79. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/conftest.py +0 -0
  80. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_alert.py +0 -0
  81. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_aliases.py +0 -0
  82. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_api_client.py +0 -0
  83. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_artifact.py +0 -0
  84. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_buffer.py +0 -0
  85. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_cache.py +0 -0
  86. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_class_scorers.py +0 -0
  87. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_cli.py +0 -0
  88. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_config.py +0 -0
  89. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_evaluation.py +0 -0
  90. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_finish.py +0 -0
  91. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_git_info.py +0 -0
  92. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_init.py +0 -0
  93. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_integration_fastai.py +0 -0
  94. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_integration_huggingface.py +0 -0
  95. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_integration_keras.py +0 -0
  96. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_integration_langchain.py +0 -0
  97. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_integration_lightning.py +0 -0
  98. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_integration_pytorch.py +0 -0
  99. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_integration_sklearn.py +0 -0
  100. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_integration_xgboost.py +0 -0
  101. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_launch.py +0 -0
  102. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_log.py +0 -0
  103. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_log_code.py +0 -0
  104. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_media.py +0 -0
  105. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_migrate.py +0 -0
  106. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_offline.py +0 -0
  107. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_offline_sync.py +0 -0
  108. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_pii.py +0 -0
  109. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_plot.py +0 -0
  110. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_query_api.py +0 -0
  111. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_resume.py +0 -0
  112. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_sdk_features.py +0 -0
  113. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_sender.py +0 -0
  114. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_summary.py +0 -0
  115. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_sweep.py +0 -0
  116. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_system_metrics.py +0 -0
  117. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/tests/test_trace.py +0 -0
  118. {openrunner_sdk-2.14.2 → openrunner_sdk-2.14.3}/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.14.2
3
+ Version: 2.14.3
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__ = "2.14.2"
123
+ __version__ = "2.14.3"
124
124
 
125
125
  logger = logging.getLogger("openrunner")
126
126
 
@@ -288,79 +288,67 @@ allowed-tools:
288
288
  - Bash
289
289
  - AskUserQuestion
290
290
  ---
291
-
292
- ## Process
293
-
294
- ### Step 1: Check if already logged in
295
-
291
+ <objective>
292
+ Authenticate the user with their OpenRunner instance. Get their server URL and API key configured in ~/.openrunner/settings.json.
293
+ </objective>
294
+
295
+ <process>
296
+ 1. Check current auth state by reading ~/.openrunner/settings.json
297
+ 2. If no base_url configured, ask the user: "What is your OpenRunner server URL? (e.g. https://openrun.example.com)"
298
+ 3. Once you have the base_url, initiate the browser login flow by running the script below (replace BASE_URL with actual URL)
299
+ 4. If browser flow succeeds (prints SUCCESS), confirm to user they're logged in
300
+ 5. If it times out or fails, ask user to paste their API key manually (from their OpenRunner Settings page)
301
+ 6. Save the final config to ~/.openrunner/settings.json
302
+
303
+ IMPORTANT: You MUST ask the user for their server URL before proceeding. Do NOT assume or hardcode any URL.
304
+ </process>
305
+
306
+ Check auth state:
296
307
  ```bash
297
308
  python3 -c "
298
- import json
299
- from pathlib import Path
309
+ import json; from pathlib import Path
300
310
  f = Path.home() / '.openrunner' / 'settings.json'
301
311
  if f.exists():
302
312
  s = json.loads(f.read_text())
303
- if s.get('api_key') and s.get('base_url'):
304
- print(f'LOGGED_IN base_url={{s[\"base_url\"]}}')
305
- elif s.get('base_url'):
306
- print(f'NEED_KEY base_url={{s[\"base_url\"]}}')
307
- else:
308
- print('NEED_SETUP')
313
+ print(f'base_url={{s.get(\"base_url\",\"\")}} api_key={{\"set\" if s.get(\"api_key\") else \"missing\"}}')
309
314
  else:
310
- print('NEED_SETUP')
315
+ print('base_url= api_key=missing')
311
316
  "
312
317
  ```
313
318
 
314
- ### Step 2: If NEED_SETUP, ask user for their OpenRunner server URL
315
-
316
- Use AskUserQuestion: "What is your OpenRunner server URL?" (e.g. https://your-instance.example.com)
317
-
318
- ### Step 3: Initiate browser login
319
-
320
- Replace BASE_URL below with the user's answer (or saved base_url from step 1):
321
-
319
+ After getting BASE_URL from user, run browser login:
322
320
  ```bash
323
321
  python3 -c "
324
- import sys, os, json, time
325
- from pathlib import Path
322
+ import sys, os, json, time; from pathlib import Path
326
323
  for p in [os.path.expanduser(f'~/.local/lib/python3.{{v}}/site-packages') for v in (12,11,10)]:
327
324
  if os.path.isdir(p): sys.path.insert(0, p)
328
325
  import httpx
329
-
330
326
  base_url = 'BASE_URL'
331
327
  resp = httpx.post(f'{{base_url}}/api/v1/auth/cli/initiate', json={{'expiry_days': 90}}, timeout=10)
332
- data = resp.json()
333
- code = data['code']
334
- auth_url = data['url']
335
- print(f'Open this URL to approve: {{auth_url}}')
336
-
337
- import webbrowser
338
- webbrowser.open(auth_url)
339
-
340
- print('Waiting for browser approval...')
328
+ data = resp.json(); code = data['code']; auth_url = data['url']
329
+ print(f'APPROVE_URL={{auth_url}}')
330
+ import webbrowser; webbrowser.open(auth_url)
341
331
  for i in range(60):
342
332
  time.sleep(2)
343
- poll = httpx.get(f'{{base_url}}/api/v1/auth/cli/poll/{{code}}', timeout=10)
344
- pd = poll.json()
333
+ pd = httpx.get(f'{{base_url}}/api/v1/auth/cli/poll/{{code}}', timeout=10).json()
345
334
  if pd['status'] == 'approved':
346
- api_key = pd['api_key']
347
- email = pd.get('email', '')
348
- sf = Path.home() / '.openrunner' / 'settings.json'
349
- sf.parent.mkdir(parents=True, exist_ok=True)
350
- sf.write_text(json.dumps({{'api_key': api_key, 'base_url': base_url}}, indent=2))
351
- print(f'SUCCESS: Logged in as {{email}}')
352
- sys.exit(0)
353
- elif pd['status'] == 'expired':
354
- print('EXPIRED')
355
- sys.exit(1)
356
- print('TIMEOUT')
357
- sys.exit(1)
335
+ sf = Path.home() / '.openrunner' / 'settings.json'; sf.parent.mkdir(parents=True, exist_ok=True)
336
+ sf.write_text(json.dumps({{'api_key': pd['api_key'], 'base_url': base_url}}, indent=2))
337
+ print(f'SUCCESS email={{pd.get(\"email\",\"\")}}'); sys.exit(0)
338
+ elif pd['status'] == 'expired': print('EXPIRED'); sys.exit(1)
339
+ print('TIMEOUT'); sys.exit(1)
358
340
  "
359
341
  ```
360
342
 
361
- ### Step 4: If TIMEOUT or browser didn't work
362
-
363
- Ask user to either open the URL manually OR paste an API key from Settings page. Save it.
343
+ If browser flow fails, save manual key:
344
+ ```bash
345
+ python3 -c "
346
+ import json; from pathlib import Path
347
+ sf = Path.home() / '.openrunner' / 'settings.json'; sf.parent.mkdir(parents=True, exist_ok=True)
348
+ sf.write_text(json.dumps({{'api_key': 'USER_API_KEY', 'base_url': 'BASE_URL'}}, indent=2))
349
+ print('Saved.')
350
+ "
351
+ ```
364
352
  """
365
353
 
366
354
  CODE_UPLOAD_CMD = """---
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openrunner-sdk"
3
- version = "2.14.2"
3
+ version = "2.14.3"
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