forked from VimPlug/jedi
__slots__ usage works much better now -> scan for all slots and not only for current class
This commit is contained in:
@@ -159,13 +159,15 @@ def fast_parent_copy(obj):
|
|||||||
# __dict__ not available, because of __slots__
|
# __dict__ not available, because of __slots__
|
||||||
items = []
|
items = []
|
||||||
|
|
||||||
try:
|
before = ()
|
||||||
names = new_obj.__slots__
|
for cls in new_obj.__class__.__mro__:
|
||||||
except AttributeError:
|
try:
|
||||||
# __slots__ not available (normal)
|
if before == cls.__slots__:
|
||||||
pass
|
continue
|
||||||
else:
|
before = cls.__slots__
|
||||||
items += [(n, getattr(new_obj, n)) for n in names]
|
items += [(n, getattr(new_obj, n)) for n in before]
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
|
||||||
for key, value in items:
|
for key, value in items:
|
||||||
# replace parent (first try _parent and then parent)
|
# replace parent (first try _parent and then parent)
|
||||||
|
|||||||
@@ -1192,7 +1192,7 @@ class Name(Simple):
|
|||||||
So a name like "module.class.function"
|
So a name like "module.class.function"
|
||||||
would result in an array of [module, class, function]
|
would result in an array of [module, class, function]
|
||||||
"""
|
"""
|
||||||
__slots__ = ('names', )
|
__slots__ = ('names',)
|
||||||
def __init__(self, module, names, start_pos, end_pos, parent=None):
|
def __init__(self, module, names, start_pos, end_pos, parent=None):
|
||||||
super(Name, self).__init__(module, start_pos, end_pos)
|
super(Name, self).__init__(module, start_pos, end_pos)
|
||||||
self.names = tuple(n if isinstance(n, NamePart) else
|
self.names = tuple(n if isinstance(n, NamePart) else
|
||||||
|
|||||||
Reference in New Issue
Block a user