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,16 +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- arguments ['tags' ] = extract_tags ( dic )
308+ arguments ['tags' ] = extract_xml_tags ( 'oml:tag' , dic )
312309
313310 arguments ['model' ] = None
314311 flow = cls (** arguments )
@@ -375,15 +372,3 @@ def _add_if_nonempty(dic, key, value):
375372 dic [key ] = value
376373
377374
378- def extract_tags (dic ):
379- if 'oml:tag' in dic and dic ['oml:tag' ] is not None :
380- if isinstance (dic ['oml:tag' ], six .string_types ):
381- oml_tags = [dic ['oml:tag' ]]
382- elif isinstance (dic ['oml:tag' ], list ):
383- oml_tags = dic ['oml:tag' ]
384- else :
385- raise ValueError ('Received not string and non list as tag item' )
386-
387- return oml_tags
388- else :
389- return None
0 commit comments