ruff/crates/ty_python_semantic/src
Douglas Creager fe653de3dd
[ty] Infer parameter specializations of explicitly implemented generic protocols (#18054)
Follows on from (and depends on)
https://github.com/astral-sh/ruff/pull/18021.

This updates our function specialization inference to infer type
mappings from parameters that are generic protocols.

For now, this only works when the argument _explicitly_ implements the
protocol by listing it as a base class. (We end up using exactly the
same logic as for generic classes in #18021.) For this to work with
classes that _implicitly_ implement the protocol, we will have to check
the types of the protocol members (which we are not currently doing), so
that we can infer the specialization of the protocol that the class
implements.

---------

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2025-05-13 13:13:00 -04:00
..
module_resolver Update --python to accept paths to executables in virtual environments (#17954) 2025-05-12 15:39:04 -05:00
semantic_index Fix typos (#17988) 2025-05-09 14:57:14 -04:00
types [ty] Infer parameter specializations of explicitly implemented generic protocols (#18054) 2025-05-13 13:13:00 -04:00
util Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
ast_node_ref.rs Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
db.rs [ty] Update salsa (#17964) 2025-05-09 11:54:07 +02:00
dunder_all.rs [ty] Update salsa (#17964) 2025-05-09 11:54:07 +02:00
lib.rs [ty] Add support for __all__ (#17856) 2025-05-07 21:42:42 +05:30
lint.rs [ty] Ignore possibly-unresolved-reference by default (#17934) 2025-05-08 17:44:56 +02:00
list.rs Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
module_name.rs Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
node_key.rs Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
program.rs Update --python to accept paths to executables in virtual environments (#17954) 2025-05-12 15:39:04 -05:00
python_platform.rs Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
semantic_index.rs [ty] Update salsa (#17964) 2025-05-09 11:54:07 +02:00
semantic_model.rs Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
site_packages.rs [ty] Do not allow invalid virtual environments from discovered .venv or VIRTUAL_ENV (#18003) 2025-05-10 20:36:12 +00:00
suppression.rs [ty] Update salsa (#17964) 2025-05-09 11:54:07 +02:00
symbol.rs [ty] __file__ is always a string inside a Python module (#18071) 2025-05-13 08:20:43 -07:00
types.rs [ty] Infer parameter specializations of explicitly implemented generic protocols (#18054) 2025-05-13 13:13:00 -04:00
unpack.rs [ty] Update salsa (#17964) 2025-05-09 11:54:07 +02:00