summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2011-11-02 22:47:58 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2011-11-02 22:47:58 (GMT)
commitdf5bccc8a3adfe79e93bbc62bc24b3a95d57b3ac (patch)
treecd0889e89ba7fe709def04a3b8e5a66879a310dd
parent2787ea41fd11b8e0a0514e13b61af8e12764a8f6 (diff)
parent2662133a05d789de67aeaaad24aa86f49da95844 (diff)
downloadcpython-df5bccc8a3adfe79e93bbc62bc24b3a95d57b3ac.zip
cpython-df5bccc8a3adfe79e93bbc62bc24b3a95d57b3ac.tar.gz
cpython-df5bccc8a3adfe79e93bbc62bc24b3a95d57b3ac.tar.bz2
(Merge 3.2) Issue #10570: curses.tigetstr() is now expecting a byte string,
instead of a Unicode string. This is an incompatible change, but the previous behaviour was completly wrong.
-rw-r--r--Doc/library/curses.rst2
-rw-r--r--Lib/test/test_curses.py7
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/_cursesmodule.c2
4 files changed, 11 insertions, 3 deletions
diff --git a/Doc/library/curses.rst b/Doc/library/curses.rst
index df25910..d6a35c3 100644
--- a/Doc/library/curses.rst
+++ b/Doc/library/curses.rst
@@ -566,7 +566,7 @@ The module :mod:`curses` defines the following functions:
Instantiate the string *str* with the supplied parameters, where *str* should
be a parameterized string obtained from the terminfo database. E.g.
- ``tparm(tigetstr("cup"), 5, 3)`` could result in ``'\033[6;4H'``, the exact
+ ``tparm(tigetstr("cup"), 5, 3)`` could result in ``b'\033[6;4H'``, the exact
result depending on terminal type.
diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py
index b4673e9..ccbbc23 100644
--- a/Lib/test/test_curses.py
+++ b/Lib/test/test_curses.py
@@ -190,7 +190,7 @@ def module_funcs(stdscr):
curses.tigetflag('hc')
curses.tigetnum('co')
curses.tigetstr('cr')
- curses.tparm('cr')
+ curses.tparm(b'cr')
curses.typeahead(sys.__stdin__.fileno())
curses.unctrl('a')
curses.ungetch('a')
@@ -280,6 +280,10 @@ def test_unget_wch(stdscr):
if read != ch:
raise AssertionError("%r != %r" % (read, ch))
+def test_issue10570():
+ b = curses.tparm(curses.tigetstr("cup"), 5, 3)
+ assert type(b) is bytes
+
def main(stdscr):
curses.savetty()
try:
@@ -289,6 +293,7 @@ def main(stdscr):
test_resize_term(stdscr)
test_issue6243(stdscr)
test_unget_wch(stdscr)
+ test_issue10570()
finally:
curses.resetty()
diff --git a/Misc/NEWS b/Misc/NEWS
index c751ba6..11f98a7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -350,6 +350,9 @@ Core and Builtins
Library
-------
+- Issue #10570: curses.tigetstr() is now expecting a byte string, instead of
+ a Unicode string.
+
- Issue #13295: http.server now produces valid HTML 4.01 strict.
- Issue #2892: preserve iterparse events in case of SyntaxError.
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index 8790243..cc42f4b 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -2642,7 +2642,7 @@ PyCurses_tparm(PyObject *self, PyObject *args)
PyCursesSetupTermCalled;
- if (!PyArg_ParseTuple(args, "s|iiiiiiiii:tparm",
+ if (!PyArg_ParseTuple(args, "y|iiiiiiiii:tparm",
&fmt, &i1, &i2, &i3, &i4,
&i5, &i6, &i7, &i8, &i9)) {
return NULL;