forked from VimPlug/jedi
Fix issues with itemgetter
This commit is contained in:
@@ -62,6 +62,12 @@ class _BaseTypingContext(Context):
|
|||||||
|
|
||||||
yield EmptyFilter()
|
yield EmptyFilter()
|
||||||
|
|
||||||
|
def py__class__(self):
|
||||||
|
# TODO this is obviously not correct, but at least gives us a class if
|
||||||
|
# we have none. Some of these objects don't really have a base class in
|
||||||
|
# typeshed.
|
||||||
|
return builtin_from_name(self.evaluator, u'object')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
return ContextName(self, self._tree_name)
|
return ContextName(self, self._tree_name)
|
||||||
|
|||||||
@@ -459,10 +459,9 @@ def _random_choice(sequences):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ItemGetterCallable(object):
|
class ItemGetterCallable(ContextWrapper):
|
||||||
def __init__(self, evaluator, args_context_set):
|
def __init__(self, instance, args_context_set):
|
||||||
# TODO this context is totally incomplete and will raise exceptions.
|
super(ItemGetterCallable, self).__init__(instance)
|
||||||
self.evaluator = evaluator
|
|
||||||
self._args_context_set = args_context_set
|
self._args_context_set = args_context_set
|
||||||
|
|
||||||
@repack_with_argument_clinic('item, /')
|
@repack_with_argument_clinic('item, /')
|
||||||
@@ -475,7 +474,7 @@ class ItemGetterCallable(object):
|
|||||||
context_set |= item_context_set.get_item(lazy_contexts[0].infer(), None)
|
context_set |= item_context_set.get_item(lazy_contexts[0].infer(), None)
|
||||||
else:
|
else:
|
||||||
context_set |= ContextSet([iterable.FakeSequence(
|
context_set |= ContextSet([iterable.FakeSequence(
|
||||||
self.evaluator,
|
self._wrapped_context.evaluator,
|
||||||
'list',
|
'list',
|
||||||
[
|
[
|
||||||
LazyKnownContexts(item_context_set.get_item(lazy_context.infer(), None))
|
LazyKnownContexts(item_context_set.get_item(lazy_context.infer(), None))
|
||||||
@@ -487,9 +486,10 @@ class ItemGetterCallable(object):
|
|||||||
|
|
||||||
@argument_clinic('*args, /', want_obj=True, want_arguments=True)
|
@argument_clinic('*args, /', want_obj=True, want_arguments=True)
|
||||||
def _operator_itemgetter(args_context_set, obj, arguments):
|
def _operator_itemgetter(args_context_set, obj, arguments):
|
||||||
# final = obj.py__call__(arguments)
|
return ContextSet([
|
||||||
# TODO use this as a context wrapper
|
ItemGetterCallable(instance, args_context_set)
|
||||||
return ContextSet([ItemGetterCallable(obj.evaluator, args_context_set)])
|
for instance in obj.py__call__(arguments)
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
_implemented = {
|
_implemented = {
|
||||||
|
|||||||
Reference in New Issue
Block a user