**Bug Report** Instances of type variables bounded by an iterable type support iteration but not unpacking. **To Reproduce** ```python from typing import TypeVar class A: pass ATuple = TypeVar("ATuple", bound=tuple[A, ...]) def f(aa: ATuple) -> None: for a in aa: # this is ok print(a) f((A(),)) def g(aa: ATuple) -> None: (a,) = aa # "ATuple" object is not iterable print(a) g((A(),)) ``` Bounding the TypeVar by `list[A]` has the same behaviour as bounding it by `tuple[A, ...]`. **Expected Behavior** No error -- an ATuple should support both iteration and unpacking. **Actual Behavior** f() checks clean. In g(), unpacking fails with: error: "ATuple" object is not iterable error: Cannot determine type of "a" **Your Environment** This reproduces in all versions in the playground.
Activity
Allow unpacking from TypeVars by resolving bounds
Allow unpacking from TypeVars with iterable bounds (#13425)
Allow unpacking from TypeVars with iterable bounds (python#13425)
[0.980 backport] Allow unpacking from TypeVars with iterable bounds (#…