fluxloop-cli 0.2.5__tar.gz → 0.2.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.
Potentially problematic release.
This version of fluxloop-cli might be problematic. Click here for more details.
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/PKG-INFO +1 -1
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/__init__.py +1 -1
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/config_loader.py +22 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli.egg-info/PKG-INFO +1 -1
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/pyproject.toml +1 -1
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/README.md +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/arg_binder.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/commands/__init__.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/commands/config.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/commands/generate.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/commands/init.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/commands/parse.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/commands/record.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/commands/run.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/commands/status.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/config_schema.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/constants.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/input_generator.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/llm_generator.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/main.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/project_paths.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/runner.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/target_loader.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/templates.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli/validators.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli.egg-info/SOURCES.txt +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli.egg-info/dependency_links.txt +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli.egg-info/entry_points.txt +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli.egg-info/requires.txt +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/fluxloop_cli.egg-info/top_level.txt +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/setup.cfg +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/tests/test_arg_binder.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/tests/test_config_command.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/tests/test_input_generator.py +0 -0
- {fluxloop_cli-0.2.5 → fluxloop_cli-0.2.6}/tests/test_target_loader.py +0 -0
|
@@ -76,6 +76,7 @@ def load_experiment_config(
|
|
|
76
76
|
source_dir = project_root
|
|
77
77
|
|
|
78
78
|
_normalize_variation_strategies(data)
|
|
79
|
+
_normalize_runner_target(data)
|
|
79
80
|
|
|
80
81
|
# Validate and create config object
|
|
81
82
|
try:
|
|
@@ -284,6 +285,27 @@ def _normalize_variation_strategies(payload: Dict[str, Any]) -> None:
|
|
|
284
285
|
payload["variation_strategies"] = deduped
|
|
285
286
|
|
|
286
287
|
|
|
288
|
+
def _normalize_runner_target(payload: Dict[str, Any]) -> None:
|
|
289
|
+
"""Populate runner.module_path/function_name when only target is provided."""
|
|
290
|
+
|
|
291
|
+
runner = payload.get("runner")
|
|
292
|
+
if not isinstance(runner, dict):
|
|
293
|
+
return
|
|
294
|
+
|
|
295
|
+
target = runner.get("target")
|
|
296
|
+
module_path = runner.get("module_path")
|
|
297
|
+
function_name = runner.get("function_name")
|
|
298
|
+
|
|
299
|
+
if target and (not module_path or not function_name):
|
|
300
|
+
if ":" in target:
|
|
301
|
+
module_part, attr_part = target.split(":", 1)
|
|
302
|
+
runner.setdefault("module_path", module_part)
|
|
303
|
+
if "." in attr_part:
|
|
304
|
+
# module:Class.method -> record class.method as function placeholder
|
|
305
|
+
runner.setdefault("function_name", attr_part)
|
|
306
|
+
else:
|
|
307
|
+
runner.setdefault("function_name", attr_part)
|
|
308
|
+
|
|
287
309
|
def _detect_config_context(resolved_path: Path) -> tuple[str, Path, Path]:
|
|
288
310
|
"""Determine whether the path points to legacy or multi-section config."""
|
|
289
311
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|