code: def _edge_list_to_sframe(ls, src_column_name, dst_column_name):
      """
      Convert a list of edges into an SFrame.
      """
      sf = SFrame()
  
      if type(ls) == list:
          cols = reduce(set.union, (set(v.attr.keys()) for v in ls))
          sf[src_column_name] = [e.src_vid for e in ls]
          sf[dst_column_name] = [e.dst_vid for e in ls]
          for c in cols:
              sf[c] = [e.attr.get(c) for e in ls]
  
      elif type(ls) == Edge:
          sf[src_column_name] = [ls.src_vid]
          sf[dst_column_name] = [ls.dst_vid]
  
      else:
          raise TypeError(
              "Edges type {} is Not supported.".format(type(ls))
          )
  
      return sf
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  from .._connect import main
  from .sframe import SFrame
  from .sarray import SArray
  from .gframe import GFrame, VERTEX_GFRAME, EDGE_GFRAME
  from .._cython.cy_graph import UnityGraphProxy
  from .._cython.context import debug_trace
  from ..util import _is_non_string_iterable, _make_internal_url
  from .._deps import pandas
  from .._deps import HAS_PANDAS
  import inspect
  import copy
  import sys
label_desc: Use image node_id 5 for calling a global function with example usage: _edge_list_to_sframe(ls, src_column_name, dst_column_name) and returns: sf