Source code for unilab.envs.mdp.recorders

"""Reusable recorder terms for the Manager-Based tensor runtime."""

from __future__ import annotations

from typing import TYPE_CHECKING

import torch

from unilab.managers.recorder_manager import RecorderTerm, RecorderTermCfg

if TYPE_CHECKING:
    from unilab.managers.types import ManagerBasedRlEnv


[docs] class LifecycleCounterRecorder(RecorderTerm): """Count recorder lifecycle calls without performing I/O."""
[docs] def __init__(self, cfg: RecorderTermCfg, env: ManagerBasedRlEnv): super().__init__(cfg, env) self.pre_reset_count = torch.zeros((), dtype=torch.int64) self.post_reset_count = torch.zeros((), dtype=torch.int64) self.post_step_count = 0
[docs] def record_pre_reset(self, env_ids: torch.Tensor) -> None: self.pre_reset_count += env_ids.numel()
[docs] def record_post_reset(self, env_ids: torch.Tensor) -> None: self.post_reset_count += env_ids.numel()
[docs] def record_post_step(self) -> None: self.post_step_count += 1
__all__ = ["LifecycleCounterRecorder"]