From b3b5c191051a4ea2b81b11ed3088a09ec6d051fc Mon Sep 17 00:00:00 2001 From: Simon Brugman Date: Mon, 11 Nov 2024 14:10:48 +0100 Subject: [PATCH] Minor refactoring of some flake-pyi rules (#14275) Co-authored-by: Alex Waygood --- .../rules/future_annotations_in_stub.rs | 54 +++++++++++-------- .../src/rules/flake8_pyi/rules/mod.rs | 3 +- .../rules/suppressible_exception.rs | 2 - .../src/rules/ruff/rules/never_union.rs | 8 +-- 4 files changed, 37 insertions(+), 30 deletions(-) diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/future_annotations_in_stub.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/future_annotations_in_stub.rs index ece4e4653d..1ab38e4b68 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/future_annotations_in_stub.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/future_annotations_in_stub.rs @@ -35,34 +35,42 @@ impl Violation for FutureAnnotationsInStub { /// PYI044 pub(crate) fn from_future_import(checker: &mut Checker, target: &StmtImportFrom) { - if let StmtImportFrom { + let StmtImportFrom { range, - module: Some(name), + module: Some(module_name), names, .. } = target - { - if name == "__future__" && names.iter().any(|alias| &*alias.name == "annotations") { - let mut diagnostic = Diagnostic::new(FutureAnnotationsInStub, *range); + else { + return; + }; - if checker.settings.preview.is_enabled() { - let stmt = checker.semantic().current_statement(); + if module_name != "__future__" { + return; + }; - diagnostic.try_set_fix(|| { - let edit = fix::edits::remove_unused_imports( - std::iter::once("annotations"), - stmt, - None, - checker.locator(), - checker.stylist(), - checker.indexer(), - )?; - - Ok(Fix::safe_edit(edit)) - }); - } - - checker.diagnostics.push(diagnostic); - } + if names.iter().all(|alias| &*alias.name != "annotations") { + return; } + + let mut diagnostic = Diagnostic::new(FutureAnnotationsInStub, *range); + + if checker.settings.preview.is_enabled() { + let stmt = checker.semantic().current_statement(); + + diagnostic.try_set_fix(|| { + let edit = fix::edits::remove_unused_imports( + std::iter::once("annotations"), + stmt, + None, + checker.locator(), + checker.stylist(), + checker.indexer(), + )?; + + Ok(Fix::safe_edit(edit)) + }); + } + + checker.diagnostics.push(diagnostic); } diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/mod.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/mod.rs index cfa311f2d7..ca97c9a0fd 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/mod.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/mod.rs @@ -1,3 +1,5 @@ +use std::fmt; + pub(crate) use any_eq_ne_annotation::*; pub(crate) use bad_generator_return_type::*; pub(crate) use bad_version_info_comparison::*; @@ -27,7 +29,6 @@ pub(crate) use redundant_final_literal::*; pub(crate) use redundant_literal_union::*; pub(crate) use redundant_numeric_union::*; pub(crate) use simple_defaults::*; -use std::fmt; pub(crate) use str_or_repr_defined_in_stub::*; pub(crate) use string_or_bytes_too_long::*; pub(crate) use stub_body_multiple_statements::*; diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/suppressible_exception.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/suppressible_exception.rs index dde37f5135..fe17fe5106 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/suppressible_exception.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/suppressible_exception.rs @@ -131,8 +131,6 @@ pub(crate) fn suppressible_exception( .has_comments(stmt, checker.source()) { diagnostic.try_set_fix(|| { - // let range = statement_range(stmt, checker.locator(), checker.indexer()); - let (import_edit, binding) = checker.importer().get_or_import_symbol( &ImportRequest::import("contextlib", "suppress"), stmt.start(), diff --git a/crates/ruff_linter/src/rules/ruff/rules/never_union.rs b/crates/ruff_linter/src/rules/ruff/rules/never_union.rs index 53b2641bb5..7485848b97 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/never_union.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/never_union.rs @@ -47,7 +47,7 @@ impl AlwaysFixableViolation for NeverUnion { union_like, } = self; match union_like { - UnionLike::BinOp => { + UnionLike::PEP604 => { format!("`{never_like} | T` is equivalent to `T`") } UnionLike::TypingUnion => { @@ -77,7 +77,7 @@ pub(crate) fn never_union(checker: &mut Checker, expr: &Expr) { let mut diagnostic = Diagnostic::new( NeverUnion { never_like, - union_like: UnionLike::BinOp, + union_like: UnionLike::PEP604, }, left.range(), ); @@ -93,7 +93,7 @@ pub(crate) fn never_union(checker: &mut Checker, expr: &Expr) { let mut diagnostic = Diagnostic::new( NeverUnion { never_like, - union_like: UnionLike::BinOp, + union_like: UnionLike::PEP604, }, right.range(), ); @@ -174,7 +174,7 @@ enum UnionLike { /// E.g., `typing.Union[int, str]` TypingUnion, /// E.g., `int | str` - BinOp, + PEP604, } #[derive(Debug, Clone, Copy, PartialEq, Eq)]