class_docstr: Event aggregation object for reward customization and shaping.
class_docstr_tok: ["Event","aggregation","object","for","reward","customization","and","shaping","."]
docstr: Clones the state of the provided reward aggregator.
  
  :param reward_aggregator: The reward aggregator to clone from.
docstr_tok: ["Clones","the","state","of","the","provided","reward","aggregator",".",":","param","reward_aggregator",":","The","reward","aggregator","to","clone","from","."]
code: def clone_from(
      self, reward_aggregator: "RewardAggregatorInterface"
  ) -> None:
      """Clones the state of the provided reward aggregator.
  
      :param reward_aggregator: The reward aggregator to clone from.
      """
      for key, value in self.__dict__.items():
          if key != "events":
              assert (
                  value == reward_aggregator.__dict__[key]
              ), f"Your reward aggregator seems to be stateful. Make sure to overwrite 'clone_from' properly!"
  
file_path: maze/maze/core/env/reward.py
imports: from abc import abstractmethod, ABC
  from typing import Union, List, Type, Optional
  import numpy
  from maze.core.annotations import override
  from maze.core.env.maze_state import MazeStateType
  from maze.core.events.pubsub import Subscriber
label_desc: Use image node_id 3 for calling the RewardAggregatorInterface obj's underlying member method code with example usage: obj.clone_from(reward_aggregator) without return types