Attempt to improve tuple unpackings

This commit is contained in:
Dave Halter
2026-04-29 23:10:31 +02:00
parent 0d79865a0f
commit be993d132e
3 changed files with 18 additions and 7 deletions
+6
View File
@@ -865,10 +865,16 @@ def check_tuple_assignments(name, value_set):
# For no star unpacking is not possible.
return NO_VALUES
i = 0
lazy_value = None
while i <= index:
try:
lazy_value = next(iterated)
except StopIteration:
# A desperate attempt to fix inference for tuples from an
# iterator.
if lazy_value is not None:
return lazy_value.infer()
# We could do this with the default param in next. But this
# would allow this loop to run for a very long time if the
# index number is high. Therefore break if the loop is
+3 -2
View File
@@ -155,8 +155,9 @@ class AbstractInstanceValue(Value):
return super().py__iter__(contextualized_node)
def iterate():
for generator in self.execute_function_slots(iter_slot_names):
yield from generator.py__next__(contextualized_node)
yield LazyKnownValues(
self.execute_function_slots(iter_slot_names).py__next__(contextualized_node).infer()
)
return iterate()
def __repr__(self):
+9 -5
View File
@@ -207,16 +207,16 @@ C().a
(f, g) = (1,)
#? int()
f
#? []
g.
#? int()
g
(f, g, h) = (1,'')
#? int()
f
#? str()
g
#? []
h.
#? str()
h
(f1, g1) = 1
#? []
@@ -311,9 +311,13 @@ for x in {1: 3.0, '': 1j}:
dict().values().__iter__
d = dict(a=3, b='')
x, = d.values()
x, y, z = d.values()
#? int() str()
x
#? int() str()
y
#? int() str()
z
#? int()
d['a']
#? int() str() None