def save(self, filename, finish=True, mode='wb'): if finish: self.finish() # If no filename, return contents to caller if filename is None: if not self.saved: safe_remove(self.temppath) self.saved = True self.tempfile.seek(0, 0) return self.tempfile.read() # 1st save just renames the tempfile exists = os.path.exists(filename) if (not self.saved and (('a' not in mode) or not exists)): try: if exists: os.remove(filename) os.rename(self.temppath, filename) self.saved = True return except (OSError, IOError): pass # 2nd save (or append to existing) creates a copy with open(filename, mode) as out: self.save_copy(out) if not self.saved: safe_remove(self.temppath) self.saved = True
def __init__(self, dir=None, name=None, long_running=False, use_filter=FILTER_MD5): self.tempfile, self.temppath = self._mk_tempfile_and_path(dir) self.name = name self.outer_md5sum = None if use_filter: self.outer_md5 = hashlib.md5() self.md5filter = IOFilter(self.tempfile, self._md5_callback, name='%s/md5' % (self.name or 'css')) self.fd = self.md5filter.writer() else: self.outer_md5 = None self.fd = self.tempfile self.saved = False self.finished = False try: self._write_preamble() OutputCoprocess.__init__(self, self._mk_command(), self.fd, name=self.name, long_running=long_running) except: try: self.fd.close() if self.outer_md5 is not None: self.md5filter.close() self.tempfile.close() safe_remove(self.temppath) except (IOError, OSError): pass raise
def __init__(self, dir=None, name=None, long_running=False, use_filter=FILTER_MD5): self.tempfile, self.temppath = self._mk_tempfile_and_path(dir) self.name = name self.outer_sha256 = None if use_filter: self.outer_sha = hashlib.sha256() self.shafilter = IOFilter(self.tempfile, self._sha256_callback, name='%s/sha256' % (self.name or 'css'), blocksize=self.FILTER_BLOCKSIZE) self.fd = self.shafilter.writer() else: self.outer_sha = None self.fd = self.tempfile self.saved = False self.finished = False try: self._write_preamble() OutputCoprocess.__init__(self, self._mk_command(), self.fd, name=self.name, long_running=long_running) except: try: self.fd.close() if self.outer_sha is not None: self.shafilter.close() self.tempfile.close() safe_remove(self.temppath) except (IOError, OSError): pass raise
def purge_old_logfiles(self, keep=None): keep = keep or self.KEEP_LOGS for lf in self._list_logfiles()[:-keep]: try: safe_remove(os.path.join(self.logdir, lf)) except OSError: pass
def __init__(self, dir=None, name=None, long_running=False, use_filter=FILTER_MD5): self.tempfile, self.temppath = self._mk_tempfile_and_path(dir) self.name = name self.outer_md5sum = None if use_filter: self.outer_md5 = hashlib.md5() self.md5filter = IOFilter(self.tempfile, self._md5_callback, name="%s/md5" % (self.name or "css")) self.fd = self.md5filter.writer() else: self.outer_md5 = None self.fd = self.tempfile self.saved = False self.finished = False try: self._write_preamble() OutputCoprocess.__init__(self, self._mk_command(), self.fd, name=self.name, long_running=long_running) except: try: self.fd.close() if self.outer_md5 is not None: self.md5filter.close() self.tempfile.close() safe_remove(self.temppath) except (IOError, OSError): pass raise
def _refresh(self): with self._lock: mailbox.Maildir._refresh(self) # WERVD mail names don't have dots in them for t in [k for k in self._toc.keys() if '.' in k]: del self._toc[t] safe_remove() # Try to remove any postponed removals
def save(self, filename, finish=True, mode="wb"): if finish: self.finish() exists = os.path.exists(filename) # 1st save just renames the tempfile if not self.saved and (("a" not in mode) or not exists): try: if exists: os.remove(filename) os.rename(self.temppath, filename) self.saved = True return except (OSError, IOError): pass # 2nd save (or append to existing) creates a copy with open(filename, mode) as out: self.save_copy(out) if not self.saved: safe_remove(self.temppath) self.saved = True
def remove(self, key): # FIXME: Remove all the copies of this message! fn = self._lookup(key) del self._toc[key] safe_remove(fn)
def remove(self, key): # FIXME: Remove all the copies of this message! with self._lock: fn = os.path.join(self._path, self._lookup(key)) del self._toc[key] safe_remove(fn)
def remove(self, key): with self._lock: fn = os.path.join(self._path, self._lookup(key)) del self._toc[key] safe_remove(fn)