code: def reset(self, indices=None):
      
      if self._store_rollouts and self.current_epoch is None:
        raise ValueError(
            "No current epoch. start_new_epoch() should first be called."
        )
  
      if indices is None:
        indices = np.arange(self.batch_size)
      new_obs = self._reset(indices)
      if self._should_preprocess_on_reset:
        new_obs = self._preprocess_observations(new_obs)
      if self._store_rollouts:
        encoded_obs = self._encode_observations(new_obs)
        for (index, ob) in zip(indices, encoded_obs):
          frame = self._current_batch_frames[index]
          if frame is not None:
            rollout = self._current_batch_rollouts[index]
            rollout.append(frame._replace(action=0))
            self._current_epoch_rollouts.append(rollout)
            self._current_batch_rollouts[index] = []
          self._current_batch_frames[index] = Frame(
              observation=ob, reward=0, unclipped_reward=0, done=False,
              action=None
          )
      return new_obs
docs: Resets environments at given indices.
  
      Does any preprocessing and adds rollouts to history.
  
      Args:
        indices: Indices of environments to reset.
  
      Returns:
        Batch of initial observations of reset environments.
  
      Raises:
        ValueError: when there's no current epoch.