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

Class TestLoop

Lib/test/test_asyncio/utils.py:331–493  ·  view source on GitHub ↗

Loop for unittests. It manages self time directly. If something scheduled to be executed later then on next loop iteration after all ready handlers done generator passed to __init__ is calling. Generator should be like this: def gen(): ... when

Source from the content-addressed store, hash-verified

329
330
331class TestLoop(base_events.BaseEventLoop):
332 """Loop for unittests.
333
334 It manages self time directly.
335 If something scheduled to be executed later then
336 on next loop iteration after all ready handlers done
337 generator passed to __init__ is calling.
338
339 Generator should be like this:
340
341 def gen():
342 ...
343 when = yield ...
344 ... = yield time_advance
345
346 Value returned by yield is absolute time of next scheduled handler.
347 Value passed to yield is time advance to move loop's time forward.
348 """
349
350 def __init__(self, gen=None):
351 super().__init__()
352
353 if gen is None:
354 def gen():
355 yield
356 self._check_on_close = False
357 else:
358 self._check_on_close = True
359
360 self._gen = gen()
361 next(self._gen)
362 self._time = 0
363 self._clock_resolution = 1e-9
364 self._timers = []
365 self._selector = TestSelector()
366
367 self.readers = {}
368 self.writers = {}
369 self.reset_counters()
370
371 self._transports = weakref.WeakValueDictionary()
372
373 def time(self):
374 return self._time
375
376 def advance_time(self, advance):
377 """Move test time forward."""
378 if advance:
379 self._time += advance
380
381 def close(self):
382 super().close()
383 if self._check_on_close:
384 try:
385 self._gen.send(0)
386 except StopIteration:
387 pass
388 else: # pragma: no cover

Callers 1

new_test_loopMethod · 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…