From 5dec37fbaf5f015de50b2617696f37f3c32ff0e1 Mon Sep 17 00:00:00 2001 From: Dylan Date: Fri, 5 Sep 2025 15:33:47 -0500 Subject: [PATCH] [`pylint`] Stabilize ignoring `__init__.py` for `useless-import-alias` (`PLC0414`) (#20271) Stabilizes change from #18400. Removed gating, updated docs, updated tests. --- crates/ruff_linter/src/preview.rs | 7 ------- crates/ruff_linter/src/rules/pylint/mod.rs | 13 ------------- .../rules/pylint/rules/useless_import_alias.rs | 10 ++-------- ...__PLC0414_import_aliasing_2____init__.py.snap | 16 +--------------- ...int__tests__preview_useless_import_alias.snap | 4 ---- 5 files changed, 3 insertions(+), 47 deletions(-) delete mode 100644 crates/ruff_linter/src/rules/pylint/snapshots/ruff_linter__rules__pylint__tests__preview_useless_import_alias.snap diff --git a/crates/ruff_linter/src/preview.rs b/crates/ruff_linter/src/preview.rs index 5ed57bf062..c734b0f960 100644 --- a/crates/ruff_linter/src/preview.rs +++ b/crates/ruff_linter/src/preview.rs @@ -200,13 +200,6 @@ pub(crate) const fn is_allow_nested_roots_enabled(settings: &LinterSettings) -> settings.preview.is_enabled() } -// https://github.com/astral-sh/ruff/pull/18400 -pub(crate) const fn is_ignore_init_files_in_useless_alias_enabled( - settings: &LinterSettings, -) -> bool { - settings.preview.is_enabled() -} - // https://github.com/astral-sh/ruff/pull/18572 pub(crate) const fn is_optional_as_none_in_union_enabled(settings: &LinterSettings) -> bool { settings.preview.is_enabled() diff --git a/crates/ruff_linter/src/rules/pylint/mod.rs b/crates/ruff_linter/src/rules/pylint/mod.rs index 101c92a16b..7813ffd1c6 100644 --- a/crates/ruff_linter/src/rules/pylint/mod.rs +++ b/crates/ruff_linter/src/rules/pylint/mod.rs @@ -420,19 +420,6 @@ mod tests { Ok(()) } - #[test] - fn preview_useless_import_alias() -> Result<()> { - let diagnostics = test_path( - Path::new("pylint/import_aliasing_2/__init__.py"), - &LinterSettings { - preview: PreviewMode::Enabled, - ..LinterSettings::for_rule(Rule::UselessImportAlias) - }, - )?; - assert_diagnostics!(diagnostics); - Ok(()) - } - #[test] fn import_outside_top_level_with_banned() -> Result<()> { let diagnostics = test_path( diff --git a/crates/ruff_linter/src/rules/pylint/rules/useless_import_alias.rs b/crates/ruff_linter/src/rules/pylint/rules/useless_import_alias.rs index e39213f7e0..d858fc3f76 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/useless_import_alias.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/useless_import_alias.rs @@ -4,13 +4,11 @@ use ruff_macros::{ViolationMetadata, derive_message_formats}; use ruff_text_size::Ranged; use crate::checkers::ast::Checker; -use crate::preview::is_ignore_init_files_in_useless_alias_enabled; use crate::{Edit, Fix, FixAvailability, Violation}; /// ## What it does /// Checks for import aliases that do not rename the original package. -/// -/// In [preview] this rule does not apply in `__init__.py` files. +/// This rule does not apply in `__init__.py` files. /// /// ## Why is this bad? /// The import alias is redundant and should be removed to avoid confusion. @@ -35,8 +33,6 @@ use crate::{Edit, Fix, FixAvailability, Violation}; /// ```python /// import numpy /// ``` -/// -/// [preview]: https://docs.astral.sh/ruff/preview/ #[derive(ViolationMetadata)] pub(crate) struct UselessImportAlias { required_import_conflict: bool, @@ -73,9 +69,7 @@ pub(crate) fn useless_import_alias(checker: &Checker, alias: &Alias) { } // A re-export in __init__.py is probably intentional. - if checker.path().ends_with("__init__.py") - && is_ignore_init_files_in_useless_alias_enabled(checker.settings()) - { + if checker.path().ends_with("__init__.py") { return; } diff --git a/crates/ruff_linter/src/rules/pylint/snapshots/ruff_linter__rules__pylint__tests__PLC0414_import_aliasing_2____init__.py.snap b/crates/ruff_linter/src/rules/pylint/snapshots/ruff_linter__rules__pylint__tests__PLC0414_import_aliasing_2____init__.py.snap index 8386fac7b7..6c123427ab 100644 --- a/crates/ruff_linter/src/rules/pylint/snapshots/ruff_linter__rules__pylint__tests__PLC0414_import_aliasing_2____init__.py.snap +++ b/crates/ruff_linter/src/rules/pylint/snapshots/ruff_linter__rules__pylint__tests__PLC0414_import_aliasing_2____init__.py.snap @@ -1,18 +1,4 @@ --- source: crates/ruff_linter/src/rules/pylint/mod.rs --- -PLC0414 [*] Import alias does not rename original package - --> __init__.py:1:8 - | -1 | import collections as collections - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ -2 | from collections import OrderedDict as OrderedDict -3 | from . import foo as foo - | -help: Remove import alias - - import collections as collections -1 + import collections -2 | from collections import OrderedDict as OrderedDict -3 | from . import foo as foo -4 | from .foo import bar as bar -note: This is an unsafe fix and may change runtime behavior + diff --git a/crates/ruff_linter/src/rules/pylint/snapshots/ruff_linter__rules__pylint__tests__preview_useless_import_alias.snap b/crates/ruff_linter/src/rules/pylint/snapshots/ruff_linter__rules__pylint__tests__preview_useless_import_alias.snap deleted file mode 100644 index 6c123427ab..0000000000 --- a/crates/ruff_linter/src/rules/pylint/snapshots/ruff_linter__rules__pylint__tests__preview_useless_import_alias.snap +++ /dev/null @@ -1,4 +0,0 @@ ---- -source: crates/ruff_linter/src/rules/pylint/mod.rs ---- -