forked from VimPlug/jedi
Move to using py__getitem__ and py__simple_getitem__
This change is necessary to handle more complex cases with py__getitem__
This commit is contained in:
@@ -13,7 +13,7 @@ from jedi.evaluate.base_context import Context, ContextSet
|
||||
from jedi.evaluate.lazy_context import LazyKnownContext
|
||||
from jedi.evaluate.compiled.access import _sentinel
|
||||
from jedi.evaluate.cache import evaluator_function_cache
|
||||
from jedi.evaluate.helpers import reraise_as_evaluator, execute_evaluated
|
||||
from jedi.evaluate.helpers import reraise_getitem_errors, execute_evaluated
|
||||
from . import fake
|
||||
|
||||
|
||||
@@ -155,13 +155,20 @@ class CompiledObject(Context):
|
||||
|
||||
@CheckAttribute(u'__getitem__')
|
||||
def py__simple_getitem__(self, index):
|
||||
with reraise_as_evaluator(IndexError, KeyError, TypeError):
|
||||
with reraise_getitem_errors(IndexError, KeyError, TypeError):
|
||||
access = self.access_handle.py__simple_getitem__(index)
|
||||
if access is None:
|
||||
return ContextSet()
|
||||
|
||||
return ContextSet(create_from_access_path(self.evaluator, access))
|
||||
|
||||
@CheckAttribute()
|
||||
def py__getitem__(self, index_context, contextualized_node):
|
||||
return ContextSet.from_iterable(
|
||||
create_from_access_path(self.evaluator, access)
|
||||
for access in self.access_handle.py__getitem__all_values()
|
||||
)
|
||||
|
||||
@CheckAttribute()
|
||||
def py__iter__(self):
|
||||
for access in self.access_handle.py__iter__list():
|
||||
@@ -197,12 +204,6 @@ class CompiledObject(Context):
|
||||
for type_ in docstrings.infer_return_types(self):
|
||||
yield type_
|
||||
|
||||
def dict_values(self):
|
||||
return ContextSet.from_iterable(
|
||||
create_from_access_path(self.evaluator, access)
|
||||
for access in self.access_handle.dict_values()
|
||||
)
|
||||
|
||||
def get_safe_value(self, default=_sentinel):
|
||||
try:
|
||||
return self.access_handle.get_safe_value()
|
||||
|
||||
Reference in New Issue
Block a user