From b398b8363104347fe80f1d5241718f90fb637f84 Mon Sep 17 00:00:00 2001 From: Yunchi Pang Date: Sun, 11 May 2025 10:25:07 -0700 Subject: [PATCH] [`pylint`] add fix safety section (`PLW1514`) (#17932) parent #15584 fix was made unsafe at #8928 --- .../src/rules/pylint/rules/unspecified_encoding.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/crates/ruff_linter/src/rules/pylint/rules/unspecified_encoding.rs b/crates/ruff_linter/src/rules/pylint/rules/unspecified_encoding.rs index 0ebee95e79..66a44e0fd7 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/unspecified_encoding.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/unspecified_encoding.rs @@ -28,6 +28,17 @@ use crate::fix::edits::add_argument; /// Python 3.10 and later, or `locale.getpreferredencoding()` on earlier versions, /// to make the encoding explicit. /// +/// ## Fix safety +/// This fix is always unsafe and may change the program's behavior. It forces +/// `encoding="utf-8"` as the default, regardless of the platform’s actual default +/// encoding, which may cause `UnicodeDecodeError` on non-UTF-8 systems. +/// ```python +/// with open("test.txt") as f: +/// print(f.read()) # before fix (on UTF-8 systems): 你好,世界! +/// with open("test.txt", encoding="utf-8") as f: +/// print(f.read()) # after fix (on Windows): UnicodeDecodeError +/// ``` +/// /// ## Example /// ```python /// open("file.txt")