From 843cfc33fcb579f065030fbef98fcf87b57583a3 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Fri, 30 Aug 2019 11:01:42 +0300 Subject: [PATCH 1/3] bpo-15999: Clean up of handling boolean arguments. * Use the 'p' format unit instead of manually called PyObject_IsTrue(). * Pass boolean value instead 0/1 integers to functions that needs boolean. * Convert some arguments to boolean only once. --- Modules/_io/_iomodule.c | 10 ++++++---- Modules/_io/stringio.c | 2 +- Modules/_io/textio.c | 2 +- Modules/itertoolsmodule.c | 6 +++--- Modules/main.c | 2 +- Objects/fileobject.c | 4 ++-- Python/bltinmodule.c | 20 +++++++------------- Python/pylifecycle.c | 4 ++-- 8 files changed, 23 insertions(+), 27 deletions(-) diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c index 96426e0276abda..162b288852b328 100644 --- a/Modules/_io/_iomodule.c +++ b/Modules/_io/_iomodule.c @@ -383,8 +383,10 @@ _io_open_impl(PyObject *module, PyObject *file, const char *mode, encoding = "utf-8"; } #endif - raw = PyObject_CallFunction(RawIO_class, - "OsiO", path_or_fd, rawmode, closefd, opener); + raw = PyObject_CallFunction(RawIO_class, "OsOO", + path_or_fd, rawmode, + closefd ? Py_True : Py_False, + opener); } if (raw == NULL) @@ -476,10 +478,10 @@ _io_open_impl(PyObject *module, PyObject *file, const char *mode, /* wraps into a TextIOWrapper */ wrapper = PyObject_CallFunction((PyObject *)&PyTextIOWrapper_Type, - "Osssi", + "OsssO", buffer, encoding, errors, newline, - line_buffering); + line_buffering ? Py_True : Py_False); if (wrapper == NULL) goto error; result = wrapper; diff --git a/Modules/_io/stringio.c b/Modules/_io/stringio.c index 810cad6d63ce8d..f0bd6e951b7c12 100644 --- a/Modules/_io/stringio.c +++ b/Modules/_io/stringio.c @@ -716,7 +716,7 @@ _io_StringIO___init___impl(stringio *self, PyObject *value, if (self->readuniversal) { self->decoder = PyObject_CallFunction( (PyObject *)&PyIncrementalNewlineDecoder_Type, - "Oi", Py_None, (int) self->readtranslate); + "OO", Py_None, self->readtranslate ? Py_True : Py_False); if (self->decoder == NULL) return -1; } diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c index 7ddac8062a96e9..d9e6080faf99e7 100644 --- a/Modules/_io/textio.c +++ b/Modules/_io/textio.c @@ -882,7 +882,7 @@ _textiowrapper_set_decoder(textio *self, PyObject *codec_info, if (self->readuniversal) { PyObject *incrementalDecoder = PyObject_CallFunction( (PyObject *)&PyIncrementalNewlineDecoder_Type, - "Oi", self->decoder, (int)self->readtranslate); + "OO", self->decoder, self->readtranslate ? Py_True : Py_False); if (incrementalDecoder == NULL) return -1; Py_CLEAR(self->decoder); diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index ab473e29fbd536..2e398425a1463a 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -1059,10 +1059,10 @@ cycle_reduce(cycleobject *lz, PyObject *Py_UNUSED(ignored)) } Py_DECREF(res); } - return Py_BuildValue("O(N)(Oi)", Py_TYPE(lz), it, lz->saved, 1); + return Py_BuildValue("O(N)(OO)", Py_TYPE(lz), it, lz->saved, Py_True); } - return Py_BuildValue("O(O)(Oi)", Py_TYPE(lz), lz->it, lz->saved, - lz->firstpass); + return Py_BuildValue("O(O)(OO)", Py_TYPE(lz), lz->it, lz->saved, + lz->firstpass ? Py_True : Py_False); } static PyObject * diff --git a/Modules/main.c b/Modules/main.c index b8a1c9b79ce38f..ed19383ffde49c 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -292,7 +292,7 @@ pymain_run_module(const wchar_t *modname, int set_argv0) Py_DECREF(runmodule); return pymain_exit_err_print(); } - runargs = Py_BuildValue("(Oi)", module, set_argv0); + runargs = Py_BuildValue("(OO)", module, set_argv0 ? Py_True : Py_False); if (runargs == NULL) { fprintf(stderr, "Could not create arguments for runpy._run_module_as_main\n"); diff --git a/Objects/fileobject.c b/Objects/fileobject.c index 0faf7e70b5d87f..212c08a3f67ab8 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -38,9 +38,9 @@ PyFile_FromFd(int fd, const char *name, const char *mode, int buffering, const c io = PyImport_ImportModule("_io"); if (io == NULL) return NULL; - stream = _PyObject_CallMethodId(io, &PyId_open, "isisssi", fd, mode, + stream = _PyObject_CallMethodId(io, &PyId_open, "isisssO", fd, mode, buffering, encoding, errors, - newline, closefd); + newline, closefd ? Py_True : Py_False); Py_DECREF(io); if (stream == NULL) return NULL; diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 63e58128651a92..2f643d97b5bb9a 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -1820,8 +1820,9 @@ static PyObject * builtin_print(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { static const char * const _keywords[] = {"sep", "end", "file", "flush", 0}; - static struct _PyArg_Parser _parser = {"|OOOO:print", _keywords, 0}; - PyObject *sep = NULL, *end = NULL, *file = NULL, *flush = NULL; + static struct _PyArg_Parser _parser = {"|OOOp:print", _keywords, 0}; + PyObject *sep = NULL, *end = NULL, *file = NULL; + int flush = 0; int i, err; if (kwnames != NULL && @@ -1883,18 +1884,11 @@ builtin_print(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject if (err) return NULL; - if (flush != NULL) { - PyObject *tmp; - int do_flush = PyObject_IsTrue(flush); - if (do_flush == -1) + if (flush) { + PyObject *tmp = _PyObject_CallMethodIdNoArgs(file, &PyId_flush); + if (tmp == NULL) return NULL; - else if (do_flush) { - tmp = _PyObject_CallMethodIdNoArgs(file, &PyId_flush); - if (tmp == NULL) - return NULL; - else - Py_DECREF(tmp); - } + Py_DECREF(tmp); } Py_RETURN_NONE; diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 7cda44dc29d38b..ea89b3a626bd33 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -1735,10 +1735,10 @@ create_stdio(const PyConfig *config, PyObject* io, mode = "wb"; else mode = "rb"; - buf = _PyObject_CallMethodId(io, &PyId_open, "isiOOOi", + buf = _PyObject_CallMethodId(io, &PyId_open, "isiOOOO", fd, mode, buffering, Py_None, Py_None, /* encoding, errors */ - Py_None, 0); /* newline, closefd */ + Py_None, Py_False); /* newline, closefd */ if (buf == NULL) goto error; From d7dda9077aa4970e431f98a563bb5ced8a32c0b2 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Fri, 30 Aug 2019 11:22:39 +0300 Subject: [PATCH 2/3] More changes. --- Lib/_pyio.py | 8 +++--- Lib/asyncore.py | 4 +-- Lib/codeop.py | 2 +- Lib/doctest.py | 2 +- Lib/quopri.py | 8 +++--- Lib/test/datetimetester.py | 16 +++++------ Lib/test/lock_tests.py | 2 +- Lib/test/test_asyncio/functional.py | 2 +- Lib/test/test_builtin.py | 6 ++-- Lib/test/test_ioctl.py | 2 +- Lib/test/test_ordered_dict.py | 6 ++-- Lib/test/test_pyexpat.py | 44 ++++++++++++++--------------- Lib/test/test_socket.py | 10 +++---- Lib/test/test_ssl.py | 4 +-- Lib/test/test_timeout.py | 12 ++++---- Lib/test/test_unicode.py | 16 +++++------ Lib/threading.py | 2 +- Lib/tkinter/__init__.py | 6 ++-- Lib/xml/dom/expatbuilder.py | 8 +++--- Lib/xml/etree/ElementTree.py | 4 +-- Lib/xml/sax/expatreader.py | 14 ++++----- Lib/xmlrpc/client.py | 2 +- Modules/_io/stringio.c | 4 +-- Modules/_io/textio.c | 10 +++---- Modules/main.c | 2 +- Modules/parsermodule.c | 11 ++------ 26 files changed, 101 insertions(+), 106 deletions(-) diff --git a/Lib/_pyio.py b/Lib/_pyio.py index 0d3f974c072466..c1bdac7913193e 100644 --- a/Lib/_pyio.py +++ b/Lib/_pyio.py @@ -2295,7 +2295,7 @@ def _read_chunk(self): return not eof def _pack_cookie(self, position, dec_flags=0, - bytes_to_feed=0, need_eof=0, chars_to_skip=0): + bytes_to_feed=0, need_eof=False, chars_to_skip=0): # The meaning of a tell() cookie is: seek to position, set the # decoder flags to dec_flags, read bytes_to_feed bytes, feed them # into the decoder with need_eof as the EOF flag, then skip @@ -2309,7 +2309,7 @@ def _unpack_cookie(self, bigint): rest, dec_flags = divmod(rest, 1<<64) rest, bytes_to_feed = divmod(rest, 1<<64) need_eof, chars_to_skip = divmod(rest, 1<<64) - return position, dec_flags, bytes_to_feed, need_eof, chars_to_skip + return position, dec_flags, bytes_to_feed, bool(need_eof), chars_to_skip def tell(self): if not self._seekable: @@ -2383,7 +2383,7 @@ def tell(self): # (a point where the decoder has nothing buffered, so seek() # can safely start from there and advance to this location). bytes_fed = 0 - need_eof = 0 + need_eof = False # Chars decoded since `start_pos` chars_decoded = 0 for i in range(skip_bytes, len(next_input)): @@ -2400,7 +2400,7 @@ def tell(self): else: # We didn't get enough decoded data; signal EOF to get more. chars_decoded += len(decoder.decode(b'', final=True)) - need_eof = 1 + need_eof = True if chars_decoded < chars_to_skip: raise OSError("can't reconstruct logical file position") diff --git a/Lib/asyncore.py b/Lib/asyncore.py index 0e92be3ad1912c..ce16f11a2f5cee 100644 --- a/Lib/asyncore.py +++ b/Lib/asyncore.py @@ -228,7 +228,7 @@ def __init__(self, sock=None, map=None): if sock: # Set to nonblocking just to make sure for cases where we # get a socket from a blocking source. - sock.setblocking(0) + sock.setblocking(False) self.set_socket(sock, map) self.connected = True # The constructor no longer requires that the socket @@ -280,7 +280,7 @@ def del_channel(self, map=None): def create_socket(self, family=socket.AF_INET, type=socket.SOCK_STREAM): self.family_and_type = family, type sock = socket.socket(family, type) - sock.setblocking(0) + sock.setblocking(False) self.set_socket(sock) def set_socket(self, sock, map=None): diff --git a/Lib/codeop.py b/Lib/codeop.py index fb759da42ad1a2..e5c7adea54fbdb 100644 --- a/Lib/codeop.py +++ b/Lib/codeop.py @@ -130,7 +130,7 @@ def __init__(self): self.flags = PyCF_DONT_IMPLY_DEDENT def __call__(self, source, filename, symbol): - codeob = compile(source, filename, symbol, self.flags, 1) + codeob = compile(source, filename, symbol, self.flags, True) for feature in _features: if codeob.co_flags & feature.compiler_flag: self.flags |= feature.compiler_flag diff --git a/Lib/doctest.py b/Lib/doctest.py index bf4889f59e0da4..8fca6280b8aa6b 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -1326,7 +1326,7 @@ def __run(self, test, compileflags, out): try: # Don't blink! This is where the user's code gets run. exec(compile(example.source, filename, "single", - compileflags, 1), test.globs) + compileflags, True), test.globs) self.debugger.set_continue() # ==== Example Finished ==== exception = None except KeyboardInterrupt: diff --git a/Lib/quopri.py b/Lib/quopri.py index cbd979abdffc89..08899c5cb73a30 100755 --- a/Lib/quopri.py +++ b/Lib/quopri.py @@ -204,11 +204,11 @@ def main(): print("-t: quote tabs") print("-d: decode; default encode") sys.exit(2) - deco = 0 - tabs = 0 + deco = False + tabs = False for o, a in opts: - if o == '-t': tabs = 1 - if o == '-d': deco = 1 + if o == '-t': tabs = True + if o == '-d': deco = True if tabs and deco: sys.stdout = sys.stderr print("-t and -d are mutually exclusive") diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py index d09255d79bfb93..d5de5e91a98240 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@ -6160,7 +6160,7 @@ class TZInfoSubclass(tzinfo): def test_date_from_date(self): exp_date = date(1993, 8, 26) - for macro in [0, 1]: + for macro in False, True: with self.subTest(macro=macro): c_api_date = _testcapi.get_date_fromdate( macro, @@ -6173,7 +6173,7 @@ def test_date_from_date(self): def test_datetime_from_dateandtime(self): exp_date = datetime(1993, 8, 26, 22, 12, 55, 99999) - for macro in [0, 1]: + for macro in False, True: with self.subTest(macro=macro): c_api_date = _testcapi.get_datetime_fromdateandtime( macro, @@ -6191,7 +6191,7 @@ def test_datetime_from_dateandtimeandfold(self): exp_date = datetime(1993, 8, 26, 22, 12, 55, 99999) for fold in [0, 1]: - for macro in [0, 1]: + for macro in False, True: with self.subTest(macro=macro, fold=fold): c_api_date = _testcapi.get_datetime_fromdateandtimeandfold( macro, @@ -6210,7 +6210,7 @@ def test_datetime_from_dateandtimeandfold(self): def test_time_from_time(self): exp_time = time(22, 12, 55, 99999) - for macro in [0, 1]: + for macro in False, True: with self.subTest(macro=macro): c_api_time = _testcapi.get_time_fromtime( macro, @@ -6225,7 +6225,7 @@ def test_time_from_timeandfold(self): exp_time = time(22, 12, 55, 99999) for fold in [0, 1]: - for macro in [0, 1]: + for macro in False, True: with self.subTest(macro=macro, fold=fold): c_api_time = _testcapi.get_time_fromtimeandfold( macro, @@ -6241,7 +6241,7 @@ def test_time_from_timeandfold(self): def test_delta_from_dsu(self): exp_delta = timedelta(26, 55, 99999) - for macro in [0, 1]: + for macro in False, True: with self.subTest(macro=macro): c_api_delta = _testcapi.get_delta_fromdsu( macro, @@ -6254,7 +6254,7 @@ def test_delta_from_dsu(self): def test_date_from_timestamp(self): ts = datetime(1995, 4, 12).timestamp() - for macro in [0, 1]: + for macro in False, True: with self.subTest(macro=macro): d = _testcapi.get_date_fromtimestamp(int(ts), macro) @@ -6272,7 +6272,7 @@ def test_datetime_from_timestamp(self): from_timestamp = _testcapi.get_datetime_fromtimestamp for case in cases: - for macro in [0, 1]: + for macro in False, True: with self.subTest(case=case, macro=macro): dtup, tzinfo, usetz = case dt_orig = datetime(*dtup, tzinfo=tzinfo) diff --git a/Lib/test/lock_tests.py b/Lib/test/lock_tests.py index 888586840f2c36..5ec8c5a07da6e9 100644 --- a/Lib/test/lock_tests.py +++ b/Lib/test/lock_tests.py @@ -182,7 +182,7 @@ def f(): def test_timeout(self): lock = self.locktype() # Can't set timeout if not blocking - self.assertRaises(ValueError, lock.acquire, 0, 1) + self.assertRaises(ValueError, lock.acquire, False, 1) # Invalid timeout values self.assertRaises(ValueError, lock.acquire, timeout=-100) self.assertRaises(OverflowError, lock.acquire, timeout=1e100) diff --git a/Lib/test/test_asyncio/functional.py b/Lib/test/test_asyncio/functional.py index 70cd140f479669..4620d3e7a3319f 100644 --- a/Lib/test/test_asyncio/functional.py +++ b/Lib/test/test_asyncio/functional.py @@ -225,7 +225,7 @@ def stop(self): def run(self): try: with self._sock: - self._sock.setblocking(0) + self._sock.setblocking(False) self._run() finally: self._s1.close() diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 1100c49e9b8831..db2f6cd49b2c50 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -320,8 +320,8 @@ def test_compile(self): bom = b'\xef\xbb\xbf' compile(bom + b'print(1)\n', '', 'exec') compile(source='pass', filename='?', mode='exec') - compile(dont_inherit=0, filename='tmp', source='0', mode='eval') - compile('pass', '?', dont_inherit=1, mode='exec') + compile(dont_inherit=False, filename='tmp', source='0', mode='eval') + compile('pass', '?', dont_inherit=True, mode='exec') compile(memoryview(b"text"), "name", "exec") self.assertRaises(TypeError, compile) self.assertRaises(ValueError, compile, 'print(42)\n', '', 'badmode') @@ -1853,7 +1853,7 @@ def test_basic(self): self.assertEqual(data, sorted(copy, key=lambda x: -x)) self.assertNotEqual(data, copy) random.shuffle(copy) - self.assertEqual(data, sorted(copy, reverse=1)) + self.assertEqual(data, sorted(copy, reverse=True)) self.assertNotEqual(data, copy) def test_bad_arguments(self): diff --git a/Lib/test/test_ioctl.py b/Lib/test/test_ioctl.py index d1a5db90810d82..a2873582cf9827 100644 --- a/Lib/test/test_ioctl.py +++ b/Lib/test/test_ioctl.py @@ -48,7 +48,7 @@ def _check_ioctl_mutate_len(self, nbytes=None): else: buf.append(fill) with open("/dev/tty", "rb") as tty: - r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1) + r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, True) rpgrp = buf[0] self.assertEqual(r, 0) self.assertIn(rpgrp, ids) diff --git a/Lib/test/test_ordered_dict.py b/Lib/test/test_ordered_dict.py index 148a9bdc35ee3e..f337be8eb8551f 100644 --- a/Lib/test/test_ordered_dict.py +++ b/Lib/test/test_ordered_dict.py @@ -407,9 +407,9 @@ def test_move_to_end(self): self.assertEqual(list(od), list('abcde')) od.move_to_end('c') self.assertEqual(list(od), list('abdec')) - od.move_to_end('c', 0) + od.move_to_end('c', False) self.assertEqual(list(od), list('cabde')) - od.move_to_end('c', 0) + od.move_to_end('c', False) self.assertEqual(list(od), list('cabde')) od.move_to_end('e') self.assertEqual(list(od), list('cabde')) @@ -418,7 +418,7 @@ def test_move_to_end(self): with self.assertRaises(KeyError): od.move_to_end('x') with self.assertRaises(KeyError): - od.move_to_end('x', 0) + od.move_to_end('x', False) def test_move_to_end_issue25406(self): OrderedDict = self.OrderedDict diff --git a/Lib/test/test_pyexpat.py b/Lib/test/test_pyexpat.py index a0ba59008ecee2..b2b4dea060532d 100644 --- a/Lib/test/test_pyexpat.py +++ b/Lib/test/test_pyexpat.py @@ -231,7 +231,7 @@ def test_parse_bytes(self): parser = expat.ParserCreate(namespace_separator='!') self._hookup_callbacks(parser, out) - parser.Parse(data, 1) + parser.Parse(data, True) operations = out.out self._verify_parse_output(operations) @@ -243,7 +243,7 @@ def test_parse_str(self): parser = expat.ParserCreate(namespace_separator='!') self._hookup_callbacks(parser, out) - parser.Parse(data.decode('iso-8859-1'), 1) + parser.Parse(data.decode('iso-8859-1'), True) operations = out.out self._verify_parse_output(operations) @@ -316,7 +316,7 @@ def collector(name, *args): L.append(name) p.StartElementHandler = collector p.EndElementHandler = collector - p.Parse(b" ", 1) + p.Parse(b" ", True) tag = L[0] self.assertEqual(len(L), 6) for entry in L: @@ -332,14 +332,14 @@ def __init__(self, parser): def ExternalEntityRefHandler(self, context, base, sysId, pubId): external_parser = self.parser.ExternalEntityParserCreate("") - self.parser_result = external_parser.Parse(b"", 1) + self.parser_result = external_parser.Parse(b"", True) return 1 parser = expat.ParserCreate(namespace_separator='!') parser.buffer_text = 1 out = ExternalOutputter(parser) parser.ExternalEntityRefHandler = out.ExternalEntityRefHandler - parser.Parse(data, 1) + parser.Parse(data, True) self.assertEqual(out.parser_result, 1) @@ -383,7 +383,7 @@ def test_default_to_disabled(self): def test_buffering_enabled(self): # Make sure buffering is turned on self.assertTrue(self.parser.buffer_text) - self.parser.Parse(b"123", 1) + self.parser.Parse(b"123", True) self.assertEqual(self.stuff, ['123'], "buffered text not properly collapsed") @@ -391,39 +391,39 @@ def test1(self): # XXX This test exposes more detail of Expat's text chunking than we # XXX like, but it tests what we need to concisely. self.setHandlers(["StartElementHandler"]) - self.parser.Parse(b"12\n34\n5", 1) + self.parser.Parse(b"12\n34\n5", True) self.assertEqual(self.stuff, ["", "1", "", "2", "\n", "3", "", "4\n5"], "buffering control not reacting as expected") def test2(self): - self.parser.Parse(b"1<2> \n 3", 1) + self.parser.Parse(b"1<2> \n 3", True) self.assertEqual(self.stuff, ["1<2> \n 3"], "buffered text not properly collapsed") def test3(self): self.setHandlers(["StartElementHandler"]) - self.parser.Parse(b"123", 1) + self.parser.Parse(b"123", True) self.assertEqual(self.stuff, ["", "1", "", "2", "", "3"], "buffered text not properly split") def test4(self): self.setHandlers(["StartElementHandler", "EndElementHandler"]) self.parser.CharacterDataHandler = None - self.parser.Parse(b"123", 1) + self.parser.Parse(b"123", True) self.assertEqual(self.stuff, ["", "", "", "", "", ""]) def test5(self): self.setHandlers(["StartElementHandler", "EndElementHandler"]) - self.parser.Parse(b"123", 1) + self.parser.Parse(b"123", True) self.assertEqual(self.stuff, ["", "1", "", "", "2", "", "", "3", ""]) def test6(self): self.setHandlers(["CommentHandler", "EndElementHandler", "StartElementHandler"]) - self.parser.Parse(b"12345 ", 1) + self.parser.Parse(b"12345 ", True) self.assertEqual(self.stuff, ["", "1", "", "", "2", "", "", "345", ""], "buffered text not properly split") @@ -431,7 +431,7 @@ def test6(self): def test7(self): self.setHandlers(["CommentHandler", "EndElementHandler", "StartElementHandler"]) - self.parser.Parse(b"12345 ", 1) + self.parser.Parse(b"12345 ", True) self.assertEqual(self.stuff, ["", "1", "", "", "2", "", "", "3", "", "4", "", "5", ""], @@ -451,7 +451,7 @@ def test_exception(self): parser = expat.ParserCreate() parser.StartElementHandler = self.StartElementHandler try: - parser.Parse(b"", 1) + parser.Parse(b"", True) self.fail() except RuntimeError as e: self.assertEqual(e.args[0], 'a', @@ -499,7 +499,7 @@ def test(self): ('e', 15, 3, 6), ('e', 17, 4, 1), ('e', 22, 5, 0)] xml = b'\n \n \n \n' - self.parser.Parse(xml, 1) + self.parser.Parse(xml, True) class sf1296433Test(unittest.TestCase): @@ -579,7 +579,7 @@ def test_disabling_buffer(self): # Parse one chunk of XML self.n = 0 - parser.Parse(xml1, 0) + parser.Parse(xml1, False) self.assertEqual(parser.buffer_size, 1024) self.assertEqual(self.n, 1) @@ -588,13 +588,13 @@ def test_disabling_buffer(self): self.assertFalse(parser.buffer_text) self.assertEqual(parser.buffer_size, 1024) for i in range(10): - parser.Parse(xml2, 0) + parser.Parse(xml2, False) self.assertEqual(self.n, 11) parser.buffer_text = 1 self.assertTrue(parser.buffer_text) self.assertEqual(parser.buffer_size, 1024) - parser.Parse(xml3, 1) + parser.Parse(xml3, True) self.assertEqual(self.n, 12) def counting_handler(self, text): @@ -621,10 +621,10 @@ def test_change_size_1(self): self.assertEqual(parser.buffer_size, 1024) self.n = 0 - parser.Parse(xml1, 0) + parser.Parse(xml1, False) parser.buffer_size *= 2 self.assertEqual(parser.buffer_size, 2048) - parser.Parse(xml2, 1) + parser.Parse(xml2, True) self.assertEqual(self.n, 2) def test_change_size_2(self): @@ -637,10 +637,10 @@ def test_change_size_2(self): self.assertEqual(parser.buffer_size, 2048) self.n=0 - parser.Parse(xml1, 0) + parser.Parse(xml1, False) parser.buffer_size = parser.buffer_size // 2 self.assertEqual(parser.buffer_size, 1024) - parser.Parse(xml2, 1) + parser.Parse(xml2, True) self.assertEqual(self.n, 4) class MalformedInputTest(unittest.TestCase): diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index ce816cd603ecba..14ff561da94f27 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -4597,7 +4597,7 @@ def _testInheritFlagsTimeout(self): def testAccept(self): # Testing non-blocking accept - self.serv.setblocking(0) + self.serv.setblocking(False) # connect() didn't start: non-blocking accept() fails start_time = time.monotonic() @@ -4628,7 +4628,7 @@ def testRecv(self): # Testing non-blocking recv conn, addr = self.serv.accept() self.addCleanup(conn.close) - conn.setblocking(0) + conn.setblocking(False) # the server didn't send data yet: non-blocking recv() fails with self.assertRaises(BlockingIOError): @@ -5698,15 +5698,15 @@ def test_SOCK_NONBLOCK(self): with socket.socket(socket.AF_INET, socket.SOCK_STREAM | socket.SOCK_NONBLOCK) as s: self.checkNonblock(s) - s.setblocking(1) + s.setblocking(True) self.checkNonblock(s, nonblock=False) - s.setblocking(0) + s.setblocking(False) self.checkNonblock(s) s.settimeout(None) self.checkNonblock(s, nonblock=False) s.settimeout(2.0) self.checkNonblock(s, timeout=2.0) - s.setblocking(1) + s.setblocking(True) self.checkNonblock(s, nonblock=False) # defaulttimeout t = socket.getdefaulttimeout() diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index afc5be9a7e99be..6ad0b61d8a5766 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -2209,7 +2209,7 @@ def __init__(self, server, connsock, addr): self.running = False self.sock = connsock self.addr = addr - self.sock.setblocking(1) + self.sock.setblocking(True) self.sslconn = None threading.Thread.__init__(self) self.daemon = True @@ -3255,7 +3255,7 @@ def test_starttls(self): wrapped = False with server: s = socket.socket() - s.setblocking(1) + s.setblocking(True) s.connect((HOST, server.port)) if support.verbose: sys.stdout.write("\n") diff --git a/Lib/test/test_timeout.py b/Lib/test/test_timeout.py index b07c07cbfc4df6..0fe4c7ab6e7556 100644 --- a/Lib/test/test_timeout.py +++ b/Lib/test/test_timeout.py @@ -79,24 +79,24 @@ def testRangeCheck(self): def testTimeoutThenBlocking(self): # Test settimeout() followed by setblocking() self.sock.settimeout(10) - self.sock.setblocking(1) + self.sock.setblocking(True) self.assertEqual(self.sock.gettimeout(), None) - self.sock.setblocking(0) + self.sock.setblocking(False) self.assertEqual(self.sock.gettimeout(), 0.0) self.sock.settimeout(10) - self.sock.setblocking(0) + self.sock.setblocking(False) self.assertEqual(self.sock.gettimeout(), 0.0) - self.sock.setblocking(1) + self.sock.setblocking(True) self.assertEqual(self.sock.gettimeout(), None) def testBlockingThenTimeout(self): # Test setblocking() followed by settimeout() - self.sock.setblocking(0) + self.sock.setblocking(False) self.sock.settimeout(1) self.assertEqual(self.sock.gettimeout(), 1) - self.sock.setblocking(1) + self.sock.setblocking(True) self.sock.settimeout(1) self.assertEqual(self.sock.gettimeout(), 1) diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index 7bd7f51b592b34..8636f2b0bd5029 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -2820,15 +2820,15 @@ def test_asucs4(self): for s in ['abc', '\xa1\xa2', '\u4f60\u597d', 'a\U0001f600', 'a\ud800b\udfffc', '\ud834\udd1e']: l = len(s) - self.assertEqual(unicode_asucs4(s, l, 1), s+'\0') - self.assertEqual(unicode_asucs4(s, l, 0), s+'\uffff') - self.assertEqual(unicode_asucs4(s, l+1, 1), s+'\0\uffff') - self.assertEqual(unicode_asucs4(s, l+1, 0), s+'\0\uffff') - self.assertRaises(SystemError, unicode_asucs4, s, l-1, 1) - self.assertRaises(SystemError, unicode_asucs4, s, l-2, 0) + self.assertEqual(unicode_asucs4(s, l, True), s+'\0') + self.assertEqual(unicode_asucs4(s, l, False), s+'\uffff') + self.assertEqual(unicode_asucs4(s, l+1, True), s+'\0\uffff') + self.assertEqual(unicode_asucs4(s, l+1, False), s+'\0\uffff') + self.assertRaises(SystemError, unicode_asucs4, s, l-1, True) + self.assertRaises(SystemError, unicode_asucs4, s, l-2, False) s = '\0'.join([s, s]) - self.assertEqual(unicode_asucs4(s, len(s), 1), s+'\0') - self.assertEqual(unicode_asucs4(s, len(s), 0), s+'\uffff') + self.assertEqual(unicode_asucs4(s, len(s), True), s+'\0') + self.assertEqual(unicode_asucs4(s, len(s), False), s+'\uffff') # Test PyUnicode_AsUTF8() @support.cpython_only diff --git a/Lib/threading.py b/Lib/threading.py index c3bbb19acbe224..59323679c80dcd 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -262,7 +262,7 @@ def _acquire_restore(self, x): def _is_owned(self): # Return True if lock is owned by current_thread. # This method is called only if _lock doesn't have _is_owned(). - if self._lock.acquire(0): + if self._lock.acquire(False): self._lock.release() return False else: diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py index 9258484af5fd85..5d5cf90e0bddc7 100644 --- a/Lib/tkinter/__init__.py +++ b/Lib/tkinter/__init__.py @@ -2241,7 +2241,7 @@ class Tk(Misc, Wm): _w = '.' def __init__(self, screenName=None, baseName=None, className='Tk', - useTk=1, sync=0, use=None): + useTk=True, sync=False, use=None): """Return a new Toplevel widget on screen SCREENNAME. A new Tcl interpreter will be created. BASENAME will be used for the identification of the profile file (see readprofile). @@ -2259,7 +2259,7 @@ def __init__(self, screenName=None, baseName=None, className='Tk', baseName, ext = os.path.splitext(baseName) if ext not in ('.py', '.pyc'): baseName = baseName + ext - interactive = 0 + interactive = False self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) if useTk: self._loadtk() @@ -2361,7 +2361,7 @@ def __getattr__(self, attr): # copied into the Pack, Place or Grid class. -def Tcl(screenName=None, baseName=None, className='Tk', useTk=0): +def Tcl(screenName=None, baseName=None, className='Tk', useTk=False): return Tk(screenName, baseName, className, useTk) diff --git a/Lib/xml/dom/expatbuilder.py b/Lib/xml/dom/expatbuilder.py index 2bd835b035948d..199c22d0af347e 100644 --- a/Lib/xml/dom/expatbuilder.py +++ b/Lib/xml/dom/expatbuilder.py @@ -204,11 +204,11 @@ def parseFile(self, file): buffer = file.read(16*1024) if not buffer: break - parser.Parse(buffer, 0) + parser.Parse(buffer, False) if first_buffer and self.document.documentElement: self._setup_subset(buffer) first_buffer = False - parser.Parse("", True) + parser.Parse(b"", True) except ParseEscape: pass doc = self.document @@ -637,7 +637,7 @@ def parseString(self, string): nsattrs = self._getNSattrs() # get ns decls from node's ancestors document = _FRAGMENT_BUILDER_TEMPLATE % (ident, subset, nsattrs) try: - parser.Parse(document, 1) + parser.Parse(document, True) except: self.reset() raise @@ -697,7 +697,7 @@ def external_entity_ref_handler(self, context, base, systemId, publicId): self.fragment = self.document.createDocumentFragment() self.curNode = self.fragment try: - parser.Parse(self._source, 1) + parser.Parse(self._source, True) finally: self.curNode = old_cur_node self.document = old_document diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py index 431ecd0dddf1bc..faf889b7db6f1b 100644 --- a/Lib/xml/etree/ElementTree.py +++ b/Lib/xml/etree/ElementTree.py @@ -1741,14 +1741,14 @@ def _default(self, text): def feed(self, data): """Feed encoded data to parser.""" try: - self.parser.Parse(data, 0) + self.parser.Parse(data, False) except self._error as v: self._raiseerror(v) def close(self): """Finish feeding data to parser and return element structure.""" try: - self.parser.Parse("", 1) # end of data + self.parser.Parse(b"", True) # end of data except self._error as v: self._raiseerror(v) try: diff --git a/Lib/xml/sax/expatreader.py b/Lib/xml/sax/expatreader.py index 5066ffc2fa51f0..e334ac9fea0d36 100644 --- a/Lib/xml/sax/expatreader.py +++ b/Lib/xml/sax/expatreader.py @@ -93,7 +93,7 @@ def __init__(self, namespaceHandling=0, bufsize=2**16-20): self._parser = None self._namespaces = namespaceHandling self._lex_handler_prop = None - self._parsing = 0 + self._parsing = False self._entity_stack = [] self._external_ges = 0 self._interning = None @@ -203,10 +203,10 @@ def setProperty(self, name, value): # IncrementalParser methods - def feed(self, data, isFinal = 0): + def feed(self, data, isFinal=False): if not self._parsing: self.reset() - self._parsing = 1 + self._parsing = True self._cont_handler.startDocument() try: @@ -237,13 +237,13 @@ def close(self): # If we are completing an external entity, do nothing here return try: - self.feed("", isFinal = 1) + self.feed(b"", isFinal=True) self._cont_handler.endDocument() - self._parsing = 0 + self._parsing = False # break cycle created by expat handlers pointing to our methods self._parser = None finally: - self._parsing = 0 + self._parsing = False if self._parser is not None: # Keep ErrorColumnNumber and ErrorLineNumber after closing. parser = _ClosedParser() @@ -307,7 +307,7 @@ def reset(self): self._parser.SetParamEntityParsing( expat.XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) - self._parsing = 0 + self._parsing = False self._entity_stack = [] # Locator methods diff --git a/Lib/xmlrpc/client.py b/Lib/xmlrpc/client.py index 246ef27ffc241a..b4b2941ea5b407 100644 --- a/Lib/xmlrpc/client.py +++ b/Lib/xmlrpc/client.py @@ -442,7 +442,7 @@ def __init__(self, target): target.xml(encoding, None) def feed(self, data): - self._parser.Parse(data, 0) + self._parser.Parse(data, False) def close(self): try: diff --git a/Modules/_io/stringio.c b/Modules/_io/stringio.c index f0bd6e951b7c12..517cb5f523e8d4 100644 --- a/Modules/_io/stringio.c +++ b/Modules/_io/stringio.c @@ -714,9 +714,9 @@ _io_StringIO___init___impl(stringio *self, PyObject *value, } if (self->readuniversal) { - self->decoder = PyObject_CallFunction( + self->decoder = PyObject_CallFunctionObjArgs( (PyObject *)&PyIncrementalNewlineDecoder_Type, - "OO", Py_None, self->readtranslate ? Py_True : Py_False); + Py_None, self->readtranslate ? Py_True : Py_False, NULL); if (self->decoder == NULL) return -1; } diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c index d9e6080faf99e7..1db8d94ed12aca 100644 --- a/Modules/_io/textio.c +++ b/Modules/_io/textio.c @@ -880,9 +880,9 @@ _textiowrapper_set_decoder(textio *self, PyObject *codec_info, return -1; if (self->readuniversal) { - PyObject *incrementalDecoder = PyObject_CallFunction( + PyObject *incrementalDecoder = PyObject_CallFunctionObjArgs( (PyObject *)&PyIncrementalNewlineDecoder_Type, - "OO", self->decoder, self->readtranslate ? Py_True : Py_False); + self->decoder, self->readtranslate ? Py_True : Py_False, NULL); if (incrementalDecoder == NULL) return -1; Py_CLEAR(self->decoder); @@ -2591,8 +2591,8 @@ _io_TextIOWrapper_seek_impl(textio *self, PyObject *cookieObj, int whence) } Py_XSETREF(self->snapshot, snapshot); - decoded = _PyObject_CallMethodId(self->decoder, &PyId_decode, - "Oi", input_chunk, (int)cookie.need_eof); + decoded = _PyObject_CallMethodIdObjArgs(self->decoder, &PyId_decode, + input_chunk, cookie.need_eof ? Py_True : Py_False, NULL); if (check_decoded(decoded) < 0) goto fail; @@ -2819,7 +2819,7 @@ _io_TextIOWrapper_tell_impl(textio *self) if (input == input_end) { /* We didn't get enough decoded data; signal EOF to get more. */ PyObject *decoded = _PyObject_CallMethodId( - self->decoder, &PyId_decode, "yi", "", /* final = */ 1); + self->decoder, &PyId_decode, "yO", "", /* final = */ Py_True); if (check_decoded(decoded) < 0) goto fail; chars_decoded += PyUnicode_GET_LENGTH(decoded); diff --git a/Modules/main.c b/Modules/main.c index ed19383ffde49c..fdc7e0dabf17bb 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -292,7 +292,7 @@ pymain_run_module(const wchar_t *modname, int set_argv0) Py_DECREF(runmodule); return pymain_exit_err_print(); } - runargs = Py_BuildValue("(OO)", module, set_argv0 ? Py_True : Py_False); + runargs = PyTuple_Pack(2, module, set_argv0 ? Py_True : Py_False); if (runargs == NULL) { fprintf(stderr, "Could not create arguments for runpy._run_module_as_main\n"); diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c index b2495fc8b322ee..ef63ca936e91c2 100644 --- a/Modules/parsermodule.c +++ b/Modules/parsermodule.c @@ -1080,25 +1080,20 @@ parser__pickler(PyObject *self, PyObject *args) NOTE(ARGUNUSED(self)) PyObject *result = NULL; PyObject *st = NULL; - PyObject *empty_dict = NULL; if (PyArg_ParseTuple(args, "O!:_pickler", &PyST_Type, &st)) { PyObject *newargs; PyObject *tuple; - if ((empty_dict = PyDict_New()) == NULL) - goto finally; - if ((newargs = Py_BuildValue("Oi", st, 1)) == NULL) - goto finally; - tuple = parser_st2tuple((PyST_Object*)NULL, newargs, empty_dict); + if ((newargs = PyTuple_Pack(2, st, Py_True)) == NULL) + return NULL; + tuple = parser_st2tuple((PyST_Object*)NULL, newargs, NULL); if (tuple != NULL) { result = Py_BuildValue("O(O)", pickle_constructor, tuple); Py_DECREF(tuple); } Py_DECREF(newargs); } - finally: - Py_XDECREF(empty_dict); return (result); } From c75bd1f4389202b8c9f60e94fcbf9f56f3ea62c1 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 31 Aug 2019 00:07:05 +0300 Subject: [PATCH 3/3] Move some changes to separate PRs. --- Lib/asyncore.py | 4 +-- Lib/test/test_asyncio/functional.py | 2 +- Lib/test/test_pyexpat.py | 44 ++++++++++++++--------------- Lib/test/test_socket.py | 10 +++---- Lib/test/test_ssl.py | 4 +-- Lib/test/test_timeout.py | 12 ++++---- Lib/xml/dom/expatbuilder.py | 8 +++--- Lib/xml/etree/ElementTree.py | 4 +-- Lib/xml/sax/expatreader.py | 14 ++++----- Lib/xmlrpc/client.py | 2 +- 10 files changed, 52 insertions(+), 52 deletions(-) diff --git a/Lib/asyncore.py b/Lib/asyncore.py index ce16f11a2f5cee..0e92be3ad1912c 100644 --- a/Lib/asyncore.py +++ b/Lib/asyncore.py @@ -228,7 +228,7 @@ def __init__(self, sock=None, map=None): if sock: # Set to nonblocking just to make sure for cases where we # get a socket from a blocking source. - sock.setblocking(False) + sock.setblocking(0) self.set_socket(sock, map) self.connected = True # The constructor no longer requires that the socket @@ -280,7 +280,7 @@ def del_channel(self, map=None): def create_socket(self, family=socket.AF_INET, type=socket.SOCK_STREAM): self.family_and_type = family, type sock = socket.socket(family, type) - sock.setblocking(False) + sock.setblocking(0) self.set_socket(sock) def set_socket(self, sock, map=None): diff --git a/Lib/test/test_asyncio/functional.py b/Lib/test/test_asyncio/functional.py index 4620d3e7a3319f..70cd140f479669 100644 --- a/Lib/test/test_asyncio/functional.py +++ b/Lib/test/test_asyncio/functional.py @@ -225,7 +225,7 @@ def stop(self): def run(self): try: with self._sock: - self._sock.setblocking(False) + self._sock.setblocking(0) self._run() finally: self._s1.close() diff --git a/Lib/test/test_pyexpat.py b/Lib/test/test_pyexpat.py index b2b4dea060532d..a0ba59008ecee2 100644 --- a/Lib/test/test_pyexpat.py +++ b/Lib/test/test_pyexpat.py @@ -231,7 +231,7 @@ def test_parse_bytes(self): parser = expat.ParserCreate(namespace_separator='!') self._hookup_callbacks(parser, out) - parser.Parse(data, True) + parser.Parse(data, 1) operations = out.out self._verify_parse_output(operations) @@ -243,7 +243,7 @@ def test_parse_str(self): parser = expat.ParserCreate(namespace_separator='!') self._hookup_callbacks(parser, out) - parser.Parse(data.decode('iso-8859-1'), True) + parser.Parse(data.decode('iso-8859-1'), 1) operations = out.out self._verify_parse_output(operations) @@ -316,7 +316,7 @@ def collector(name, *args): L.append(name) p.StartElementHandler = collector p.EndElementHandler = collector - p.Parse(b" ", True) + p.Parse(b" ", 1) tag = L[0] self.assertEqual(len(L), 6) for entry in L: @@ -332,14 +332,14 @@ def __init__(self, parser): def ExternalEntityRefHandler(self, context, base, sysId, pubId): external_parser = self.parser.ExternalEntityParserCreate("") - self.parser_result = external_parser.Parse(b"", True) + self.parser_result = external_parser.Parse(b"", 1) return 1 parser = expat.ParserCreate(namespace_separator='!') parser.buffer_text = 1 out = ExternalOutputter(parser) parser.ExternalEntityRefHandler = out.ExternalEntityRefHandler - parser.Parse(data, True) + parser.Parse(data, 1) self.assertEqual(out.parser_result, 1) @@ -383,7 +383,7 @@ def test_default_to_disabled(self): def test_buffering_enabled(self): # Make sure buffering is turned on self.assertTrue(self.parser.buffer_text) - self.parser.Parse(b"123", True) + self.parser.Parse(b"123", 1) self.assertEqual(self.stuff, ['123'], "buffered text not properly collapsed") @@ -391,39 +391,39 @@ def test1(self): # XXX This test exposes more detail of Expat's text chunking than we # XXX like, but it tests what we need to concisely. self.setHandlers(["StartElementHandler"]) - self.parser.Parse(b"12\n34\n5", True) + self.parser.Parse(b"12\n34\n5", 1) self.assertEqual(self.stuff, ["", "1", "", "2", "\n", "3", "", "4\n5"], "buffering control not reacting as expected") def test2(self): - self.parser.Parse(b"1<2> \n 3", True) + self.parser.Parse(b"1<2> \n 3", 1) self.assertEqual(self.stuff, ["1<2> \n 3"], "buffered text not properly collapsed") def test3(self): self.setHandlers(["StartElementHandler"]) - self.parser.Parse(b"123", True) + self.parser.Parse(b"123", 1) self.assertEqual(self.stuff, ["", "1", "", "2", "", "3"], "buffered text not properly split") def test4(self): self.setHandlers(["StartElementHandler", "EndElementHandler"]) self.parser.CharacterDataHandler = None - self.parser.Parse(b"123", True) + self.parser.Parse(b"123", 1) self.assertEqual(self.stuff, ["", "", "", "", "", ""]) def test5(self): self.setHandlers(["StartElementHandler", "EndElementHandler"]) - self.parser.Parse(b"123", True) + self.parser.Parse(b"123", 1) self.assertEqual(self.stuff, ["", "1", "", "", "2", "", "", "3", ""]) def test6(self): self.setHandlers(["CommentHandler", "EndElementHandler", "StartElementHandler"]) - self.parser.Parse(b"12345 ", True) + self.parser.Parse(b"12345 ", 1) self.assertEqual(self.stuff, ["", "1", "", "", "2", "", "", "345", ""], "buffered text not properly split") @@ -431,7 +431,7 @@ def test6(self): def test7(self): self.setHandlers(["CommentHandler", "EndElementHandler", "StartElementHandler"]) - self.parser.Parse(b"12345 ", True) + self.parser.Parse(b"12345 ", 1) self.assertEqual(self.stuff, ["", "1", "", "", "2", "", "", "3", "", "4", "", "5", ""], @@ -451,7 +451,7 @@ def test_exception(self): parser = expat.ParserCreate() parser.StartElementHandler = self.StartElementHandler try: - parser.Parse(b"", True) + parser.Parse(b"", 1) self.fail() except RuntimeError as e: self.assertEqual(e.args[0], 'a', @@ -499,7 +499,7 @@ def test(self): ('e', 15, 3, 6), ('e', 17, 4, 1), ('e', 22, 5, 0)] xml = b'\n \n \n \n' - self.parser.Parse(xml, True) + self.parser.Parse(xml, 1) class sf1296433Test(unittest.TestCase): @@ -579,7 +579,7 @@ def test_disabling_buffer(self): # Parse one chunk of XML self.n = 0 - parser.Parse(xml1, False) + parser.Parse(xml1, 0) self.assertEqual(parser.buffer_size, 1024) self.assertEqual(self.n, 1) @@ -588,13 +588,13 @@ def test_disabling_buffer(self): self.assertFalse(parser.buffer_text) self.assertEqual(parser.buffer_size, 1024) for i in range(10): - parser.Parse(xml2, False) + parser.Parse(xml2, 0) self.assertEqual(self.n, 11) parser.buffer_text = 1 self.assertTrue(parser.buffer_text) self.assertEqual(parser.buffer_size, 1024) - parser.Parse(xml3, True) + parser.Parse(xml3, 1) self.assertEqual(self.n, 12) def counting_handler(self, text): @@ -621,10 +621,10 @@ def test_change_size_1(self): self.assertEqual(parser.buffer_size, 1024) self.n = 0 - parser.Parse(xml1, False) + parser.Parse(xml1, 0) parser.buffer_size *= 2 self.assertEqual(parser.buffer_size, 2048) - parser.Parse(xml2, True) + parser.Parse(xml2, 1) self.assertEqual(self.n, 2) def test_change_size_2(self): @@ -637,10 +637,10 @@ def test_change_size_2(self): self.assertEqual(parser.buffer_size, 2048) self.n=0 - parser.Parse(xml1, False) + parser.Parse(xml1, 0) parser.buffer_size = parser.buffer_size // 2 self.assertEqual(parser.buffer_size, 1024) - parser.Parse(xml2, True) + parser.Parse(xml2, 1) self.assertEqual(self.n, 4) class MalformedInputTest(unittest.TestCase): diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 14ff561da94f27..ce816cd603ecba 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -4597,7 +4597,7 @@ def _testInheritFlagsTimeout(self): def testAccept(self): # Testing non-blocking accept - self.serv.setblocking(False) + self.serv.setblocking(0) # connect() didn't start: non-blocking accept() fails start_time = time.monotonic() @@ -4628,7 +4628,7 @@ def testRecv(self): # Testing non-blocking recv conn, addr = self.serv.accept() self.addCleanup(conn.close) - conn.setblocking(False) + conn.setblocking(0) # the server didn't send data yet: non-blocking recv() fails with self.assertRaises(BlockingIOError): @@ -5698,15 +5698,15 @@ def test_SOCK_NONBLOCK(self): with socket.socket(socket.AF_INET, socket.SOCK_STREAM | socket.SOCK_NONBLOCK) as s: self.checkNonblock(s) - s.setblocking(True) + s.setblocking(1) self.checkNonblock(s, nonblock=False) - s.setblocking(False) + s.setblocking(0) self.checkNonblock(s) s.settimeout(None) self.checkNonblock(s, nonblock=False) s.settimeout(2.0) self.checkNonblock(s, timeout=2.0) - s.setblocking(True) + s.setblocking(1) self.checkNonblock(s, nonblock=False) # defaulttimeout t = socket.getdefaulttimeout() diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 6ad0b61d8a5766..afc5be9a7e99be 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -2209,7 +2209,7 @@ def __init__(self, server, connsock, addr): self.running = False self.sock = connsock self.addr = addr - self.sock.setblocking(True) + self.sock.setblocking(1) self.sslconn = None threading.Thread.__init__(self) self.daemon = True @@ -3255,7 +3255,7 @@ def test_starttls(self): wrapped = False with server: s = socket.socket() - s.setblocking(True) + s.setblocking(1) s.connect((HOST, server.port)) if support.verbose: sys.stdout.write("\n") diff --git a/Lib/test/test_timeout.py b/Lib/test/test_timeout.py index 0fe4c7ab6e7556..b07c07cbfc4df6 100644 --- a/Lib/test/test_timeout.py +++ b/Lib/test/test_timeout.py @@ -79,24 +79,24 @@ def testRangeCheck(self): def testTimeoutThenBlocking(self): # Test settimeout() followed by setblocking() self.sock.settimeout(10) - self.sock.setblocking(True) + self.sock.setblocking(1) self.assertEqual(self.sock.gettimeout(), None) - self.sock.setblocking(False) + self.sock.setblocking(0) self.assertEqual(self.sock.gettimeout(), 0.0) self.sock.settimeout(10) - self.sock.setblocking(False) + self.sock.setblocking(0) self.assertEqual(self.sock.gettimeout(), 0.0) - self.sock.setblocking(True) + self.sock.setblocking(1) self.assertEqual(self.sock.gettimeout(), None) def testBlockingThenTimeout(self): # Test setblocking() followed by settimeout() - self.sock.setblocking(False) + self.sock.setblocking(0) self.sock.settimeout(1) self.assertEqual(self.sock.gettimeout(), 1) - self.sock.setblocking(True) + self.sock.setblocking(1) self.sock.settimeout(1) self.assertEqual(self.sock.gettimeout(), 1) diff --git a/Lib/xml/dom/expatbuilder.py b/Lib/xml/dom/expatbuilder.py index 199c22d0af347e..2bd835b035948d 100644 --- a/Lib/xml/dom/expatbuilder.py +++ b/Lib/xml/dom/expatbuilder.py @@ -204,11 +204,11 @@ def parseFile(self, file): buffer = file.read(16*1024) if not buffer: break - parser.Parse(buffer, False) + parser.Parse(buffer, 0) if first_buffer and self.document.documentElement: self._setup_subset(buffer) first_buffer = False - parser.Parse(b"", True) + parser.Parse("", True) except ParseEscape: pass doc = self.document @@ -637,7 +637,7 @@ def parseString(self, string): nsattrs = self._getNSattrs() # get ns decls from node's ancestors document = _FRAGMENT_BUILDER_TEMPLATE % (ident, subset, nsattrs) try: - parser.Parse(document, True) + parser.Parse(document, 1) except: self.reset() raise @@ -697,7 +697,7 @@ def external_entity_ref_handler(self, context, base, systemId, publicId): self.fragment = self.document.createDocumentFragment() self.curNode = self.fragment try: - parser.Parse(self._source, True) + parser.Parse(self._source, 1) finally: self.curNode = old_cur_node self.document = old_document diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py index faf889b7db6f1b..431ecd0dddf1bc 100644 --- a/Lib/xml/etree/ElementTree.py +++ b/Lib/xml/etree/ElementTree.py @@ -1741,14 +1741,14 @@ def _default(self, text): def feed(self, data): """Feed encoded data to parser.""" try: - self.parser.Parse(data, False) + self.parser.Parse(data, 0) except self._error as v: self._raiseerror(v) def close(self): """Finish feeding data to parser and return element structure.""" try: - self.parser.Parse(b"", True) # end of data + self.parser.Parse("", 1) # end of data except self._error as v: self._raiseerror(v) try: diff --git a/Lib/xml/sax/expatreader.py b/Lib/xml/sax/expatreader.py index e334ac9fea0d36..5066ffc2fa51f0 100644 --- a/Lib/xml/sax/expatreader.py +++ b/Lib/xml/sax/expatreader.py @@ -93,7 +93,7 @@ def __init__(self, namespaceHandling=0, bufsize=2**16-20): self._parser = None self._namespaces = namespaceHandling self._lex_handler_prop = None - self._parsing = False + self._parsing = 0 self._entity_stack = [] self._external_ges = 0 self._interning = None @@ -203,10 +203,10 @@ def setProperty(self, name, value): # IncrementalParser methods - def feed(self, data, isFinal=False): + def feed(self, data, isFinal = 0): if not self._parsing: self.reset() - self._parsing = True + self._parsing = 1 self._cont_handler.startDocument() try: @@ -237,13 +237,13 @@ def close(self): # If we are completing an external entity, do nothing here return try: - self.feed(b"", isFinal=True) + self.feed("", isFinal = 1) self._cont_handler.endDocument() - self._parsing = False + self._parsing = 0 # break cycle created by expat handlers pointing to our methods self._parser = None finally: - self._parsing = False + self._parsing = 0 if self._parser is not None: # Keep ErrorColumnNumber and ErrorLineNumber after closing. parser = _ClosedParser() @@ -307,7 +307,7 @@ def reset(self): self._parser.SetParamEntityParsing( expat.XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) - self._parsing = False + self._parsing = 0 self._entity_stack = [] # Locator methods diff --git a/Lib/xmlrpc/client.py b/Lib/xmlrpc/client.py index b4b2941ea5b407..246ef27ffc241a 100644 --- a/Lib/xmlrpc/client.py +++ b/Lib/xmlrpc/client.py @@ -442,7 +442,7 @@ def __init__(self, target): target.xml(encoding, None) def feed(self, data): - self._parser.Parse(data, False) + self._parser.Parse(data, 0) def close(self): try: