MCPcopy Index your code
hub / github.com/python/cpython / DOMEventStream

Class DOMEventStream

Lib/xml/dom/pulldom.py:204–281  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

202 raise exception
203
204class DOMEventStream:
205 def __init__(self, stream, parser, bufsize):
206 self.stream = stream
207 self.parser = parser
208 self.bufsize = bufsize
209 if not hasattr(self.parser, 'feed'):
210 self.getEvent = self._slurp
211 self.reset()
212
213 def reset(self):
214 self.pulldom = PullDOM()
215 # This content handler relies on namespace support
216 self.parser.setFeature(xml.sax.handler.feature_namespaces, 1)
217 self.parser.setContentHandler(self.pulldom)
218
219 def __next__(self):
220 rc = self.getEvent()
221 if rc:
222 return rc
223 raise StopIteration
224
225 def __iter__(self):
226 return self
227
228 def expandNode(self, node):
229 event = self.getEvent()
230 parents = [node]
231 while event:
232 token, cur_node = event
233 if cur_node is node:
234 return
235 if token != END_ELEMENT:
236 parents[-1].appendChild(cur_node)
237 if token == START_ELEMENT:
238 parents.append(cur_node)
239 elif token == END_ELEMENT:
240 del parents[-1]
241 event = self.getEvent()
242
243 def getEvent(self):
244 # use IncrementalParser interface, so we get the desired
245 # pull effect
246 if not self.pulldom.firstEvent[1]:
247 self.pulldom.lastEvent = self.pulldom.firstEvent
248 while not self.pulldom.firstEvent[1]:
249 buf = self.stream.read(self.bufsize)
250 if not buf:
251 self.parser.close()
252 return None
253 self.parser.feed(buf)
254 rc = self.pulldom.firstEvent[1][0]
255 self.pulldom.firstEvent[1] = self.pulldom.firstEvent[1][1]
256 return rc
257
258 def _slurp(self):
259 """ Fallback replacement for getEvent() using the
260 standard SAX2 interface, which means we slurp the
261 SAX events into memory (no performance gain, but

Callers 2

parseFunction · 0.85
parseStringFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…