mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #7071 from mvdbeek/fix_process_key
[18.09] Fix process key
This commit is contained in:
@@ -72,26 +72,30 @@ def expand_workflow_inputs(inputs):
|
||||
return params, params_keys
|
||||
|
||||
|
||||
def process_key(incoming_key, d):
|
||||
def process_key(incoming_key, incoming_value, d):
|
||||
key_parts = incoming_key.split('|')
|
||||
if len(key_parts) == 1:
|
||||
# Regular parameter
|
||||
d[incoming_key] = object()
|
||||
d[incoming_key] = incoming_value
|
||||
elif key_parts[0].rsplit('_', 1)[-1].isdigit():
|
||||
# Repeat
|
||||
input_name_index = key_parts[0].rsplit('_', 1)
|
||||
input_name, index = input_name_index
|
||||
index = int(index)
|
||||
if input_name not in d:
|
||||
d[input_name] = []
|
||||
subdict = {}
|
||||
d[input_name].append(subdict)
|
||||
process_key("|".join(key_parts[1:]), d=subdict)
|
||||
if len(d[input_name]) > index:
|
||||
subdict = d[input_name][index]
|
||||
else:
|
||||
subdict = {}
|
||||
d[input_name].append(subdict)
|
||||
process_key("|".join(key_parts[1:]), incoming_value=incoming_value, d=subdict)
|
||||
else:
|
||||
# Section / Conditional
|
||||
input_name = key_parts[0]
|
||||
subdict = {}
|
||||
d[input_name] = subdict
|
||||
process_key("|".join(key_parts[1:]), d=subdict)
|
||||
process_key("|".join(key_parts[1:]), incoming_value=incoming_value, d=subdict)
|
||||
|
||||
|
||||
def expand_meta_parameters(trans, tool, incoming):
|
||||
@@ -113,9 +117,9 @@ def expand_meta_parameters(trans, tool, incoming):
|
||||
# according to tool.inputs (which is ordered).
|
||||
incoming_copy = incoming.copy()
|
||||
nested_dict = {}
|
||||
for incoming_key in incoming_copy:
|
||||
for incoming_key, incoming_value in incoming_copy.items():
|
||||
if not incoming_key.startswith('__'):
|
||||
process_key(incoming_key, d=nested_dict)
|
||||
process_key(incoming_key, incoming_value=incoming_value, d=nested_dict)
|
||||
|
||||
reordered_incoming = OrderedDict()
|
||||
|
||||
|
||||
@@ -3,10 +3,34 @@ from xml.etree.ElementTree import XML
|
||||
|
||||
from galaxy import model
|
||||
from galaxy.tools.parameters import basic
|
||||
from galaxy.tools.parameters.meta import process_key
|
||||
from galaxy.util import bunch
|
||||
from ..tools_support import UsesApp
|
||||
|
||||
|
||||
def test_process_key():
|
||||
nested_dict = {}
|
||||
d = {
|
||||
'repeat_0|inner_repeat_0|data_table_column_value': u'bla',
|
||||
'repeat_1|inner_repeat_1|data_table_column_value': u'bla2',
|
||||
}
|
||||
for key, value in d.items():
|
||||
process_key(key, value, nested_dict)
|
||||
assert len(nested_dict) == 1
|
||||
|
||||
|
||||
def test_process_key_2():
|
||||
nested_dict = {}
|
||||
d = {
|
||||
'data_tables_0|columns_0|data_table_column_value': 'Amel_HAv3.1',
|
||||
'data_tables': [],
|
||||
'directory_content': [],
|
||||
}
|
||||
for key, value in d.items():
|
||||
process_key(key, value, nested_dict)
|
||||
assert len(nested_dict) == 2
|
||||
|
||||
|
||||
class BaseParameterTestCase(TestCase, UsesApp):
|
||||
|
||||
def setUp(self):
|
||||
|
||||
Reference in New Issue
Block a user