]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.13] gh-133031: Support non-ASCII characters in curses.textpad.Textbox (GH-152451...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 29 Jun 2026 11:40:10 +0000 (13:40 +0200)
committerGitHub <noreply@github.com>
Mon, 29 Jun 2026 11:40:10 +0000 (14:40 +0300)
commit65b74228283d35771cfad41084f33631268615df
treeca53d612d6041e03a0e0b1c57e0c4c1975b91de3
parent3ef1368c54d286fa2e24d76e25663ae126e7f11f
[3.13] gh-133031: Support non-ASCII characters in curses.textpad.Textbox (GH-152451) (GH-152469)

Textbox mangled non-ASCII characters of an 8-bit locale encoding: it masked
reads with curses.ascii.ascii(), which clears the 8th bit, and tested input
with curses.ascii.isprint(), which rejects bytes above 127.

Decode cells and input bytes with the window's encoding instead.  Cells are
read with instr() and the lower-right cell is written as text, since inch() and
insch() with an int byte mishandle a non-ASCII character on a wide build.  This
uses only the byte-oriented curses API, so it works without wide-character
support.
(cherry picked from commit c253f0c14b046cf79881d0602620a3b2a15c2316)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Lib/curses/textpad.py
Lib/test/test_curses.py
Misc/NEWS.d/next/Library/2026-06-27-12-30-00.gh-issue-133031.Na8Bit.rst [new file with mode: 0644]