Source code for fridom.framework.modules.counter

"""A counting module for debugging purposes."""
from __future__ import annotations

import fridom.framework as fr


[docs] class Counter(fr.modules.Module): """ A counting module for debugging purposes. Description ----------- Every time the update method is called, the counter is incremented by one. Additionally, a clock trigger can be set to only increment the counter for specific clock events. Parameters ---------- clock_trigger : fr.ClockTrigger, optional A clock trigger to only increment the counter for specific clock events. If not set, the counter is incremented every time the update method is called. """ name = "Counter"
[docs] def __init__(self, clock_trigger: fr.ClockTrigger | None = None) -> None: super().__init__() self.clock_trigger = clock_trigger self.counter: int
def _on_setup(self) -> None: self.clock_trigger = self.clock_trigger or fr.ClockTrigger() self.counter = 0 def _on_reset(self) -> None: self.clock_trigger.reset() self.counter = 0
[docs] @fr.modules.module_method def update(self, mz: fr.ModelState) -> fr.ModelState: # noqa: D102 if not self.clock_trigger.check(mz.clock): return mz self.counter += 1 return mz