code: def visit_Assign(self, node):
          
          if isinstance(node.value, ast.Name) and node.value.id in self.symbols:
              symbol = path_to_node(self.symbols[node.value.id])
              if not getattr(symbol, 'isliteral', lambda: False)():
                  for target in node.targets:
                      if not isinstance(target, ast.Name):
                          err = "Unsupported module aliasing"
                          raise PythranSyntaxError(err, target)
                      self.symbols[target.id] = self.symbols[node.value.id]
                  return None  # this assignment is no longer needed
          new_node = self.generic_visit(node)
          # no problem if targets contains a subscript, it is not a new assign.
          [self.symbols.pop(t.id, None)
           for t in new_node.targets if isinstance(t, ast.Name)]
          return new_node
docs: Update import context using overwriting name information.
  
          Examples
          --------
          >> import foo
          >> def bar():
          >>     foo = 2
          >>     print(foo)
  
          In this case, foo can't be used after assign.