diff --git a/target_api/target.py b/target_api/target.py index 081a3dc..9b94bb3 100644 --- a/target_api/target.py +++ b/target_api/target.py @@ -78,5 +78,15 @@ def _process_record_message(self, message_dict: dict) -> None: sink.process_record(transformed_record, context) sink._after_process_record(context) + if not self._latest_state: + # If "self._latest_state" is empty, save the value of "sink.latest_state" + self._latest_state = sink.latest_state + else: + # If "self._latest_state" is not empty, update all its fields with the + # fields from "sink.latest_state" (if they exist) + for key in self._latest_state.keys(): + sink_latest_state = sink.latest_state or dict() + self._latest_state[key].update(sink_latest_state.get(key) or dict()) + if __name__ == "__main__": TargetApi.cli()