%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ Testing helpers related to the module system. """ from __future__ import division, absolute_import __all__ = ['NoReactor', 'AlternateReactor'] import sys import twisted.internet from twisted.test.test_twisted import SetAsideModule class NoReactor(SetAsideModule): """ Context manager that uninstalls the reactor, if any, and then restores it afterwards. """ def __init__(self): SetAsideModule.__init__(self, "twisted.internet.reactor") def __enter__(self): SetAsideModule.__enter__(self) if "twisted.internet.reactor" in self.modules: del twisted.internet.reactor def __exit__(self, excType, excValue, traceback): SetAsideModule.__exit__(self, excType, excValue, traceback) # Clean up 'reactor' attribute that may have been set on # twisted.internet: reactor = self.modules.get("twisted.internet.reactor", None) if reactor is not None: twisted.internet.reactor = reactor else: try: del twisted.internet.reactor except AttributeError: pass class AlternateReactor(NoReactor): """ A context manager which temporarily installs a different object as the global reactor. """ def __init__(self, reactor): """ @param reactor: Any object to install as the global reactor. """ NoReactor.__init__(self) self.alternate = reactor def __enter__(self): NoReactor.__enter__(self) twisted.internet.reactor = self.alternate sys.modules['twisted.internet.reactor'] = self.alternate