44import xmltodict
55
66from .._api_calls import _perform_api_call
7+ from ..utils import extract_xml_tags
78
89
910class OpenMLFlow (object ):
@@ -278,10 +279,8 @@ def _from_dict(cls, xml_dict):
278279 if 'oml:parameter' in dic :
279280 # In case of a single parameter, xmltodict returns a dictionary,
280281 # otherwise a list.
281- if isinstance (dic ['oml:parameter' ], dict ):
282- oml_parameters = [dic ['oml:parameter' ]]
283- else :
284- oml_parameters = dic ['oml:parameter' ]
282+ oml_parameters = extract_xml_tags ('oml:parameter' , dic ,
283+ allow_none = False )
285284
286285 for oml_parameter in oml_parameters :
287286 parameter_name = oml_parameter ['oml:name' ]
@@ -299,27 +298,14 @@ def _from_dict(cls, xml_dict):
299298 if 'oml:component' in dic :
300299 # In case of a single component xmltodict returns a dict,
301300 # otherwise a list.
302- if isinstance (dic ['oml:component' ], dict ):
303- oml_components = [dic ['oml:component' ]]
304- else :
305- oml_components = dic ['oml:component' ]
301+ oml_components = extract_xml_tags ('oml:component' , dic ,
302+ allow_none = False )
306303
307304 for component in oml_components :
308305 flow = OpenMLFlow ._from_dict (component )
309306 components [component ['oml:identifier' ]] = flow
310307 arguments ['components' ] = components
311-
312- tags = []
313- if 'oml:tag' in dic and dic ['oml:tag' ] is not None :
314- # In case of a single tag xmltodict returns a dict, otherwise a list
315- if isinstance (dic ['oml:tag' ], dict ):
316- oml_tags = [dic ['oml:tag' ]]
317- else :
318- oml_tags = dic ['oml:tag' ]
319-
320- for tag in oml_tags :
321- tags .append (tag )
322- arguments ['tags' ] = tags
308+ arguments ['tags' ] = extract_xml_tags ('oml:tag' , dic )
323309
324310 arguments ['model' ] = None
325311 flow = cls (** arguments )
@@ -385,3 +371,4 @@ def _add_if_nonempty(dic, key, value):
385371 if value is not None :
386372 dic [key ] = value
387373
374+
0 commit comments