ruff/crates
David Peter 03adae80dc
[red-knot] Initial support for dataclasses (#17353)
## Summary

Add very early support for dataclasses. This is mostly to make sure that
we do not emit false positives on dataclass construction, but it also
lies some foundations for future extensions.

This seems like a good initial step to merge to me, as it basically
removes all false positives on dataclass constructor calls. This allows
us to use the ecosystem checks for making sure we don't introduce new
false positives as we continue to work on dataclasses.

## Ecosystem analysis

I re-ran the mypy_primer evaluation of [the `__init__`
PR](https://github.com/astral-sh/ruff/pull/16512) locally with our
current mypy_primer version and project selection. It introduced 1597
new diagnostics. Filtering those by searching for `__init__` and
rejecting those that contain `invalid-argument-type` (those could not
possibly be solved by this PR) leaves 1281 diagnostics. The current
version of this PR removes 1171 diagnostics, which leaves 110
unaccounted for. I extracted the lint + file path for all of these
diagnostics and generated a diff (of diffs), to see which
`__init__`-diagnostics remain. I looked at a subset of these: There are
a lot of `SomeClass(*args)` calls where we don't understand the
unpacking yet (this is not even related to `__init__`). Some others are
related to `NamedTuple`, which we also don't support yet. And then there
are some errors related to `@attrs.define`-decorated classes, which
would probably require support for `dataclass_transform`, which I made
no attempt to include in this PR.

## Test Plan

New Markdown tests.
2025-04-15 10:39:21 +02:00
..
red_knot ruff_db: tweak how the revealed type diagnostic is rendered 2025-04-10 13:21:00 -04:00
red_knot_ide Sync vendored typeshed stubs (#17402) 2025-04-15 09:16:42 +02:00
red_knot_project [red-knot] Default python-platform to current platform (#17183) 2025-04-09 12:05:18 +02:00
red_knot_python_semantic [red-knot] Initial support for dataclasses (#17353) 2025-04-15 10:39:21 +02:00
red_knot_server [red-knot] Use concise message for the server (#17367) 2025-04-12 04:49:28 +00:00
red_knot_test red_knot_python_semantic: update revealed type snapshots 2025-04-10 13:21:00 -04:00
red_knot_vendored Sync vendored typeshed stubs (#17402) 2025-04-15 09:16:42 +02:00
red_knot_wasm Use concise message to show diagnostics in playground (#17357) 2025-04-11 22:44:24 +05:30
ruff Bump 0.11.5 (#17337) 2025-04-10 11:57:44 -05:00
ruff_annotate_snippets ruff_annotate_snippets: address unused code warnings 2025-04-07 08:24:08 -04:00
ruff_benchmark [red-knot] add a large-union-of-string-literals benchmark (#17393) 2025-04-14 09:40:46 -07:00
ruff_cache
ruff_db red_knot_python_semantic: make TextRange required for reporting a lint diagnostic 2025-04-11 12:36:36 -04:00
ruff_dev Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_diagnostics
ruff_formatter Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_graph Pass ParserOptions to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_index [red-knot] Don't use separate ID types for each alist (#16415) 2025-02-28 14:55:55 -05:00
ruff_linter [syntax-errors] await outside async functions (#17363) 2025-04-14 13:01:48 -04:00
ruff_macros Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_notebook Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_python_ast Add Checker::import_from_typing (#17340) 2025-04-11 13:37:55 +00: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 Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_python_formatter Don't add chaperone space after escaped quote in triple quote (#17216) 2025-04-11 10:21:47 +02:00
ruff_python_index
ruff_python_literal Preserve triple quotes and prefixes for strings (#15818) 2025-02-04 08:41:06 -05:00
ruff_python_parser [syntax-errors] await outside async functions (#17363) 2025-04-14 13:01:48 -04:00
ruff_python_resolver Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_python_semantic Refactor semantic syntax error scope handling (#17314) 2025-04-09 14:23:29 -04:00
ruff_python_stdlib
ruff_python_trivia [red-knot] Ignore surrounding whitespace when looking for <!-- snapshot-diagnostics --> directives in mdtests (#16380) 2025-02-27 13:25:31 +00:00
ruff_python_trivia_integration_tests Pass ParserOptions to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_server [red-knot] Don't use latency-sensitive for handlers (#17227) 2025-04-08 08:33:30 +02:00
ruff_source_file
ruff_text_size
ruff_wasm Bump 0.11.5 (#17337) 2025-04-10 11:57:44 -05:00
ruff_workspace Use python.typing.org for typing documentation links (#17323) 2025-04-09 20:38:20 +02:00