class_docstr: Vectorized Environment Wrapper for MB-MPO.
  
  Primary change is in the `vector_step` method, which calls the dynamics
  models for next_obs "calculation" (instead of the actual env). Also, the
  actual envs need to have two extra methods implemented: `reward(obs)` and
  (optionally) `done(obs)`. If `done` is not implemented, we will assume
  that episodes in the env do not terminate, ever.
class_docstr_tok: ["Vectorized","Environment","Wrapper","for","MB-MPO",".","Primary","change","is","in","the","`","vector_step","`","method",",","which","calls","the","dynamics","models","for","next_obs","``","calculation","''","(","instead","of","the","actual","env",")",".","Also",",","the","actual","envs","need","to","have","two","extra","methods","implemented",":","`","reward","(","obs",")","`","and","(","optionally",")","`","done","(","obs",")","`",".","If","`","done","`","is","not","implemented",",","we","will","assume","that","episodes","in","the","env","do","not","terminate",",","ever","."]
code: def get_sub_environments(self):
      return self.envs
  
file_path: ray/python/ray/rllib/env/wrappers/model_vector_env.py
imports: import logging
  from gymnasium.spaces import Discrete
  import numpy
  from ray.rllib.utils.annotations import override
  from ray.rllib.env.vector_env import VectorEnv
  from ray.rllib.evaluation.rollout_worker import get_global_worker
  from ray.rllib.env.base_env import BaseEnv, convert_to_base_env
  from ray.rllib.utils.typing import EnvType
label_desc: Use image node_id 5 for calling the _VectorizedModelGymEnv obj's underlying member method code with example usage: obj.get_sub_environments() and returns: self