From 134def011917bb7460ac8da3ac31cc9065a26103 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Mon, 16 Oct 2023 14:11:14 -0400 Subject: [PATCH] Allow sunder names from `enum.Enum` (#7987) Closes https://github.com/astral-sh/ruff/issues/7971. --- .../test/fixtures/pylint/bad_dunder_method_name.py | 5 +++++ .../src/rules/pylint/rules/bad_dunder_method_name.rs | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/crates/ruff_linter/resources/test/fixtures/pylint/bad_dunder_method_name.py b/crates/ruff_linter/resources/test/fixtures/pylint/bad_dunder_method_name.py index be1cf65702..468e86f2f3 100644 --- a/crates/ruff_linter/resources/test/fixtures/pylint/bad_dunder_method_name.py +++ b/crates/ruff_linter/resources/test/fixtures/pylint/bad_dunder_method_name.py @@ -63,6 +63,11 @@ class Apples: def __html__(self): pass + # Allow _missing_, used by enum.Enum. + @classmethod + def _missing_(cls, value): + pass + def __foo_bar__(): # this is not checked by the [bad-dunder-name] rule ... diff --git a/crates/ruff_linter/src/rules/pylint/rules/bad_dunder_method_name.rs b/crates/ruff_linter/src/rules/pylint/rules/bad_dunder_method_name.rs index a3c3145798..98c05d6554 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/bad_dunder_method_name.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/bad_dunder_method_name.rs @@ -196,5 +196,13 @@ fn is_known_dunder_method(method: &str) -> bool { | "__trunc__" | "__weakref__" | "__xor__" + // Overridable sunder names from the `Enum` class. + // See: https://docs.python.org/3/library/enum.html#supported-sunder-names + | "_name_" + | "_value_" + | "_missing_" + | "_ignore_" + | "_order_" + | "_generate_next_value_" ) }