mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-11-03 12:53:35 +08:00
split_inputs_nested flattened the already-nested input state to |‑separated flat keys via visit_input_values, then called expand_flat_parameters_to_nested to rebuild the dict. That rebuild uses process_key / looks_like_flattened_repeat_key, which treats any path component ending in _<digit> (e.g. "column_selector_options_1") as a repeat-item index rather than a literal conditional name. The result was a spurious "column_selector_options" list instead of the expected "column_selector_options_1" / "column_selector_options_2" dicts, which then caused Pydantic to report extra_forbidden on the fake list and list_type (None) on col1 once fill_static_defaults initialised the now-missing conditional to an empty dict. The flat→nested round-trip was never needed for the nested-input path: the dict coming in is already correctly structured. Fix by returning nested_dict directly from split_inputs_nested as single_inputs, only extracting batch (matched / multiplied) inputs as flat-key entries as before. Strip internal state keys starting with __ that visit_input_values stamps so they don't appear as extra fields when the state reaches Pydantic validation. Also remove stray print() debug calls left in visitor.py.