def prepare()

in Oracle.py [0:0]


    def prepare(self, **kwargs):
        """
        Iterate through the data and populate the pre-prepared answers
        """
        if self._prepared:
            return 
        
        if self.read_cache:
            self._prepared = self.prepareFromCached()
            if self._prepared:
                print("read from cache")
                return
            
        
        self.workload.prepare()
        
        print(f"reset oracle answers")
        self.answers = []
        query_iter = self.workload.genQueries()
        q = next(query_iter)
        for i, x in enumerate(self.workload.genData()):
            self.add(x)
            while q and i == q.data_idx:
                answer = self.query(q.data_idx, q.query, q.parameters)
                self.answers.append(copy.deepcopy(answer))
                assert(len(self.answers) == q.qid+1)
                q = next(query_iter, None)
                
        self.printAnswers()
        
        self.writeToCache() # note: I should not write to cache if not using parallel processes
        self._prepared = True