Source code for policyengine_core.tracers.simple_tracer

from __future__ import annotations

import typing
from typing import Dict, List, Union

if typing.TYPE_CHECKING:
    from numpy.typing import ArrayLike

    from policyengine_core.periods import Period

    Stack = List[Dict[str, Union[str, Period]]]


[docs]class SimpleTracer: _stack: Stack def __init__(self) -> None: self._stack = [] def record_calculation_start( self, variable: str, period: str, branch_name: str = "default" ) -> None: self.stack.append( {"name": variable, "period": period, "branch_name": branch_name} ) def record_calculation_result(self, value: ArrayLike) -> None: pass # ignore calculation result def record_parameter_access( self, parameter: str, period, branch_name: str, value ): pass def record_calculation_end(self) -> None: self.stack.pop() @property def stack(self) -> Stack: return self._stack