code: def _outputs(self):
          
          layers = OrderedDict()
          layers[layer_purpose_exposure_summary['key']] = (
              self._exposure_summary)
          layers[layer_purpose_aggregate_hazard_impacted['key']] = (
              self._aggregate_hazard_impacted)
          layers[layer_purpose_aggregation_summary['key']] = (
              self._aggregation_summary)
          layers[layer_purpose_analysis_impacted['key']] = (
              self._analysis_impacted)
          layers[layer_purpose_exposure_summary_table['key']] = (
              self._exposure_summary_table)
          layers[layer_purpose_profiling['key']] = self._profiling_table
  
          # Extra layers produced by pre-processing
          layers.update(self._preprocessors_layers)
  
          for expected_purpose, layer in list(layers.items()):
              if layer:
                  purpose = layer.keywords.get('layer_purpose')
                  if purpose != expected_purpose:
                      # ET 18/11/16
                      # I'm disabling this check. If an exception is raised in
                      # the IF, this exception might be raised and will hide the
                      # other one.
                      # raise Exception('Wrong layer purpose : %s != %s' % (
                      #     purpose, expected_purpose))
                      pass
  
          # Remove layers which are not set.
          layers = [layer for layer in list(layers.values()) if layer]
          return layers
docs: List of layers containing outputs from the IF.
  
          :returns: A list of vector layers.
          :rtype: list