1
0
forked from VimPlug/jedi

builtins shouldn't be unique if called by compiled.create

This commit is contained in:
Dave Halter
2014-08-01 15:51:45 +02:00
parent 68cecad996
commit 6e5d80a6b2
2 changed files with 13 additions and 5 deletions

View File

@@ -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)

View File

@@ -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):