code: def networkx2tensor(nx_graph, idtype, edge_id_attr_name=None):
      """Function to convert a networkx graph to edge tensors.
  
      Parameters
      ----------
      nx_graph : nx.Graph
          NetworkX graph.
      idtype : int32, int64, optional
          Integer ID type. Must be int32 or int64.
      edge_id_attr_name : str, optional
          Key name for edge ids in the NetworkX graph. If not found, we
          will consider the graph not to have pre-specified edge ids. (Default: None)
  
      Returns
      -------
      (Tensor, Tensor)
          Edge tensors.
      """
      if not nx_graph.is_directed():
          nx_graph = nx_graph.to_directed()
  
      # Relabel nodes using consecutive integers
      nx_graph = nx.convert_node_labels_to_integers(
          nx_graph, ordering="sorted"
      )
      has_edge_id = edge_id_attr_name is not None
  
      if has_edge_id:
          num_edges = nx_graph.number_of_edges()
          src = [0] * num_edges
          dst = [0] * num_edges
          for u, v, attr in nx_graph.edges(data=True):
              eid = int(attr[edge_id_attr_name])
              if eid < 0 or eid >= nx_graph.number_of_edges():
                  raise DGLError(
                      "Expect edge IDs to be a non-negative integer smaller than {:d}, "
                      "got {:d}".format(num_edges, eid)
                  )
              src[eid] = u
              dst[eid] = v
      else:
          src = []
          dst = []
          for e in nx_graph.edges:
              src.append(e[0])
              dst.append(e[1])
      src = F.tensor(src, idtype)
      dst = F.tensor(dst, idtype)
      return src, dst
  
file_path: dgl/python/dgl/utils/data.py
imports: from collections import namedtuple
  import networkx
  import scipy
  from ..None import backend
  from ..base import DGLError
  from .None import checks
label_desc: Use image node_id 3 for calling a global function with example usage: networkx2tensor(nx_graph, idtype, edge_id_attr_name) and returns: src,  dst