class_docstr: Complements the event system by providing aggregation functionality. How the events are aggregated
  is specified by the event interface decorators (see event_decorators.py).
  
  Note that the statistics calculation for episode aggregators will automatically be
  triggered on every `increment_log_step()` call.
class_docstr_tok: ["Complements","the","event","system","by","providing","aggregation","functionality",".","How","the","events","are","aggregated","is","specified","by","the","event","interface","decorators","(","see","event_decorators.py",")",".","Note","that","the","statistics","calculation","for","episode","aggregators","will","automatically","be","triggered","on","every","`","increment_log_step","(",")","`","call","."]
docstr: Add a single value to this aggregator.
  
  :param event: The event interface method the given value belongs to
  :param value: The value to add
  :param name: There may be multiple statistics per event, the name is used to refer to a specific statistics
               built from the event records
  :param group: The group identifier if this event is grouped
docstr_tok: ["Add","a","single","value","to","this","aggregator",".",":","param","event",":","The","event","interface","method","the","given","value","belongs","to",":","param","value",":","The","value","to","add",":","param","name",":","There","may","be","multiple","statistics","per","event",",","the","name","is","used","to","refer","to","a","specific","statistics","built","from","the","event","records",":","param","group",":","The","group","identifier","if","this","event","is","grouped"]
code: def add_value(
      self,
      event: Callable,
      value: LogStatsValue,
      name: str = None,
      group: LogStatsGroup = None,
  ) -> None:
      """
      Add a single value to this aggregator.
  
      :param event: The event interface method the given value belongs to
      :param value: The value to add
      :param name: There may be multiple statistics per event, the name is used to refer to a specific statistics
                   built from the event records
      :param group: The group identifier if this event is grouped
      """
      # append the new value to the list
      self.input[(event, name, group)].append(value)
  
imports: from abc import ABC, abstractmethod
  from collections import defaultdict
  from enum import Enum
  from typing import Union, Callable, Dict, Optional, NamedTuple, List, Type, TypeVar, Tuple, Any
  import numpy
  from maze.core.events.event_record import EventRecord
  from maze.core.events.event_topic_factory import event_topic_factory
label_desc: Use image node_id 5 for calling the LogStatsAggregator obj's underlying member method code with example usage: obj.add_value(event, value, name, group) without return types