Files
ruff/crates/ty_python_semantic/resources/mdtest/literal/collections/set.md
David Peter 73107a083c [ty] Type inference for comprehensions (#20962)
## Summary

Adds type inference for list/dict/set comprehensions, including
bidirectional inference:

```py
reveal_type({k: v for k, v in [("a", 1), ("b", 2)]})  # dict[Unknown | str, Unknown | int]

squares: list[int | None] = [x for x in range(10)]
reveal_type(squares)  # list[int | None]
```

## Ecosystem impact

I did spot check the changes and most of them seem like known
limitations or true positives. Without proper bidirectional inference,
we saw a lot of false positives.

## Test Plan

New Markdown tests
2025-11-02 14:35:33 +01:00

598 B

Sets

Basic set

reveal_type({1, 2})  # revealed: set[Unknown | int]

Set of tuples

reveal_type({(1, 2), (3, 4)})  # revealed: set[Unknown | tuple[int, int]]

Set of functions

def a(_: int) -> int:
    return 0

def b(_: int) -> int:
    return 1

x = {a, b}
reveal_type(x)  # revealed: set[Unknown | ((_: int) -> int)]

Mixed set

# revealed: set[Unknown | int | tuple[int, int] | tuple[int, int, int]]
reveal_type({1, (1, 2), (1, 2, 3)})

Set comprehensions

reveal_type({x for x in range(42)})  # revealed: set[int | Unknown]