code: def _reset_non_empty(self, indices):
      
      reset_video_op = tf.cond(
          self._video_condition,
          lambda: tf.py_func(self._video_reset_writer, [], []),
          tf.no_op)
      with tf.control_dependencies([reset_video_op]):
        inc_op = tf.assign_add(self._episode_counter, 1)
        with tf.control_dependencies([self.history_buffer.reset(indices),
                                      inc_op]):
          initial_frame_dump_op = tf.cond(
              self._video_condition,
              lambda: tf.py_func(self._video_dump_frames,  # pylint: disable=g-long-lambda
                                 [self.history_buffer.get_all_elements()], []),
              tf.no_op)
          observ_assign_op = self._observ.assign(
              self.history_buffer.get_all_elements()[:, -1, ...])
          with tf.control_dependencies([observ_assign_op, initial_frame_dump_op]):
            reset_model_op = tf.assign(self._reset_model, tf.constant(1.0))
            with tf.control_dependencies([reset_model_op]):
              return tf.gather(self._observ.read_value(), indices)
docs: Reset the batch of environments.
  
      Args:
        indices: The batch indices of the environments to reset; defaults to all.
  
      Returns:
        Batch tensor of the new observations.