forked from VimPlug/jedi
builtins shouldn't be unique if called by compiled.create
This commit is contained in:
@@ -45,6 +45,9 @@ class CompiledObject(Base):
|
||||
self.obj.__call__
|
||||
return actual
|
||||
|
||||
def py__mro__(self, evaluator):
|
||||
return tuple(create(evaluator, cls) for cls in self.obj.__mro__)
|
||||
|
||||
@property
|
||||
def doc(self):
|
||||
return inspect.getdoc(self.obj) or ''
|
||||
@@ -432,4 +435,10 @@ def create(evaluator, obj, parent=builtin, module=None):
|
||||
faked.parent = parent
|
||||
return faked
|
||||
|
||||
try:
|
||||
if obj.__module__ in ('builtins', '__builtin__'):
|
||||
return builtin.get_by_name(obj.__name__)
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
return CompiledObject(obj, parent)
|
||||
|
||||
@@ -26,7 +26,6 @@ from jedi.evaluate import iterable
|
||||
from jedi.evaluate import docstrings
|
||||
from jedi.evaluate import helpers
|
||||
from jedi.evaluate import param
|
||||
from jedi.evaluate import imports
|
||||
|
||||
|
||||
class Executed(pr.IsScope):
|
||||
@@ -280,10 +279,10 @@ class Class(use_metaclass(CachedMetaClass, pr.IsScope)):
|
||||
self.base = base
|
||||
|
||||
@memoize_default(default=())
|
||||
def py_mro(self):
|
||||
def py__mro__(self, evaluator):
|
||||
def add(cls):
|
||||
if cls not in mro:
|
||||
mro.add(cls)
|
||||
mro.append(cls)
|
||||
|
||||
mro = [self]
|
||||
# TODO Do a proper mro resolution. Currently we are just listing
|
||||
@@ -292,9 +291,9 @@ class Class(use_metaclass(CachedMetaClass, pr.IsScope)):
|
||||
# TODO detect for TypeError: duplicate base class str,
|
||||
# e.g. `class X(str, str): pass`
|
||||
add(cls)
|
||||
for cls_new in cls.mro():
|
||||
for cls_new in cls.py__mro__(evaluator):
|
||||
add(cls_new)
|
||||
return mro
|
||||
return tuple(mro)
|
||||
|
||||
@memoize_default(default=())
|
||||
def py_bases(self):
|
||||
|
||||
Reference in New Issue
Block a user