diff --git a/beat/backend/python/algorithm.py b/beat/backend/python/algorithm.py index 0d24bdfca46f1ac13ef2f45af88a0d223ed31edd..fa63584ad3b5e399c0c431232080d6a46d888bad 100644 --- a/beat/backend/python/algorithm.py +++ b/beat/backend/python/algorithm.py @@ -419,6 +419,8 @@ class Algorithm(object): for k,v in g['inputs'].items()]) self.output_map = dict([(k,v['type']) for g in self.groups \ for k,v in g.get('outputs', {}).items()]) + self.loop_map = dict([(k,v['type']) for g in self.groups \ + for k,v in g.get('loop', {}).items()]) self._load_dataformats(dataformat_cache) self._convert_parameter_types() @@ -457,6 +459,23 @@ class Algorithm(object): self.dataformats[output['type']] = thisformat + if 'loop' not in group: + continue + + for name, entry in group['loop'].items(): + entry_format = entry['type'] + if entry_format in self.dataformats: + continue + + if dataformat_cache and entry_format in dataformat_cache: + thisformat = dataformat_cache[entry_format] + else: + thisformat = dataformat.DataFormat(self.prefix, entry_format) + if dataformat_cache is not None: + dataformat_cache[entry_format] = thisformat + + self.dataformats[entry_format] = thisformat + if self.results: