ruff/crates
Douglas Creager f301931159
[ty] Induct into instances and subclasses when finding and applying generics (#18052)
We were not inducting into instance types and subclass-of types when
looking for legacy typevars, nor when apply specializations.

This addresses
https://github.com/astral-sh/ruff/pull/17832#discussion_r2081502056

```py
from __future__ import annotations
from typing import TypeVar, Any, reveal_type

S = TypeVar("S")

class Foo[T]:
    def method(self, other: Foo[S]) -> Foo[T | S]: ...  # type: ignore[invalid-return-type]

def f(x: Foo[Any], y: Foo[Any]):
    reveal_type(x.method(y))  # revealed: `Foo[Any | S]`, but should be `Foo[Any]`
```

We were not detecting that `S` made `method` generic, since we were not
finding it when searching the function signature for legacy typevars.
2025-05-12 21:53:11 -04:00
..
ruff disable jemalloc on android (#18033) 2025-05-12 14:41:00 +02:00
ruff_annotate_snippets ruff_annotate_snippets: address unused code warnings 2025-04-07 08:24:08 -04:00
ruff_benchmark [ty] Induct into instances and subclasses when finding and applying generics (#18052) 2025-05-12 21:53:11 -04:00
ruff_cache Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
ruff_db ruff_db: completely rip lint: prefix out 2025-05-09 12:42:14 -04:00
ruff_dev [ty] Remove brackets around option names (#18037) 2025-05-12 11:16:03 +00:00
ruff_diagnostics
ruff_formatter Fix typos (#17988) 2025-05-09 14:57:14 -04:00
ruff_graph [ty] Update salsa (#17964) 2025-05-09 11:54:07 +02:00
ruff_index Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
ruff_linter [flake8-bugbear] Ignore B028 if skip_file_prefixes is present (#18047) 2025-05-12 17:06:51 -05:00
ruff_macros [ty] Document configuration schema (#17950) 2025-05-09 10:47:45 +02:00
ruff_notebook Split SourceLocation into LineColumn and SourceLocation (#17587) 2025-04-27 11:27:33 +01:00
ruff_options_metadata [ty] Document configuration schema (#17950) 2025-05-09 10:47:45 +02:00
ruff_python_ast Fix typos (#17988) 2025-05-09 14:57:14 -04:00
ruff_python_ast_integration_tests Visit Identifier node as part of the SourceOrderVisitor (#17110) 2025-04-01 16:58:09 +02:00
ruff_python_codegen Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
ruff_python_formatter Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
ruff_python_index Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
ruff_python_literal Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
ruff_python_parser Fix typos (#17988) 2025-05-09 14:57:14 -04:00
ruff_python_resolver Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
ruff_python_semantic [isort] Check full module path against project root(s) when categorizing first-party (#16565) 2025-05-05 11:40:01 -05:00
ruff_python_stdlib python_stdlib: update for 3.14 (#18014) 2025-05-11 11:25:54 -05:00
ruff_python_trivia Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
ruff_python_trivia_integration_tests Pass ParserOptions to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_server Convert Message::SyntaxError to use Diagnostic internally (#17784) 2025-05-08 12:45:51 -04:00
ruff_source_file Convert Message::SyntaxError to use Diagnostic internally (#17784) 2025-05-08 12:45:51 -04:00
ruff_text_size Use #[expect(lint)] over #[allow(lint)] where possible (#17822) 2025-05-03 21:20:31 +02:00
ruff_wasm Bump 0.11.9 (#17986) 2025-05-09 10:43:27 -05:00
ruff_workspace [ty] Document configuration schema (#17950) 2025-05-09 10:47:45 +02:00
ty Update reference documentation for --python-version (#18056) 2025-05-12 22:31:04 +00:00
ty_ide ty: switch to use annotate-snippets ID functionality 2025-05-09 12:42:14 -04:00
ty_project Avoid initializing progress bars early (#18049) 2025-05-12 15:07:55 -04:00
ty_python_semantic [ty] Induct into instances and subclasses when finding and applying generics (#18052) 2025-05-12 21:53:11 -04:00
ty_server Convert Message::SyntaxError to use Diagnostic internally (#17784) 2025-05-08 12:45:51 -04:00
ty_test Update reference documentation for --python-version (#18056) 2025-05-12 22:31:04 +00:00
ty_vendored [ty] Add support for __all__ (#17856) 2025-05-07 21:42:42 +05:30
ty_wasm Avoid initializing progress bars early (#18049) 2025-05-12 15:07:55 -04:00