class_docstr: A statistics logging wrapper for :class:`~maze.core.env.base_env.BaseEnv`.
  
  :param env: The environment to wrap.
class_docstr_tok: ["A","statistics","logging","wrapper","for",":","class",":","`","~maze.core.env.base_env.BaseEnv","`",".",":","param","env",":","The","environment","to","wrap","."]
docstr: Creation method providing appropriate type hints. Preferred method to construct the wrapper
  compared to calling the class constructor directly.
  
  :param env: The environment to be wrapped.
  :param logging_prefix: The episode statistics is connected to the logging system with this tagging
                         prefix. If None, no logging happens.
  
  :return A newly created wrapper instance.
code: def wrap(
      cls, env: T, logging_prefix: Optional[str] = None
  ) -> Union[T, LogStatsEnv]:
      """Creation method providing appropriate type hints. Preferred method to construct the wrapper
      compared to calling the class constructor directly.
  
      :param env: The environment to be wrapped.
      :param logging_prefix: The episode statistics is connected to the logging system with this tagging
                             prefix. If None, no logging happens.
  
      :return A newly created wrapper instance.
      """
      instance = cls(env, logging_prefix)
      instance._is_initialized = (
          True  # Set the flag at the end of the initialization
      )
      return instance
  
imports: import uuid
  from typing import Callable, Optional, Iterable
  from typing import TypeVar, Union, Any, Tuple, Dict
  from maze.core.annotations import override
  from maze.core.env.base_env import BaseEnv
  from maze.core.env.base_env_events import BaseEnvEvents
  from maze.core.env.environment_context import EnvironmentContext
  from maze.core.env.event_env_mixin import EventEnvMixin
  from maze.core.env.maze_action import MazeActionType
  from maze.core.env.maze_env import MazeEnv
  from maze.core.env.maze_state import MazeStateType
  from maze.core.env.recordable_env_mixin import RecordableEnvMixin
  from maze.core.env.simulated_env_mixin import SimulatedEnvMixin
  from maze.core.env.structured_env import StructuredEnv
  from maze.core.env.time_env_mixin import TimeEnvMixin
  from maze.core.events.event_collection import EventCollection
  from maze.core.events.event_record import EventRecord
  from maze.core.log_events.episode_event_log import EpisodeEventLog
  from maze.core.log_events.log_events_writer_registry import LogEventsWriterRegistry
  from maze.core.log_events.step_event_log import StepEventLog
  from maze.core.log_stats.log_stats import LogStatsAggregator, LogStatsLevel, get_stats_logger, LogStatsValue
  from maze.core.log_stats.log_stats_env import LogStatsEnv
  from maze.core.rendering.events_stats_renderer import EventStatsRenderer
  from maze.core.wrappers.wrapper import Wrapper
label_desc: Use image node_id 2 for calling the LogStatsWrapper obj's underlying member method code with example usage: obj.wrap(cls, env, logging_prefix) and returns: instance