mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 22:14:27 +08:00
Rewrite reversed a bit
This commit is contained in:
@@ -18,7 +18,7 @@ from jedi.evaluate.arguments import ValuesArguments, \
|
|||||||
repack_with_argument_clinic, AbstractArguments, TreeArgumentsWrapper
|
repack_with_argument_clinic, AbstractArguments, TreeArgumentsWrapper
|
||||||
from jedi.evaluate import analysis
|
from jedi.evaluate import analysis
|
||||||
from jedi.evaluate import compiled
|
from jedi.evaluate import compiled
|
||||||
from jedi.evaluate.context.instance import TreeInstance, \
|
from jedi.evaluate.context.instance import \
|
||||||
AbstractInstanceContext, BoundMethod, InstanceArguments
|
AbstractInstanceContext, BoundMethod, InstanceArguments
|
||||||
from jedi.evaluate.base_context import ContextualizedNode, \
|
from jedi.evaluate.base_context import ContextualizedNode, \
|
||||||
NO_CONTEXTS, ContextSet, ContextWrapper
|
NO_CONTEXTS, ContextSet, ContextWrapper
|
||||||
@@ -28,7 +28,7 @@ from jedi.evaluate.context import iterable
|
|||||||
from jedi.evaluate.lazy_context import LazyTreeContext, LazyKnownContext, \
|
from jedi.evaluate.lazy_context import LazyTreeContext, LazyKnownContext, \
|
||||||
LazyKnownContexts
|
LazyKnownContexts
|
||||||
from jedi.evaluate.syntax_tree import is_string
|
from jedi.evaluate.syntax_tree import is_string
|
||||||
from jedi.evaluate.gradual.conversion import stub_to_actual_context_set
|
from jedi.evaluate.filters import AbstractObjectOverwrite, publish_method
|
||||||
|
|
||||||
|
|
||||||
# Copied from Python 3.6's stdlib.
|
# Copied from Python 3.6's stdlib.
|
||||||
@@ -247,7 +247,6 @@ def builtins_super(types, objects, context):
|
|||||||
return NO_CONTEXTS
|
return NO_CONTEXTS
|
||||||
|
|
||||||
|
|
||||||
from jedi.evaluate.filters import AbstractObjectOverwrite, publish_method
|
|
||||||
class ReversedObject(AbstractObjectOverwrite, ContextWrapper):
|
class ReversedObject(AbstractObjectOverwrite, ContextWrapper):
|
||||||
def __init__(self, reversed_obj, iter_list):
|
def __init__(self, reversed_obj, iter_list):
|
||||||
super(ReversedObject, self).__init__(reversed_obj)
|
super(ReversedObject, self).__init__(reversed_obj)
|
||||||
@@ -284,14 +283,8 @@ def builtins_reversed(sequences, obj, arguments):
|
|||||||
# necessary, because `reversed` is a function and autocompletion
|
# necessary, because `reversed` is a function and autocompletion
|
||||||
# would fail in certain cases like `reversed(x).__iter__` if we
|
# would fail in certain cases like `reversed(x).__iter__` if we
|
||||||
# just returned the result directly.
|
# just returned the result directly.
|
||||||
reversed_non_stub, = stub_to_actual_context_set(obj)
|
seq, = obj.evaluator.typing_module.py__getattribute__('Iterator').execute_evaluated()
|
||||||
instance = TreeInstance(
|
return ContextSet([ReversedObject(seq, list(reversed(ordered)))])
|
||||||
obj.evaluator,
|
|
||||||
reversed_non_stub.parent_context,
|
|
||||||
reversed_non_stub,
|
|
||||||
ValuesArguments([])
|
|
||||||
)
|
|
||||||
return ContextSet([ReversedObject(instance, list(reversed(ordered)))])
|
|
||||||
|
|
||||||
|
|
||||||
@argument_clinic('obj, type, /', want_arguments=True, want_evaluator=True)
|
@argument_clinic('obj, type, /', want_arguments=True, want_evaluator=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user