def __init__(self, ix, poolclass=None, timeout=0.0, delay=0.1, _lk=True, limitmb=128, docbase=0, codec=None, **kwargs): # Lock the index self.writelock = None if _lk: self.writelock = ix.lock("WRITELOCK") if not try_for(self.writelock.acquire, timeout=timeout, delay=delay): raise LockError # Get info from the index self.storage = ix.storage self.indexname = ix.indexname info = ix._read_toc() self.generation = info.generation + 1 self.schema = info.schema self.segments = info.segments self.docnum = self.docbase = docbase self._setup_doc_offsets() # Internals poolprefix = "whoosh_%s_" % self.indexname self.pool = PostingPool(limitmb=limitmb, prefix=poolprefix) self.newsegment = Segment(self.indexname, 0) self.is_closed = False self._added = False # Set up writers if codec is None: from whoosh.codec.standard import StdCodec codec = StdCodec(self.storage) self.codec = codec self.perdocwriter = codec.per_document_writer(self.newsegment) self.fieldwriter = codec.field_writer(self.newsegment)