Commit Graph

4 Commits

Author SHA1 Message Date
KeilerHirsch fec10df10a style: format encoding migration follow-up 2026-08-09 13:50:27 +02:00
KeilerHirsch a6b2a734cd fix(encoding): handle legacy codepage config migration 2026-08-09 13:33:28 +02:00
KeilerHirsch 867151b211 test(encoding): assert lowercase skip_name + strengthen raw-utf8 read coverage
Third test now genuinely fails pre-fix (raw UTF-8 skip_name read), fixing the reviewer-flagged passes-either-way case. skip_names are lowercased on load, so assert on .lower().
2026-07-29 08:54:08 +02:00
KeilerHirsch 845f59419e fix(encoding): pin encoding=utf-8 on dialect.py + config.py text opens
dialect.py: all 11 text-mode open() calls (6 read, 5 write) omitted encoding=, so on a non-UTF-8-locale process (e.g. German Windows / cp1252) UTF-8-written JSON and AAAK text is decoded via the OS codepage, corrupting umlauts. config.py: 4 text opens lacked encoding= (config.json + people_map read paths, two writes); the other json.dump write paths already pinned UTF-8.

Audit findings #51 (dialect.py:360) and #84 (config.py:377). Regression: tests/test_encoding_hardening.py forces cp1252 default open and asserts umlaut round-trips through from_config / config.json read / raw-UTF-8 skip_name.
2026-07-29 08:51:00 +02:00