class_docstr: BaseDriver is the base class of all custom drivers.
  
  This can also be used as the default driver of a component if no custom logic
  is needed.
  
  Attributes:
    _metadata_handle: An instance of Metadata.
class_docstr_tok: ["BaseDriver","is","the","base","class","of","all","custom","drivers",".","This","can","also","be","used","as","the","default","driver","of","a","component","if","no","custom","logic","is","needed",".","Attributes",":","_metadata_handle",":","An","instance","of","Metadata","."]
docstr: Log inputs, outputs, and executor properties in a standard format.
docstr_tok: ["Log","inputs",",","outputs",",","and","executor","properties","in","a","standard","format","."]
code: def _log_properties(
      self,
      input_dict: Dict[str, List[types.Artifact]],
      output_dict: Dict[str, List[types.Artifact]],
      exec_properties: Dict[str, Any],
  ):
      """Log inputs, outputs, and executor properties in a standard format."""
      absl.logging.debug("Starting %s driver.", self.__class__.__name__)
      absl.logging.debug(
          "Inputs for %s are: %s", self.__class__.__name__, input_dict
      )
      absl.logging.debug(
          "Execution properties for %s are: %s",
          self.__class__.__name__,
          exec_properties,
      )
      absl.logging.debug(
          "Outputs for %s are: %s", self.__class__.__name__, output_dict
      )
  
file_path: tfx/tfx/dsl/components/base/base_driver.py
imports: import os
  from typing import Any, Dict, List
  import absl
  from tfx import types
  from tfx.dsl.io import fileio
  from tfx.orchestration import data_types
  from tfx.orchestration import metadata
  from tfx.types import artifact_utils
  from tfx.types import channel_utils
label_desc: Use image node_id 3 for calling the BaseDriver obj's underlying member method code with example usage: obj._log_properties(input_dict, output_dict, exec_properties) without return types