def odsReader(readable, sheetIndex=1): """ Generator yielding the Open Document spreadsheet stored in ``readable`` in sheet number ``sheetIndex`` starting with 1. """ assert readable is not None assert sheetIndex is not None assert sheetIndex >= 1 rowQueue = _createRowQueue() contentXmlReadable = _ods.odsContent(readable) try: producer = _ods.ProducerThread(contentXmlReadable, rowQueue, sheetIndex) producer.start() try: hasRow = True while hasRow: row = rowQueue.get() if row is not None: yield row else: hasRow = False finally: producer.join() finally: contentXmlReadable.close()
def testConsumerProducer(self): testInPath = dev_test.getTestInputPath("valid_customers.ods") contentXmlReadable = _ods.odsContent(testInPath) rowQueue = Queue.Queue() producer = _ods.ProducerThread(contentXmlReadable, rowQueue) producer.start() hasRow = True while hasRow: row = rowQueue.get() if row is None: hasRow = False producer.join()