Skip to content

Commit eb89746

Browse files
bpo-15999: Always pass bool instead of int to the expat parser. (GH-15622)
1 parent 41c57b3 commit eb89746

File tree

5 files changed

+36
-36
lines changed

5 files changed

+36
-36
lines changed

Lib/test/test_pyexpat.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ def test_parse_bytes(self):
231231
parser = expat.ParserCreate(namespace_separator='!')
232232
self._hookup_callbacks(parser, out)
233233

234-
parser.Parse(data, 1)
234+
parser.Parse(data, True)
235235

236236
operations = out.out
237237
self._verify_parse_output(operations)
@@ -243,7 +243,7 @@ def test_parse_str(self):
243243
parser = expat.ParserCreate(namespace_separator='!')
244244
self._hookup_callbacks(parser, out)
245245

246-
parser.Parse(data.decode('iso-8859-1'), 1)
246+
parser.Parse(data.decode('iso-8859-1'), True)
247247

248248
operations = out.out
249249
self._verify_parse_output(operations)
@@ -316,7 +316,7 @@ def collector(name, *args):
316316
L.append(name)
317317
p.StartElementHandler = collector
318318
p.EndElementHandler = collector
319-
p.Parse(b"<e> <e/> <e></e> </e>", 1)
319+
p.Parse(b"<e> <e/> <e></e> </e>", True)
320320
tag = L[0]
321321
self.assertEqual(len(L), 6)
322322
for entry in L:
@@ -332,14 +332,14 @@ def __init__(self, parser):
332332

333333
def ExternalEntityRefHandler(self, context, base, sysId, pubId):
334334
external_parser = self.parser.ExternalEntityParserCreate("")
335-
self.parser_result = external_parser.Parse(b"", 1)
335+
self.parser_result = external_parser.Parse(b"", True)
336336
return 1
337337

338338
parser = expat.ParserCreate(namespace_separator='!')
339339
parser.buffer_text = 1
340340
out = ExternalOutputter(parser)
341341
parser.ExternalEntityRefHandler = out.ExternalEntityRefHandler
342-
parser.Parse(data, 1)
342+
parser.Parse(data, True)
343343
self.assertEqual(out.parser_result, 1)
344344

345345

@@ -383,55 +383,55 @@ def test_default_to_disabled(self):
383383
def test_buffering_enabled(self):
384384
# Make sure buffering is turned on
385385
self.assertTrue(self.parser.buffer_text)
386-
self.parser.Parse(b"<a>1<b/>2<c/>3</a>", 1)
386+
self.parser.Parse(b"<a>1<b/>2<c/>3</a>", True)
387387
self.assertEqual(self.stuff, ['123'],
388388
"buffered text not properly collapsed")
389389

390390
def test1(self):
391391
# XXX This test exposes more detail of Expat's text chunking than we
392392
# XXX like, but it tests what we need to concisely.
393393
self.setHandlers(["StartElementHandler"])
394-
self.parser.Parse(b"<a>1<b buffer-text='no'/>2\n3<c buffer-text='yes'/>4\n5</a>", 1)
394+
self.parser.Parse(b"<a>1<b buffer-text='no'/>2\n3<c buffer-text='yes'/>4\n5</a>", True)
395395
self.assertEqual(self.stuff,
396396
["<a>", "1", "<b>", "2", "\n", "3", "<c>", "4\n5"],
397397
"buffering control not reacting as expected")
398398

399399
def test2(self):
400-
self.parser.Parse(b"<a>1<b/>&lt;2&gt;<c/>&#32;\n&#x20;3</a>", 1)
400+
self.parser.Parse(b"<a>1<b/>&lt;2&gt;<c/>&#32;\n&#x20;3</a>", True)
401401
self.assertEqual(self.stuff, ["1<2> \n 3"],
402402
"buffered text not properly collapsed")
403403

404404
def test3(self):
405405
self.setHandlers(["StartElementHandler"])
406-
self.parser.Parse(b"<a>1<b/>2<c/>3</a>", 1)
406+
self.parser.Parse(b"<a>1<b/>2<c/>3</a>", True)
407407
self.assertEqual(self.stuff, ["<a>", "1", "<b>", "2", "<c>", "3"],
408408
"buffered text not properly split")
409409

410410
def test4(self):
411411
self.setHandlers(["StartElementHandler", "EndElementHandler"])
412412
self.parser.CharacterDataHandler = None
413-
self.parser.Parse(b"<a>1<b/>2<c/>3</a>", 1)
413+
self.parser.Parse(b"<a>1<b/>2<c/>3</a>", True)
414414
self.assertEqual(self.stuff,
415415
["<a>", "<b>", "</b>", "<c>", "</c>", "</a>"])
416416

417417
def test5(self):
418418
self.setHandlers(["StartElementHandler", "EndElementHandler"])
419-
self.parser.Parse(b"<a>1<b></b>2<c/>3</a>", 1)
419+
self.parser.Parse(b"<a>1<b></b>2<c/>3</a>", True)
420420
self.assertEqual(self.stuff,
421421
["<a>", "1", "<b>", "</b>", "2", "<c>", "</c>", "3", "</a>"])
422422

423423
def test6(self):
424424
self.setHandlers(["CommentHandler", "EndElementHandler",
425425
"StartElementHandler"])
426-
self.parser.Parse(b"<a>1<b/>2<c></c>345</a> ", 1)
426+
self.parser.Parse(b"<a>1<b/>2<c></c>345</a> ", True)
427427
self.assertEqual(self.stuff,
428428
["<a>", "1", "<b>", "</b>", "2", "<c>", "</c>", "345", "</a>"],
429429
"buffered text not properly split")
430430

431431
def test7(self):
432432
self.setHandlers(["CommentHandler", "EndElementHandler",
433433
"StartElementHandler"])
434-
self.parser.Parse(b"<a>1<b/>2<c></c>3<!--abc-->4<!--def-->5</a> ", 1)
434+
self.parser.Parse(b"<a>1<b/>2<c></c>3<!--abc-->4<!--def-->5</a> ", True)
435435
self.assertEqual(self.stuff,
436436
["<a>", "1", "<b>", "</b>", "2", "<c>", "</c>", "3",
437437
"<!--abc-->", "4", "<!--def-->", "5", "</a>"],
@@ -451,7 +451,7 @@ def test_exception(self):
451451
parser = expat.ParserCreate()
452452
parser.StartElementHandler = self.StartElementHandler
453453
try:
454-
parser.Parse(b"<a><b><c/></b></a>", 1)
454+
parser.Parse(b"<a><b><c/></b></a>", True)
455455
self.fail()
456456
except RuntimeError as e:
457457
self.assertEqual(e.args[0], 'a',
@@ -499,7 +499,7 @@ def test(self):
499499
('e', 15, 3, 6), ('e', 17, 4, 1), ('e', 22, 5, 0)]
500500

501501
xml = b'<a>\n <b>\n <c/>\n </b>\n</a>'
502-
self.parser.Parse(xml, 1)
502+
self.parser.Parse(xml, True)
503503

504504

505505
class sf1296433Test(unittest.TestCase):
@@ -579,7 +579,7 @@ def test_disabling_buffer(self):
579579

580580
# Parse one chunk of XML
581581
self.n = 0
582-
parser.Parse(xml1, 0)
582+
parser.Parse(xml1, False)
583583
self.assertEqual(parser.buffer_size, 1024)
584584
self.assertEqual(self.n, 1)
585585

@@ -588,13 +588,13 @@ def test_disabling_buffer(self):
588588
self.assertFalse(parser.buffer_text)
589589
self.assertEqual(parser.buffer_size, 1024)
590590
for i in range(10):
591-
parser.Parse(xml2, 0)
591+
parser.Parse(xml2, False)
592592
self.assertEqual(self.n, 11)
593593

594594
parser.buffer_text = 1
595595
self.assertTrue(parser.buffer_text)
596596
self.assertEqual(parser.buffer_size, 1024)
597-
parser.Parse(xml3, 1)
597+
parser.Parse(xml3, True)
598598
self.assertEqual(self.n, 12)
599599

600600
def counting_handler(self, text):
@@ -621,10 +621,10 @@ def test_change_size_1(self):
621621
self.assertEqual(parser.buffer_size, 1024)
622622

623623
self.n = 0
624-
parser.Parse(xml1, 0)
624+
parser.Parse(xml1, False)
625625
parser.buffer_size *= 2
626626
self.assertEqual(parser.buffer_size, 2048)
627-
parser.Parse(xml2, 1)
627+
parser.Parse(xml2, True)
628628
self.assertEqual(self.n, 2)
629629

630630
def test_change_size_2(self):
@@ -637,10 +637,10 @@ def test_change_size_2(self):
637637
self.assertEqual(parser.buffer_size, 2048)
638638

639639
self.n=0
640-
parser.Parse(xml1, 0)
640+
parser.Parse(xml1, False)
641641
parser.buffer_size = parser.buffer_size // 2
642642
self.assertEqual(parser.buffer_size, 1024)
643-
parser.Parse(xml2, 1)
643+
parser.Parse(xml2, True)
644644
self.assertEqual(self.n, 4)
645645

646646
class MalformedInputTest(unittest.TestCase):

Lib/xml/dom/expatbuilder.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,11 +204,11 @@ def parseFile(self, file):
204204
buffer = file.read(16*1024)
205205
if not buffer:
206206
break
207-
parser.Parse(buffer, 0)
207+
parser.Parse(buffer, False)
208208
if first_buffer and self.document.documentElement:
209209
self._setup_subset(buffer)
210210
first_buffer = False
211-
parser.Parse("", True)
211+
parser.Parse(b"", True)
212212
except ParseEscape:
213213
pass
214214
doc = self.document
@@ -637,7 +637,7 @@ def parseString(self, string):
637637
nsattrs = self._getNSattrs() # get ns decls from node's ancestors
638638
document = _FRAGMENT_BUILDER_TEMPLATE % (ident, subset, nsattrs)
639639
try:
640-
parser.Parse(document, 1)
640+
parser.Parse(document, True)
641641
except:
642642
self.reset()
643643
raise
@@ -697,7 +697,7 @@ def external_entity_ref_handler(self, context, base, systemId, publicId):
697697
self.fragment = self.document.createDocumentFragment()
698698
self.curNode = self.fragment
699699
try:
700-
parser.Parse(self._source, 1)
700+
parser.Parse(self._source, True)
701701
finally:
702702
self.curNode = old_cur_node
703703
self.document = old_document

Lib/xml/etree/ElementTree.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1710,14 +1710,14 @@ def _default(self, text):
17101710
def feed(self, data):
17111711
"""Feed encoded data to parser."""
17121712
try:
1713-
self.parser.Parse(data, 0)
1713+
self.parser.Parse(data, False)
17141714
except self._error as v:
17151715
self._raiseerror(v)
17161716

17171717
def close(self):
17181718
"""Finish feeding data to parser and return element structure."""
17191719
try:
1720-
self.parser.Parse("", 1) # end of data
1720+
self.parser.Parse(b"", True) # end of data
17211721
except self._error as v:
17221722
self._raiseerror(v)
17231723
try:

Lib/xml/sax/expatreader.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def __init__(self, namespaceHandling=0, bufsize=2**16-20):
9393
self._parser = None
9494
self._namespaces = namespaceHandling
9595
self._lex_handler_prop = None
96-
self._parsing = 0
96+
self._parsing = False
9797
self._entity_stack = []
9898
self._external_ges = 0
9999
self._interning = None
@@ -203,10 +203,10 @@ def setProperty(self, name, value):
203203

204204
# IncrementalParser methods
205205

206-
def feed(self, data, isFinal = 0):
206+
def feed(self, data, isFinal=False):
207207
if not self._parsing:
208208
self.reset()
209-
self._parsing = 1
209+
self._parsing = True
210210
self._cont_handler.startDocument()
211211

212212
try:
@@ -237,13 +237,13 @@ def close(self):
237237
# If we are completing an external entity, do nothing here
238238
return
239239
try:
240-
self.feed("", isFinal = 1)
240+
self.feed(b"", isFinal=True)
241241
self._cont_handler.endDocument()
242-
self._parsing = 0
242+
self._parsing = False
243243
# break cycle created by expat handlers pointing to our methods
244244
self._parser = None
245245
finally:
246-
self._parsing = 0
246+
self._parsing = False
247247
if self._parser is not None:
248248
# Keep ErrorColumnNumber and ErrorLineNumber after closing.
249249
parser = _ClosedParser()
@@ -307,7 +307,7 @@ def reset(self):
307307
self._parser.SetParamEntityParsing(
308308
expat.XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE)
309309

310-
self._parsing = 0
310+
self._parsing = False
311311
self._entity_stack = []
312312

313313
# Locator methods

Lib/xmlrpc/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ def __init__(self, target):
442442
target.xml(encoding, None)
443443

444444
def feed(self, data):
445-
self._parser.Parse(data, 0)
445+
self._parser.Parse(data, False)
446446

447447
def close(self):
448448
try:

0 commit comments

Comments
 (0)