Skip to content

ding.envs.common.env_element_runner

ding.envs.common.env_element_runner

Full Source Code

../ding/envs/common/env_element_runner.py

1from abc import abstractmethod 2from typing import Any 3 4from .env_element import EnvElement, IEnvElement, EnvElementInfo 5from ..env.base_env import BaseEnv 6 7 8class IEnvElementRunner(IEnvElement): 9 10 @abstractmethod 11 def get(self, engine: BaseEnv) -> Any: 12 raise NotImplementedError 13 14 @abstractmethod 15 def reset(self, *args, **kwargs) -> None: 16 raise NotImplementedError 17 18 19class EnvElementRunner(IEnvElementRunner): 20 21 def __init__(self, *args, **kwargs) -> None: 22 self._init(*args, **kwargs) 23 self._check() 24 25 @abstractmethod 26 def _init(self, *args, **kwargs) -> None: 27 # set self._core and other state variable 28 raise NotImplementedError 29 30 def _check(self) -> None: 31 flag = [hasattr(self, '_core'), isinstance(self._core, EnvElement)] 32 assert all(flag), flag 33 34 def __repr__(self) -> str: 35 return repr(self._core) 36 37 @property 38 def info(self) -> 'EnvElementInfo': 39 return self._core.info