class_docstr: This pass handle user-defined import, mangling name for function from
  other modules and include them in the current module, patching all call
  site accordingly.
class_docstr_tok: ["This","pass","handle","user-defined","import",",","mangling","name","for","function","from","other","modules","and","include","them","in","the","current","module",",","patching","all","call","site","accordingly","."]
code: def visit_ImportFrom(self, node):
      if node.module == "__future__":
          return None
  
      if is_builtin_module(node.module):
          for alias in node.names:
              name = alias.asname or alias.name
              self.identifiers[-1][name] = name
          return node
      else:
          for alias in node.names:
              name = alias.asname or alias.name
              self.identifiers[-1][name] = mangle_imported_function(
                  node.module, alias.name
              )
  
      if self.is_imported(node.module):
          return None
  
      new_stmts = self.import_module(node.module, node.level)
      self.imported_stmts.extend(new_stmts)
  
      return None
  
imports: from pythran.passmanager import Transformation
  from pythran.tables import MODULES, pythran_ward
  from pythran.syntax import PythranSyntaxError
  import gast
  import logging
  import os
label_desc: Use image node_id 17 for calling the HandleImport obj's underlying member method code with example usage: obj.visit_ImportFrom(node) and returns: None, None, node, None