Skip to content

Commit e18d97c

Browse files
committed
refactor: consolidate tracers module types
1 parent def708a commit e18d97c

File tree

8 files changed

+98
-118
lines changed

8 files changed

+98
-118
lines changed

openfisca_core/tracers/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
#
2222
# See: https://www.python.org/dev/peps/pep-0008/#imports
2323

24-
from . import types
2524
from .computation_log import ComputationLog
2625
from .flat_trace import FlatTrace
2726
from .full_tracer import FullTracer
@@ -38,5 +37,4 @@
3837
"SimpleTracer",
3938
"TraceNode",
4039
"TracingParameterNodeAtInstant",
41-
"types",
4240
]

openfisca_core/tracers/computation_log.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44

55
import numpy
66

7+
from openfisca_core import types as t
78
from openfisca_core.indexed_enums import EnumArray
89

9-
from . import types as t
10-
1110

1211
class ComputationLog:
1312
_full_tracer: t.FullTracer

openfisca_core/tracers/flat_trace.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22

33
import numpy
44

5+
from openfisca_core import types as t
56
from openfisca_core.indexed_enums import EnumArray
67

7-
from . import types as t
8-
98

109
class FlatTrace:
1110
_full_tracer: t.FullTracer

openfisca_core/tracers/full_tracer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
import sys
66
import time
77

8-
from . import types as t
8+
from openfisca_core import types as t
9+
910
from .computation_log import ComputationLog
1011
from .flat_trace import FlatTrace
1112
from .performance_log import PerformanceLog

openfisca_core/tracers/simple_tracer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
from . import types as t
3+
from openfisca_core import types as t
44

55

66
class SimpleTracer:

openfisca_core/tracers/trace_node.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import dataclasses
44

5-
from . import types as t
5+
from openfisca_core import types as t
66

77

88
@dataclasses.dataclass

openfisca_core/tracers/types.py

Lines changed: 0 additions & 108 deletions
This file was deleted.

openfisca_core/types.py

Lines changed: 92 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
from collections.abc import Iterable, Sequence, Sized
3+
from collections.abc import Iterable, Iterator, Sequence, Sized
44
from numpy.typing import DTypeLike, NDArray
55
from typing import NewType, TypeVar, Union
66
from typing_extensions import Protocol, Required, Self, TypeAlias, TypedDict
@@ -309,6 +309,97 @@ def get_variable(
309309
) -> None | Variable: ...
310310

311311

312+
# Tracers
313+
314+
#: A type representing a unit time.
315+
Time: TypeAlias = float
316+
317+
#: A type representing a mapping of flat traces.
318+
FlatNodeMap: TypeAlias = dict["NodeKey", "FlatTraceMap"]
319+
320+
#: A type representing a mapping of serialized traces.
321+
SerializedNodeMap: TypeAlias = dict["NodeKey", "SerializedTraceMap"]
322+
323+
#: Key of a trace.
324+
NodeKey = NewType("NodeKey", str)
325+
326+
327+
class FlatTraceMap(TypedDict, total=True):
328+
dependencies: list[NodeKey]
329+
parameters: dict[NodeKey, None | ArrayLike[object]]
330+
value: None | VarArray
331+
calculation_time: Time
332+
formula_time: Time
333+
334+
335+
class SerializedTraceMap(TypedDict, total=True):
336+
dependencies: list[NodeKey]
337+
parameters: dict[NodeKey, None | ArrayLike[object]]
338+
value: None | ArrayLike[object]
339+
calculation_time: Time
340+
formula_time: Time
341+
342+
343+
class SimpleTraceMap(TypedDict, total=True):
344+
name: VariableName
345+
period: int | Period
346+
347+
348+
class ComputationLog(Protocol):
349+
def print_log(self, __aggregate: bool = ..., __max_depth: int = ..., /) -> None: ...
350+
351+
352+
class FlatTrace(Protocol):
353+
def get_trace(self, /) -> FlatNodeMap: ...
354+
def get_serialized_trace(self, /) -> SerializedNodeMap: ...
355+
356+
357+
class FullTracer(Protocol):
358+
@property
359+
def trees(self, /) -> list[TraceNode]: ...
360+
def browse_trace(self, /) -> Iterator[TraceNode]: ...
361+
def get_nb_requests(self, __name: VariableName, /) -> int: ...
362+
363+
364+
class PerformanceLog(Protocol):
365+
def generate_graph(self, __dir_path: str, /) -> None: ...
366+
def generate_performance_tables(self, __dir_path: str, /) -> None: ...
367+
368+
369+
class SimpleTracer(Protocol):
370+
@property
371+
def stack(self, /) -> SimpleStack: ...
372+
def record_calculation_start(
373+
self, __name: VariableName, __period: PeriodInt | Period, /
374+
) -> None: ...
375+
def record_calculation_end(self, /) -> None: ...
376+
377+
378+
class TraceNode(Protocol):
379+
@property
380+
def children(self, /) -> list[TraceNode]: ...
381+
@property
382+
def end(self, /) -> Time: ...
383+
@property
384+
def name(self, /) -> str: ...
385+
@property
386+
def parameters(self, /) -> list[TraceNode]: ...
387+
@property
388+
def parent(self, /) -> None | TraceNode: ...
389+
@property
390+
def period(self, /) -> PeriodInt | Period: ...
391+
@property
392+
def start(self, /) -> Time: ...
393+
@property
394+
def value(self, /) -> None | VarArray: ...
395+
def calculation_time(self, *, __round: bool = ...) -> Time: ...
396+
def formula_time(self, /) -> Time: ...
397+
def append_child(self, __node: TraceNode, /) -> None: ...
398+
399+
400+
#: A stack of simple traces.
401+
SimpleStack: TypeAlias = list[SimpleTraceMap]
402+
312403
# Variables
313404

314405
#: For example "salary".

0 commit comments

Comments
 (0)