From d05017e8abc39bb8e70200a33e85ce6b66f96be8 Mon Sep 17 00:00:00 2001 From: clach04 Date: Sun, 14 Jun 2026 15:19:24 -0700 Subject: [PATCH 1/2] Implement #3956 - initial coding hint support --- codespell_lib/_codespell.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/codespell_lib/_codespell.py b/codespell_lib/_codespell.py index 8ebb19de43..37294d97b7 100644 --- a/codespell_lib/_codespell.py +++ b/codespell_lib/_codespell.py @@ -284,7 +284,25 @@ def open_with_internal( ) -> tuple[list[tuple[bool, int, list[str]]], str]: encoding = None first_try = True - for encoding in ("utf-8", "iso-8859-1"): + encoding_try_list = ["utf-8", "iso-8859-1"] + with open(filename, 'rb') as f: + encoding_marker = b'-*- coding:' + for line_number in range(3): + sniff_line = f.readline() + if encoding_marker not in sniff_line: continue + sniff_encoding = sniff_line[sniff_line.find(encoding_marker) + len(encoding_marker):] + sniff_encoding = sniff_encoding.strip() + if sniff_encoding: + sniff_encoding = sniff_encoding[:sniff_encoding.find(b' ')] # do we need to handle newlines? + if sniff_encoding: + sniff_encoding_str = sniff_encoding.decode('us-ascii') + try: + ''.encode(sniff_encoding_str) # Attempt to validate encoding + except LookupError: + sniff_encoding_str = sniff_encoding_str.replace('-', '') + encoding_try_list.insert(0, sniff_encoding_str) + break + for encoding in encoding_try_list: if first_try: first_try = False elif not self.quiet_level & QuietLevels.ENCODING: From 54f24c760415f1afbcc3f51c42003b1d1fcb86bb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 14 Jun 2026 22:20:35 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- codespell_lib/_codespell.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/codespell_lib/_codespell.py b/codespell_lib/_codespell.py index 37294d97b7..0f1784898e 100644 --- a/codespell_lib/_codespell.py +++ b/codespell_lib/_codespell.py @@ -285,21 +285,26 @@ def open_with_internal( encoding = None first_try = True encoding_try_list = ["utf-8", "iso-8859-1"] - with open(filename, 'rb') as f: - encoding_marker = b'-*- coding:' + with open(filename, "rb") as f: + encoding_marker = b"-*- coding:" for line_number in range(3): sniff_line = f.readline() - if encoding_marker not in sniff_line: continue - sniff_encoding = sniff_line[sniff_line.find(encoding_marker) + len(encoding_marker):] + if encoding_marker not in sniff_line: + continue + sniff_encoding = sniff_line[ + sniff_line.find(encoding_marker) + len(encoding_marker) : + ] sniff_encoding = sniff_encoding.strip() if sniff_encoding: - sniff_encoding = sniff_encoding[:sniff_encoding.find(b' ')] # do we need to handle newlines? + sniff_encoding = sniff_encoding[ + : sniff_encoding.find(b" ") + ] # do we need to handle newlines? if sniff_encoding: - sniff_encoding_str = sniff_encoding.decode('us-ascii') + sniff_encoding_str = sniff_encoding.decode("us-ascii") try: - ''.encode(sniff_encoding_str) # Attempt to validate encoding + "".encode(sniff_encoding_str) # Attempt to validate encoding except LookupError: - sniff_encoding_str = sniff_encoding_str.replace('-', '') + sniff_encoding_str = sniff_encoding_str.replace("-", "") encoding_try_list.insert(0, sniff_encoding_str) break for encoding in encoding_try_list: