data_modify.py 991 B

123456789101112131415161718192021222324252627
  1. import functools
  2. from typing import TYPE_CHECKING, Callable, List
  3. from api.od import ODAPI
  4. from examples.schedule.RuleExecuter import RuleExecuter
  5. from .exec_node import ExecNode
  6. from .data_node import DataNode
  7. class DataModify(DataNode):
  8. def __init__(self, modify_dict: dict[str,str]) -> None:
  9. DataNode.__init__(self)
  10. self.modify_dict: dict[str,str] = modify_dict
  11. def input_event(self, success: bool) -> None:
  12. if success or self.data_out.success:
  13. self.data_out.data.clear()
  14. for data in self.data_in.data:
  15. self.data_out.append({self.modify_dict[key]: value for key, value in data.items() if key in self.modify_dict.keys()})
  16. DataNode.input_event(self, success)
  17. def generate_dot(self, nodes: List[str], edges: List[str], visited: set[int]) -> None:
  18. if self.id in visited:
  19. return
  20. nodes.append(f"{self.id}[label=modify]")
  21. super().generate_dot(nodes, edges, visited)