@@ -176,19 +176,29 @@ def set_data(self, data):
176176 # invalidate the model so that handleNewSignals will update it
177177 self .model = None
178178
179- def apply (self , * , hard = True ):
179+ SEND , SOFT , UPDATE = range (3 )
180+
181+ def apply (self , * , level = UPDATE ):
180182 """Applies learner and sends new model."""
181- if hard or self .learner is None :
182- self .update_learner ()
183- if hard or self .model is None :
183+ if level == self .SEND :
184+ self ._send_learner ()
185+ self ._send_model ()
186+ elif level == self .UPDATE :
187+ self .update_learnel ()
184188 self .update_model ()
189+ else :
190+ self .learner or self .update_learner ()
191+ self .model or self .update_model ()
185192
186193 def update_learner (self ):
187194 self .learner = self .create_learner ()
188195 if self .learner and issubclass (self .LEARNER , Fitter ):
189196 self .learner .use_default_preprocessors = True
190197 if self .learner is not None :
191198 self .learner .name = self .effective_learner_name ()
199+ self ._send_learner ()
200+
201+ def _send_learner (self ):
192202 self .Outputs .learner .send (self .learner )
193203 self .outdated_settings = False
194204 self .Warning .outdated_learner .clear ()
@@ -216,6 +226,9 @@ def update_model(self):
216226 else :
217227 self .model .name = self .learner_name or self .captionTitle
218228 self .model .instances = self .data
229+ self ._send_model ()
230+
231+ def _send_model (self ):
219232 self .Outputs .model .send (self .model )
220233
221234 def check_data (self ):
@@ -245,7 +258,7 @@ def settings_changed(self, *args, **kwargs):
245258 def _change_name (self , instance , output ):
246259 if instance :
247260 instance .name = self .effective_learner_name ()
248- self .apply ()
261+ self .apply (level = self . SEND )
249262
250263 def learner_name_changed (self ):
251264 self ._change_name (self .learner , self .Outputs .learner )
0 commit comments