| Index: third_party/logilab/astroid/raw_building.py
|
| diff --git a/third_party/logilab/astroid/raw_building.py b/third_party/logilab/astroid/raw_building.py
|
| index e245f912b913692ef49b4ed442bf8ae8f965159f..08f6af6da9cb7ee9ecc25f66987af35c69f2f26f 100644
|
| --- a/third_party/logilab/astroid/raw_building.py
|
| +++ b/third_party/logilab/astroid/raw_building.py
|
| @@ -25,6 +25,7 @@ import sys
|
| from os.path import abspath
|
| from inspect import (getargspec, isdatadescriptor, isfunction, ismethod,
|
| ismethoddescriptor, isclass, isbuiltin, ismodule)
|
| +import six
|
|
|
| from astroid.node_classes import CONST_CLS
|
| from astroid.nodes import (Module, Class, Const, const_factory, From,
|
| @@ -57,7 +58,10 @@ def attach_dummy_node(node, name, object=_marker):
|
| enode.object = object
|
| _attach_local_node(node, enode, name)
|
|
|
| -EmptyNode.has_underlying_object = lambda self: self.object is not _marker
|
| +def _has_underlying_object(self):
|
| + return hasattr(self, 'object') and self.object is not _marker
|
| +
|
| +EmptyNode.has_underlying_object = _has_underlying_object
|
|
|
| def attach_const_node(node, name, value):
|
| """create a Const node and register it in the locals of the given
|
| @@ -247,10 +251,11 @@ class InspectBuilder(object):
|
| attach_dummy_node(node, name)
|
| continue
|
| if ismethod(member):
|
| - member = member.im_func
|
| + member = six.get_method_function(member)
|
| if isfunction(member):
|
| # verify this is not an imported function
|
| - filename = getattr(member.func_code, 'co_filename', None)
|
| + filename = getattr(six.get_function_code(member),
|
| + 'co_filename', None)
|
| if filename is None:
|
| assert isinstance(member, object)
|
| object_build_methoddescriptor(node, member, name)
|
| @@ -261,8 +266,6 @@ class InspectBuilder(object):
|
| elif isbuiltin(member):
|
| if (not _io_discrepancy(member) and
|
| self.imported_member(node, member, name)):
|
| - #if obj is object:
|
| - # print 'skippp', obj, name, member
|
| continue
|
| object_build_methoddescriptor(node, member, name)
|
| elif isclass(member):
|
| @@ -299,7 +302,7 @@ class InspectBuilder(object):
|
| modname = getattr(member, '__module__', None)
|
| except:
|
| # XXX use logging
|
| - print 'unexpected error while building astroid from living object'
|
| + print('unexpected error while building astroid from living object')
|
| import traceback
|
| traceback.print_exc()
|
| modname = None
|
|
|