From 75da35ed8d820f835a84b6138518698c7b392a0b Mon Sep 17 00:00:00 2001 From: vasco Date: Thu, 1 May 2025 09:21:59 +0200 Subject: [PATCH 1/3] add fix safety section --- crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs b/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs index c587a0f7a2e0a3..8286e620e789bb 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs @@ -61,6 +61,11 @@ use super::helpers::{dataclass_kind, DataclassKind}; /// foo = Foo() # Prints '1 2'. /// ``` /// +/// ## Fix safety +/// +/// This fix is always marked as unsafe because it assumes that the user always +/// wants `__post_init__`args to be `InitVar`s. +/// /// ## References /// - [Python documentation: Post-init processing](https://docs.python.org/3/library/dataclasses.html#post-init-processing) /// - [Python documentation: Init-only variables](https://docs.python.org/3/library/dataclasses.html#init-only-variables) From 95f26aed8fe29471c1b16bbb52825d42888065df Mon Sep 17 00:00:00 2001 From: vasco Date: Sun, 4 May 2025 11:24:36 +0200 Subject: [PATCH 2/3] add fix safety section --- crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs b/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs index 8286e620e789bb..0a3627ea768ef0 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs @@ -64,7 +64,7 @@ use super::helpers::{dataclass_kind, DataclassKind}; /// ## Fix safety /// /// This fix is always marked as unsafe because it assumes that the user always -/// wants `__post_init__`args to be `InitVar`s. +/// wants `__post_init__` args to be `InitVar`s. /// /// ## References /// - [Python documentation: Post-init processing](https://docs.python.org/3/library/dataclasses.html#post-init-processing) From a6ae8f8702e719be848a9da02c83cbeaf129e98a Mon Sep 17 00:00:00 2001 From: vasco Date: Sat, 10 May 2025 18:52:41 +0200 Subject: [PATCH 3/3] add fix safety section --- crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs b/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs index 0a3627ea768ef0..256e650e680798 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/post_init_default.rs @@ -63,8 +63,9 @@ use super::helpers::{dataclass_kind, DataclassKind}; /// /// ## Fix safety /// -/// This fix is always marked as unsafe because it assumes that the user always -/// wants `__post_init__` args to be `InitVar`s. +/// This fix is always marked as unsafe because, although switching to `InitVar` is usually correct, +/// it is incorrect when the parameter is not intended to be part of the public API or when the value +/// is meant to be shared across all instances. /// /// ## References /// - [Python documentation: Post-init processing](https://docs.python.org/3/library/dataclasses.html#post-init-processing)