mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-20 20:41:13 +08:00
Implememnt dict.values for FakeDict to avoid a recursion error. Fixes #1014.
This commit is contained in:
@@ -438,6 +438,7 @@ class FakeSequence(_FakeArray):
|
|||||||
return "<%s of %s>" % (type(self).__name__, self._lazy_context_list)
|
return "<%s of %s>" % (type(self).__name__, self._lazy_context_list)
|
||||||
|
|
||||||
|
|
||||||
|
@has_builtin_methods
|
||||||
class FakeDict(_FakeArray):
|
class FakeDict(_FakeArray):
|
||||||
def __init__(self, evaluator, dct):
|
def __init__(self, evaluator, dct):
|
||||||
super(FakeDict, self).__init__(evaluator, dct, u'dict')
|
super(FakeDict, self).__init__(evaluator, dct, u'dict')
|
||||||
@@ -465,6 +466,13 @@ class FakeDict(_FakeArray):
|
|||||||
|
|
||||||
return self._dct[index].infer()
|
return self._dct[index].infer()
|
||||||
|
|
||||||
|
@register_builtin_method('values')
|
||||||
|
def _values(self):
|
||||||
|
return ContextSet(FakeSequence(
|
||||||
|
self.evaluator, 'tuple',
|
||||||
|
[LazyKnownContext(v) for v in self.dict_values()]
|
||||||
|
))
|
||||||
|
|
||||||
def dict_values(self):
|
def dict_values(self):
|
||||||
return ContextSet.from_sets(lazy_context.infer() for lazy_context in self._dct.values())
|
return ContextSet.from_sets(lazy_context.infer() for lazy_context in self._dct.values())
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,12 @@ next(open(''))
|
|||||||
#? ['__itemsize__']
|
#? ['__itemsize__']
|
||||||
tuple.__itemsize__
|
tuple.__itemsize__
|
||||||
|
|
||||||
|
#? ['__iter__']
|
||||||
|
dict().values().__iter__
|
||||||
|
|
||||||
|
#? int()
|
||||||
|
dict(a=3).values()[0]
|
||||||
|
|
||||||
# -----------------
|
# -----------------
|
||||||
# type() calls with one parameter
|
# type() calls with one parameter
|
||||||
# -----------------
|
# -----------------
|
||||||
|
|||||||
Reference in New Issue
Block a user