class_docstr: vector of envs to support vector reset and vector step.
  `vector_step` api will automatically reset envs which are done.
docstr: Args:
      actions: List or array of action
  
  Returns:
      obs_batch: List of next obs of envs
      reward_batch: List of return reward of envs 
      done_batch: List of done of envs 
      info_batch: List of info of envs 
docstr_tok: ["Args",":","actions",":","List","or","array","of","action","Returns",":","obs_batch",":","List","of","next","obs","of","envs","reward_batch",":","List","of","return","reward","of","envs","done_batch",":","List","of","done","of","envs","info_batch",":","List","of","info","of","envs"]
code: def step(self, actions):
      """
      Args:
          actions: List or array of action
  
      Returns:
          obs_batch: List of next obs of envs
          reward_batch: List of return reward of envs
          done_batch: List of done of envs
          info_batch: List of info of envs
      """
      obs_batch, reward_batch, done_batch, info_batch = [], [], [], []
      for env_id in six.moves.range(self.envs_num):
          obs, reward, done, info = self.envs[env_id].step(
              actions[env_id]
          )
  
          if done:
              obs = self.envs[env_id].reset()
  
          obs_batch.append(obs)
          reward_batch.append(reward)
          done_batch.append(done)
          info_batch.append(info)
      return obs_batch, reward_batch, done_batch, info_batch
  
imports: import six
  from collections import defaultdict
label_desc: Use image node_id 3 for calling the VectorEnv obj's underlying member method code with example usage: obj.step(actions) and returns: obs_batch,  reward_batch,  done_batch,  info_batch