code: def test_observation_normalization_manual_default_stats():
      """observation normalization test"""
  
      # init environment
      env = GymMazeEnv("CartPole-v0")
  
      # normalization config
      normalization_config = {
          "default_strategy": "maze.normalization_strategies.MeanZeroStdOneObservationNormalizationStrategy",
          "default_strategy_config": {"clip_range": (0, 1), "axis": 0},
          "default_statistics": {
              "mean": [0, 0, 0, 0],
              "std": [1, 1, 1, 1],
          },
          "statistics_dump": "statistics.pkl",
          "sampling_policy": RandomPolicy(env.action_spaces_dict),
          "exclude": None,
          "manual_config": None,
      }
  
      # wrap env with observation normalization
      env = ObservationNormalizationWrapper(
          env,
          default_strategy=normalization_config["default_strategy"],
          default_strategy_config=normalization_config[
              "default_strategy_config"
          ],
          default_statistics=normalization_config["default_statistics"],
          statistics_dump=normalization_config["statistics_dump"],
          sampling_policy=normalization_config["sampling_policy"],
          exclude=normalization_config["exclude"],
          manual_config=normalization_config["manual_config"],
      )
  
      # check if action space clipping was applied
      assert np.alltrue(
          env.observation_space["observation"].high <= 1.0
      )
      assert np.alltrue(env.observation_space["observation"].low >= 0.0)
  
      # check if stats have been set properly
      statistics = env.get_statistics()
      assert np.all(
          statistics["observation"]["mean"] == np.zeros(shape=4)
      )
      assert np.all(
          statistics["observation"]["std"] == np.ones(shape=4)
      )
  
      # test sampling
      obs = random_env_steps(env, steps=100)
      assert np.min(obs) >= 0 and np.max(obs) <= 1
  
imports: import copy
  import os
  import numpy
  import pytest
  import maze.test.core.wrappers.observation_normalization
  from maze.core.agent.random_policy import RandomPolicy
  from maze.core.env.structured_env import ActorID
  from maze.core.log_stats.log_stats import register_log_stats_writer, increment_log_step
  from maze.core.log_stats.log_stats_writer_console import LogStatsWriterConsole
  from maze.core.log_stats.log_stats_writer_tensorboard import LogStatsWriterTensorboard
  from maze.core.wrappers.log_stats_wrapper import LogStatsWrapper
  from maze.core.wrappers.maze_gym_env_wrapper import GymMazeEnv
  from maze.core.wrappers.observation_normalization.normalization_strategies.base import ObservationNormalizationStrategy
  from maze.core.wrappers.observation_normalization.observation_normalization_utils import obtain_normalization_statistics
  from maze.core.wrappers.observation_normalization.observation_normalization_wrapper import ObservationNormalizationWrapper
  from maze.test.shared_test_utils.config_testing_utils import load_env_config
label_desc: Use image node_id 4 for calling a global function with example usage: test_observation_normalization_manual_default_stats() without return types