diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2021-04-05 13:50:24 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-05 13:50:24 (GMT) |
commit | b1dc1aacf8b0f319024a1a3ce91d395956537c11 (patch) | |
tree | d37c2b41f5fd1af45f9e27d66114c7f6b133fe21 | |
parent | c8e5eb904e12010d2302364e1037c24a30f5e241 (diff) | |
download | cpython-b1dc1aacf8b0f319024a1a3ce91d395956537c11.zip cpython-b1dc1aacf8b0f319024a1a3ce91d395956537c11.tar.gz cpython-b1dc1aacf8b0f319024a1a3ce91d395956537c11.tar.bz2 |
bpo-43084: Return bool instead of int from curses.window.enclose() (GH-24398)
-rw-r--r-- | Doc/library/curses.rst | 3 | ||||
-rw-r--r-- | Lib/test/test_curses.py | 13 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst | 2 | ||||
-rw-r--r-- | Modules/_cursesmodule.c | 8 | ||||
-rw-r--r-- | Modules/clinic/_cursesmodule.c.h | 11 |
5 files changed, 18 insertions, 19 deletions
diff --git a/Doc/library/curses.rst b/Doc/library/curses.rst index f55bb03..efbece4 100644 --- a/Doc/library/curses.rst +++ b/Doc/library/curses.rst @@ -915,6 +915,9 @@ the following methods and attributes: determining what subset of the screen windows enclose the location of a mouse event. + .. versionchanged:: 3.10 + Previously it returned ``1`` or ``0`` instead of ``True`` or ``False``. + .. attribute:: window.encoding diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 7ce0461..280a9dc 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -566,13 +566,12 @@ class TestCurses(unittest.TestCase): @requires_curses_window_meth('enclose') def test_enclose(self): win = curses.newwin(5, 15, 2, 5) - # TODO: Return bool instead of 1/0 - self.assertTrue(win.enclose(2, 5)) - self.assertFalse(win.enclose(1, 5)) - self.assertFalse(win.enclose(2, 4)) - self.assertTrue(win.enclose(6, 19)) - self.assertFalse(win.enclose(7, 19)) - self.assertFalse(win.enclose(6, 20)) + self.assertIs(win.enclose(2, 5), True) + self.assertIs(win.enclose(1, 5), False) + self.assertIs(win.enclose(2, 4), False) + self.assertIs(win.enclose(6, 19), True) + self.assertIs(win.enclose(7, 19), False) + self.assertIs(win.enclose(6, 20), False) def test_putwin(self): win = curses.newwin(5, 12, 1, 2) diff --git a/Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst b/Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst new file mode 100644 index 0000000..bdab5d9 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst @@ -0,0 +1,2 @@ +:func:`curses.window.enclose` returns now ``True`` or ``False`` (as was +documented) instead of ``1`` or ``0``. diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index 3df9f50..d221cf1 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -1343,7 +1343,7 @@ _curses_window_echochar_impl(PyCursesWindowObject *self, PyObject *ch, #ifdef NCURSES_MOUSE_VERSION /*[clinic input] -_curses.window.enclose -> long +_curses.window.enclose y: int Y-coordinate. @@ -1354,11 +1354,11 @@ _curses.window.enclose -> long Return True if the screen-relative coordinates are enclosed by the window. [clinic start generated code]*/ -static long +static PyObject * _curses_window_enclose_impl(PyCursesWindowObject *self, int y, int x) -/*[clinic end generated code: output=5251c961cbe3df63 input=dfe1d9d4d05d8642]*/ +/*[clinic end generated code: output=8679beef50502648 input=4fd3355d723f7bc9]*/ { - return wenclose(self->win, y, x); + return PyBool_FromLong(wenclose(self->win, y, x)); } #endif diff --git a/Modules/clinic/_cursesmodule.c.h b/Modules/clinic/_cursesmodule.c.h index e46a8e3..9c96116 100644 --- a/Modules/clinic/_cursesmodule.c.h +++ b/Modules/clinic/_cursesmodule.c.h @@ -689,7 +689,7 @@ PyDoc_STRVAR(_curses_window_enclose__doc__, #define _CURSES_WINDOW_ENCLOSE_METHODDEF \ {"enclose", (PyCFunction)(void(*)(void))_curses_window_enclose, METH_FASTCALL, _curses_window_enclose__doc__}, -static long +static PyObject * _curses_window_enclose_impl(PyCursesWindowObject *self, int y, int x); static PyObject * @@ -698,7 +698,6 @@ _curses_window_enclose(PyCursesWindowObject *self, PyObject *const *args, Py_ssi PyObject *return_value = NULL; int y; int x; - long _return_value; if (!_PyArg_CheckPositional("enclose", nargs, 2, 2)) { goto exit; @@ -711,11 +710,7 @@ _curses_window_enclose(PyCursesWindowObject *self, PyObject *const *args, Py_ssi if (x == -1 && PyErr_Occurred()) { goto exit; } - _return_value = _curses_window_enclose_impl(self, y, x); - if ((_return_value == -1) && PyErr_Occurred()) { - goto exit; - } - return_value = PyLong_FromLong(_return_value); + return_value = _curses_window_enclose_impl(self, y, x); exit: return return_value; @@ -4289,4 +4284,4 @@ _curses_has_extended_color_support(PyObject *module, PyObject *Py_UNUSED(ignored #ifndef _CURSES_USE_DEFAULT_COLORS_METHODDEF #define _CURSES_USE_DEFAULT_COLORS_METHODDEF #endif /* !defined(_CURSES_USE_DEFAULT_COLORS_METHODDEF) */ -/*[clinic end generated code: output=ae6559aa61200289 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=9efc9943a3ac3741 input=a9049054013a1b77]*/ |