          loss = self.model.predictors[self.side].train_on_batch(*batch)
          loss = loss if isinstance(loss, list) else [loss]
          return loss
  
      def get_next(self, is_preview_iteration):
          """ Return the next batch from the generator
              Items should come out as: (warped, target [, mask]) """
          batch = next(self.feed)
          self.samples = batch[0] if is_preview_iteration else None
          batch = batch[1:]   # Remove full size samples from batch
 
</s> remove         self.samples = batch[0] if is_preview_iteration else None
 </s> add         self.samples = batch[0] if do_preview else None </s> remove         self.target = batch[1] if is_preview_iteration else None
 </s> add         self.target = batch[1] if do_preview else None </s> remove         batch = self.get_next(is_preview_iteration)
 </s> add         batch = self.get_next(do_preview) </s> remove     def train_one_batch(self, is_preview_iteration):
 </s> add     def train_one_batch(self, do_preview): </s> remove         is_preview_iteration = False if viewer is None else True
 </s> add         do_preview = False if viewer is None else True
        do_timelapse = False if timelapse_kwargs is None else True
    def get_next(self, do_preview):
          loss = self.model.predictors[self.side].train_on_batch(*batch)
          loss = loss if isinstance(loss, list) else [loss]
          return loss
  
    def get_next(self, do_preview):
          """ Return the next batch from the generator
              Items should come out as: (warped, target [, mask]) """
          batch = next(self.feed)
          self.samples = batch[0] if is_preview_iteration else None
          batch = batch[1:]   # Remove full size samples from batch
keep keep keep keep replace keep keep keep keep keep
 Minor FixedProducerDispatcher changes. Fix timelapse bug 
plugins/train/trainer/_base.py