Small improvements to generator/async completions

This commit is contained in:
Dave Halter
2026-04-29 23:38:07 +02:00
parent be993d132e
commit 4f7dfd14b3
9 changed files with 16 additions and 14 deletions
+6
View File
@@ -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)
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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):
+2 -2
View File
@@ -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']
+1 -1
View File
@@ -13,7 +13,7 @@ Fr'{Foo.bar'
Fr'{Foo.bar
#? ['bar']
Fr'{Foo.bar
#? ['Exception']
#? ['Exception', 'ExceptionGroup']
F"{Excepti
#? 8 Foo
+1 -1
View File
@@ -2,7 +2,7 @@
#? ['raise']
raise
#? ['Exception']
#? ['Exception', 'ExceptionGroup']
except
#? []
+1 -5
View File
@@ -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:
+1 -1
View File
@@ -167,7 +167,7 @@ from datetime import datetime, timedelta
(datetime - timedelta)
#? datetime()
(datetime() - timedelta())
#? timedelta()
#? timedelta() datetime()
(datetime() - datetime())
#? timedelta()
(timedelta() - datetime())
+1 -1
View File
@@ -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()