ruff/crates/ty_python_semantic/resources/mdtest
Douglas Creager c02bd11b93
[ty] Infer typevar specializations for `Callable` types (#21551)
This is a first stab at solving
https://github.com/astral-sh/ty/issues/500, at least in part, with the
old solver. We add a new `TypeRelation` that lets us opt into using
constraint sets to describe when a typevar is assignability to some
type, and then use that to calculate a constraint set that describes
when two callable types are assignable. If the callable types contain
typevars, that constraint set will describe their valid specializations.
We can then walk through all of the ways the constraint set can be
satisfied, and record a type mapping in the old solver for each one.

---------

Co-authored-by: Carl Meyer <carl@astral.sh>
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2025-12-16 09:16:49 -08:00
..
annotations [ty] Infer typevar specializations for `Callable` types (#21551) 2025-12-16 09:16:49 -08:00
assignment [ty] Improve diagnostics for unsupported binary operations and unsupported augmented assignments (#21947) 2025-12-12 21:53:29 +00:00
binary [ty] highlight special type syntax in hovers as xml (#22005) 2025-12-16 14:20:35 +00:00
boolean
boundness_declaredness
call [ty] propagate classmethod-ness through decorators returning Callables (#21958) 2025-12-16 09:16:40 -08:00
class [ty] highlight special type syntax in hovers as xml (#22005) 2025-12-16 14:20:35 +00:00
comparison [ty] Improve diagnostics for unsupported comparison operations (#21737) 2025-12-02 19:58:45 +00:00
comprehensions [ty] fix global symbol lookup from eager scopes (#21317) 2025-11-12 10:15:51 -08:00
conditional [ty] Uniformly use "not supported" in diagnostics (#21916) 2025-12-11 15:03:55 +00:00
dataclasses [ty] Infer typevar specializations for `Callable` types (#21551) 2025-12-16 09:16:49 -08:00
declaration
diagnostics [ty] Emit diagnostic when a type variable with a default is followed by one without a default (#21787) 2025-12-14 19:35:37 +00:00
directives [ty] Minor improvements to `assert_type` diagnostics (#21811) 2025-12-05 12:33:30 +00:00
doc
exception [ty] Improve diagnostics for invalid exceptions (#21475) 2025-11-15 22:12:00 +00:00
expression [ty] Uniformly use "not supported" in diagnostics (#21916) 2025-12-11 15:03:55 +00:00
external [ty] Type inference for `@asynccontextmanager` (#21876) 2025-12-09 22:49:00 +01:00
function [ty] highlight special type syntax in hovers as xml (#22005) 2025-12-16 14:20:35 +00:00
generics [ty] Infer typevar specializations for `Callable` types (#21551) 2025-12-16 09:16:49 -08:00
ide_support [ty] Support `type[T]` with type variables (#21650) 2025-11-28 09:20:24 +01:00
import [ty] highlight special type syntax in hovers as xml (#22005) 2025-12-16 14:20:35 +00:00
libraries [ty] Generic types aliases (implicit and PEP 613) (#21553) 2025-11-28 20:38:24 +01:00
literal [ty] Type inference for genererator expressions (#21437) 2025-11-14 13:04:11 +00:00
loops [ty] Uniformly use "not supported" in diagnostics (#21916) 2025-12-11 15:03:55 +00:00
narrow [ty] highlight special type syntax in hovers as xml (#22005) 2025-12-16 14:20:35 +00:00
regression [ty] Use unqualified names for displays of `TypeAliasType`s and unbound `ParamSpec`s/`TypeVar`s (#21960) 2025-12-13 20:23:16 +00:00
scopes [ty] Add support for `__qualname__` and other implicit class attributes (#21966) 2025-12-13 17:10:25 -05:00
shadowing
snapshots [ty] Infer typevar specializations for `Callable` types (#21551) 2025-12-16 09:16:49 -08:00
stubs [ty] Better invalid-assignment diagnostics (#21476) 2025-11-18 14:31:04 +01:00
subscript [ty] support `type[tuple[...]]` (#21652) 2025-12-01 11:49:26 +01:00
suppressions [ty] Add code action to ignore diagnostic on the current line (#21595) 2025-11-29 15:41:54 +01:00
type_compendium [ty] Improve literal promotion heuristics (#21439) 2025-11-14 16:13:56 -05:00
type_of [ty] Fix disjointness checks with type-of `@final` classes (#21770) 2025-12-10 15:15:10 -05:00
type_properties [ty] Fix disjointness checks with type-of `@final` classes (#21770) 2025-12-10 15:15:10 -05:00
type_qualifiers [ty] Avoid double-analyzing tuple in `Final` subscript (#21828) 2025-12-07 14:27:14 +00:00
unary [ty] Improve diagnostics for unsupported binary operations and unsupported augmented assignments (#21947) 2025-12-12 21:53:29 +00:00
with [ty] Type inference for `@asynccontextmanager` (#21876) 2025-12-09 22:49:00 +01:00
.mdformat.toml
async.md [ty] Infer typevar specializations for `Callable` types (#21551) 2025-12-16 09:16:49 -08:00
attributes.md [ty] Enable even more goto-definition on inlay hints (#21950) 2025-12-12 12:57:38 -05:00
bidirectional.md [ty] Improve diagnostics for unsupported comparison operations (#21737) 2025-12-02 19:58:45 +00:00
classes.md [ty] Fix bug where ty would think all types had an `__mro__` attribute (#20995) 2025-10-27 11:19:12 +00:00
cycle.md [ty] avoid fixpoint unioning of types containing current-cycle Divergent (#21910) 2025-12-11 19:52:34 -08:00
decorators.md [ty] Infer typevar specializations for `Callable` types (#21551) 2025-12-16 09:16:49 -08:00
del.md
deprecated.md [ty] Infer typevar specializations for `Callable` types (#21551) 2025-12-16 09:16:49 -08:00
descriptor_protocol.md [ty] Enable even more goto-definition on inlay hints (#21950) 2025-12-12 12:57:38 -05:00
enums.md [ty] Support `type[T]` with type variables (#21650) 2025-11-28 09:20:24 +01:00
exhaustiveness_checking.md [ty] Exhaustiveness checking for generic classes (#21726) 2025-12-01 13:52:36 +01:00
final.md [ty] Improve `@override`, `@final` and Liskov checks in cases where there are multiple reachable definitions (#21767) 2025-12-03 12:51:36 +00:00
implicit_type_aliases.md [ty] highlight special type syntax in hovers as xml (#22005) 2025-12-16 14:20:35 +00:00
instance_layout_conflict.md
intersection_types.md [ty] Use "cannot" consistently over "can not" (#21255) 2025-11-03 10:38:20 -05:00
invalid_syntax.md [ty] Avoid double-inference on non-tuple argument to `Annotated` (#21837) 2025-12-08 10:24:05 -05:00
known_constants.md
liskov.md [ty] Carry generic context through when converting class into `Callable` (#21798) 2025-12-05 08:57:21 -05:00
literal_promotion.md [ty] Infer typevar specializations for `Callable` types (#21551) 2025-12-16 09:16:49 -08:00
mdtest_config.md
mdtest_custom_typeshed.md
metaclass.md
mro.md [ty] highlight special type syntax in hovers as xml (#22005) 2025-12-16 14:20:35 +00:00
named_tuple.md [ty] Support implicit type of `cls` in signatures (#21771) 2025-12-10 16:56:20 -05:00
overloads.md [ty] Improve check enforcing that an overloaded function must have an implementation (#21978) 2025-12-15 08:56:35 +00:00
override.md [ty] Improve `@override`, `@final` and Liskov checks in cases where there are multiple reachable definitions (#21767) 2025-12-03 12:51:36 +00:00
pep613_type_aliases.md [ty] highlight special type syntax in hovers as xml (#22005) 2025-12-16 14:20:35 +00:00
pep695_type_aliases.md [ty] Use unqualified names for displays of `TypeAliasType`s and unbound `ParamSpec`s/`TypeVar`s (#21960) 2025-12-13 20:23:16 +00:00
properties.md [ty] Enable even more goto-definition on inlay hints (#21950) 2025-12-12 12:57:38 -05:00
protocols.md Fix stack overflow with recursive generic protocols (depth limit) (#21858) 2025-12-09 09:05:18 -08:00
public_types.md
statically_known_branches.md
sys_platform.md
sys_version_info.md [ty] support PEP 613 type aliases (#21394) 2025-11-20 17:59:35 -08:00
t_strings.md
terminal_statements.md
ty_extensions.md [ty] Uniformly use "not supported" in diagnostics (#21916) 2025-12-11 15:03:55 +00:00
typed_dict.md [ty] add `SyntheticTypedDictType` and implement `normalized` and `is_equivalent_to` (#21784) 2025-12-10 20:36:36 +00:00
union_types.md
unpacking.md
unreachable.md [ty] Add subdiagnostic hint if a variable with type `Never` is used in a type expression (#21660) 2025-11-27 12:48:18 +00:00