From 78e6f7e5a7afc06f914e9efc12007fddb71e55ad Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Fri, 12 Sep 2025 11:13:57 +0200 Subject: [PATCH] River: Data traversal methode. --- src/Model/River.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/Model/River.py b/src/Model/River.py index 40c80759..1185866f 100644 --- a/src/Model/River.py +++ b/src/Model/River.py @@ -627,6 +627,52 @@ class River(Graph): except Exception as e: logger_exception(e) + def _data_traversal(self, + predicate=lambda obj, data: True, + modifier=lambda obj, data: None, + data={}): + """Traversal data and execute modifier fonction if predicate + true + + Args: + predicate: Function predicate, take current obj and data as input + modifier: Function modifier, take current obj and data as input + + Returns: + Nothing + + """ + if predicate(self, data): + modifier(self, data) + + for obj in self._get_objs_list(): + obj._data_traversal(predicate, modifier, data) + + def _get_objs_list(self): + objs = [ + self._nodes, self._edges, + self._boundary_condition, + self._initial_conditions, + self._lateral_contribution, + self._sediment_layers, + self._stricklers, + self._reservoir, + self._hydraulic_structures, + self._additional_files, + self._rep_lines, + self._Output_rk_adists, + self._Pollutants, + self._InitialConditionsAdisTS, + self._BoundaryConditionsAdisTS, + self._LateralContributionsAdisTS, + self._D90AdisTS, self._DIFAdisTS, + ] + + for solver in self._parameters: + objs.append(self._parameters[solver]) + + return objs + def init_default(self): self.init_default_network() self.init_default_sediment()