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_" ) }