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 |