openrunner-sdk 2.13.2__tar.gz → 2.13.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.13.2 → openrunner_sdk-2.13.3}/PKG-INFO +1 -1
  2. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/__init__.py +1 -1
  3. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/install_commands.py +107 -0
  4. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/pyproject.toml +1 -1
  5. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/.gitignore +0 -0
  6. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/=6.0 +0 -0
  7. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/=8.1 +0 -0
  8. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/README.md +0 -0
  9. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/api_client.py +0 -0
  10. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/artifact.py +0 -0
  11. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/buffer.py +0 -0
  12. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/cache.py +0 -0
  13. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/cli.py +0 -0
  14. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/config.py +0 -0
  15. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/cost.py +0 -0
  16. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/dataset.py +0 -0
  17. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/environment.py +0 -0
  18. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/evaluation.py +0 -0
  19. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/feedback.py +0 -0
  20. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/git_info.py +0 -0
  21. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/guardrails.py +0 -0
  22. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/__init__.py +0 -0
  23. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/accelerate.py +0 -0
  24. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/anthropic_tracer.py +0 -0
  25. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/catboost.py +0 -0
  26. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/diffusers.py +0 -0
  27. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/fastai.py +0 -0
  28. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/forced_alignment.py +0 -0
  29. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/gladia.py +0 -0
  30. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/gymnasium.py +0 -0
  31. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/huggingface.py +0 -0
  32. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/hydra.py +0 -0
  33. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/ignite.py +0 -0
  34. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/jax.py +0 -0
  35. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/keras.py +0 -0
  36. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/langchain.py +0 -0
  37. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/lightgbm.py +0 -0
  38. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/lightning.py +0 -0
  39. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/llamaindex.py +0 -0
  40. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/openai_finetune.py +0 -0
  41. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/openai_tracer.py +0 -0
  42. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/optuna.py +0 -0
  43. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/pytorch.py +0 -0
  44. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/sb3.py +0 -0
  45. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/sklearn.py +0 -0
  46. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/tensorflow.py +0 -0
  47. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/trl.py +0 -0
  48. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/tts.py +0 -0
  49. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/ultralytics.py +0 -0
  50. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/voice_agent.py +0 -0
  51. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/whisper.py +0 -0
  52. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/integration/xgboost.py +0 -0
  53. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/launch.py +0 -0
  54. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/media.py +0 -0
  55. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/migrate.py +0 -0
  56. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/model.py +0 -0
  57. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/offline.py +0 -0
  58. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/pii.py +0 -0
  59. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/plot.py +0 -0
  60. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/prompt.py +0 -0
  61. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/query_api.py +0 -0
  62. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/redact.py +0 -0
  63. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/run.py +0 -0
  64. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/scorers.py +0 -0
  65. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/sender.py +0 -0
  66. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/session.py +0 -0
  67. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/settings.py +0 -0
  68. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/summary.py +0 -0
  69. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/sweep.py +0 -0
  70. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/system_metrics.py +0 -0
  71. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/tensorboard.py +0 -0
  72. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/trace.py +0 -0
  73. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/transcript_formatter.py +0 -0
  74. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/wal.py +0 -0
  75. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/wandb_compat/__init__.py +0 -0
  76. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/wandb_compat/_shim.py +0 -0
  77. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/openrunner/wer.py +0 -0
  78. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/__init__.py +0 -0
  79. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/conftest.py +0 -0
  80. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_alert.py +0 -0
  81. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_aliases.py +0 -0
  82. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_api_client.py +0 -0
  83. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_artifact.py +0 -0
  84. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_buffer.py +0 -0
  85. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_cache.py +0 -0
  86. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_class_scorers.py +0 -0
  87. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_cli.py +0 -0
  88. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_config.py +0 -0
  89. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_evaluation.py +0 -0
  90. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_finish.py +0 -0
  91. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_git_info.py +0 -0
  92. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_init.py +0 -0
  93. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_integration_fastai.py +0 -0
  94. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_integration_huggingface.py +0 -0
  95. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_integration_keras.py +0 -0
  96. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_integration_langchain.py +0 -0
  97. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_integration_lightning.py +0 -0
  98. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_integration_pytorch.py +0 -0
  99. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_integration_sklearn.py +0 -0
  100. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_integration_xgboost.py +0 -0
  101. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_launch.py +0 -0
  102. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_log.py +0 -0
  103. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_log_code.py +0 -0
  104. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_media.py +0 -0
  105. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_migrate.py +0 -0
  106. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_offline.py +0 -0
  107. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_offline_sync.py +0 -0
  108. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_pii.py +0 -0
  109. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_plot.py +0 -0
  110. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_query_api.py +0 -0
  111. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_resume.py +0 -0
  112. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_sdk_features.py +0 -0
  113. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_sender.py +0 -0
  114. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_summary.py +0 -0
  115. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_sweep.py +0 -0
  116. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_system_metrics.py +0 -0
  117. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.3}/tests/test_trace.py +0 -0
  118. {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.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.13.2
3
+ Version: 2.13.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.13.2"
123
+ __version__ = "2.13.3"
124
124
 
125
125
  logger = logging.getLogger("openrunner")
126
126
 
@@ -281,6 +281,109 @@ Show the response to the user.
281
281
  """
282
282
 
283
283
 
284
+ LOGIN_CMD = """---
285
+ name: {prefix}login
286
+ description: Authenticate OpenRunner CLI via browser
287
+ allowed-tools:
288
+ - Bash
289
+ ---
290
+
291
+ Run the OpenRunner browser-based login:
292
+
293
+ ```bash
294
+ python3 -c "
295
+ import sys, os, subprocess
296
+ for p in [os.path.expanduser(f'~/.local/lib/python3.{{v}}/site-packages') for v in (12,11,10)]:
297
+ if os.path.isdir(p): sys.path.insert(0, p)
298
+ subprocess.run([sys.executable, '-m', 'openrunner.cli', 'login'])
299
+ " || echo 'Run: pip install openrunner-sdk && openrunner login'
300
+ ```
301
+
302
+ If browser doesn't open, copy the URL shown and open it manually.
303
+ After approval, the CLI gets its token automatically.
304
+ """
305
+
306
+ CODE_UPLOAD_CMD = """---
307
+ name: {prefix}code-upload
308
+ description: Upload current directory code to OpenRunner as artifact (redacted)
309
+ allowed-tools:
310
+ - Bash
311
+ - AskUserQuestion
312
+ ---
313
+
314
+ Upload redacted source code from CWD to OpenRunner as artifact:
315
+
316
+ ```bash
317
+ python3 -c "
318
+ import sys, os
319
+ from pathlib import Path
320
+ for p in [os.path.expanduser(f'~/.local/lib/python3.{{v}}/site-packages') for v in (12,11,10)]:
321
+ if os.path.isdir(p): sys.path.insert(0, p)
322
+
323
+ from openrunner.session import get_session_config
324
+ from openrunner.api_client import APIClient
325
+ from openrunner.redact import redact_text
326
+ import tempfile, shutil
327
+
328
+ config = get_session_config()
329
+ if not config.get('api_key'):
330
+ print('Not configured. Run /openrunner:setup first.')
331
+ sys.exit(1)
332
+
333
+ project_name = config.get('project', '')
334
+ CODE_EXTENSIONS = ('.py', '.yaml', '.yml', '.toml', '.cfg', '.sh', '.json', 'Dockerfile', 'Makefile', 'requirements.txt', 'pyproject.toml')
335
+ SKIP_DIRS = {{'.git', '__pycache__', 'node_modules', 'venv', '.venv', 'dist', 'build', '.openrunner'}}
336
+
337
+ cwd = Path.cwd()
338
+ files_collected = []
339
+ for fpath in sorted(cwd.rglob('*')):
340
+ if not fpath.is_file(): continue
341
+ rel = str(fpath.relative_to(cwd))
342
+ parts = Path(rel).parts
343
+ if any(p.startswith('.') or p in SKIP_DIRS for p in parts): continue
344
+ if not any(rel.endswith(ext) or rel == ext for ext in CODE_EXTENSIONS): continue
345
+ if fpath.stat().st_size > 1_000_000: continue
346
+ files_collected.append((rel, fpath))
347
+
348
+ print(f'Found {{len(files_collected)}} source files')
349
+ if not files_collected:
350
+ print('No source files found.')
351
+ sys.exit(1)
352
+
353
+ tmp_dir = Path(tempfile.mkdtemp(prefix='or-code-'))
354
+ redacted_count = 0
355
+ for rel, fpath in files_collected:
356
+ content = fpath.read_text(errors='replace')
357
+ result = redact_text(content, mode='regex')
358
+ redacted_count += result.redacted_count
359
+ dest = tmp_dir / rel
360
+ dest.parent.mkdir(parents=True, exist_ok=True)
361
+ dest.write_text(result.text)
362
+
363
+ if redacted_count > 0:
364
+ print(f'Redacted {{redacted_count}} secrets')
365
+
366
+ import openrunner
367
+ os.environ['OPENRUNNER_API_KEY'] = config['api_key']
368
+ os.environ['OPENRUNNER_BASE_URL'] = config.get('base_url', 'https://openrun.gladia.io')
369
+ run = openrunner.init(project=project_name, name='code-upload', save_code=False)
370
+ artifact = openrunner.Artifact('source-code', type='code')
371
+ artifact.add_dir(str(tmp_dir))
372
+ result = run.log_artifact(artifact)
373
+ run.finish()
374
+ shutil.rmtree(tmp_dir, ignore_errors=True)
375
+
376
+ if result:
377
+ print(f'Uploaded source-code artifact (v{{result.get(\"version\", \"?\")}}) — {{len(files_collected)}} files, {{redacted_count}} secrets redacted')
378
+ else:
379
+ print('Upload failed.')
380
+ "
381
+ ```
382
+
383
+ Report result to user.
384
+ """
385
+
386
+
284
387
  def install_claude_code() -> list[str]:
285
388
  """Install commands in ~/.claude/commands/openrunner/."""
286
389
  cmd_dir = Path.home() / ".claude" / "commands" / "openrunner"
@@ -292,6 +395,8 @@ def install_claude_code() -> list[str]:
292
395
  "setup.md": SETUP_CMD,
293
396
  "list-sessions.md": LIST_SESSIONS_CMD,
294
397
  "chat.md": CHAT_CMD,
398
+ "login.md": LOGIN_CMD,
399
+ "code-upload.md": CODE_UPLOAD_CMD,
295
400
  }
296
401
 
297
402
  files = []
@@ -313,6 +418,8 @@ def _install_all_commands_to_dir(cmd_dir: Path, prefix: str = "openrunner:") ->
313
418
  "setup.md": SETUP_CMD,
314
419
  "list-sessions.md": LIST_SESSIONS_CMD,
315
420
  "chat.md": CHAT_CMD,
421
+ "login.md": LOGIN_CMD,
422
+ "code-upload.md": CODE_UPLOAD_CMD,
316
423
  }
317
424
 
318
425
  files = []
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openrunner-sdk"
3
- version = "2.13.2"
3
+ version = "2.13.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