ruff/crates
Mahmoud Saada 735ec0c1f9
[ty] Fix generic inference for non-dataclass inheriting from generic dataclass (#21159)
## Summary

Fixes https://github.com/astral-sh/ty/issues/1427

This PR fixes a regression introduced in alpha.24 where non-dataclass
children of generic dataclasses lost generic type parameter information
during `__init__` synthesis.

The issue occurred because when looking up inherited members in the MRO,
the child class's `inherited_generic_context` was correctly passed down,
but `own_synthesized_member()` (which synthesizes dataclass `__init__`
methods) didn't accept this parameter. It only used
`self.inherited_generic_context(db)`, which returned the parent's
context instead of the child's.

The fix threads the child's generic context through to the synthesis
logic, allowing proper generic type inference for inherited dataclass
constructors.

## Test Plan

- Added regression test for non-dataclass inheriting from generic
dataclass
- Verified the exact repro case from the issue now works
- All 277 mdtest tests passing
- Clippy clean
- Manually verified with Python runtime, mypy, and pyright - all accept
this code pattern

## Verification

Tested against multiple type checkers:
-  Python runtime: Code works correctly
-  mypy: No issues found
-  pyright: 0 errors, 0 warnings
-  ty alpha.23: Worked (before regression)
-  ty alpha.24: Regression
-  ty with this fix: Works correctly

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: David Peter <mail@david-peter.de>
2025-10-31 13:55:17 +01:00
..
ruff Bump v0.14.3 (#21152) 2025-10-30 17:06:29 -07:00
ruff_annotate_snippets Display diffs for ruff format --check and add support for different output formats (#20443) 2025-09-30 12:00:51 -04:00
ruff_benchmark [ty] Infer type of self for decorated methods and properties (#21123) 2025-10-29 21:22:38 +00:00
ruff_cache
ruff_db Update Rust crate ignore to v0.4.24 (#20979) 2025-10-28 17:49:26 +00:00
ruff_dev Document when a rule was added (#21035) 2025-10-23 14:48:41 -04:00
ruff_diagnostics
ruff_formatter Display diffs for ruff format --check and add support for different output formats (#20443) 2025-09-30 12:00:51 -04:00
ruff_graph [ty] Limit shown import paths to at most 5 unless ty runs with -v (#20912) 2025-10-16 13:18:09 +02:00
ruff_index
ruff_linter Bump v0.14.3 (#21152) 2025-10-30 17:06:29 -07:00
ruff_macros Document when a rule was added (#21035) 2025-10-23 14:48:41 -04:00
ruff_memory_usage [ty] Clean up inherited generic contexts (#20647) 2025-10-03 13:55:43 -04:00
ruff_notebook Display diffs for ruff format --check and add support for different output formats (#20443) 2025-09-30 12:00:51 -04:00
ruff_options_metadata
ruff_python_ast [ruff] Autogenerate TypeParam nodes (#21028) 2025-10-22 14:06:24 +02:00
ruff_python_ast_integration_tests
ruff_python_codegen Configurable "unparse mode" for ruff_python_codegen::Generator (#21041) 2025-10-24 15:44:48 +00:00
ruff_python_formatter Fix finding keyword range for clause header after statement ending with semicolon (#21067) 2025-10-27 09:52:17 -05:00
ruff_python_importer [ruff] Add API for splicing into an existing import statement 2025-09-17 13:59:28 -04:00
ruff_python_index
ruff_python_literal
ruff_python_parser Fix syntax error false positive on nested alternative patterns (#21104) 2025-10-30 13:40:03 -04:00
ruff_python_semantic [pyflakes] Revert to stable behavior if imports for module lie in alternate branches for F401 (#20878) 2025-10-27 10:23:36 -05:00
ruff_python_stdlib [ruff] Extend FA102 with listed PEP 585-compatible APIs (#20659) 2025-10-03 09:45:32 -04:00
ruff_python_trivia Handle t-string prefixes in SimpleTokenizer (#20578) 2025-09-25 14:33:37 -05:00
ruff_python_trivia_integration_tests Handle t-string prefixes in SimpleTokenizer (#20578) 2025-09-25 14:33:37 -05:00
ruff_server Fix missing diagnostics for notebooks (#21156) 2025-10-31 01:16:43 +00:00
ruff_source_file
ruff_text_size [ruff] Update schemars to v1 (#20942) 2025-10-20 08:59:52 +02:00
ruff_wasm Bump v0.14.3 (#21152) 2025-10-30 17:06:29 -07:00
ruff_workspace Update Rust crate ignore to v0.4.24 (#20979) 2025-10-28 17:49:26 +00:00
ty [ty] Add --no-progress option (#21063) 2025-10-24 18:00:00 +02:00
ty_combine
ty_completion_eval [ty] Add evaluation test for auto-import including symbols in current module 2025-10-29 09:13:49 -04:00
ty_ide [ty] Fix tests for definition completions (#21153) 2025-10-31 00:43:50 +00:00
ty_project [ruff] Update schemars to v1 (#20942) 2025-10-20 08:59:52 +02:00
ty_python_semantic [ty] Fix generic inference for non-dataclass inheriting from generic dataclass (#21159) 2025-10-31 13:55:17 +01:00
ty_server [ty] Render import <...> in completions when "label details" isn't supported 2025-10-29 08:50:41 -04:00
ty_static [ty] improve base conda distinction from child conda (#20675) 2025-10-03 13:56:06 +00:00
ty_test [ty] Fix bug where ty would think all types had an __mro__ attribute (#20995) 2025-10-27 11:19:12 +00:00
ty_vendored [ty] Move constraint set mdtest functions into ConstraintSet class (#21108) 2025-10-28 14:32:41 -04:00
ty_wasm [ruff,ty] Enable tracing's log feature 2025-10-03 08:18:03 -04:00