code: def conduct_observation_statistics_validation_test(
      env: ObservationNormalizationWrapper,
      validation_callback: Callable,
      n_steps: int = 100,
  ):
      """
      Runs environment for n steps and validates collected observation statistics afterwards.
      Asserts that validation_callback returns True.
      :param env: Environment to run.
      :param validation_callback: Callable to check observation statistics. Callable is applied on every leaf in the
      observation space tree.
      :param n_steps: Number of steps to run.
      """
  
      act_conv_space: gym.spaces.space = env.action_conversion.space()
      stats: dict = env.fetch_statistics()
  
      for step in range(n_steps):
          append_observation_to_statistics(
              env.step(act_conv_space.sample())[0], stats
          )
  
      # Perform check to ensure values are not too far outside statisticsal bounds.
      # Value range to be checked is to be discussed, delta of +- 0.1 was arbitrarily chosen.
      validate_observation_statistics(stats, validation_callback)
  
imports: from typing import Any, Callable, Iterable
  import gym
  import numpy
  from maze.core.wrappers.observation_normalization.observation_normalization_wrapper import ObservationNormalizationWrapper
label_desc: Use image node_id 3 for calling a global function with example usage: conduct_observation_statistics_validation_test(env, validation_callback, n_steps) without return types