mirror of
https://github.com/davidhalter/jedi.git
synced 2026-05-07 00:23:59 +08:00
Small improvements to generator/async completions
This commit is contained in:
@@ -139,6 +139,12 @@ class InferenceState:
|
||||
typing_module, = self.import_module(('typing',))
|
||||
return typing_module
|
||||
|
||||
@property
|
||||
@inference_state_function_cache()
|
||||
def types_module(self):
|
||||
typing_module, = self.import_module(('types',))
|
||||
return typing_module
|
||||
|
||||
def reset_recursion_limitations(self):
|
||||
self.recursion_detector = recursion.RecursionDetector()
|
||||
self.execution_recursion_detector = recursion.ExecutionRecursionDetector(self)
|
||||
|
||||
@@ -340,10 +340,10 @@ class BaseFunctionExecutionContext(ValueContext, TreeContextMixin):
|
||||
for c in async_generator_classes
|
||||
).execute_annotation(None)
|
||||
else:
|
||||
async_classes = inference_state.typing_module.py__getattribute__('Coroutine')
|
||||
async_classes = inference_state.types_module.py__getattribute__('CoroutineType')
|
||||
return_values = self.get_return_values()
|
||||
# Only the first generic is relevant.
|
||||
generics = (return_values.py__class__(), NO_VALUES, NO_VALUES)
|
||||
generics = (NO_VALUES, NO_VALUES, return_values.py__class__())
|
||||
return ValueSet(
|
||||
GenericClass(c, TupleGenericManager(generics)) for c in async_classes
|
||||
).execute_annotation(None)
|
||||
|
||||
@@ -48,7 +48,7 @@ class GeneratorBase(LazyAttributeOverwrite, IterableMixin):
|
||||
return instance
|
||||
|
||||
def _get_cls(self):
|
||||
generator, = self.inference_state.typing_module.py__getattribute__('Generator')
|
||||
generator, = self.inference_state.types_module.py__getattribute__('GeneratorType')
|
||||
return generator
|
||||
|
||||
def py__bool__(self):
|
||||
|
||||
@@ -33,12 +33,12 @@ else
|
||||
|
||||
try:
|
||||
pass
|
||||
#? ['except', 'Exception']
|
||||
#? ['except', 'Exception', 'ExceptionGroup']
|
||||
except
|
||||
|
||||
try:
|
||||
pass
|
||||
#? 6 ['except', 'Exception']
|
||||
#? 6 ['except', 'Exception', 'ExceptionGroup']
|
||||
except AttributeError:
|
||||
pass
|
||||
#? ['finally']
|
||||
|
||||
@@ -13,7 +13,7 @@ Fr'{Foo.bar'
|
||||
Fr'{Foo.bar
|
||||
#? ['bar']
|
||||
Fr'{Foo.bar
|
||||
#? ['Exception']
|
||||
#? ['Exception', 'ExceptionGroup']
|
||||
F"{Excepti
|
||||
|
||||
#? 8 Foo
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#? ['raise']
|
||||
raise
|
||||
|
||||
#? ['Exception']
|
||||
#? ['Exception', 'ExceptionGroup']
|
||||
except
|
||||
|
||||
#? []
|
||||
|
||||
@@ -49,11 +49,7 @@ def iterators(ps: Iterable[int], qs: Iterator[str], rs:
|
||||
a, b = ps
|
||||
#? int()
|
||||
a
|
||||
##? int() --- TODO fix support for tuple assignment
|
||||
# https://github.com/davidhalter/jedi/pull/663#issuecomment-172317854
|
||||
# test below is just to make sure that in case it gets fixed by accident
|
||||
# these tests will be fixed as well the way they should be
|
||||
#?
|
||||
#? int()
|
||||
b
|
||||
|
||||
for q in qs:
|
||||
|
||||
@@ -167,7 +167,7 @@ from datetime import datetime, timedelta
|
||||
(datetime - timedelta)
|
||||
#? datetime()
|
||||
(datetime() - timedelta())
|
||||
#? timedelta()
|
||||
#? timedelta() datetime()
|
||||
(datetime() - datetime())
|
||||
#? timedelta()
|
||||
(timedelta() - datetime())
|
||||
|
||||
@@ -389,6 +389,6 @@ if False:
|
||||
# -----------------
|
||||
|
||||
import socket
|
||||
#< (1, 21), (0, 7), ('socket', ..., 6), ('stub:socket', ..., 4), ('imports', ..., 7)
|
||||
#< (1, 21), (0, 7), ('socket', ..., 6), ('stub:socket', ..., 6), ('imports', ..., 7)
|
||||
socket.SocketIO
|
||||
some_socket = socket.SocketIO()
|
||||
|
||||
Reference in New Issue
Block a user