From f40e4bcd1446b1b772b25621d2210a7534ebfc6f Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Tue, 20 Dec 2022 17:40:10 -0500 Subject: [PATCH] Avoid flagging RUF100 as a RUF100 violation (#1305) --- resources/test/fixtures/ruff/RUF100.py | 7 ++++++ src/checkers/noqa.rs | 22 +++++++++++++++---- src/ruff/mod.rs | 1 + .../snapshots/ruff__ruff__tests__ruf100.snap | 18 +++++++++++++++ 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/resources/test/fixtures/ruff/RUF100.py b/resources/test/fixtures/ruff/RUF100.py index f30f828303..d9cd55d487 100644 --- a/resources/test/fixtures/ruff/RUF100.py +++ b/resources/test/fixtures/ruff/RUF100.py @@ -79,3 +79,10 @@ _ = """Here's a source: https://github.com/ethereum/web3.py/blob/ffe59daf10edc19 May raise: - DeserializationError if the abi string is invalid or abi or log topics/data do not match """ # noqa: E501 + +import collections # noqa +import os # noqa: F401, RUF100 +import shelve # noqa: RUF100 +import sys # noqa: F401, RUF100 + +print(sys.path) diff --git a/src/checkers/noqa.rs b/src/checkers/noqa.rs index 14ba287a4b..2212790111 100644 --- a/src/checkers/noqa.rs +++ b/src/checkers/noqa.rs @@ -100,18 +100,32 @@ pub fn check_noqa( Directive::Codes(spaces, start, end, codes) => { let mut invalid_codes = vec![]; let mut valid_codes = vec![]; + let mut self_ignore = false; for code in codes { let code = CODE_REDIRECTS.get(code).map_or(code, AsRef::as_ref); - if matches.contains(&code) || settings.external.contains(code) { - valid_codes.push(code.to_string()); + if code == CheckCode::RUF100.as_ref() { + self_ignore = true; } else { - invalid_codes.push(code.to_string()); + if matches.contains(&code) || settings.external.contains(code) { + valid_codes.push(code); + } else { + invalid_codes.push(code); + } } } + if self_ignore { + continue; + } + if !invalid_codes.is_empty() { let mut check = Check::new( - CheckKind::UnusedNOQA(Some(invalid_codes)), + CheckKind::UnusedNOQA(Some( + invalid_codes + .iter() + .map(|code| (*code).to_string()) + .collect(), + )), Range { location: Location::new(row + 1, start), end_location: Location::new(row + 1, end), diff --git a/src/ruff/mod.rs b/src/ruff/mod.rs index bd74b48e71..54c6c47ba0 100644 --- a/src/ruff/mod.rs +++ b/src/ruff/mod.rs @@ -38,6 +38,7 @@ mod tests { &settings::Settings::for_rules(vec![ CheckCode::RUF100, CheckCode::E501, + CheckCode::F401, CheckCode::F841, ]), )?; diff --git a/src/ruff/snapshots/ruff__ruff__tests__ruf100.snap b/src/ruff/snapshots/ruff__ruff__tests__ruf100.snap index 47acd40ed0..4de0379648 100644 --- a/src/ruff/snapshots/ruff__ruff__tests__ruf100.snap +++ b/src/ruff/snapshots/ruff__ruff__tests__ruf100.snap @@ -182,4 +182,22 @@ expression: checks end_location: row: 71 column: 11 +- kind: + UnusedImport: + - shelve + - false + location: + row: 85 + column: 7 + end_location: + row: 85 + column: 13 + fix: + content: "" + location: + row: 85 + column: 0 + end_location: + row: 86 + column: 0