mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-08 23:04:48 +08:00
Fix remaining issues with FakeDict.
This commit is contained in:
@@ -168,7 +168,7 @@ class Comprehension(IterableWrapper):
|
|||||||
|
|
||||||
evaluator = self._evaluator
|
evaluator = self._evaluator
|
||||||
comp_fors = list(self._get_comp_for().get_comp_fors())
|
comp_fors = list(self._get_comp_for().get_comp_fors())
|
||||||
input_node = comp_fors[0].children[-1]
|
input_node = comp_fors[0].children[3]
|
||||||
input_types = evaluator.eval_element(input_node)
|
input_types = evaluator.eval_element(input_node)
|
||||||
for result in nested(input_types, comp_fors, input_node):
|
for result in nested(input_types, comp_fors, input_node):
|
||||||
yield result
|
yield result
|
||||||
@@ -206,6 +206,10 @@ class ListComprehension(Comprehension, ArrayMixin):
|
|||||||
def iter_content(self):
|
def iter_content(self):
|
||||||
return self._evaluator.eval_element(self.eval_node())
|
return self._evaluator.eval_element(self.eval_node())
|
||||||
|
|
||||||
|
def py__getitem__(self, index):
|
||||||
|
all_types = list(self.py__iter__())
|
||||||
|
return all_types[index]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
return FakeSequence(self._evaluator, [], 'list').name
|
return FakeSequence(self._evaluator, [], 'list').name
|
||||||
@@ -272,7 +276,9 @@ class Array(IterableWrapper, ArrayMixin):
|
|||||||
"""Here the index is an int/str. Raises IndexError/KeyError."""
|
"""Here the index is an int/str. Raises IndexError/KeyError."""
|
||||||
if self.type == 'dict':
|
if self.type == 'dict':
|
||||||
for key, values in self._items():
|
for key, values in self._items():
|
||||||
if index == key:
|
for k in self._evaluator.eval_element(key):
|
||||||
|
if isinstance(k, compiled.CompiledObject) \
|
||||||
|
and index == k.obj:
|
||||||
for value in values:
|
for value in values:
|
||||||
return self._evaluator.eval_element(value)
|
return self._evaluator.eval_element(value)
|
||||||
raise KeyError('No key found in dictionary %s.' % self)
|
raise KeyError('No key found in dictionary %s.' % self)
|
||||||
@@ -406,7 +412,10 @@ class FakeDict(_FakeArray):
|
|||||||
super(FakeDict, self).__init__(evaluator, dct, 'dict')
|
super(FakeDict, self).__init__(evaluator, dct, 'dict')
|
||||||
self._dct = dct
|
self._dct = dct
|
||||||
|
|
||||||
def get_exact_index_types(self, index):
|
def py__iter__(self):
|
||||||
|
yield set(compiled.create(self._evaluator, key) for key in self._dct)
|
||||||
|
|
||||||
|
def py__getitem__(self, index):
|
||||||
return unite(self._evaluator.eval_element(v) for v in self._dct[index])
|
return unite(self._evaluator.eval_element(v) for v in self._dct[index])
|
||||||
|
|
||||||
def _items(self):
|
def _items(self):
|
||||||
|
|||||||
@@ -30,8 +30,12 @@ a[0]
|
|||||||
|
|
||||||
arr = [1,'']
|
arr = [1,'']
|
||||||
a = [a for a in arr]
|
a = [a for a in arr]
|
||||||
#? int() str()
|
#? int()
|
||||||
a[0]
|
a[0]
|
||||||
|
#? str()
|
||||||
|
a[1]
|
||||||
|
#? int() str()
|
||||||
|
a[2]
|
||||||
|
|
||||||
a = [a if 1.0 else '' for a in [1] if [1.0]]
|
a = [a if 1.0 else '' for a in [1] if [1.0]]
|
||||||
#? int() str()
|
#? int() str()
|
||||||
@@ -54,7 +58,7 @@ def listen(arg):
|
|||||||
x
|
x
|
||||||
|
|
||||||
listen(['' for x in [1]])
|
listen(['' for x in [1]])
|
||||||
#? str
|
#?
|
||||||
([str for x in []])[0]
|
([str for x in []])[0]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -327,6 +327,15 @@ exe[3]
|
|||||||
#? set
|
#? set
|
||||||
exe[3]['c']
|
exe[3]['c']
|
||||||
|
|
||||||
|
|
||||||
|
def kwargs_iteration(**kwargs):
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
for x in kwargs_iteration(d=3):
|
||||||
|
#? float()
|
||||||
|
{'d': 1.0, 'c': '1'}[x]
|
||||||
|
|
||||||
|
|
||||||
# -----------------
|
# -----------------
|
||||||
# nested *args
|
# nested *args
|
||||||
# -----------------
|
# -----------------
|
||||||
|
|||||||
Reference in New Issue
Block a user