Source code for sevenbridges.models.compound.tasks
from sevenbridges.models.enums import FileApiFormats
from sevenbridges.models.file import File
[docs]def map_input_output(item, api):
"""
Maps item to appropriate sevebridges object.
:param item: Input/Output value.
:param api: Api instance.
:return: Mapped object.
"""
if isinstance(item, list):
return [map_input_output(it, api) for it in item]
elif isinstance(item, dict) and 'class' in item:
file_class_list = [
FileApiFormats.FILE.lower(),
FileApiFormats.FOLDER.lower()
]
if item['class'].lower() in file_class_list:
_secondary_files = []
for _file in item.get('secondaryFiles', []):
_secondary_files.append({'id': _file['path']})
data = {
'id': item['path']
}
# map class to type
if item['class'].lower() == FileApiFormats.FOLDER.lower():
data['type'] = 'folder'
else:
data['type'] = 'file'
# map cwl 1 file name
if 'basename' in item:
data['name'] = item['basename']
data.update(
{k: item[k] for k in item if k not in ['path', 'basename']}
)
data.update({
'_secondary_files': _secondary_files or None,
'fetched': True
})
return File(api=api, **data)
else:
return item