class_docstr: Vectorized environment base class
  
  :param venv: (VecEnv) the vectorized environment to wrap
  :param observation_space: (Gym Space) the observation space (can be None to load from venv)
  :param action_space: (Gym Space) the action space (can be None to load from venv)
code: def __init__(self, venv, observation_space=None, action_space=None):
      self.venv = venv
      VecEnv.__init__(
          self,
          num_envs=venv.num_envs,
          observation_space=observation_space or venv.observation_space,
          action_space=action_space or venv.action_space,
      )
      self.class_attributes = dict(inspect.getmembers(self.__class__))
  
imports: from abc import ABC, abstractmethod
  import inspect
  import pickle
  from typing import Sequence, Optional, List, Union
  import cloudpickle
  import numpy
  from stable_baselines import logger
  from stable_baselines.common.tile_images import tile_images
label_desc: Use image node_id 1 to create a new VecEnvWrapper object from inherited base classes: VecEnv with example: obj = VecEnvWrapper(venv, observation_space, action_space)