| Index: third_party/logilab/astng/utils.py
 | 
| diff --git a/third_party/logilab/astroid/utils.py b/third_party/logilab/astng/utils.py
 | 
| similarity index 81%
 | 
| rename from third_party/logilab/astroid/utils.py
 | 
| rename to third_party/logilab/astng/utils.py
 | 
| index 936c8b5a833b274e7b1bc4bb05cd71f4880e1a17..ba317c8eb083b78a18716f87e38a669ce5f58daa 100644
 | 
| --- a/third_party/logilab/astroid/utils.py
 | 
| +++ b/third_party/logilab/astng/utils.py
 | 
| @@ -1,31 +1,32 @@
 | 
| -# copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
 | 
| +# copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
 | 
|  # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
 | 
| +# copyright 2003-2010 Sylvain Thenault, all rights reserved.
 | 
| +# contact mailto:thenault@gmail.com
 | 
|  #
 | 
| -# This file is part of astroid.
 | 
| +# This file is part of logilab-astng.
 | 
|  #
 | 
| -# astroid is free software: you can redistribute it and/or modify it
 | 
| +# logilab-astng is free software: you can redistribute it and/or modify it
 | 
|  # under the terms of the GNU Lesser General Public License as published by the
 | 
|  # Free Software Foundation, either version 2.1 of the License, or (at your
 | 
|  # option) any later version.
 | 
|  #
 | 
| -# astroid is distributed in the hope that it will be useful, but
 | 
| +# logilab-astng is distributed in the hope that it will be useful, but
 | 
|  # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
|  # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
 | 
|  # for more details.
 | 
|  #
 | 
|  # You should have received a copy of the GNU Lesser General Public License along
 | 
| -# with astroid. If not, see <http://www.gnu.org/licenses/>.
 | 
| +# with logilab-astng. If not, see <http://www.gnu.org/licenses/>.
 | 
|  """this module contains some utilities to navigate in the tree or to
 | 
|  extract information from it
 | 
|  """
 | 
|  
 | 
|  __docformat__ = "restructuredtext en"
 | 
|  
 | 
| -from astroid.exceptions import AstroidBuildingException
 | 
| -from astroid.builder import parse
 | 
| +from logilab.astng.exceptions import ASTNGBuildingException
 | 
|  
 | 
|  
 | 
| -class ASTWalker(object):
 | 
| +class ASTWalker:
 | 
|      """a walker visiting a tree in preorder, calling on the handler:
 | 
|  
 | 
|      * visit_<class name> on entering a node, where class name is the class of
 | 
| @@ -98,7 +99,7 @@ class LocalsVisitor(ASTWalker):
 | 
|          if methods[0] is not None:
 | 
|              methods[0](node)
 | 
|          if 'locals' in node.__dict__: # skip Instance and other proxy
 | 
| -            for local_node in node.values():
 | 
| +            for name, local_node in node.items():
 | 
|                  self.visit(local_node)
 | 
|          if methods[1] is not None:
 | 
|              return methods[1](node)
 | 
| @@ -112,25 +113,27 @@ def _check_children(node):
 | 
|              print "Hm, child of %s is None" % node
 | 
|              continue
 | 
|          if not hasattr(child, 'parent'):
 | 
| -            print " ERROR: %s has child %s %x with no parent" % (
 | 
| -                node, child, id(child))
 | 
| +            print " ERROR: %s has child %s %x with no parent" % (node, child, id(child))
 | 
|          elif not child.parent:
 | 
| -            print " ERROR: %s has child %s %x with parent %r" % (
 | 
| -                node, child, id(child), child.parent)
 | 
| +            print " ERROR: %s has child %s %x with parent %r" % (node, child, id(child), child.parent)
 | 
|          elif child.parent is not node:
 | 
| -            print " ERROR: %s %x has child %s %x with wrong parent %s" % (
 | 
| -                node, id(node), child, id(child), child.parent)
 | 
| +            print " ERROR: %s %x has child %s %x with wrong parent %s" % (node,
 | 
| +                                      id(node), child, id(child), child.parent)
 | 
|          else:
 | 
|              ok = True
 | 
|          if not ok:
 | 
|              print "lines;", node.lineno, child.lineno
 | 
|              print "of module", node.root(), node.root().name
 | 
| -            raise AstroidBuildingException
 | 
| +            raise ASTNGBuildingException
 | 
|          _check_children(child)
 | 
|  
 | 
|  
 | 
| +from _ast import PyCF_ONLY_AST
 | 
| +def parse(string):
 | 
| +    return compile(string, "<string>", 'exec', PyCF_ONLY_AST)
 | 
| +
 | 
|  class TreeTester(object):
 | 
| -    '''A helper class to see _ast tree and compare with astroid tree
 | 
| +    '''A helper class to see _ast tree and compare with astng tree
 | 
|  
 | 
|      indent: string for tree indent representation
 | 
|      lineno: bool to tell if we should print the line numbers
 | 
| @@ -143,11 +146,11 @@ class TreeTester(object):
 | 
|      .   <Print>
 | 
|      .   .   nl = True
 | 
|      .   ]
 | 
| -    >>> print tester.astroid_tree_repr()
 | 
| +    >>> print tester.astng_tree_repr()
 | 
|      Module()
 | 
|          body = [
 | 
|          Print()
 | 
| -            dest =
 | 
| +            dest = 
 | 
|              values = [
 | 
|              ]
 | 
|          ]
 | 
| @@ -182,8 +185,8 @@ class TreeTester(object):
 | 
|          if _done is None:
 | 
|              _done = set()
 | 
|          if node in _done:
 | 
| -            self._string += '\nloop in tree: %r (%s)' % (
 | 
| -                node, getattr(node, 'lineno', None))
 | 
| +            self._string += '\nloop in tree: %r (%s)' % (node,
 | 
| +                                            getattr(node, 'lineno', None))
 | 
|              return
 | 
|          _done.add(node)
 | 
|          self._string += '\n' + indent +  '<%s>' % node.__class__.__name__
 | 
| @@ -199,7 +202,7 @@ class TreeTester(object):
 | 
|                      continue
 | 
|                  if a in ("lineno", "col_offset") and not self.lineno:
 | 
|                      continue
 | 
| -                self._string += '\n' +  indent + a + " = " + repr(attr)
 | 
| +                self._string +='\n' +  indent + a + " = " + repr(attr)
 | 
|          for field in node._fields or ():
 | 
|              attr = node_dict[field]
 | 
|              if attr is None:
 | 
| @@ -221,16 +224,16 @@ class TreeTester(object):
 | 
|                  self._string += '\n' + indent + field + " = " + repr(attr)
 | 
|  
 | 
|  
 | 
| -    def build_astroid_tree(self):
 | 
| -        """build astroid tree from the _ast tree
 | 
| +    def build_astng_tree(self):
 | 
| +        """build astng tree from the _ast tree
 | 
|          """
 | 
| -        from astroid.builder import AstroidBuilder
 | 
| -        tree = AstroidBuilder().string_build(self.sourcecode)
 | 
| +        from logilab.astng.builder import ASTNGBuilder
 | 
| +        tree = ASTNGBuilder().string_build(self.sourcecode)
 | 
|          return tree
 | 
|  
 | 
| -    def astroid_tree_repr(self, ids=False):
 | 
| -        """build the astroid tree and return a nice tree representation"""
 | 
| -        mod = self.build_astroid_tree()
 | 
| +    def astng_tree_repr(self, ids=False):
 | 
| +        """build the astng tree and return a nice tree representation"""
 | 
| +        mod = self.build_astng_tree()
 | 
|          return mod.repr_tree(ids)
 | 
|  
 | 
|  
 | 
| 
 |