[docs]@docstrings.with_indent(12)@time_performance(scope="add_negative_events",event_name="helper",event_value="combine",)defadd_negative_events(self:EventstreamType,targets:List[str],func:Optional[Callable]=None)->EventstreamType:""" A method of ``Eventstream`` class that creates new synthetic events in paths of all users having the specified events - ``negative_target_RAW_EVENT_NAME``. Parameters ---------- %(AddNegativeEvents.parameters)s Returns ------- Eventstream Input ``eventstream`` with new synthetic events. """calling_params={"targets":targets,"func":func,}# avoid circular importfromretentioneering.data_processors_libimport(AddNegativeEvents,AddNegativeEventsParams,)fromretentioneering.preprocessing_graphimportPreprocessingGraphfromretentioneering.preprocessing_graph.nodesimportEventsNodep=PreprocessingGraph(source_stream=self)# type: ignoreparams:dict[str,list[str]|Callable]={"targets":targets}iffunc:params["func"]=funcnode=EventsNode(processor=AddNegativeEvents(params=AddNegativeEventsParams(**params)))# type: ignorep.add_node(node=node,parents=[p.root])result=p.combine(node)delpcollect_data_performance(scope="add_negative_events",event_name="metadata",called_params=calling_params,performance_data={},eventstream_index=self._eventstream_index,parent_eventstream_index=self._eventstream_index,child_eventstream_index=result._eventstream_index,)returnresult