def __call__(self, depth=0, max_count=None, gui=False): depth += 1 if max_count: frame = sys._getframe(depth) key = id(frame.f_code), frame.f_lineno del frame self._count_dict[key] = count = 1 + self._count_dict.get(key, 0) if max_count < count: return if gui: import rpdb2 if rpdb2.g_debugger is None: rpdb2_CStateManager = rpdb2.CStateManager def CStateManager(*args, **kw): rpdb2.CStateManager = rpdb2_CStateManager state_manager = rpdb2.CStateManager(*args, **kw) self._rpdb2_set_state = state_manager.set_state return state_manager rpdb2.CStateManager = CStateManager return debug.winpdb(depth) try: debugger = self.__dict__['_debugger'] except KeyError: assert 'rpdb2' not in sys.modules self._debugger = debugger = debug.getPdb() self._bdb_interaction = debugger.interaction return debugger.set_trace(sys._getframe(depth))
def __call__(self, max_count=None, depth=0, text=None): depth += 1 if max_count: frame = sys._getframe(depth) key = id(frame.f_code), frame.f_lineno del frame self._count_dict[key] = count = 1 + self._count_dict.get(key, 0) if max_count < count: return if not text: try: import rpdb2 except ImportError: if text is not None: raise else: if rpdb2.g_debugger is None: rpdb2_CStateManager = rpdb2.CStateManager def CStateManager(*args, **kw): rpdb2.CStateManager = rpdb2_CStateManager state_manager = rpdb2.CStateManager(*args, **kw) self._rpdb2_set_state = state_manager.set_state return state_manager rpdb2.CStateManager = CStateManager return debug.winpdb(depth) try: debugger = self.__dict__["_debugger"] except KeyError: assert "rpdb2" not in sys.modules self._debugger = debugger = debug.getPdb() self._bdb_interaction = debugger.interaction return debugger.set_trace(sys._getframe(depth))
def apply(self): assert not self.applied setattr(self._patched, self._name, self._patch) self.applied = True def revert(self): del self.applied self._revert() def __del__(self): if self.applied: self.revert() def __enter__(self): self.apply() return weakref.proxy(self) def __exit__(self, t, v, tb): self.__del__() def unpickle_state(data): unpickler = Unpickler(StringIO(data)) unpickler.persistent_load = PersistentReferenceFactory().persistent_load unpickler.load() # skip the class tuple return unpickler.load() __builtin__.pdb = lambda depth=0: \ debug.getPdb().set_trace(sys._getframe(depth+1))
self._patch = patch try: orig = patched.__dict__[name] self._revert = lambda: setattr(patched, name, orig) except KeyError: self._revert = lambda: delattr(patched, name) def apply(self): assert not self.applied setattr(self._patched, self._name, self._patch) self.applied = True def revert(self): del self.applied self._revert() def __del__(self): if self.applied: self.revert() def __enter__(self): self.apply() return weakref.proxy(self) def __exit__(self, t, v, tb): self.__del__() __builtin__.pdb = lambda depth=0: \ debug.getPdb().set_trace(sys._getframe(depth+1))