class_docstr: Keeps logs of all events dispatched by an environment during one episode.
  
  :param episode_id: ID of the episode the events belong to
class_docstr_tok: ["Keeps","logs","of","all","events","dispatched","by","an","environment","during","one","episode",".",":","param","episode_id",":","ID","of","the","episode","the","events","belong","to"]
docstr: Query events across the whole episode.
  
  :param event_spec: Specification of events to query
  :return: List of events from this episode that
docstr_tok: ["Query","events","across","the","whole","episode",".",":","param","event_spec",":","Specification","of","events","to","query",":","return",":","List","of","events","from","this","episode","that"]
code: def query_events(
      self, event_spec: Union[Callable, Iterable[Callable]]
  ) -> Iterable:
      """Query events across the whole episode.
  
      :param event_spec: Specification of events to query
      :return: List of events from this episode that
      """
      event_records = []
      for step_log in self.step_event_logs:
          event_records += step_log.events.query_events(event_spec)
      return event_records
  
imports: from typing import Iterable, Union, Callable
  from typing import List
  from maze.core.log_events.step_event_log import StepEventLog
label_desc: Use image node_id 2 for calling the EpisodeEventLog obj's underlying member method code with example usage: obj.query_events(event_spec) and returns: event_records