diff --git a/src/promptflow-parallel/promptflow/parallel/_config/parser.py b/src/promptflow-parallel/promptflow/parallel/_config/parser.py index 8ed4b713740..c7a772a8741 100644 --- a/src/promptflow-parallel/promptflow/parallel/_config/parser.py +++ b/src/promptflow-parallel/promptflow/parallel/_config/parser.py @@ -85,7 +85,7 @@ def _parse_prefixed_args(args: List[str], prefix: str) -> Dict[str, str]: for _, arg in enumerate(args): if arg.startswith(prefix): if "=" in arg: - arg_name, arg_value = arg.split("=") + arg_name, arg_value = arg.split("=", 1) if len(arg_name) > len(prefix): parsed[arg_name[len(prefix) :]] = arg_value elif pre_arg_name is None: diff --git a/src/promptflow-parallel/tests/parallel/unittests/_config/test_parse.py b/src/promptflow-parallel/tests/parallel/unittests/_config/test_parse.py index e8addf975bf..520a0d31a93 100644 --- a/src/promptflow-parallel/tests/parallel/unittests/_config/test_parse.py +++ b/src/promptflow-parallel/tests/parallel/unittests/_config/test_parse.py @@ -3,7 +3,7 @@ # --------------------------------------------------------- from pathlib import Path -from promptflow.parallel._config.parser import parse +from promptflow.parallel._config.parser import _parse_prefixed_args, parse def test_parse_correct_type(): @@ -51,3 +51,9 @@ def test_parse_correct_type(): assert config.debug_output_dir == Path("/test_debug") assert config.logging_level == "INFO" assert not config.is_debug_enabled + + +def test_parse_prefixed_args_value_with_equals(): + # Values containing '=' (e.g. base64 padding) must not crash with ValueError. + result = _parse_prefixed_args(["--pf_input_token=SGVsbG8gV29ybGQ="], "--pf_input_") + assert result == {"token": "SGVsbG8gV29ybGQ="}