code: def next(self):
          
          if self.curr_idx == len(self.idx):
              raise StopIteration
          #i = batches index, j = starting record
          i, j = self.idx[self.curr_idx] 
          self.curr_idx += 1
  
          indices = self.ndindex[i][j:j + self.batch_size]
          sentences = self.ndsent[i][j:j + self.batch_size]
          characters = self.ndchar[i][j:j + self.batch_size]
          label = self.ndlabel[i][j:j + self.batch_size]
  
          return DataBatch([sentences, characters], [label], pad=0, index = indices, bucket_key=self.buckets[i],
                           provide_data=[DataDesc(name=self.data_names[0], shape=sentences.shape, layout=self.layout),
                                         DataDesc(name=self.data_names[1], shape=characters.shape, layout=self.layout)],
                           provide_label=[DataDesc(name=self.label_name, shape=label.shape, layout=self.layout)])
docs: Returns the next batch of data.