class_docstr: This class keeps track of services that can be employed by all objects of the agent-environment loop.
  
  Currently the context is populated by
  
  - Event service: Acts as backend of the PubSub service, collects all events from the env.
    The event service can also be directly facilitated by components outside the environment (e.g. agent, heuristics,
    state/observation mapping)
  - Episode ID: Generates and keeps track of the current episode ID
    Episode IDs are used for connecting logged statistics, events and recorded trajectory data together, making
    analysis and drill-down across these different levels possible.
  - Step ID: Tracks ID of the core env step we are currently in. Helps wrappers recognize core env steps in multi-step
    scenarios.
  - Post-step callbacks: Handles registration of post-step callbacks and provides a utility to run them (usually
                         triggered from the outer-most wrapper)
  - Step lifecycle flags: Flags partially managed from the wrapper stack, helping the wrappers to determine
                          where we are in the step lifecycle and which one is the outer-most one
docstr: Run callbacks registered for post-step execution and then clear out the events from this step.
docstr_tok: ["Run","callbacks","registered","for","post-step","execution","and","then","clear","out","the","events","from","this","step","."]
code: def run_post_step_callbacks(self) -> None:
      """
      Run callbacks registered for post-step execution and then clear out the events from this step.
      """
      for callback in self._post_step_callbacks:
          callback()
  
      # Only clear events out if env time changed (important in multi-step scenarios)
      if self._last_cleared_events_at != self.step_id:
          self.event_service.clear_events()
          self._last_cleared_events_at = self.step_id
  
file_path: maze/maze/core/env/environment_context.py
imports: import uuid
  from typing import Callable
label_desc: Use image node_id 6 for calling the EnvironmentContext obj's underlying member method code with example usage: obj.run_post_step_callbacks() without return types