def create_file(self, name): def onclose_fn(sfile): sfile.file.close() f = StructFile(DatastoreFile(key_name="%s%s" % (self.name, name)), name=name, onclose=onclose_fn) return f
def __init__(self, table_file, blocksize=16 * 1024, compressed=0, prefixcoding=False, postings=False, stringids=False, checksize=True): self.table_file = table_file self.blocksize = blocksize if compressed > 0 and not has_zlib: raise Exception("zlib is not available: cannot compress table") self.compressed = compressed self.prefixcoding = prefixcoding self.haspostings = postings if postings: self.offset = 0 self.postcount = 0 self.lastpostid = None self.stringids = stringids self.posting_file = StructFile(tempfile.TemporaryFile()) self.rowbuffer = [] self.lastkey = None self.blockfilled = 0 self.dir = [] # Remember where we started writing self.start = table_file.tell() # Save space for a pointer to the directory table_file.write_ulong(0) # Save space for a pointer to the postings table_file.write_ulong(0) self.options = { "haspostings": postings, "compressed": compressed, "prefixcoding": prefixcoding, "stringids": stringids }
def open_file(self, name): if name not in self.files: raise NameError return StructFile(StringIO(self.files[name]))
def create_file(self, name): def onclose_fn(sfile): self.files[name] = sfile.file.getvalue() f = StructFile(StringIO(), name=name, onclose=onclose_fn) return f
def open_file(self, name, compressed=False): f = StructFile(open(self._fpath(name), "rb")) f._name = name return f
def create_file(self, name): f = StructFile(open(self._fpath(name), "wb")) f._name = name return f
def open_file(self, name): return StructFile(DatastoreFile.loadfile("%s%s" % (self.name, name)))