diff --git a/src/checks.rs b/src/checks.rs index cc2cf11912..8470265a40 100644 --- a/src/checks.rs +++ b/src/checks.rs @@ -501,8 +501,8 @@ pub enum CheckKind { UnnecessaryFutureImport(Vec), UnnecessaryLRUCacheParams, UnnecessaryEncodeUTF8, - ConvertTypedDictFunctionalToClass, - ConvertNamedTupleFunctionalToClass, + ConvertTypedDictFunctionalToClass(String), + ConvertNamedTupleFunctionalToClass(String), // pydocstyle BlankLineAfterLastSection(String), BlankLineAfterSection(String), @@ -775,8 +775,8 @@ impl CheckCode { CheckCode::U010 => CheckKind::UnnecessaryFutureImport(vec!["...".to_string()]), CheckCode::U011 => CheckKind::UnnecessaryLRUCacheParams, CheckCode::U012 => CheckKind::UnnecessaryEncodeUTF8, - CheckCode::U013 => CheckKind::ConvertTypedDictFunctionalToClass, - CheckCode::U014 => CheckKind::ConvertNamedTupleFunctionalToClass, + CheckCode::U013 => CheckKind::ConvertTypedDictFunctionalToClass("...".to_string()), + CheckCode::U014 => CheckKind::ConvertNamedTupleFunctionalToClass("...".to_string()), // pydocstyle CheckCode::D100 => CheckKind::PublicModule, CheckCode::D101 => CheckKind::PublicClass, @@ -1231,8 +1231,8 @@ impl CheckKind { CheckKind::UnnecessaryFutureImport(_) => &CheckCode::U010, CheckKind::UnnecessaryLRUCacheParams => &CheckCode::U011, CheckKind::UnnecessaryEncodeUTF8 => &CheckCode::U012, - CheckKind::ConvertTypedDictFunctionalToClass => &CheckCode::U013, - CheckKind::ConvertNamedTupleFunctionalToClass => &CheckCode::U014, + CheckKind::ConvertTypedDictFunctionalToClass(_) => &CheckCode::U013, + CheckKind::ConvertNamedTupleFunctionalToClass(_) => &CheckCode::U014, // pydocstyle CheckKind::BlankLineAfterLastSection(_) => &CheckCode::D413, CheckKind::BlankLineAfterSection(_) => &CheckCode::D410, @@ -1781,11 +1781,11 @@ impl CheckKind { "Unnecessary parameters to `functools.lru_cache`".to_string() } CheckKind::UnnecessaryEncodeUTF8 => "Unnecessary call to `encode` as UTF-8".to_string(), - CheckKind::ConvertTypedDictFunctionalToClass => { - "Convert `TypedDict` functional syntax to class syntax".to_string() + CheckKind::ConvertTypedDictFunctionalToClass(name) => { + format!("Convert `{name}` from `TypedDict` functional to class syntax") } - CheckKind::ConvertNamedTupleFunctionalToClass => { - "Convert `NamedTuple` functional syntax to class syntax".to_string() + CheckKind::ConvertNamedTupleFunctionalToClass(name) => { + format!("Convert `{name}` from `NamedTuple` functional to class syntax") } // pydocstyle CheckKind::FitsOnOneLine => "One-line docstring should fit on one line".to_string(), @@ -2053,8 +2053,8 @@ impl CheckKind { | CheckKind::BlankLineAfterSummary | CheckKind::BlankLineBeforeSection(..) | CheckKind::CapitalizeSectionName(..) - | CheckKind::ConvertNamedTupleFunctionalToClass - | CheckKind::ConvertTypedDictFunctionalToClass + | CheckKind::ConvertNamedTupleFunctionalToClass(..) + | CheckKind::ConvertTypedDictFunctionalToClass(..) | CheckKind::DashedUnderlineAfterSection(..) | CheckKind::DeprecatedUnittestAlias(..) | CheckKind::DoNotAssertFalse diff --git a/src/pyupgrade/plugins/convert_named_tuple_functional_to_class.rs b/src/pyupgrade/plugins/convert_named_tuple_functional_to_class.rs index 340bfe2e44..226f09a841 100644 --- a/src/pyupgrade/plugins/convert_named_tuple_functional_to_class.rs +++ b/src/pyupgrade/plugins/convert_named_tuple_functional_to_class.rs @@ -190,7 +190,7 @@ pub fn convert_named_tuple_functional_to_class( Ok(defaults) => { if let Ok(properties) = create_properties_from_args(args, defaults) { let mut check = Check::new( - CheckKind::ConvertNamedTupleFunctionalToClass, + CheckKind::ConvertNamedTupleFunctionalToClass(typename.to_string()), Range::from_located(stmt), ); if checker.patch(check.kind.code()) { diff --git a/src/pyupgrade/plugins/convert_typed_dict_functional_to_class.rs b/src/pyupgrade/plugins/convert_typed_dict_functional_to_class.rs index e5cdc0a64c..42e39b1016 100644 --- a/src/pyupgrade/plugins/convert_typed_dict_functional_to_class.rs +++ b/src/pyupgrade/plugins/convert_typed_dict_functional_to_class.rs @@ -230,7 +230,7 @@ pub fn convert_typed_dict_functional_to_class( Err(err) => error!("Failed to parse TypedDict: {}", err), Ok((body, total_keyword)) => { let mut check = Check::new( - CheckKind::ConvertTypedDictFunctionalToClass, + CheckKind::ConvertTypedDictFunctionalToClass(class_name.to_string()), Range::from_located(stmt), ); if checker.patch(check.kind.code()) { diff --git a/src/snapshots/ruff__linter__tests__U013_U013.py.snap b/src/snapshots/ruff__linter__tests__U013_U013.py.snap index 858565ebc3..d246c62076 100644 --- a/src/snapshots/ruff__linter__tests__U013_U013.py.snap +++ b/src/snapshots/ruff__linter__tests__U013_U013.py.snap @@ -2,7 +2,8 @@ source: src/linter.rs expression: checks --- -- kind: ConvertTypedDictFunctionalToClass +- kind: + ConvertTypedDictFunctionalToClass: MyType1 location: row: 5 column: 0 @@ -19,7 +20,8 @@ expression: checks row: 5 column: 52 applied: false -- kind: ConvertTypedDictFunctionalToClass +- kind: + ConvertTypedDictFunctionalToClass: MyType2 location: row: 8 column: 0 @@ -36,7 +38,8 @@ expression: checks row: 8 column: 50 applied: false -- kind: ConvertTypedDictFunctionalToClass +- kind: + ConvertTypedDictFunctionalToClass: MyType3 location: row: 11 column: 0 @@ -53,7 +56,8 @@ expression: checks row: 11 column: 44 applied: false -- kind: ConvertTypedDictFunctionalToClass +- kind: + ConvertTypedDictFunctionalToClass: MyType4 location: row: 14 column: 0 @@ -70,7 +74,8 @@ expression: checks row: 14 column: 30 applied: false -- kind: ConvertTypedDictFunctionalToClass +- kind: + ConvertTypedDictFunctionalToClass: MyType5 location: row: 17 column: 0 @@ -87,7 +92,8 @@ expression: checks row: 17 column: 46 applied: false -- kind: ConvertTypedDictFunctionalToClass +- kind: + ConvertTypedDictFunctionalToClass: MyType6 location: row: 18 column: 0 @@ -104,7 +110,8 @@ expression: checks row: 18 column: 41 applied: false -- kind: ConvertTypedDictFunctionalToClass +- kind: + ConvertTypedDictFunctionalToClass: MyType7 location: row: 21 column: 0 @@ -121,7 +128,8 @@ expression: checks row: 21 column: 56 applied: false -- kind: ConvertTypedDictFunctionalToClass +- kind: + ConvertTypedDictFunctionalToClass: MyType8 location: row: 24 column: 0 @@ -138,7 +146,8 @@ expression: checks row: 24 column: 65 applied: false -- kind: ConvertTypedDictFunctionalToClass +- kind: + ConvertTypedDictFunctionalToClass: MyType10 location: row: 30 column: 0 @@ -155,7 +164,8 @@ expression: checks row: 30 column: 59 applied: false -- kind: ConvertTypedDictFunctionalToClass +- kind: + ConvertTypedDictFunctionalToClass: MyType11 location: row: 33 column: 0 diff --git a/src/snapshots/ruff__linter__tests__U014_U014.py.snap b/src/snapshots/ruff__linter__tests__U014_U014.py.snap index 1a8b5c8012..a394f7fd3c 100644 --- a/src/snapshots/ruff__linter__tests__U014_U014.py.snap +++ b/src/snapshots/ruff__linter__tests__U014_U014.py.snap @@ -2,7 +2,8 @@ source: src/linter.rs expression: checks --- -- kind: ConvertNamedTupleFunctionalToClass +- kind: + ConvertNamedTupleFunctionalToClass: NT1 location: row: 5 column: 0 @@ -19,7 +20,8 @@ expression: checks row: 5 column: 61 applied: false -- kind: ConvertNamedTupleFunctionalToClass +- kind: + ConvertNamedTupleFunctionalToClass: NT2 location: row: 8 column: 0 @@ -36,7 +38,8 @@ expression: checks row: 12 column: 1 applied: false -- kind: ConvertNamedTupleFunctionalToClass +- kind: + ConvertNamedTupleFunctionalToClass: NT3 location: row: 15 column: 0