code: def execute_step(self, step):
          
          inputs = self.get_inputs(step.ins)
          outputs = defaultdict(list)
          for output in step.run(inputs):
              for k, v in output.items():
                  outputs[k].extend(v)
          for output in step.finalise():
              for k, v in output.items():
                  outputs[k].extend(v)
          self.unresolved_steps.remove(step)
          return outputs
docs: Execute the named step. Also control the multiplicity of input and output entities
  
          :param step: step to prepare input for
          :param kwargs: input to be prepared
          :return: dict of output by entity type