class_docstr: Expands all imports into full paths.
  
  Attributes
  ----------
  imports : {str}
      Imported module (python base module name)
  symbols : {str : (str,)}
      Matching between used name and real cxx name.
  
  Examples
  --------
  >>> import gast as ast
  >>> from pythran import passmanager, backend
  >>> node = ast.parse("from math import cos ; cos(2)")
  >>> pm = passmanager.PassManager("test")
  >>> _, node = pm.apply(ExpandImports, node)
  >>> print(pm.dump(backend.Python, node))
  import math as __pythran_import_math
  __pythran_import_math.cos(2)
  >>> node = ast.parse("from os.path import join ; join('a', 'b')")
  >>> _, node = pm.apply(ExpandImports, node)
  >>> print(pm.dump(backend.Python, node))
  import os as __pythran_import_os
  __pythran_import_os.path.join('a', 'b')
docstr: Replace name with full expanded name.
  
  Examples
  --------
  >> from numpy.linalg import det
  
  >> det(a)
  
  Becomes
  
  >> numpy.linalg.det(a)
docstr_tok: ["Replace","name","with","full","expanded","name",".","Examples","--","--","--","--",">",">","from","numpy.linalg","import","det",">",">","det","(","a",")","Becomes",">",">","numpy.linalg.det","(","a",")"]
code: def visit_Name(self, node):
      """
      Replace name with full expanded name.
  
      Examples
      --------
      >> from numpy.linalg import det
  
      >> det(a)
  
      Becomes
  
      >> numpy.linalg.det(a)
      """
      self.generic_visit(node)
      if node.id in self.symbols:
          symbol = path_to_node(self.symbols[node.id])
          if not getattr(symbol, "isliteral", lambda: False)():
              parent = self.ancestors[node][-1]
              blacklist = (ast.Tuple, ast.List, ast.Set, ast.Return)
              if isinstance(parent, blacklist):
                  raise PythranSyntaxError(
                      "Unsupported module identifier manipulation", node
                  )
          new_node = path_to_attr(self.symbols[node.id])
          new_node.ctx = node.ctx
          ast.copy_location(new_node, node)
          return new_node
      return node
  
file_path: catboost/contrib/python/pythran/pythran/transformations/expand_imports.py
imports: from pythran.passmanager import Transformation
  from pythran.utils import path_to_attr, path_to_node
  from pythran.conversion import mangle
  from pythran.syntax import PythranSyntaxError
  from pythran.analyses import Ancestors
  import gast
label_desc: Use image node_id 7 for calling the ExpandImports obj's underlying member method code with example usage: obj.visit_Name(node) and returns: node, new_node