diff --git a/crates/ruff_linter/src/rules/pycodestyle/rules/literal_comparisons.rs b/crates/ruff_linter/src/rules/pycodestyle/rules/literal_comparisons.rs index 25bad88d50d52..c5117544f0427 100644 --- a/crates/ruff_linter/src/rules/pycodestyle/rules/literal_comparisons.rs +++ b/crates/ruff_linter/src/rules/pycodestyle/rules/literal_comparisons.rs @@ -32,7 +32,7 @@ impl EqCmpOp { /// /// ## Why is this bad? /// According to [PEP 8], "Comparisons to singletons like None should always be done with -/// is or is not, never the equality operators." +/// `is` or `is not`, never the equality operators." /// /// ## Example /// ```python @@ -48,7 +48,15 @@ impl EqCmpOp { /// pass /// ``` /// +/// ## Fix safety +/// +/// This rule's fix is marked as unsafe, as it may alter runtime behavior when +/// used with libraries that override the `==`/`__eq__` or `!=`/`__ne__` operators. +/// In these cases, `is`/`is not` may not be equivalent to `==`/`!=`. For more +/// information, see [this issue]. +/// /// [PEP 8]: https://peps.python.org/pep-0008/#programming-recommendations +/// [this issue]: https://github.com/astral-sh/ruff/issues/4560 #[violation] pub struct NoneComparison(EqCmpOp); @@ -101,7 +109,15 @@ impl AlwaysFixableViolation for NoneComparison { /// ... /// ``` /// +/// ## Fix safety +/// +/// This rule's fix is marked as unsafe, as it may alter runtime behavior when +/// used with libraries that override the `==`/`__eq__` or `!=`/`__ne__` operators. +/// In these cases, `is`/`is not` may not be equivalent to `==`/`!=`. For more +/// information, see [this issue]. +/// /// [PEP 8]: https://peps.python.org/pep-0008/#programming-recommendations +/// [this issue]: https://github.com/astral-sh/ruff/issues/4560 #[violation] pub struct TrueFalseComparison { value: bool,