@@ -98,6 +98,8 @@ class Outputs:
98
98
99
99
OUTPUT_MODEL_NAME = Outputs .model .name # Attr for backcompat w/ self.send() code
100
100
101
+ _SEND , _SOFT , _UPDATE = range (3 )
102
+
101
103
def __init__ (self , preprocessors = None ):
102
104
super ().__init__ ()
103
105
self .__default_learner_name = ""
@@ -107,6 +109,7 @@ def __init__(self, preprocessors=None):
107
109
self .model = None
108
110
self .preprocessors = preprocessors
109
111
self .outdated_settings = False
112
+ self .__apply_level = []
110
113
111
114
self .setup_layout ()
112
115
QTimer .singleShot (0 , getattr (self , "unconditional_apply" , self .apply ))
@@ -176,20 +179,27 @@ def set_data(self, data):
176
179
# invalidate the model so that handleNewSignals will update it
177
180
self .model = None
178
181
179
- SEND , SOFT , UPDATE = range (3 )
180
182
181
- def apply (self , * , level = UPDATE ):
183
+ def apply (self ):
184
+ level , self .__apply_level = max (self .__apply_level , default = self ._UPDATE ), []
182
185
"""Applies learner and sends new model."""
183
- if level == self .SEND :
186
+ if level == self ._SEND :
184
187
self ._send_learner ()
185
188
self ._send_model ()
186
- elif level == self .UPDATE :
187
- self .update_learnel ()
189
+ elif level == self ._UPDATE :
190
+ self .update_learner ()
188
191
self .update_model ()
189
192
else :
190
193
self .learner or self .update_learner ()
191
194
self .model or self .update_model ()
192
195
196
+ def apply_as (self , level , unconditional = False ):
197
+ self .__apply_level .append (level )
198
+ if unconditional :
199
+ self .unconditional_apply ()
200
+ else :
201
+ self .apply ()
202
+
193
203
def update_learner (self ):
194
204
self .learner = self .create_learner ()
195
205
if self .learner and issubclass (self .LEARNER , Fitter ):
@@ -204,7 +214,7 @@ def _send_learner(self):
204
214
self .Warning .outdated_learner .clear ()
205
215
206
216
def handleNewSignals (self ):
207
- self .unconditional_apply ( level = self .SOFT )
217
+ self .apply_as ( self ._SOFT , True )
208
218
self .Information .ignored_preprocessors (
209
219
shown = not getattr (self .learner , "use_default_preprocessors" , False )
210
220
and getattr (self .LEARNER , "preprocessors" , False )
@@ -260,7 +270,7 @@ def learner_name_changed(self):
260
270
self .model .name = self .effective_learner_name ()
261
271
if self .learner is not None :
262
272
self .learner .name = self .effective_learner_name ()
263
- self .apply ( level = self .SEND )
273
+ self .apply_as ( self ._SEND )
264
274
265
275
def effective_learner_name (self ):
266
276
"""Return the effective learner name."""
0 commit comments