class_docstr: Creates a simple vectorized wrapper for multiple environments, calling each environment in sequence on the current
  Python process. This is useful for computationally simple environment such as ``cartpole-v1``, as the overhead of
  multiprocess or multithread outweighs the environment computation time. This can also be used for RL methods that
  require a vectorized environment, but that you want a single environments to train with.
  
  :param env_fns: ([callable]) A list of functions that will create the environments
      (each callable returns a `Gym.Env` instance when called).
class_docstr_tok: ["Creates","a","simple","vectorized","wrapper","for","multiple","environments",",","calling","each","environment","in","sequence","on","the","current","Python","process",".","This","is","useful","for","computationally","simple","environment","such","as","``","cartpole-v1","``",",","as","the","overhead","of","multiprocess","or","multithread","outweighs","the","environment","computation","time",".","This","can","also","be","used","for","RL","methods","that","require","a","vectorized","environment",",","but","that","you","want","a","single","environments","to","train","with",".",":","param","env_fns",":","(","[","callable","]",")","A","list","of","functions","that","will","create","the","environments","(","each","callable","returns","a","`","Gym.Env","`","instance","when","called",")","."]
docstr: Gym environment rendering. If there are multiple environments then
  they are tiled together in one image via `BaseVecEnv.render()`.
  Otherwise (if `self.num_envs == 1`), we pass the render call directly to the
  underlying environment.
  
  Therefore, some arguments such as `mode` will have values that are valid
  only when `num_envs == 1`.
  
  :param mode: The rendering type.
docstr_tok: ["Gym","environment","rendering",".","If","there","are","multiple","environments","then","they","are","tiled","together","in","one","image","via","`","BaseVecEnv.render","(",")","`",".","Otherwise","(","if","`","self.num_envs","==","1","`",")",",","we","pass","the","render","call","directly","to","the","underlying","environment",".","Therefore",",","some","arguments","such","as","`","mode","`","will","have","values","that","are","valid","only","when","`","num_envs","==","1","`",".",":","param","mode",":","The","rendering","type","."]
code: def render(self, mode: str = "human"):
      """
      Gym environment rendering. If there are multiple environments then
      they are tiled together in one image via `BaseVecEnv.render()`.
      Otherwise (if `self.num_envs == 1`), we pass the render call directly to the
      underlying environment.
  
      Therefore, some arguments such as `mode` will have values that are valid
      only when `num_envs == 1`.
  
      :param mode: The rendering type.
      """
      if self.num_envs == 1:
          return self.envs[0].render(mode=mode)
      else:
          return super().render(mode=mode)
  
imports: from collections import OrderedDict
  from typing import Sequence
  from copy import deepcopy
  import numpy
  from stable_baselines.common.vec_env.base_vec_env import VecEnv
  from stable_baselines.common.vec_env.util import copy_obs_dict, dict_to_obs, obs_space_info
label_desc: Use image node_id 8 for calling the DummyVecEnv obj's underlying member method code with example usage: obj.render(mode) and returns: self, super