Source code for openfisca_core.tracers.simple_tracer
from __future__ import annotations
from openfisca_core import types as t
[docs]
class SimpleTracer:
    """A simple tracer that records a stack of traces."""
    #: The stack of traces.
    _stack: t.SimpleStack
    def __init__(self) -> None:
        self._stack = []
    @property
    def stack(self) -> t.SimpleStack:
        """Return the stack of traces."""
        return self._stack
[docs]
    def record_calculation_start(
        self, variable: t.VariableName, period: t.PeriodInt | t.Period
    ) -> None:
        """Record the start of a calculation.
        Args:
            variable: The variable being calculated.
            period: The period for which the variable is being calculated.
        Examples:
            >>> from openfisca_core import tracers
            >>> tracer = tracers.SimpleTracer()
            >>> tracer.record_calculation_start("variable", 2020)
            >>> tracer.stack
            [{'name': 'variable', 'period': 2020}]
        """
        self.stack.append({"name": variable, "period": period}) 
[docs]
    def record_calculation_result(self, value: t.ArrayLike[object]) -> None:
        """Ignore calculation result.""" 
[docs]
    def record_parameter_access(
        self, parameter: str, period: t.Period, value: t.ArrayLike[object]
    ) -> None:
        """Ignore parameter access.""" 
[docs]
    def record_calculation_end(self) -> None:
        """Record the end of a calculation.
        Examples:
            >>> from openfisca_core import tracers
            >>> tracer = tracers.SimpleTracer()
            >>> tracer.record_calculation_start("variable", 2020)
            >>> tracer.record_calculation_end()
            >>> tracer.stack
            []
        """
        self.stack.pop() 
 
__all__ = ["SimpleTracer"]