class_docstr: Structured policy class designed to work with structured environments.
  (see :class:`~maze.core.env.structured_env.StructuredEnv`).
  
  It encapsulates policies and queries them for actions according to the provided policy ID.
class_docstr_tok: ["Structured","policy","class","designed","to","work","with","structured","environments",".","(","see",":","class",":","`","~maze.core.env.structured_env.StructuredEnv","`",")",".","It","encapsulates","policies","and","queries","them","for","actions","according","to","the","provided","policy","ID","."]
docstr: Query a policy that corresponds to the given actor ID for action.
  
  :param observation: Current observation of the environment
  :param maze_state: Current state representation of the environment
                     (only provided if `needs_state()` returns True)
  :param env: The environment instance (only provided if `needs_env()` returns True)
  :param actor_id: ID of the actor to query policy for
                   (does not have to be provided if there is only one actor and one policy in this environment)
  :param deterministic: Specify if the action should be computed deterministically
  :return: Next action to take
docstr_tok: ["Query","a","policy","that","corresponds","to","the","given","actor","ID","for","action",".",":","param","observation",":","Current","observation","of","the","environment",":","param","maze_state",":","Current","state","representation","of","the","environment","(","only","provided","if","`","needs_state","(",")","`","returns","True",")",":","param","env",":","The","environment","instance","(","only","provided","if","`","needs_env","(",")","`","returns","True",")",":","param","actor_id",":","ID","of","the","actor","to","query","policy","for","(","does","not","have","to","be","provided","if","there","is","only","one","actor","and","one","policy","in","this","environment",")",":","param","deterministic",":","Specify","if","the","action","should","be","computed","deterministically",":","return",":","Next","action","to","take"]
code: def compute_action(
      self,
      observation: ObservationType,
      maze_state: Optional[MazeStateType],
      env: Optional[BaseEnv],
      actor_id: Optional[ActorID] = None,
      deterministic: bool = False,
  ) -> ActionType:
      """
      Query a policy that corresponds to the given actor ID for action.
  
      :param observation: Current observation of the environment
      :param maze_state: Current state representation of the environment
                         (only provided if `needs_state()` returns True)
      :param env: The environment instance (only provided if `needs_env()` returns True)
      :param actor_id: ID of the actor to query policy for
                       (does not have to be provided if there is only one actor and one policy in this environment)
      :param deterministic: Specify if the action should be computed deterministically
      :return: Next action to take
      """
  
file_path: maze/maze/core/agent/policy.py
imports: from abc import ABC, abstractmethod
  from typing import Tuple, Optional, List
  from maze.core.env.action_conversion import ActionType
  from maze.core.env.base_env import BaseEnv
  from maze.core.env.maze_state import MazeStateType
  from maze.core.env.observation_conversion import ObservationType
  from maze.core.env.structured_env import ActorID
  from maze.core.trajectory_recording.records.spaces_record import PolicyRecordType
label_desc: Use image node_id 4 for calling the Policy obj's underlying member method code with example usage: obj.compute_action(observation, maze_state, env, actor_id, deterministic) without return types