From 224334b6d127f91c7a46ed8b9ccf1997366eb9f9 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Thu, 26 Jan 2023 16:24:21 -0500 Subject: [PATCH] Avoid erroneous class autofixes in indented blocks (#2226) --- .../pyupgrade/rules/convert_named_tuple_functional_to_class.rs | 3 ++- .../pyupgrade/rules/convert_typed_dict_functional_to_class.rs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs b/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs index 23833c6228..9e863f8007 100644 --- a/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs +++ b/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs @@ -157,7 +157,8 @@ pub fn convert_named_tuple_functional_to_class( violations::ConvertNamedTupleFunctionalToClass(typename.to_string()), Range::from_located(stmt), ); - if checker.patch(diagnostic.kind.rule()) { + // TODO(charlie): Preserve indentation, to remove the first-column requirement. + if checker.patch(diagnostic.kind.rule()) && stmt.location.column() == 0 { match match_defaults(keywords) .and_then(|defaults| create_properties_from_args(args, defaults)) { diff --git a/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs b/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs index 85432cfb9d..fb2d888634 100644 --- a/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs +++ b/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs @@ -204,7 +204,8 @@ pub fn convert_typed_dict_functional_to_class( violations::ConvertTypedDictFunctionalToClass(class_name.to_string()), Range::from_located(stmt), ); - if checker.patch(diagnostic.kind.rule()) { + // TODO(charlie): Preserve indentation, to remove the first-column requirement. + if checker.patch(diagnostic.kind.rule()) && stmt.location.column() == 0 { match match_properties_and_total(args, keywords) { Ok((body, total_keyword)) => { diagnostic.amend(convert_to_class(