Skip to content

Commit e3ec869

Browse files
Expose GetCurrentByteCount from expat
1 parent 2938c3d commit e3ec869

File tree

5 files changed

+18
-2
lines changed

5 files changed

+18
-2
lines changed

Doc/library/pyexpat.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,15 @@ just past the last parse event (regardless of whether there was an associated
316316
callback).
317317

318318

319+
.. attribute:: xmlparser.CurrentByteCount
320+
321+
Number of bytes in the current event. ``0`` if the event is for the end tag
322+
event for *empty-element* tags or is inside a reference to an internal
323+
entity.
324+
325+
.. versionadded:: 3.14
326+
327+
319328
.. attribute:: xmlparser.CurrentByteIndex
320329

321330
Current byte index in the parser input.

Lib/test/test_pyexpat.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,7 @@ def EndElementHandler(self, name):
506506
def check_pos(self, event):
507507
pos = (event,
508508
self.parser.CurrentByteIndex,
509+
self.parser.CurrentByteCount,
509510
self.parser.CurrentLineNumber,
510511
self.parser.CurrentColumnNumber)
511512
self.assertTrue(self.upto < len(self.expected_list),
@@ -520,8 +521,8 @@ def test(self):
520521
self.parser.StartElementHandler = self.StartElementHandler
521522
self.parser.EndElementHandler = self.EndElementHandler
522523
self.upto = 0
523-
self.expected_list = [('s', 0, 1, 0), ('s', 5, 2, 1), ('s', 11, 3, 2),
524-
('e', 15, 3, 6), ('e', 17, 4, 1), ('e', 22, 5, 0)]
524+
self.expected_list = [('s', 0, 3, 1, 0), ('s', 5, 3, 2, 1), ('s', 11, 4, 3, 2),
525+
('e', 15, 0, 3, 6), ('e', 17, 4, 4, 1), ('e', 22, 4, 5, 0)]
525526

526527
xml = b'<a>\n <b>\n <c/>\n </b>\n</a>'
527528
self.parser.Parse(xml, True)

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -882,6 +882,7 @@ Muhammad Jehanzeb
882882
Drew Jenkins
883883
Flemming Kjær Jensen
884884
Philip H. Jensen
885+
Jesper Jensen
885886
Philip Jenvey
886887
MunSic Jeong
887888
Chris Jerdonek
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Expose the :attr:`xmlparser.CurrentByteCount` field for :mod:`Expat XML
2+
<xml.parsers.expat>` parsers.
3+
Patch by Jesper Jensen.

Modules/pyexpat.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1349,6 +1349,7 @@ INT_GETTER(ErrorByteIndex)
13491349
INT_GETTER(CurrentLineNumber)
13501350
INT_GETTER(CurrentColumnNumber)
13511351
INT_GETTER(CurrentByteIndex)
1352+
INT_GETTER(CurrentByteCount)
13521353

13531354
#undef INT_GETTER
13541355

@@ -1529,6 +1530,7 @@ static PyGetSetDef xmlparse_getsetlist[] = {
15291530
XMLPARSE_GETTER_DEF(CurrentLineNumber)
15301531
XMLPARSE_GETTER_DEF(CurrentColumnNumber)
15311532
XMLPARSE_GETTER_DEF(CurrentByteIndex)
1533+
XMLPARSE_GETTER_DEF(CurrentByteCount)
15321534
XMLPARSE_GETTER_SETTER_DEF(buffer_size)
15331535
XMLPARSE_GETTER_SETTER_DEF(buffer_text)
15341536
XMLPARSE_GETTER_DEF(buffer_used)

0 commit comments

Comments
 (0)