@@ -9,7 +9,7 @@ from ..models import BaseModel
9
9
from ..fields import Field
10
10
from ..sql_db import Connection , Cursor
11
11
from ..tests .runner import OdooTestResult
12
- from ..tools import Collector , ignore as ignore
12
+ from ..tools import Collector
13
13
from ..tools .lru import LRU
14
14
15
15
class Registry (Mapping [str , type [BaseModel ]]):
@@ -39,6 +39,8 @@ class Registry(Mapping[str, type[BaseModel]]):
39
39
field_depends : Collector
40
40
field_depends_context : Collector
41
41
field_inverses : Collector
42
+ _field_trigger_trees : dict [Field , TriggerTree ]
43
+ _is_modifying_relations : dict [Field , bool ]
42
44
registry_sequence : int | None
43
45
cache_sequence : int | None
44
46
_invalidation_flags : threading .local
@@ -62,10 +64,13 @@ class Registry(Mapping[str, type[BaseModel]]):
62
64
def setup_models (self , cr : Cursor ) -> None : ...
63
65
@property
64
66
def field_computed (self ) -> dict [Field , list [Field ]]: ...
67
+ def get_trigger_tree (self , fields : list , select : Callable = ...) -> TriggerTree : ...
68
+ def get_dependent_fields (self , field : Field ) -> Iterator [Field ]: ...
69
+ def _discard_fields (self , fields : list [Field ]) -> None : ...
70
+ def get_field_trigger_tree (self , field : Field ) -> TriggerTree : ...
65
71
@property
66
- def field_triggers (self ) -> dict [Field , Any ]: ...
67
- @property
68
- def fields_modifying_relations (self ) -> set [Field ]: ...
72
+ def _field_triggers (self ) -> defaultdict [Field , Any ]: ...
73
+ def is_modifying_relations (self , field : Field ) -> bool : ...
69
74
def post_init (self , func : Callable , * args , ** kwargs ) -> None : ...
70
75
def post_constraint (self , func : Callable , * args , ** kwargs ) -> None : ...
71
76
def finalize_constraints (self ) -> None : ...
@@ -103,3 +108,13 @@ class DummyRLock:
103
108
def release (self ) -> None : ...
104
109
def __enter__ (self ) -> None : ...
105
110
def __exit__ (self , type , value , traceback ) -> None : ...
111
+
112
+ class TriggerTree (dict ):
113
+ __slots__ = ['root' ]
114
+ root : Any
115
+ def __init__ (self , root : Any = ..., * args , ** kwargs ) -> None : ...
116
+ def __bool__ (self ) -> bool : ...
117
+ def increase (self , key ) -> TriggerTree : ...
118
+ def depth_first (self ) -> Iterator [TriggerTree ]: ...
119
+ @classmethod
120
+ def merge (cls , trees : list [TriggerTree ], select : Callable = ...) -> TriggerTree : ...
0 commit comments