def newCpbDel(self): if hasattr(self, "_deleted"): # Don't allow this to be called more than once. log.debugWarning("COM pointer %r already deleted" % self) return garbageHandler.notifyObjectDeletion(self) _cpbDel(self) self._deleted = True
def newCpbDel(self): # __del__ may be called while Python is exiting. # In this state, global symbols may be set to None # Therefore avoid calling into garbageHandler or log, # unless isFinalizing is checked first to ensure they are still available # Using local variables or calling other methods on this class is still okay. isFinalizingFunc = getattr(sys, 'is_finalizing', lambda: True) isFinalizing = isFinalizingFunc() if hasattr(self, "_deleted"): # Don't allow this to be called more than once. if not isFinalizing: log.debugWarning("COM pointer %r already deleted" % self) return if not isFinalizing: garbageHandler.notifyObjectDeletion(self) self._oldCpbDel() self._deleted = True