mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-07 22:44:27 +08:00
Instances should use py__getitem__ instead of py__simple_getitem__
This commit is contained in:
@@ -8,7 +8,8 @@ from jedi.evaluate.base_context import Context, NO_CONTEXTS, ContextSet, \
|
|||||||
iterator_to_context_set
|
iterator_to_context_set
|
||||||
from jedi.evaluate.lazy_context import LazyKnownContext, LazyKnownContexts
|
from jedi.evaluate.lazy_context import LazyKnownContext, LazyKnownContexts
|
||||||
from jedi.evaluate.cache import evaluator_method_cache
|
from jedi.evaluate.cache import evaluator_method_cache
|
||||||
from jedi.evaluate.arguments import AbstractArguments, AnonymousArguments
|
from jedi.evaluate.arguments import AbstractArguments, AnonymousArguments, \
|
||||||
|
ValuesArguments
|
||||||
from jedi.evaluate.context.function import FunctionExecutionContext, \
|
from jedi.evaluate.context.function import FunctionExecutionContext, \
|
||||||
FunctionContext, AbstractFunction
|
FunctionContext, AbstractFunction
|
||||||
from jedi.evaluate.context.klass import ClassContext, apply_py__get__, ClassFilter
|
from jedi.evaluate.context.klass import ClassContext, apply_py__get__, ClassFilter
|
||||||
@@ -126,15 +127,15 @@ class AbstractInstanceContext(Context):
|
|||||||
else:
|
else:
|
||||||
yield InstanceClassFilter(self.evaluator, self, cls, origin_scope)
|
yield InstanceClassFilter(self.evaluator, self, cls, origin_scope)
|
||||||
|
|
||||||
def py__simple_getitem__(self, index):
|
def py__getitem__(self, index_context_set, contextualized_node):
|
||||||
try:
|
try:
|
||||||
names = self.get_function_slot_names(u'__getitem__')
|
names = self.get_function_slot_names(u'__getitem__')
|
||||||
except KeyError:
|
except KeyError:
|
||||||
debug.warning('No __getitem__, cannot access the array.')
|
debug.warning('No __getitem__, cannot access the array.')
|
||||||
return NO_CONTEXTS
|
return NO_CONTEXTS
|
||||||
else:
|
else:
|
||||||
index_obj = compiled.create_simple_object(self.evaluator, index)
|
args = ValuesArguments([index_context_set])
|
||||||
return self.execute_function_slots(names, index_obj)
|
return ContextSet.from_sets(name.infer().execute(args) for name in names)
|
||||||
|
|
||||||
def py__iter__(self):
|
def py__iter__(self):
|
||||||
iter_slot_names = self.get_function_slot_names(u'__iter__')
|
iter_slot_names = self.get_function_slot_names(u'__iter__')
|
||||||
|
|||||||
Reference in New Issue
Block a user