Skip to content

Commit 600028c

Browse files
authored
Merge pull request #3178 from bghira/bugfix/blank-publishing-config-disables
Treat blank publishing config as disabled
2 parents 99ada08 + 95eadd1 commit 600028c

4 files changed

Lines changed: 18 additions & 0 deletions

File tree

simpletuner/helpers/configuration/cli_utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,8 @@ def mapping_to_cli_args(
279279

280280
value_str = str(value).strip()
281281
if not value_str:
282+
if canonical_key in {"webhook_config", "publishing_config", "peft_lora_target_modules"}:
283+
continue
282284
if isinstance(value, str) and field is not None and getattr(field, "allow_empty", False):
283285
cli_args.append(_format_key_value(key, ""))
284286
continue

simpletuner/helpers/configuration/cmd_args.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,8 @@ def _normalize_structured_config_option(raw_value, option_name: str):
250250
import os
251251

252252
config_str = os.path.expanduser(str(raw_value))
253+
if config_str.strip() in ("", "None"):
254+
return None
253255
if config_str.startswith("{") or config_str.startswith("["):
254256
if _contains_ast_markers(config_str):
255257
raise ValueError(f"{option_name} contains AST object patterns instead of valid JSON. Received: {config_str}")

tests/test_allow_empty_fields.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ def test_empty_string_preserved_when_mapping_to_cli_args(self):
3030

3131
self.assertIn("--validation_negative_prompt=", result)
3232

33+
def test_blank_optional_structured_config_skipped_when_mapping_to_cli_args(self):
34+
result = mapping_to_cli_args({"publishing_config": "", "validation_negative_prompt": ""})
35+
36+
self.assertNotIn("--publishing_config=", result)
37+
self.assertIn("--validation_negative_prompt=", result)
38+
3339
def test_empty_string_preserved_in_form_submission(self):
3440
"""Test that empty strings are preserved during form normalization."""
3541
# Simulate form data with empty negative prompt

tests/test_publishing_config_parsing.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ def publish(self, artifact_path, *, artifact_name=None, metadata=None):
3636

3737

3838
class TestPublishingConfigParsing(unittest.TestCase):
39+
def test_blank_publishing_config_is_disabled(self):
40+
args_list = _base_args() + ["--publishing_config="]
41+
42+
args = parse_cmdline_args(input_args=args_list, exit_on_error=False)
43+
44+
self.assertIsNotNone(args)
45+
self.assertIsNone(args.publishing_config)
46+
3947
def test_inline_publishing_config_json(self):
4048
config_json = json.dumps([{"provider": "s3", "bucket": "demo"}])
4149
args_list = _base_args() + [f"--publishing_config={config_json}"]

0 commit comments

Comments
 (0)