From 99e946a00523601d360b68ae668fe876af2ab88a Mon Sep 17 00:00:00 2001 From: Micha Reiser Date: Mon, 12 Aug 2024 14:34:12 +0200 Subject: [PATCH] Deprecate `UP027` (#12843) Co-authored-by: Alex Waygood Closes https://github.com/astral-sh/ruff/issues/12754 --- crates/ruff_linter/src/codes.rs | 2 +- .../rules/pyupgrade/rules/unpacked_list_comprehension.rs | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/crates/ruff_linter/src/codes.rs b/crates/ruff_linter/src/codes.rs index 2e6f695dd6..6a39c332f5 100644 --- a/crates/ruff_linter/src/codes.rs +++ b/crates/ruff_linter/src/codes.rs @@ -510,7 +510,7 @@ pub fn code_to_rule(linter: Linter, code: &str) -> Option<(RuleGroup, Rule)> { (Pyupgrade, "024") => (RuleGroup::Stable, rules::pyupgrade::rules::OSErrorAlias), (Pyupgrade, "025") => (RuleGroup::Stable, rules::pyupgrade::rules::UnicodeKindPrefix), (Pyupgrade, "026") => (RuleGroup::Stable, rules::pyupgrade::rules::DeprecatedMockImport), - (Pyupgrade, "027") => (RuleGroup::Stable, rules::pyupgrade::rules::UnpackedListComprehension), + (Pyupgrade, "027") => (RuleGroup::Deprecated, rules::pyupgrade::rules::UnpackedListComprehension), (Pyupgrade, "028") => (RuleGroup::Stable, rules::pyupgrade::rules::YieldInForLoop), (Pyupgrade, "029") => (RuleGroup::Stable, rules::pyupgrade::rules::UnnecessaryBuiltinImport), (Pyupgrade, "030") => (RuleGroup::Stable, rules::pyupgrade::rules::FormatLiterals), diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/unpacked_list_comprehension.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/unpacked_list_comprehension.rs index e64531e157..2101c6437d 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/unpacked_list_comprehension.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/unpacked_list_comprehension.rs @@ -7,13 +7,17 @@ use ruff_text_size::Ranged; use crate::checkers::ast::Checker; +/// ## Deprecation +/// There's no [evidence](https://github.com/astral-sh/ruff/issues/12754) that generators are +/// meaningfully faster than list comprehensions when combined with unpacking. +/// /// ## What it does /// Checks for list comprehensions that are immediately unpacked. /// /// ## Why is this bad? /// There is no reason to use a list comprehension if the result is immediately -/// unpacked. Instead, use a generator expression, which is more efficient as -/// it avoids allocating an intermediary list. +/// unpacked. Instead, use a generator expression, which avoids allocating +/// an intermediary list. /// /// ## Example /// ```python