From 50bf3fa45a0ba502d054dd61aebceed626871f16 Mon Sep 17 00:00:00 2001 From: GiGaGon <107241144+MeGaGiGaGon@users.noreply.github.com> Date: Thu, 19 Jun 2025 14:51:23 -0700 Subject: [PATCH] [`flake8-pie`] Add fix safety section to `PIE794` (#18802) ## Summary Part of #15584 This PR adds a fix safety section to `PIE794` I could not track down when this rule was initially implemented/made unsafe due how old it could be + multiple large refactors to `ruff`. There is no comment/reasoning in the code given for the unsafety. Here is a code example demonstrating why it should be unsafe, since removing any of the assignments would change program behavior [playground](https://play.ruff.rs/01004644-4259-4449-a581-5007cd59846a) ```py class A: x = 1 x = 2 print(x) class B: x = print(3) x = print(4) class C: x = [1,2,3] y = x x = y[1] ``` ## Test Plan N/A, no tests affected. --------- Co-authored-by: Dylan --- .../flake8_pie/rules/duplicate_class_field_definition.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crates/ruff_linter/src/rules/flake8_pie/rules/duplicate_class_field_definition.rs b/crates/ruff_linter/src/rules/flake8_pie/rules/duplicate_class_field_definition.rs index a430f8c9b0..003cf23b13 100644 --- a/crates/ruff_linter/src/rules/flake8_pie/rules/duplicate_class_field_definition.rs +++ b/crates/ruff_linter/src/rules/flake8_pie/rules/duplicate_class_field_definition.rs @@ -30,6 +30,10 @@ use crate::{AlwaysFixableViolation, Fix}; /// name = Tom /// ... /// ``` +/// +/// ## Fix Safety +/// This fix is always marked as unsafe since we cannot know +// for certain which assignment was intended. #[derive(ViolationMetadata)] pub(crate) struct DuplicateClassFieldDefinition { name: String,