ruff/crates/red_knot_python_semantic/resources/mdtest
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
..
annotations [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
assignment [red-knot] Don't infer Todo for quite so many tuple type expressions (#17116) 2025-04-01 15:44:02 +01:00
binary [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
boolean [red-knot] Statically known branches (#15019) 2024-12-21 11:33:10 +01:00
boundness_declaredness [red-knot] detect invalid return type (#16540) 2025-03-12 01:58:59 +00:00
call [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
comparison [red-knot] fix eager nested scopes handling (#16916) 2025-03-28 11:11:56 -04:00
comprehensions [red-knot] detect invalid return type (#16540) 2025-03-12 01:58:59 +00:00
conditional [red-knot] visibility_constraint analysis for match cases (#17077) 2025-04-03 11:15:33 +00:00
declaration [red-knot] Avoid undeclared path when raising conflicting declarations (#14958) 2024-12-17 09:49:39 +05:30
diagnostics [red-knot] Document current state of attribute assignment diagnostics (#16746) 2025-03-14 20:34:43 +01:00
directives [red-knot] Add support for assert_never (#17287) 2025-04-08 09:31:49 +02:00
doc red_knot_python_semantic: replace one use of "old" secondary diagnostic messages 2025-04-10 13:21:00 -04:00
exception [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
expression [red-knot] Add initial support for * imports (#16923) 2025-03-24 17:15:58 +00:00
function red_knot_python_semantic: remove the "old" secondary message type 2025-04-10 13:21:00 -04:00
generics [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
import [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
literal [red-knot] Migrate bool/str/repr unit tests to Markdown tests (#15534) 2025-01-16 11:21:56 -08:00
loops [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
narrow [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
regression [red-knot] Enforce specifying paths for mdtest code blocks in a separate preceding line (#15890) 2025-02-04 08:27:17 +01:00
scopes [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
shadowing [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
snapshots [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
stubs [red-knot] Allow explicit specialization of generic classes (#17023) 2025-04-09 11:18:46 -04:00
subscript [red-knot] Decorators and properties (#17017) 2025-04-02 09:27:46 +02:00
suppressions Use python.typing.org for typing documentation links (#17323) 2025-04-09 20:38:20 +02:00
type_of [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
type_properties [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
type_qualifiers [red-knot] Preliminary tests for typing.Final (#15917) 2025-03-14 12:30:13 +01:00
unary [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
with [red-knot] detect invalid return type (#16540) 2025-03-12 01:58:59 +00:00
.mdformat.toml [red-knot] have mdformat wrap mdtest files to 100 columns (#14020) 2024-10-31 21:00:51 +00:00
attributes.md [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
dataclasses.md [red-knot] Initial support for dataclasses (#17353) 2025-04-15 10:39:21 +02:00
decorators.md [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
descriptor_protocol.md [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
final.md [red-knot] Add support for @final classes (#15070) 2024-12-19 21:02:14 +00:00
intersection_types.md [red-knot] add test cases result in false positive errors (#16856) 2025-03-20 17:17:54 +00:00
invalid_syntax.md [red-knot] Understand typing.Callable (#16493) 2025-03-08 03:58:52 +00:00
known_constants.md [red-knot] Add rule invalid-type-checking-constant (#16501) 2025-03-04 19:49:34 +00:00
mdtest_config.md [red-knot] Add missing imports in mdtests (#15869) 2025-02-03 09:27:29 +00:00
mdtest_custom_typeshed.md [red-knot] Enforce specifying paths for mdtest code blocks in a separate preceding line (#15890) 2025-02-04 08:27:17 +01:00
metaclass.md [red-knot] detect invalid return type (#16540) 2025-03-12 01:58:59 +00:00
mro.md [red-knot] Enforce specifying paths for mdtest code blocks in a separate preceding line (#15890) 2025-02-04 08:27:17 +01:00
pep695_type_aliases.md [red-knot] Decorators and properties (#17017) 2025-04-02 09:27:46 +02:00
properties.md [red-knot] improve function/bound method type display (#17294) 2025-04-14 15:56:18 -07:00
protocols.md [red-knot] Make' Type::in_type_expression()' exhaustive for Type::KnownInstance (#16836) 2025-03-19 07:36:28 -07:00
slots.md [red-knot] fix: improve type inference for binary ops on tuples (#16725) 2025-03-14 12:29:57 +01:00
statically_known_branches.md [red-knot] Reachability analysis (#17199) 2025-04-08 08:37:20 +02:00
sys_platform.md [red-knot] Specialize str.startswith for string literals (#17351) 2025-04-11 16:26:45 +02:00
sys_version_info.md [red-knot] Decorators and properties (#17017) 2025-04-02 09:27:46 +02:00
terminal_statements.md [red-knot] Avoid unresolved-reference in unreachable code (#17169) 2025-04-03 16:52:11 +02:00
type_api.md Fix CallableTypeOf display signature (#17235) 2025-04-06 18:12:52 +01:00
union_types.md [red-knot] add special case for float/complex (#16166) 2025-02-14 12:24:10 -08:00
unpacking.md [red-knot] Support unpacking with target (#16469) 2025-03-08 02:36:35 +00:00
unreachable.md [red-knot] Document limitations of diagnostics-silencing in unreachable code (#17387) 2025-04-14 12:55:14 +02:00