code: def test_cartpole_model_composer():
      env = GymMazeEnv(env="CartPole-v0")
      path_to_model_config = (
          code_snippets.__path__._path[0]
          + "/custom_plain_cartpole_net.yaml"
      )
  
      model_composer = Factory(base_type=BaseModelComposer).instantiate(
          yaml.load(open(path_to_model_config, "r")),
          action_spaces_dict=env.action_spaces_dict,
          observation_spaces_dict=env.observation_spaces_dict,
          agent_counts_dict=env.agent_counts_dict,
      )
  
file_path: maze/docs/test/policy_and_value_networks/test_plain_cartpole_models.py
imports: import torch
  import yaml
  import docs.source.policy_and_value_networks.code_snippets
  from docs.source.policy_and_value_networks.code_snippets.custom_plain_cartpole_critic_net import CustomPlainCartpoleCriticNet
  from docs.source.policy_and_value_networks.code_snippets.custom_plain_cartpole_policy_net import CustomPlainCartpolePolicyNet
  from maze.core.utils.factory import Factory
  from maze.core.utils.structured_env_utils import flat_structured_space
  from maze.core.wrappers.maze_gym_env_wrapper import GymMazeEnv
  from maze.distributions.distribution_mapper import DistributionMapper
  from maze.perception.models.model_composer import BaseModelComposer
  from maze.perception.perception_utils import observation_spaces_to_in_shapes
label_desc: Use image node_id 2 for calling a global function with example usage: test_cartpole_model_composer() without return types