Skip to content

Commit 6064263

Browse files
committed
1 parent 61b4cb4 commit 6064263

6 files changed

Lines changed: 125 additions & 290 deletions

File tree

crates/ty/docs/rules.md

Lines changed: 109 additions & 188 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/ty_python_semantic/resources/mdtest/dataclasses/dataclasses.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -452,10 +452,10 @@ from dataclasses import dataclass
452452
class MyFrozenClass:
453453
x: int
454454

455-
# error: [unsound-dataclass-method-override] "Cannot overwrite attribute `__setattr__` in class `MyFrozenClass`"
455+
# error: [invalid-dataclass-override] "Cannot overwrite attribute `__setattr__` in class `MyFrozenClass`"
456456
def __setattr__(self, name: str, value: object) -> None: ...
457457

458-
# error: [unsound-dataclass-method-override] "Cannot overwrite attribute `__delattr__` in class `MyFrozenClass`"
458+
# error: [invalid-dataclass-override] "Cannot overwrite attribute `__delattr__` in class `MyFrozenClass`"
459459
def __delattr__(self, name: str) -> None: ...
460460
```
461461

crates/ty_python_semantic/src/types/class.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::types::bound_super::BoundSuperError;
1919
use crate::types::constraints::{ConstraintSet, IteratorConstraintsExtension};
2020
use crate::types::context::InferContext;
2121
use crate::types::diagnostic::{
22-
INVALID_TYPE_ALIAS_TYPE, SUPER_CALL_IN_NAMED_TUPLE_METHOD, UNSOUND_DATACLASS_METHOD_OVERRIDE,
22+
INVALID_DATACLASS_OVERRIDE, INVALID_TYPE_ALIAS_TYPE, SUPER_CALL_IN_NAMED_TUPLE_METHOD,
2323
};
2424
use crate::types::generics::{
2525
GenericContext, InferableTypeVars, Specialization, walk_generic_context, walk_specialization,
@@ -3219,7 +3219,7 @@ impl<'db> ClassLiteral<'db> {
32193219
&& self.has_dataclass_param(db, field_policy, DataclassFlags::FROZEN)
32203220
{
32213221
if let Some(builder) = context.report_lint(
3222-
&UNSOUND_DATACLASS_METHOD_OVERRIDE,
3222+
&INVALID_DATACLASS_OVERRIDE,
32233223
literal.node(db, context.file(), context.module()),
32243224
) {
32253225
let mut diagnostic = builder.into_diagnostic(format_args!(

crates/ty_python_semantic/src/types/diagnostic.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ pub(crate) fn register_lints(registry: &mut LintRegistryBuilder) {
5252
registry.register_lint(&CALL_NON_CALLABLE);
5353
registry.register_lint(&CALL_TOP_CALLABLE);
5454
registry.register_lint(&POSSIBLY_MISSING_IMPLICIT_CALL);
55-
registry.register_lint(&UNSOUND_DATACLASS_METHOD_OVERRIDE);
55+
registry.register_lint(&INVALID_DATACLASS_OVERRIDE);
5656
registry.register_lint(&CONFLICTING_ARGUMENT_FORMS);
5757
registry.register_lint(&CONFLICTING_DECLARATIONS);
5858
registry.register_lint(&CONFLICTING_METACLASS);
@@ -445,7 +445,7 @@ declare_lint! {
445445
/// class A:
446446
/// def __setattr__(self, name: str, value: object) -> None: ...
447447
/// ```
448-
pub(crate) static UNSOUND_DATACLASS_METHOD_OVERRIDE = {
448+
pub(crate) static INVALID_DATACLASS_OVERRIDE = {
449449
summary: "detects dataclasses with `frozen=True` that have a custom `__setattr__` or `__delattr__` implementation",
450450
status: LintStatus::preview("1.0.0"),
451451
default_level: Level::Error,

crates/ty_server/tests/e2e/snapshots/e2e__commands__debug_command.snap

Lines changed: 0 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -28,93 +28,7 @@ Settings: WorkspaceSettings {
2828

2929
Project at XXX
3030
Settings: Settings {
31-
<<<<<<< HEAD
3231
rules: <RULES>,
33-
=======
34-
rules: {
35-
"ambiguous-protocol-member": Warning (Default),
36-
"byte-string-type-annotation": Error (Default),
37-
"call-non-callable": Error (Default),
38-
"conflicting-argument-forms": Error (Default),
39-
"conflicting-declarations": Error (Default),
40-
"conflicting-metaclass": Error (Default),
41-
"cyclic-class-definition": Error (Default),
42-
"cyclic-type-alias-definition": Error (Default),
43-
"deprecated": Warning (Default),
44-
"duplicate-base": Error (Default),
45-
"duplicate-kw-only": Error (Default),
46-
"escape-character-in-forward-annotation": Error (Default),
47-
"fstring-type-annotation": Error (Default),
48-
"ignore-comment-unknown-rule": Warning (Default),
49-
"implicit-concatenated-string-type-annotation": Error (Default),
50-
"inconsistent-mro": Error (Default),
51-
"index-out-of-bounds": Error (Default),
52-
"instance-layout-conflict": Error (Default),
53-
"invalid-argument-type": Error (Default),
54-
"invalid-assignment": Error (Default),
55-
"invalid-attribute-access": Error (Default),
56-
"invalid-await": Error (Default),
57-
"invalid-base": Error (Default),
58-
"invalid-context-manager": Error (Default),
59-
"invalid-declaration": Error (Default),
60-
"invalid-exception-caught": Error (Default),
61-
"invalid-explicit-override": Error (Default),
62-
"invalid-frozen-dataclass-subclass": Error (Default),
63-
"invalid-generic-class": Error (Default),
64-
"invalid-ignore-comment": Warning (Default),
65-
"invalid-key": Error (Default),
66-
"invalid-legacy-type-variable": Error (Default),
67-
"invalid-metaclass": Error (Default),
68-
"invalid-method-override": Error (Default),
69-
"invalid-named-tuple": Error (Default),
70-
"invalid-newtype": Error (Default),
71-
"invalid-overload": Error (Default),
72-
"invalid-parameter-default": Error (Default),
73-
"invalid-paramspec": Error (Default),
74-
"invalid-protocol": Error (Default),
75-
"invalid-raise": Error (Default),
76-
"invalid-return-type": Error (Default),
77-
"invalid-super-argument": Error (Default),
78-
"invalid-syntax-in-forward-annotation": Error (Default),
79-
"invalid-type-alias-type": Error (Default),
80-
"invalid-type-arguments": Error (Default),
81-
"invalid-type-checking-constant": Error (Default),
82-
"invalid-type-form": Error (Default),
83-
"invalid-type-guard-call": Error (Default),
84-
"invalid-type-guard-definition": Error (Default),
85-
"invalid-type-variable-constraints": Error (Default),
86-
"missing-argument": Error (Default),
87-
"missing-typed-dict-key": Error (Default),
88-
"no-matching-overload": Error (Default),
89-
"non-subscriptable": Error (Default),
90-
"not-iterable": Error (Default),
91-
"override-of-final-method": Error (Default),
92-
"parameter-already-assigned": Error (Default),
93-
"positional-only-parameter-as-kwarg": Error (Default),
94-
"possibly-missing-attribute": Warning (Default),
95-
"possibly-missing-implicit-call": Warning (Default),
96-
"raw-string-type-annotation": Error (Default),
97-
"redundant-cast": Warning (Default),
98-
"static-assert-error": Error (Default),
99-
"subclass-of-final-class": Error (Default),
100-
"super-call-in-named-tuple-method": Error (Default),
101-
"too-many-positional-arguments": Error (Default),
102-
"type-assertion-failure": Error (Default),
103-
"unavailable-implicit-super-arguments": Error (Default),
104-
"undefined-reveal": Warning (Default),
105-
"unknown-argument": Error (Default),
106-
"unresolved-attribute": Error (Default),
107-
"unresolved-global": Warning (Default),
108-
"unresolved-import": Error (Default),
109-
"unresolved-reference": Error (Default),
110-
"unsound-dataclass-method-override": Error (Default),
111-
"unsupported-base": Warning (Default),
112-
"unsupported-bool-conversion": Error (Default),
113-
"unsupported-operator": Error (Default),
114-
"useless-overload-body": Warning (Default),
115-
"zero-stepsize-in-slice": Error (Default),
116-
},
117-
>>>>>>> c6148aabff ([ty] diagnostic on overridden __setattr__ and __delattr__ in frozen dataclasses)
11832
terminal: TerminalSettings {
11933
output_format: Full,
12034
error_on_warning: false,

ty.schema.json

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)