背景
uni_rl 1.2.1 对 env 对象是鸭子类型访问,UniLab 侧没有任何测试结构化地钉住该契约:
env.cfg.max_episode_seconds / env.cfg.ctrl_dt(uni_rl/algos/rsl_rl.py:215)
env.set_nan_guard + env.play_capabilities.supports_physics_state_playback(uni_rl/offpolicy/worker.py:236-240、appo/worker.py:154-158)
- 可选
env.set_episode_length_buf(uni_rl/algos/rsl_rl.py:233,由 src/unilab/envs/manager_based_rl_env.py:718 提供)
uni_rl.env_contract.EnvProtocol 是 runtime_checkable 的,而 src/unilab/base/env_factory.py:65-67 目前靠 cast + 注释兜底。
建议
加一条 isinstance(env, EnvProtocol) 符合性测试(覆盖 ManagerBasedRlEnv/NpEnv),把这类上下游错配从运行时失败变成测试失败。
背景
uni_rl 1.2.1 对 env 对象是鸭子类型访问,UniLab 侧没有任何测试结构化地钉住该契约:
env.cfg.max_episode_seconds/env.cfg.ctrl_dt(uni_rl/algos/rsl_rl.py:215)env.set_nan_guard+env.play_capabilities.supports_physics_state_playback(uni_rl/offpolicy/worker.py:236-240、appo/worker.py:154-158)env.set_episode_length_buf(uni_rl/algos/rsl_rl.py:233,由src/unilab/envs/manager_based_rl_env.py:718提供)uni_rl.env_contract.EnvProtocol是runtime_checkable的,而src/unilab/base/env_factory.py:65-67目前靠cast+ 注释兜底。建议
加一条
isinstance(env, EnvProtocol)符合性测试(覆盖ManagerBasedRlEnv/NpEnv),把这类上下游错配从运行时失败变成测试失败。