          logger.debug("input_size: %s, output_size: %s", input_size, output_size)
          generator = TrainingDataGenerator(input_size, output_size, self.model.training_opts)
          return generator
  
      def train_one_batch(self, is_preview_iteration):
          """ Train a batch """
          logger.trace("Training one step: (side: %s)", self.side)
          batch = self.get_next(is_preview_iteration)
          loss = self.model.predictors[self.side].train_on_batch(*batch)
          loss = loss if isinstance(loss, list) else [loss]
 
</s> remove         batch = self.get_next(is_preview_iteration)
 </s> add         batch = self.get_next(do_preview) </s> remove     def get_next(self, is_preview_iteration):
 </s> add     def get_next(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 </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
    def train_one_batch(self, do_preview):
          logger.debug("input_size: %s, output_size: %s", input_size, output_size)
          generator = TrainingDataGenerator(input_size, output_size, self.model.training_opts)
          return generator
  
    def train_one_batch(self, do_preview):
          """ Train a batch """
          logger.trace("Training one step: (side: %s)", self.side)
          batch = self.get_next(is_preview_iteration)
          loss = self.model.predictors[self.side].train_on_batch(*batch)
          loss = loss if isinstance(loss, list) else [loss]
keep keep keep keep replace keep keep keep keep keep
 Minor FixedProducerDispatcher changes. Fix timelapse bug 
plugins/train/trainer/_base.py