annotate toolfactory/galaxyxml/tool/import_xml.py @ 136:94f5560de46d draft

Uploaded
author fubar
date Tue, 13 Apr 2021 00:35:36 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
136
94f5560de46d Uploaded
fubar
parents:
diff changeset
1 import logging
94f5560de46d Uploaded
fubar
parents:
diff changeset
2 import xml.etree.ElementTree as ET
94f5560de46d Uploaded
fubar
parents:
diff changeset
3
94f5560de46d Uploaded
fubar
parents:
diff changeset
4 import galaxyxml.tool as gxt
94f5560de46d Uploaded
fubar
parents:
diff changeset
5 import galaxyxml.tool.parameters as gxtp
94f5560de46d Uploaded
fubar
parents:
diff changeset
6
94f5560de46d Uploaded
fubar
parents:
diff changeset
7 logging.basicConfig(level=logging.INFO)
94f5560de46d Uploaded
fubar
parents:
diff changeset
8 logger = logging.getLogger(__name__)
94f5560de46d Uploaded
fubar
parents:
diff changeset
9
94f5560de46d Uploaded
fubar
parents:
diff changeset
10
94f5560de46d Uploaded
fubar
parents:
diff changeset
11 class GalaxyXmlParser(object):
94f5560de46d Uploaded
fubar
parents:
diff changeset
12 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
13 Class to import content from an existing Galaxy XML wrapper.
94f5560de46d Uploaded
fubar
parents:
diff changeset
14 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
15
94f5560de46d Uploaded
fubar
parents:
diff changeset
16 def _init_tool(self, xml_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
17 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
18 Init tool from existing xml tool.
94f5560de46d Uploaded
fubar
parents:
diff changeset
19
94f5560de46d Uploaded
fubar
parents:
diff changeset
20 :param xml_root: root of the galaxy xml file.
94f5560de46d Uploaded
fubar
parents:
diff changeset
21 :type xml_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
22 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
23 version_cmd = None
94f5560de46d Uploaded
fubar
parents:
diff changeset
24 description = None
94f5560de46d Uploaded
fubar
parents:
diff changeset
25 for child in xml_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
26 if child.tag == "description":
94f5560de46d Uploaded
fubar
parents:
diff changeset
27 description = child.text
94f5560de46d Uploaded
fubar
parents:
diff changeset
28 elif child.tag == "command":
94f5560de46d Uploaded
fubar
parents:
diff changeset
29 executable = child.text.split()[0]
94f5560de46d Uploaded
fubar
parents:
diff changeset
30 command = child.text
94f5560de46d Uploaded
fubar
parents:
diff changeset
31 elif child.tag == "version_command":
94f5560de46d Uploaded
fubar
parents:
diff changeset
32 version_cmd = child.text
94f5560de46d Uploaded
fubar
parents:
diff changeset
33
94f5560de46d Uploaded
fubar
parents:
diff changeset
34 tool = gxt.Tool(
94f5560de46d Uploaded
fubar
parents:
diff changeset
35 xml_root.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
36 xml_root.attrib["id"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
37 xml_root.attrib.get("version", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
38 description,
94f5560de46d Uploaded
fubar
parents:
diff changeset
39 executable,
94f5560de46d Uploaded
fubar
parents:
diff changeset
40 hidden=xml_root.attrib.get("hidden", False),
94f5560de46d Uploaded
fubar
parents:
diff changeset
41 tool_type=xml_root.attrib.get("tool_type", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
42 URL_method=xml_root.attrib.get("URL_method", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
43 workflow_compatible=xml_root.attrib.get("workflow_compatible", True),
94f5560de46d Uploaded
fubar
parents:
diff changeset
44 version_command=version_cmd,
94f5560de46d Uploaded
fubar
parents:
diff changeset
45 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
46 tool.command = command
94f5560de46d Uploaded
fubar
parents:
diff changeset
47 return tool
94f5560de46d Uploaded
fubar
parents:
diff changeset
48
94f5560de46d Uploaded
fubar
parents:
diff changeset
49 def _load_description(self, tool, desc_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
50 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
51 <description> is already loaded during initiation.
94f5560de46d Uploaded
fubar
parents:
diff changeset
52
94f5560de46d Uploaded
fubar
parents:
diff changeset
53 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
54 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
55 :param desc_root: root of <description> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
56 :type desc_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
57 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
58 logger.info("<description> is loaded during initiation of the object.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
59
94f5560de46d Uploaded
fubar
parents:
diff changeset
60 def _load_version_command(self, tool, vers_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
61 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
62 <version_command> is already loaded during initiation.
94f5560de46d Uploaded
fubar
parents:
diff changeset
63
94f5560de46d Uploaded
fubar
parents:
diff changeset
64 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
65 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
66 :param vers_root: root of <version_command> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
67 :type vers_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
68 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
69 logger.info("<version_command> is loaded during initiation of the object.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
70
94f5560de46d Uploaded
fubar
parents:
diff changeset
71 def _load_stdio(self, tool, stdio_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
72 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
73
94f5560de46d Uploaded
fubar
parents:
diff changeset
74 :param tool: <test> root to append <stdio> to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
75 :param stdio_root: root of <param> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
76 :param stdio_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
77 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
78 tool.stdios = gxtp.Stdios()
94f5560de46d Uploaded
fubar
parents:
diff changeset
79 for std in stdio_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
80 slevel = std.attrib['level']
94f5560de46d Uploaded
fubar
parents:
diff changeset
81 srange = std.attrib['range']
94f5560de46d Uploaded
fubar
parents:
diff changeset
82 tool.stdios.append(gxtp.Stdio(level=slevel, range=srange))
94f5560de46d Uploaded
fubar
parents:
diff changeset
83 logger.info("<stdio> loaded.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
84
94f5560de46d Uploaded
fubar
parents:
diff changeset
85 def _load_command(self, tool, desc_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
86 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
87 <command> is already loaded during initiation.
94f5560de46d Uploaded
fubar
parents:
diff changeset
88
94f5560de46d Uploaded
fubar
parents:
diff changeset
89 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
90 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
91 :param desc_root: root of <command> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
92 :type desc_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
93 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
94 logger.info("<command> is loaded during initiation of the object.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
95
94f5560de46d Uploaded
fubar
parents:
diff changeset
96 def _load_help(self, tool, help_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
97 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
98 Load the content of the <help> into the tool.
94f5560de46d Uploaded
fubar
parents:
diff changeset
99
94f5560de46d Uploaded
fubar
parents:
diff changeset
100 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
101 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
102 :param requirements_root: root of <help> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
103 :type requirements_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
104 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
105 tool.help = help_root.text
94f5560de46d Uploaded
fubar
parents:
diff changeset
106
94f5560de46d Uploaded
fubar
parents:
diff changeset
107 def _load_requirements(self, tool, requirements_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
108 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
109 Add <requirements> to the tool.
94f5560de46d Uploaded
fubar
parents:
diff changeset
110
94f5560de46d Uploaded
fubar
parents:
diff changeset
111 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
112 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
113 :param requirements_root: root of <requirements> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
114 :type requirements_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
115 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
116 tool.requirements = gxtp.Requirements()
94f5560de46d Uploaded
fubar
parents:
diff changeset
117 for req in requirements_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
118 req_type = req.attrib["type"]
94f5560de46d Uploaded
fubar
parents:
diff changeset
119 value = req.text
94f5560de46d Uploaded
fubar
parents:
diff changeset
120 if req.tag == "requirement":
94f5560de46d Uploaded
fubar
parents:
diff changeset
121 version = req.attrib.get("version", None)
94f5560de46d Uploaded
fubar
parents:
diff changeset
122 tool.requirements.append(gxtp.Requirement(req_type, value, version=version))
94f5560de46d Uploaded
fubar
parents:
diff changeset
123 elif req.tag == "container":
94f5560de46d Uploaded
fubar
parents:
diff changeset
124 tool.requirements.append(gxtp.Container(req_type, value))
94f5560de46d Uploaded
fubar
parents:
diff changeset
125 else:
94f5560de46d Uploaded
fubar
parents:
diff changeset
126 logger.warning(req.tag + " is not a valid tag for requirements child")
94f5560de46d Uploaded
fubar
parents:
diff changeset
127
94f5560de46d Uploaded
fubar
parents:
diff changeset
128 def _load_edam_topics(self, tool, topics_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
129 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
130 Add <edam_topics> to the tool.
94f5560de46d Uploaded
fubar
parents:
diff changeset
131
94f5560de46d Uploaded
fubar
parents:
diff changeset
132 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
133 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
134 :param topics_root: root of <edam_topics> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
135 :type topics_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
136 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
137 tool.edam_topics = gxtp.EdamTopics()
94f5560de46d Uploaded
fubar
parents:
diff changeset
138 for edam_topic in topics_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
139 tool.edam_topics.append(gxtp.EdamTopic(edam_topic.text))
94f5560de46d Uploaded
fubar
parents:
diff changeset
140
94f5560de46d Uploaded
fubar
parents:
diff changeset
141 def _load_edam_operations(self, tool, operations_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
142 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
143 Add <edam_operations> to the tool.
94f5560de46d Uploaded
fubar
parents:
diff changeset
144
94f5560de46d Uploaded
fubar
parents:
diff changeset
145 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
146 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
147 :param operations_root: root of <edam_operations> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
148 :type operations_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
149 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
150 tool.edam_operations = gxtp.EdamOperations()
94f5560de46d Uploaded
fubar
parents:
diff changeset
151 for edam_op in operations_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
152 tool.edam_operations.append(gxtp.EdamOperation(edam_op.text))
94f5560de46d Uploaded
fubar
parents:
diff changeset
153
94f5560de46d Uploaded
fubar
parents:
diff changeset
154 def _load_configfiles(self, tool, configfiles_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
155 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
156 Add <configfiles> to the tool.
94f5560de46d Uploaded
fubar
parents:
diff changeset
157
94f5560de46d Uploaded
fubar
parents:
diff changeset
158 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
159 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
160 :param configfiles_root: root of <configfiles> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
161 :type configfiles_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
162 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
163 tool.configfiles = gxtp.Configfiles()
94f5560de46d Uploaded
fubar
parents:
diff changeset
164 for conf in configfiles_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
165 name = conf.attrib["name"]
94f5560de46d Uploaded
fubar
parents:
diff changeset
166 value = conf.text
94f5560de46d Uploaded
fubar
parents:
diff changeset
167 tool.configfiles.append(gxtp.Configfile(name, value))
94f5560de46d Uploaded
fubar
parents:
diff changeset
168
94f5560de46d Uploaded
fubar
parents:
diff changeset
169 def _load_citations(self, tool, citations_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
170 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
171 Add <citations> to the tool.
94f5560de46d Uploaded
fubar
parents:
diff changeset
172
94f5560de46d Uploaded
fubar
parents:
diff changeset
173 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
174 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
175 :param citations_root: root of <citations> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
176 :type citations_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
177 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
178 tool.citations = gxtp.Citations()
94f5560de46d Uploaded
fubar
parents:
diff changeset
179 for cit in citations_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
180 cit_type = cit.attrib["type"]
94f5560de46d Uploaded
fubar
parents:
diff changeset
181 value = cit.text
94f5560de46d Uploaded
fubar
parents:
diff changeset
182 tool.citations.append(gxtp.Citation(cit_type, value))
94f5560de46d Uploaded
fubar
parents:
diff changeset
183
94f5560de46d Uploaded
fubar
parents:
diff changeset
184 def _load_inputs(self, tool, inputs_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
185 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
186 Add <inputs> to the tool using the :class:`galaxyxml.tool.import_xml.InputsParser` object.
94f5560de46d Uploaded
fubar
parents:
diff changeset
187
94f5560de46d Uploaded
fubar
parents:
diff changeset
188 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
189 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
190 :param inputs_root: root of <inputs> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
191 :type inputs_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
192 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
193 tool.inputs = gxtp.Inputs()
94f5560de46d Uploaded
fubar
parents:
diff changeset
194 inp_parser = InputsParser()
94f5560de46d Uploaded
fubar
parents:
diff changeset
195 inp_parser.load_inputs(tool.inputs, inputs_root)
94f5560de46d Uploaded
fubar
parents:
diff changeset
196
94f5560de46d Uploaded
fubar
parents:
diff changeset
197 def _load_outputs(self, tool, outputs_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
198 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
199 Add <outputs> to the tool using the :class:`galaxyxml.tool.import_xml.OutputsParser` object.
94f5560de46d Uploaded
fubar
parents:
diff changeset
200
94f5560de46d Uploaded
fubar
parents:
diff changeset
201 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
202 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
203 :param outputs_root: root of <outputs> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
204 :type outputs_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
205 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
206 tool.outputs = gxtp.Outputs()
94f5560de46d Uploaded
fubar
parents:
diff changeset
207 out_parser = OutputsParser()
94f5560de46d Uploaded
fubar
parents:
diff changeset
208 out_parser.load_outputs(tool.outputs, outputs_root)
94f5560de46d Uploaded
fubar
parents:
diff changeset
209
94f5560de46d Uploaded
fubar
parents:
diff changeset
210 def _load_tests(self, tool, tests_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
211 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
212 Add <tests> to the tool using the :class:`galaxyxml.tool.import_xml.TestsParser` object.
94f5560de46d Uploaded
fubar
parents:
diff changeset
213
94f5560de46d Uploaded
fubar
parents:
diff changeset
214 :param tool: Tool object from galaxyxml.
94f5560de46d Uploaded
fubar
parents:
diff changeset
215 :type tool: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
216 :param tests_root: root of <tests> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
217 :type tests_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
218 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
219 tool.tests = gxtp.Tests()
94f5560de46d Uploaded
fubar
parents:
diff changeset
220 tests_parser = TestsParser()
94f5560de46d Uploaded
fubar
parents:
diff changeset
221 tests_parser.load_tests(tool.tests, tests_root)
94f5560de46d Uploaded
fubar
parents:
diff changeset
222
94f5560de46d Uploaded
fubar
parents:
diff changeset
223 def import_xml(self, xml_path):
94f5560de46d Uploaded
fubar
parents:
diff changeset
224 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
225 Load existing xml into the :class:`galaxyxml.tool.Tool` object.
94f5560de46d Uploaded
fubar
parents:
diff changeset
226
94f5560de46d Uploaded
fubar
parents:
diff changeset
227 :param xml_path: Path of the XML to be loaded.
94f5560de46d Uploaded
fubar
parents:
diff changeset
228 :type xml_path: STRING
94f5560de46d Uploaded
fubar
parents:
diff changeset
229 :return: XML content in the galaxyxml model.
94f5560de46d Uploaded
fubar
parents:
diff changeset
230 :rtype: :class:`galaxyxml.tool.Tool`
94f5560de46d Uploaded
fubar
parents:
diff changeset
231 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
232 xml_root = ET.parse(xml_path).getroot()
94f5560de46d Uploaded
fubar
parents:
diff changeset
233 tool = self._init_tool(xml_root)
94f5560de46d Uploaded
fubar
parents:
diff changeset
234 # Now we import each tag's field
94f5560de46d Uploaded
fubar
parents:
diff changeset
235 for child in xml_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
236 try:
94f5560de46d Uploaded
fubar
parents:
diff changeset
237 getattr(self, "_load_{}".format(child.tag))(tool, child)
94f5560de46d Uploaded
fubar
parents:
diff changeset
238 except AttributeError:
94f5560de46d Uploaded
fubar
parents:
diff changeset
239 logger.warning(child.tag + " tag is not processed.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
240 return tool
94f5560de46d Uploaded
fubar
parents:
diff changeset
241
94f5560de46d Uploaded
fubar
parents:
diff changeset
242
94f5560de46d Uploaded
fubar
parents:
diff changeset
243 class InputsParser(object):
94f5560de46d Uploaded
fubar
parents:
diff changeset
244 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
245 Class to parse content of the <inputs> tag from a Galaxy XML wrapper.
94f5560de46d Uploaded
fubar
parents:
diff changeset
246 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
247
94f5560de46d Uploaded
fubar
parents:
diff changeset
248 def _load_text_param(self, root, text_param):
94f5560de46d Uploaded
fubar
parents:
diff changeset
249 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
250 Add <param type="text" /> to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
251
94f5560de46d Uploaded
fubar
parents:
diff changeset
252 :param root: root to append the param to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
253 :param text_param: root of <param> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
254 :type text_param: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
255 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
256 root.append(
94f5560de46d Uploaded
fubar
parents:
diff changeset
257 gxtp.TextParam(
94f5560de46d Uploaded
fubar
parents:
diff changeset
258 text_param.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
259 optional=text_param.get("optional", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
260 label=text_param.get("label", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
261 help=text_param.get("help", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
262 value=text_param.get("value", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
263 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
264 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
265
94f5560de46d Uploaded
fubar
parents:
diff changeset
266 def _load_data_param(self, root, data_param):
94f5560de46d Uploaded
fubar
parents:
diff changeset
267 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
268 Add <param type="data" /> to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
269
94f5560de46d Uploaded
fubar
parents:
diff changeset
270 :param root: root to append the param to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
271 :param data_param: root of <param> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
272 :type data_param: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
273 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
274 root.append(
94f5560de46d Uploaded
fubar
parents:
diff changeset
275 gxtp.DataParam(
94f5560de46d Uploaded
fubar
parents:
diff changeset
276 data_param.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
277 optional=data_param.attrib.get("optional", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
278 label=data_param.attrib.get("label", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
279 help=data_param.attrib.get("help", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
280 format=data_param.attrib.get("format", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
281 multiple=data_param.attrib.get("multiple", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
282 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
283 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
284
94f5560de46d Uploaded
fubar
parents:
diff changeset
285 def _load_boolean_param(self, root, bool_param):
94f5560de46d Uploaded
fubar
parents:
diff changeset
286 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
287 Add <param type="boolean" /> to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
288
94f5560de46d Uploaded
fubar
parents:
diff changeset
289 :param root: root to append the param to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
290 :param bool_param: root of <param> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
291 :type bool_param: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
292 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
293 root.append(
94f5560de46d Uploaded
fubar
parents:
diff changeset
294 gxtp.BooleanParam(
94f5560de46d Uploaded
fubar
parents:
diff changeset
295 bool_param.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
296 optional=bool_param.attrib.get("optional", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
297 label=bool_param.attrib.get("label", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
298 help=bool_param.attrib.get("help", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
299 checked=bool_param.attrib.get("checked", False),
94f5560de46d Uploaded
fubar
parents:
diff changeset
300 truevalue=bool_param.attrib.get("truevalue", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
301 falsevalue=bool_param.attrib.get("falsevalue", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
302 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
303 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
304
94f5560de46d Uploaded
fubar
parents:
diff changeset
305 def _load_integer_param(self, root, int_param):
94f5560de46d Uploaded
fubar
parents:
diff changeset
306 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
307 Add <param type="integer" /> to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
308
94f5560de46d Uploaded
fubar
parents:
diff changeset
309 :param root: root to append the param to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
310 :param int_param: root of <param> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
311 :type int_param: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
312 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
313 root.append(
94f5560de46d Uploaded
fubar
parents:
diff changeset
314 gxtp.IntegerParam(
94f5560de46d Uploaded
fubar
parents:
diff changeset
315 int_param.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
316 int_param.attrib.get("value", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
317 optional=int_param.attrib.get("optional", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
318 label=int_param.attrib.get("label", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
319 help=int_param.attrib.get("help", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
320 min=int_param.attrib.get("min", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
321 max=int_param.attrib.get("max", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
322 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
323 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
324
94f5560de46d Uploaded
fubar
parents:
diff changeset
325 def _load_float_param(self, root, float_param):
94f5560de46d Uploaded
fubar
parents:
diff changeset
326 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
327 Add <param type="float" /> to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
328
94f5560de46d Uploaded
fubar
parents:
diff changeset
329 :param root: root to append the param to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
330 :param float_param: root of <param> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
331 :type float_param: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
332 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
333 root.append(
94f5560de46d Uploaded
fubar
parents:
diff changeset
334 gxtp.FloatParam(
94f5560de46d Uploaded
fubar
parents:
diff changeset
335 float_param.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
336 float_param.attrib.get("value", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
337 optional=float_param.attrib.get("optional", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
338 label=float_param.attrib.get("label", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
339 help=float_param.attrib.get("help", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
340 min=float_param.attrib.get("min", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
341 max=float_param.attrib.get("max", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
342 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
343 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
344
94f5560de46d Uploaded
fubar
parents:
diff changeset
345 def _load_option_select(self, root, option):
94f5560de46d Uploaded
fubar
parents:
diff changeset
346 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
347 Add <option> to the root (usually <param type="select" />).
94f5560de46d Uploaded
fubar
parents:
diff changeset
348
94f5560de46d Uploaded
fubar
parents:
diff changeset
349 :param root: root to append the param to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
350 :param option: root of <option> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
351 :type float_param: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
352 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
353 root.append(
94f5560de46d Uploaded
fubar
parents:
diff changeset
354 gxtp.SelectOption(
94f5560de46d Uploaded
fubar
parents:
diff changeset
355 option.attrib.get("value", None), option.text, selected=option.attrib.get("selected", False)
94f5560de46d Uploaded
fubar
parents:
diff changeset
356 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
357 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
358
94f5560de46d Uploaded
fubar
parents:
diff changeset
359 def _load_column_options(self, root, column):
94f5560de46d Uploaded
fubar
parents:
diff changeset
360 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
361 Add <column> to the root (usually <options>).
94f5560de46d Uploaded
fubar
parents:
diff changeset
362
94f5560de46d Uploaded
fubar
parents:
diff changeset
363 :param root: root to append the param to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
364 :param option: root of <column> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
365 :type float_param: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
366 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
367 root.append(gxtp.Column(column.attrib["name"], column.attrib["index"]))
94f5560de46d Uploaded
fubar
parents:
diff changeset
368
94f5560de46d Uploaded
fubar
parents:
diff changeset
369 def _load_filter_options(self, root, filter):
94f5560de46d Uploaded
fubar
parents:
diff changeset
370 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
371 Add <filter> to the root (usually <options>).
94f5560de46d Uploaded
fubar
parents:
diff changeset
372
94f5560de46d Uploaded
fubar
parents:
diff changeset
373 :param root: root to append the param to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
374 :param option: root of <filter> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
375 :type float_param: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
376 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
377 root.append(
94f5560de46d Uploaded
fubar
parents:
diff changeset
378 gxtp.Filter(
94f5560de46d Uploaded
fubar
parents:
diff changeset
379 filter.attrib["type"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
380 column=filter.attrib.get("column", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
381 name=filter.attrib.get("name", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
382 ref=filter.attrib.get("ref", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
383 key=filter.attrib.get("key", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
384 multiple=filter.attrib.get("multiple", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
385 separator=filter.attrib.get("separator", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
386 keep=filter.attrib.get("keep", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
387 value=filter.attrib.get("value", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
388 ref_attribute=filter.attrib.get("ref_attribute", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
389 index=filter.attrib.get("index", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
390 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
391 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
392
94f5560de46d Uploaded
fubar
parents:
diff changeset
393 def _load_options_select(self, root, options):
94f5560de46d Uploaded
fubar
parents:
diff changeset
394 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
395 Add <options> to the root (usually <param type="select" />).
94f5560de46d Uploaded
fubar
parents:
diff changeset
396
94f5560de46d Uploaded
fubar
parents:
diff changeset
397 :param root: root to append the param to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
398 :param option: root of <options> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
399 :type float_param: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
400 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
401 opts = gxtp.Options(
94f5560de46d Uploaded
fubar
parents:
diff changeset
402 from_dataset=options.attrib.get("from_dataset", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
403 from_file=options.attrib.get("from_file", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
404 from_data_table=options.attrib.get("from_data_table", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
405 from_parameter=options.attrib.get("from_parameter", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
406 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
407 # Deal with child nodes (usually filter and column)
94f5560de46d Uploaded
fubar
parents:
diff changeset
408 for opt_child in options:
94f5560de46d Uploaded
fubar
parents:
diff changeset
409 try:
94f5560de46d Uploaded
fubar
parents:
diff changeset
410 getattr(self, "_load_{}_options".format(opt_child.tag))(opts, opt_child)
94f5560de46d Uploaded
fubar
parents:
diff changeset
411 except AttributeError:
94f5560de46d Uploaded
fubar
parents:
diff changeset
412 logger.warning(opt_child.tag + " tag is not processed for <options>.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
413 root.append(opts)
94f5560de46d Uploaded
fubar
parents:
diff changeset
414
94f5560de46d Uploaded
fubar
parents:
diff changeset
415 def _load_select_param(self, root, sel_param):
94f5560de46d Uploaded
fubar
parents:
diff changeset
416 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
417 Add <param type="select" /> to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
418
94f5560de46d Uploaded
fubar
parents:
diff changeset
419 :param root: root to append the param to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
420 :param sel_param: root of <param> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
421 :type sel_param: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
422 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
423 select_param = gxtp.SelectParam(
94f5560de46d Uploaded
fubar
parents:
diff changeset
424 sel_param.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
425 optional=sel_param.attrib.get("optional", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
426 label=sel_param.attrib.get("label", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
427 help=sel_param.attrib.get("help", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
428 data_ref=sel_param.attrib.get("data_ref", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
429 display=sel_param.attrib.get("display", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
430 multiple=sel_param.attrib.get("multiple", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
431 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
432 # Deal with child nodes (usually option and options)
94f5560de46d Uploaded
fubar
parents:
diff changeset
433 for sel_child in sel_param:
94f5560de46d Uploaded
fubar
parents:
diff changeset
434 try:
94f5560de46d Uploaded
fubar
parents:
diff changeset
435 getattr(self, "_load_{}_select".format(sel_child.tag))(select_param, sel_child)
94f5560de46d Uploaded
fubar
parents:
diff changeset
436 except AttributeError:
94f5560de46d Uploaded
fubar
parents:
diff changeset
437 logger.warning(sel_child.tag + " tag is not processed for <param type='select'>.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
438 root.append(select_param)
94f5560de46d Uploaded
fubar
parents:
diff changeset
439
94f5560de46d Uploaded
fubar
parents:
diff changeset
440 def _load_param(self, root, param_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
441 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
442 Method to select which type of <param> is being added to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
443
94f5560de46d Uploaded
fubar
parents:
diff changeset
444 :param root: root to attach param to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
445 :param param_root: root of <param> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
446 :type param_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
447 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
448 param_type = param_root.attrib["type"]
94f5560de46d Uploaded
fubar
parents:
diff changeset
449 try:
94f5560de46d Uploaded
fubar
parents:
diff changeset
450 getattr(self, "_load_{}_param".format(param_type))(root, param_root)
94f5560de46d Uploaded
fubar
parents:
diff changeset
451 except AttributeError:
94f5560de46d Uploaded
fubar
parents:
diff changeset
452 logger.warning(param_type + " tag is not processed for <param>.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
453
94f5560de46d Uploaded
fubar
parents:
diff changeset
454 def _load_when(self, root, when_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
455 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
456 Add <when> to the root (usually <conditional>).
94f5560de46d Uploaded
fubar
parents:
diff changeset
457
94f5560de46d Uploaded
fubar
parents:
diff changeset
458 :param root: root to append when to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
459 :param when_root: root of <when> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
460 :type when_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
461 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
462 when = gxtp.When(when_root.attrib["value"])
94f5560de46d Uploaded
fubar
parents:
diff changeset
463 # Deal with child nodes
94f5560de46d Uploaded
fubar
parents:
diff changeset
464 self.load_inputs(when, when_root)
94f5560de46d Uploaded
fubar
parents:
diff changeset
465 root.append(when)
94f5560de46d Uploaded
fubar
parents:
diff changeset
466
94f5560de46d Uploaded
fubar
parents:
diff changeset
467 def _load_conditional(self, root, conditional_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
468 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
469 Add <conditional> to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
470
94f5560de46d Uploaded
fubar
parents:
diff changeset
471 :param root: root to append conditional to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
472 :param conditional_root: root of <conditional> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
473 :type conditional_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
474 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
475 value_ref_in_group = conditional_root.attrib.get("value_ref_in_group", None)
94f5560de46d Uploaded
fubar
parents:
diff changeset
476 # Other optional parameters need to be added to conditional object
94f5560de46d Uploaded
fubar
parents:
diff changeset
477 conditional = gxtp.Conditional(
94f5560de46d Uploaded
fubar
parents:
diff changeset
478 conditional_root.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
479 value_from=conditional_root.attrib.get("value_from", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
480 value_ref=conditional_root.attrib.get("value_ref", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
481 value_ref_in_group=value_ref_in_group,
94f5560de46d Uploaded
fubar
parents:
diff changeset
482 label=conditional_root.attrib.get("label", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
483 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
484 # Deal with child nodes
94f5560de46d Uploaded
fubar
parents:
diff changeset
485 self.load_inputs(conditional, conditional_root)
94f5560de46d Uploaded
fubar
parents:
diff changeset
486 root.append(conditional)
94f5560de46d Uploaded
fubar
parents:
diff changeset
487
94f5560de46d Uploaded
fubar
parents:
diff changeset
488 def _load_section(self, root, section_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
489 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
490 Add <section> to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
491
94f5560de46d Uploaded
fubar
parents:
diff changeset
492 :param root: root to append conditional to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
493 :param section_root: root of <section> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
494 :type section_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
495 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
496 section = gxtp.Section(
94f5560de46d Uploaded
fubar
parents:
diff changeset
497 section_root.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
498 section_root.attrib["title"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
499 expanded=section_root.attrib.get("expanded", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
500 help=section_root.attrib.get("help", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
501 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
502 # Deal with child nodes
94f5560de46d Uploaded
fubar
parents:
diff changeset
503 self.load_inputs(section, section_root)
94f5560de46d Uploaded
fubar
parents:
diff changeset
504 root.append(section)
94f5560de46d Uploaded
fubar
parents:
diff changeset
505
94f5560de46d Uploaded
fubar
parents:
diff changeset
506 def _load_repeat(self, root, repeat_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
507 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
508 Add <repeat> to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
509
94f5560de46d Uploaded
fubar
parents:
diff changeset
510 :param root: root to append repeat to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
511 :param repeat_root: root of <repeat> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
512 :param repeat_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
513 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
514 repeat = gxtp.Repeat(
94f5560de46d Uploaded
fubar
parents:
diff changeset
515 repeat_root.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
516 repeat_root.attrib["title"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
517 min=repeat_root.attrib.get("min", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
518 max=repeat_root.attrib.get("max", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
519 default=repeat_root.attrib.get("default", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
520 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
521 # Deal with child nodes
94f5560de46d Uploaded
fubar
parents:
diff changeset
522 self.load_inputs(repeat, repeat_root)
94f5560de46d Uploaded
fubar
parents:
diff changeset
523 root.append(repeat)
94f5560de46d Uploaded
fubar
parents:
diff changeset
524
94f5560de46d Uploaded
fubar
parents:
diff changeset
525 def load_inputs(self, root, inputs_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
526 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
527 Add <inputs.tag> to the root (it can be any tags with children such as
94f5560de46d Uploaded
fubar
parents:
diff changeset
528 <inputs>, <repeat>, <section> ...)
94f5560de46d Uploaded
fubar
parents:
diff changeset
529
94f5560de46d Uploaded
fubar
parents:
diff changeset
530 :param root: root to attach inputs to (either <inputs> or <when>).
94f5560de46d Uploaded
fubar
parents:
diff changeset
531 :param inputs_root: root of <inputs> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
532 :type inputs_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
533 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
534 for inp_child in inputs_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
535 try:
94f5560de46d Uploaded
fubar
parents:
diff changeset
536 getattr(self, "_load_{}".format(inp_child.tag))(root, inp_child)
94f5560de46d Uploaded
fubar
parents:
diff changeset
537 except AttributeError:
94f5560de46d Uploaded
fubar
parents:
diff changeset
538 logger.warning(inp_child.tag + " tag is not processed for <" + inputs_root.tag + "> tag.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
539
94f5560de46d Uploaded
fubar
parents:
diff changeset
540
94f5560de46d Uploaded
fubar
parents:
diff changeset
541 class OutputsParser(object):
94f5560de46d Uploaded
fubar
parents:
diff changeset
542 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
543 Class to parse content of the <outputs> tag from a Galaxy XML wrapper.
94f5560de46d Uploaded
fubar
parents:
diff changeset
544 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
545
94f5560de46d Uploaded
fubar
parents:
diff changeset
546 def _load_data(self, outputs_root, data_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
547 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
548 Add <data> to <outputs>.
94f5560de46d Uploaded
fubar
parents:
diff changeset
549
94f5560de46d Uploaded
fubar
parents:
diff changeset
550 :param outputs_root: <outputs> root to append <data> to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
551 :param data_root: root of <data> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
552 :param data_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
553 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
554 data = gxtp.OutputData(
94f5560de46d Uploaded
fubar
parents:
diff changeset
555 data_root.attrib.get("name", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
556 data_root.attrib.get("format", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
557 format_source=data_root.attrib.get("format_source", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
558 metadata_source=data_root.attrib.get("metadata_source", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
559 label=data_root.attrib.get("label", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
560 from_work_dir=data_root.attrib.get("from_work_dir", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
561 hidden=data_root.attrib.get("hidden", False),
94f5560de46d Uploaded
fubar
parents:
diff changeset
562 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
563 # Deal with child nodes
94f5560de46d Uploaded
fubar
parents:
diff changeset
564 for data_child in data_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
565 try:
94f5560de46d Uploaded
fubar
parents:
diff changeset
566 getattr(self, "_load_{}".format(data_child.tag))(data, data_child)
94f5560de46d Uploaded
fubar
parents:
diff changeset
567 except AttributeError:
94f5560de46d Uploaded
fubar
parents:
diff changeset
568 logger.warning(data_child.tag + " tag is not processed for <data>.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
569 outputs_root.append(data)
94f5560de46d Uploaded
fubar
parents:
diff changeset
570
94f5560de46d Uploaded
fubar
parents:
diff changeset
571 def _load_change_format(self, root, chfmt_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
572 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
573 Add <change_format> to root (<data>).
94f5560de46d Uploaded
fubar
parents:
diff changeset
574
94f5560de46d Uploaded
fubar
parents:
diff changeset
575 :param root: root to append <change_format> to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
576 :param chfm_root: root of <change_format> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
577 :param chfm_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
578 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
579 change_format = gxtp.ChangeFormat()
94f5560de46d Uploaded
fubar
parents:
diff changeset
580 for chfmt_child in chfmt_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
581 change_format.append(
94f5560de46d Uploaded
fubar
parents:
diff changeset
582 gxtp.ChangeFormatWhen(
94f5560de46d Uploaded
fubar
parents:
diff changeset
583 chfmt_child.attrib["input"], chfmt_child.attrib["format"], chfmt_child.attrib["value"]
94f5560de46d Uploaded
fubar
parents:
diff changeset
584 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
585 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
586 root.append(change_format)
94f5560de46d Uploaded
fubar
parents:
diff changeset
587
94f5560de46d Uploaded
fubar
parents:
diff changeset
588 def _load_collection(self, outputs_root, coll_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
589 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
590 Add <collection> to <outputs>.
94f5560de46d Uploaded
fubar
parents:
diff changeset
591
94f5560de46d Uploaded
fubar
parents:
diff changeset
592 :param outputs_root: <outputs> root to append <collection> to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
593 :param coll_root: root of <collection> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
594 :param coll_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
595 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
596 collection = gxtp.OutputCollection(
94f5560de46d Uploaded
fubar
parents:
diff changeset
597 coll_root.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
598 type=coll_root.attrib.get("type", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
599 label=coll_root.attrib.get("label", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
600 format_source=coll_root.attrib.get("format_source", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
601 type_source=coll_root.attrib.get("type_source", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
602 structured_like=coll_root.attrib.get("structured_like", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
603 inherit_format=coll_root.attrib.get("inherit_format", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
604 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
605 # Deal with child nodes
94f5560de46d Uploaded
fubar
parents:
diff changeset
606 for coll_child in coll_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
607 try:
94f5560de46d Uploaded
fubar
parents:
diff changeset
608 getattr(self, "_load_{}".format(coll_child.tag))(collection, coll_child)
94f5560de46d Uploaded
fubar
parents:
diff changeset
609 except AttributeError:
94f5560de46d Uploaded
fubar
parents:
diff changeset
610 logger.warning(coll_child.tag + " tag is not processed for <collection>.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
611 outputs_root.append(collection)
94f5560de46d Uploaded
fubar
parents:
diff changeset
612
94f5560de46d Uploaded
fubar
parents:
diff changeset
613 def _load_discover_datasets(self, root, disc_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
614 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
615 Add <discover_datasets> to root (<collection>).
94f5560de46d Uploaded
fubar
parents:
diff changeset
616
94f5560de46d Uploaded
fubar
parents:
diff changeset
617 :param root: root to append <collection> to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
618 :param disc_root: root of <discover_datasets> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
619 :param disc_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
620 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
621 root.append(
94f5560de46d Uploaded
fubar
parents:
diff changeset
622 gxtp.DiscoverDatasets(
94f5560de46d Uploaded
fubar
parents:
diff changeset
623 disc_root.attrib["pattern"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
624 directory=disc_root.attrib.get("directory", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
625 format=disc_root.attrib.get("format", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
626 ext=disc_root.attrib.get("ext", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
627 visible=disc_root.attrib.get("visible", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
628 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
629 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
630
94f5560de46d Uploaded
fubar
parents:
diff changeset
631 def _load_filter(self, root, filter_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
632 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
633 Add <filter> to root (<collection> or <data>).
94f5560de46d Uploaded
fubar
parents:
diff changeset
634
94f5560de46d Uploaded
fubar
parents:
diff changeset
635 :param root: root to append <collection> to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
636 :param coll_root: root of <filter> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
637 :param coll_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
638 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
639 root.append(gxtp.OutputFilter(filter_root.text))
94f5560de46d Uploaded
fubar
parents:
diff changeset
640
94f5560de46d Uploaded
fubar
parents:
diff changeset
641 def load_outputs(self, root, outputs_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
642 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
643 Add <outputs> to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
644
94f5560de46d Uploaded
fubar
parents:
diff changeset
645 :param root: root to attach <outputs> to (<tool>).
94f5560de46d Uploaded
fubar
parents:
diff changeset
646 :param tests_root: root of <outputs> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
647 :type tests_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
648 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
649 for out_child in outputs_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
650 try:
94f5560de46d Uploaded
fubar
parents:
diff changeset
651 getattr(self, "_load_{}".format(out_child.tag))(root, out_child)
94f5560de46d Uploaded
fubar
parents:
diff changeset
652 except AttributeError:
94f5560de46d Uploaded
fubar
parents:
diff changeset
653 logger.warning(out_child.tag + " tag is not processed for <outputs>.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
654
94f5560de46d Uploaded
fubar
parents:
diff changeset
655
94f5560de46d Uploaded
fubar
parents:
diff changeset
656 class TestsParser(object):
94f5560de46d Uploaded
fubar
parents:
diff changeset
657 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
658 Class to parse content of the <tests> tag from a Galaxy XML wrapper.
94f5560de46d Uploaded
fubar
parents:
diff changeset
659 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
660
94f5560de46d Uploaded
fubar
parents:
diff changeset
661 def _load_param(self, test_root, param_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
662 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
663 Add <param> to the <test>.
94f5560de46d Uploaded
fubar
parents:
diff changeset
664
94f5560de46d Uploaded
fubar
parents:
diff changeset
665 :param root: <test> root to append <param> to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
666 :param repeat_root: root of <param> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
667 :param repeat_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
668 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
669 test_root.append(
94f5560de46d Uploaded
fubar
parents:
diff changeset
670 gxtp.TestParam(
94f5560de46d Uploaded
fubar
parents:
diff changeset
671 param_root.attrib["name"],
94f5560de46d Uploaded
fubar
parents:
diff changeset
672 value=param_root.attrib.get("value", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
673 ftype=param_root.attrib.get("ftype", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
674 dbkey=param_root.attrib.get("dbkey", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
675 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
676 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
677
94f5560de46d Uploaded
fubar
parents:
diff changeset
678 def _load_output(self, test_root, output_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
679 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
680 Add <output> to the <test>.
94f5560de46d Uploaded
fubar
parents:
diff changeset
681
94f5560de46d Uploaded
fubar
parents:
diff changeset
682 :param root: <test> root to append <output> to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
683 :param repeat_root: root of <output> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
684 :param repeat_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
685 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
686 test_root.append(
94f5560de46d Uploaded
fubar
parents:
diff changeset
687 gxtp.TestOutput(
94f5560de46d Uploaded
fubar
parents:
diff changeset
688 name=output_root.attrib.get("name", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
689 file=output_root.attrib.get("file", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
690 ftype=output_root.attrib.get("ftype", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
691 sort=output_root.attrib.get("sort", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
692 value=output_root.attrib.get("value", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
693 md5=output_root.attrib.get("md5", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
694 checksum=output_root.attrib.get("checksum", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
695 compare=output_root.attrib.get("compare", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
696 lines_diff=output_root.attrib.get("lines_diff", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
697 delta=output_root.attrib.get("delta", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
698 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
699 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
700
94f5560de46d Uploaded
fubar
parents:
diff changeset
701 def _load_output_collection(self, test_root, output_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
702 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
703 Add <output_collection> to the <test>.
94f5560de46d Uploaded
fubar
parents:
diff changeset
704
94f5560de46d Uploaded
fubar
parents:
diff changeset
705 :param root: <test> root to append <output> to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
706 :param repeat_root: root of <output_collection> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
707 :param repeat_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
708 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
709 collection = gxtp.TestOutputCollection(
94f5560de46d Uploaded
fubar
parents:
diff changeset
710 name=output_root.attrib.get("name", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
711 ftype=output_root.attrib.get("ftype", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
712 sort=output_root.attrib.get("sort", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
713 value=output_root.attrib.get("value", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
714 compare=output_root.attrib.get("compare", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
715 lines_diff=output_root.attrib.get("lines_diff", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
716 delta=output_root.attrib.get("delta", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
717 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
718 # Deal with child nodes
94f5560de46d Uploaded
fubar
parents:
diff changeset
719 self.load_inputs(collection, output_root)
94f5560de46d Uploaded
fubar
parents:
diff changeset
720 test_root.append(collection)
94f5560de46d Uploaded
fubar
parents:
diff changeset
721
94f5560de46d Uploaded
fubar
parents:
diff changeset
722 def _load_element(self, test_root, element_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
723 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
724 Add <element> to the <test>.
94f5560de46d Uploaded
fubar
parents:
diff changeset
725
94f5560de46d Uploaded
fubar
parents:
diff changeset
726 :param root: <test> root to append <output> to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
727 :param repeat_root: root of <output_collection> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
728 :param repeat_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
729 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
730 test_root.append(gxtp.TestOCElement(
94f5560de46d Uploaded
fubar
parents:
diff changeset
731 name=element_root.attrib.get("name", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
732 ftype=element_root.attrib.get("ftype", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
733 file=element_root.attrib.get("file", None)
94f5560de46d Uploaded
fubar
parents:
diff changeset
734 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
735 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
736
94f5560de46d Uploaded
fubar
parents:
diff changeset
737 def _load_repeat(self, test_root, repeat_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
738 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
739 Add <repeat> to the <test>.
94f5560de46d Uploaded
fubar
parents:
diff changeset
740
94f5560de46d Uploaded
fubar
parents:
diff changeset
741 :param root: <test> root to append <output> to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
742 :param output_root: root of <repeat> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
743 :param output_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
744 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
745 repeat = gxtp.TestRepeat(
94f5560de46d Uploaded
fubar
parents:
diff changeset
746 repeat_root.attrib.get("name", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
747 repeat_root.attrib.get("title", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
748 min=repeat_root.attrib.get("min", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
749 max=repeat_root.attrib.get("max", None),
94f5560de46d Uploaded
fubar
parents:
diff changeset
750 default=repeat_root.attrib.get("default", None)
94f5560de46d Uploaded
fubar
parents:
diff changeset
751 )
94f5560de46d Uploaded
fubar
parents:
diff changeset
752 # Deal with child nodes
94f5560de46d Uploaded
fubar
parents:
diff changeset
753 self.load_inputs(repeat, repeat_root)
94f5560de46d Uploaded
fubar
parents:
diff changeset
754 test_root.append(repeat)
94f5560de46d Uploaded
fubar
parents:
diff changeset
755
94f5560de46d Uploaded
fubar
parents:
diff changeset
756 def load_inputs(self, repeat, repeat_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
757 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
758 Add children to repeat/collection for test
94f5560de46d Uploaded
fubar
parents:
diff changeset
759
94f5560de46d Uploaded
fubar
parents:
diff changeset
760 :param repeat_root: repeat to attach inputs to.
94f5560de46d Uploaded
fubar
parents:
diff changeset
761 :param repeat: root of <repeat> or <collection> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
762 :type repeat_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
763 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
764 for rep_child in repeat_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
765 try:
94f5560de46d Uploaded
fubar
parents:
diff changeset
766 getattr(self, "_load_{}".format(rep_child.tag))(repeat, rep_child)
94f5560de46d Uploaded
fubar
parents:
diff changeset
767 except AttributeError:
94f5560de46d Uploaded
fubar
parents:
diff changeset
768 logger.warning(rep_child.tag + " tag is not processed for <" + repeat_root.tag + "> tag.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
769
94f5560de46d Uploaded
fubar
parents:
diff changeset
770 def load_tests(self, root, tests_root):
94f5560de46d Uploaded
fubar
parents:
diff changeset
771 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
772 Add <tests> to the root.
94f5560de46d Uploaded
fubar
parents:
diff changeset
773
94f5560de46d Uploaded
fubar
parents:
diff changeset
774 :param root: root to attach <tests> to (<tool>).
94f5560de46d Uploaded
fubar
parents:
diff changeset
775 :param tests_root: root of <tests> tag.
94f5560de46d Uploaded
fubar
parents:
diff changeset
776 :type tests_root: :class:`xml.etree._Element`
94f5560de46d Uploaded
fubar
parents:
diff changeset
777 """
94f5560de46d Uploaded
fubar
parents:
diff changeset
778 for test_root in tests_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
779 test = gxtp.Test()
94f5560de46d Uploaded
fubar
parents:
diff changeset
780 for test_child in test_root:
94f5560de46d Uploaded
fubar
parents:
diff changeset
781 try:
94f5560de46d Uploaded
fubar
parents:
diff changeset
782 getattr(self, "_load_{}".format(test_child.tag))(test, test_child)
94f5560de46d Uploaded
fubar
parents:
diff changeset
783 except AttributeError:
94f5560de46d Uploaded
fubar
parents:
diff changeset
784 logger.warning(test_child.tag + " tag is not processed within <test>.")
94f5560de46d Uploaded
fubar
parents:
diff changeset
785 root.append(test)