code: def direct_edgelist_shape(
      entity_types: List[str], defs: HyperBindings
  ) -> Dict[str, List[str]]:
      """
      Edges take format {src_col: [dest_col1, dest_col2], ....}
      If None, create connect all to all, leaving up to algorithm in which direction
      """
      if defs.edges is not None:
          return defs.edges
      else:
          out = {}
          for entity_i in range(len(entity_types)):
              out[entity_types[entity_i]] = entity_types[
                  (entity_i + 1) :
              ]
          return out
  
imports: from typing import TYPE_CHECKING, Any, Dict, List, Optional
  from .Engine import Engine, DataframeLike, DataframeLocalLike
  import numpy, pandas, pyarrow, sys
  from .util import setup_logger
label_desc: Use image node_id 15 for calling a global function with example usage: direct_edgelist_shape(entity_types, defs) and returns: defs, out