class_docstr: A GPU Graph Object (Base class of other graph types)
  
  Parameters
  ----------
  m_graph : cuGraph.MultiGraph object or None (default=None)
      Initialize the graph from a cugraph.MultiGraph object
  directed : boolean, optional (default=False)
      Indicated is the graph is directed.
  
  Examples
  --------
  >>> # undirected graph
  >>> G = cugraph.Graph()
  >>> # directed graph
  >>> G = cugraph.Graph(directed=True)
class_docstr_tok: ["A","GPU","Graph","Object","(","Base","class","of","other","graph","types",")","Parameters","--","--","--","--","--","m_graph",":","cuGraph.MultiGraph","object","or","None","(","default=None",")","Initialize","the","graph","from","a","cugraph.MultiGraph","object","directed",":","boolean",",","optional","(","default=False",")","Indicated","is","the","graph","is","directed",".","Examples","--","--","--","--",">",">",">","#","undirected","graph",">",">",">","G","=","cugraph.Graph","(",")",">",">",">","#","directed","graph",">",">",">","G","=","cugraph.Graph","(","directed=True",")"]
docstr: __getattr__() is called automatically by python when an attribute does not
  exist. Since this class is attempting to hide the internal `_Impl` object,
  which is intended to contain many of the attributes needed by this class,
  __getattr__ is used to "pass through" attribute access to _Impl and make it
  appear as if the _Impl attributes are contained in this class.
docstr_tok: ["__getattr__","(",")","is","called","automatically","by","python","when","an","attribute","does","not","exist",".","Since","this","class","is","attempting","to","hide","the","internal","`","_Impl","`","object",",","which","is","intended","to","contain","many","of","the","attributes","needed","by","this","class",",","__getattr__","is","used","to","``","pass","through","''","attribute","access","to","_Impl","and","make","it","appear","as","if","the","_Impl","attributes","are","contained","in","this","class","."]
code: def __getattr__(self, name):
      """
      __getattr__() is called automatically by python when an attribute does not
      exist. Since this class is attempting to hide the internal `_Impl` object,
      which is intended to contain many of the attributes needed by this class,
      __getattr__ is used to "pass through" attribute access to _Impl and make it
      appear as if the _Impl attributes are contained in this class.
      """
      if name == "_Impl":
          raise AttributeError(name)
      if hasattr(self._Impl, name):
          return getattr(self._Impl, name)
      # FIXME: Remove access to Impl properties
      elif hasattr(self._Impl.properties, name):
          return getattr(self._Impl.properties, name)
      else:
          raise AttributeError(name)
  
imports: import numpy
  from .graph_implementation import simpleGraphImpl, simpleDistributedGraphImpl, npartiteGraphImpl
  import cudf
  import dask_cudf
  from cugraph.utilities.utils import import_optional
label_desc: Use image node_id 2 for calling the Graph obj's underlying member method code with example usage: obj.__getattr__(name) and returns: getattr, getattr