class maze.core.env.environment_context.EnvironmentContext

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

clone_from(context: maze.core.env.environment_context.EnvironmentContext)None

Clone environment by resetting to the provided context.


context – The environment context to clone.

property episode_id

Get the episode ID.

Episode ID is a UUID generated in a lazy manner, ensuring that if the ID is not needed, the potentially costly random UUID generation is avoided. Once generated, it stays the same for the entire episode and then is reset.


Episode UUID as string

This must be called after the env step execution, to:
  • Clear event logs (used for statistics for the current step)

  • Increment step_id, which is used as env_time by default

register_post_step(callback: Callable)None

Register a function to be called after every single step, just before the events of the previous step are cleared.

In case multiple env steps are initiated from a wrapper’s step function (e.g. during step skipping), these callbacks will be called in between these individual steps as well.


This must be called when resetting the environment, to notify the context about the start of a new episode.


Run callbacks registered for post-step execution and then clear out the events from this step.