diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2019-10-08 11:31:35 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-08 11:31:35 (GMT) |
commit | d05b000c6bcd39dba4f4b2656e45954802649562 (patch) | |
tree | cc375d0d253bebcc72a73d805d8273bd3d870386 | |
parent | d7c387384a27f37e4e3fa7890c859212c56b45b2 (diff) | |
download | cpython-d05b000c6bcd39dba4f4b2656e45954802649562.zip cpython-d05b000c6bcd39dba4f4b2656e45954802649562.tar.gz cpython-d05b000c6bcd39dba4f4b2656e45954802649562.tar.bz2 |
bpo-38371: Tkinter: deprecate the split() method. (GH-16584)
-rw-r--r-- | Doc/whatsnew/3.9.rst | 5 | ||||
-rw-r--r-- | Lib/test/test_tcl.py | 13 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-10-04-18-39-59.bpo-38371.S6Klvm.rst | 3 | ||||
-rw-r--r-- | Modules/_tkinter.c | 6 |
4 files changed, 23 insertions, 4 deletions
diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index 9f2a659..6b4abc0 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -191,6 +191,11 @@ Deprecated the module will restrict its seeds to :const:`None`, :class:`int`, :class:`float`, :class:`str`, :class:`bytes`, and :class:`bytearray`. +* Deprecated the ``split()`` method of :class:`_tkinter.TkappType` in + favour of the ``splitlist()`` method which has more consistent and + predicable behavior. + (Contributed by Serhiy Storchaka in :issue:`38371`.) + Removed ======= diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py index 3183ea8..1c5b9cf 100644 --- a/Lib/test/test_tcl.py +++ b/Lib/test/test_tcl.py @@ -3,6 +3,7 @@ import re import subprocess import sys import os +import warnings from test import support # Skip this test if the _tkinter module wasn't built. @@ -573,9 +574,12 @@ class TclTest(unittest.TestCase): def test_split(self): split = self.interp.tk.split call = self.interp.tk.call - self.assertRaises(TypeError, split) - self.assertRaises(TypeError, split, 'a', 'b') - self.assertRaises(TypeError, split, 2) + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', r'\bsplit\b.*\bsplitlist\b', + DeprecationWarning) + self.assertRaises(TypeError, split) + self.assertRaises(TypeError, split, 'a', 'b') + self.assertRaises(TypeError, split, 2) testcases = [ ('2', '2'), ('', ''), @@ -617,7 +621,8 @@ class TclTest(unittest.TestCase): expected), ] for arg, res in testcases: - self.assertEqual(split(arg), res, msg=arg) + with self.assertWarns(DeprecationWarning): + self.assertEqual(split(arg), res, msg=arg) def test_splitdict(self): splitdict = tkinter._splitdict diff --git a/Misc/NEWS.d/next/Library/2019-10-04-18-39-59.bpo-38371.S6Klvm.rst b/Misc/NEWS.d/next/Library/2019-10-04-18-39-59.bpo-38371.S6Klvm.rst new file mode 100644 index 0000000..5833995 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-10-04-18-39-59.bpo-38371.S6Klvm.rst @@ -0,0 +1,3 @@ +Deprecated the ``split()`` method in :class:`_tkinter.TkappType` in favour +of the ``splitlist()`` method which has more consistent and predicable +behavior. diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index c431d61..235cb6b 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -2304,6 +2304,12 @@ _tkinter_tkapp_split(TkappObject *self, PyObject *arg) PyObject *v; char *list; + if (PyErr_WarnEx(PyExc_DeprecationWarning, + "split() is deprecated; consider using splitlist() instead", 1)) + { + return NULL; + } + if (PyTclObject_Check(arg)) { Tcl_Obj *value = ((PyTclObject*)arg)->value; int objc; |