def pre_execution(self, input_dict: Dict[(str, types.Channel)], output_dict: Dict[(str, types.Channel)], exec_properties: Dict[(str, Any)], driver_args: data_types.DriverArgs, pipeline_info: data_types.PipelineInfo, component_info: data_types.ComponentInfo) -> data_types.ExecutionDecision:
    contexts = self._metadata_handler.register_pipeline_contexts_if_not_exists(pipeline_info)
    execution = self._metadata_handler.register_execution(exec_properties=exec_properties, pipeline_info=pipeline_info, component_info=component_info, contexts=contexts)
    output_channel = output_dict[IMPORT_RESULT_KEY]
    output_artifacts = generate_output_dict(self._metadata_handler, uri=exec_properties[SOURCE_URI_KEY], properties=output_channel.additional_properties, custom_properties=output_channel.additional_custom_properties, reimport=exec_properties[REIMPORT_OPTION_KEY], output_artifact_class=output_channel.type)
    self._metadata_handler.update_execution(execution=execution, component_info=component_info, output_artifacts=output_artifacts, execution_state=metadata.EXECUTION_STATE_CACHED, contexts=contexts)
    output_dict[IMPORT_RESULT_KEY] = channel_utils.as_channel(output_artifacts[IMPORT_RESULT_KEY])
    return data_types.ExecutionDecision(input_dict={}, output_dict=output_artifacts, exec_properties=exec_properties, execution_id=execution.id, use_cached_results=False)
def pre_execution(self, input_dict: Dict[(str, types.Channel)], output_dict: Dict[(str, types.Channel)], exec_properties: Dict[(str, Any)], driver_args: data_types.DriverArgs, pipeline_info: data_types.PipelineInfo, component_info: data_types.ComponentInfo) -> data_types.ExecutionDecision:
    contexts = self._metadata_handler.register_pipeline_contexts_if_not_exists(pipeline_info)
    execution = self._metadata_handler.register_execution(exec_properties=exec_properties, pipeline_info=pipeline_info, component_info=component_info, contexts=contexts)
    output_channel = output_dict[IMPORT_RESULT_KEY]
    output_artifacts = generate_output_dict(self._metadata_handler, uri=exec_properties[SOURCE_URI_KEY], properties=output_channel.additional_properties, custom_properties=output_channel.additional_custom_properties, reimport=exec_properties[REIMPORT_OPTION_KEY], output_artifact_class=output_channel.type)
    self._metadata_handler.update_execution(execution=execution, component_info=component_info, output_artifacts=output_artifacts, execution_state=metadata.EXECUTION_STATE_CACHED, contexts=contexts)
    output_dict[IMPORT_RESULT_KEY] = channel_utils.as_channel(output_artifacts[IMPORT_RESULT_KEY])
    return data_types.ExecutionDecision(input_dict={}, output_dict=output_artifacts, exec_properties=exec_properties, execution_id=execution.id, use_cached_results=False)