@@ -25,7 +25,7 @@ def _identity(x):
2525
2626
2727def _mp_worker (fold_i , train_data , test_data , learner_i , learner ,
28- store_models ):
28+ store_models , suppresses_exceptions = True ):
2929 predicted , probs , model , failed = None , None , None , False
3030 train_time , test_time = None , None
3131 try :
@@ -45,6 +45,8 @@ def _mp_worker(fold_i, train_data, test_data, learner_i, learner,
4545 test_time = time () - t0
4646 # Different models can fail at any time raising any exception
4747 except Exception as ex : # pylint: disable=broad-except
48+ if not suppresses_exceptions :
49+ raise ex
4850 failed = ex
4951 return _MpResults (fold_i , learner_i , store_models and model ,
5052 failed , len (test_data ), predicted , probs ,
@@ -96,6 +98,7 @@ def __init__(self, data=None, *,
9698 row_indices = None , folds = None , score_by_folds = True ,
9799 learners = None , models = None , failed = None ,
98100 actual = None , predicted = None , probabilities = None ,
101+ # pylint: disable=unused-argument
99102 store_data = None , store_models = None ,
100103 train_time = None , test_time = None ):
101104 """
@@ -426,7 +429,8 @@ def fit(self, *args, **kwargs):
426429 DeprecationWarning )
427430 return self (* args , ** kwargs )
428431
429- def __call__ (self , data , learners , preprocessor = None , * , callback = None ):
432+ def __call__ (self , data , learners , preprocessor = None , * , callback = None ,
433+ suppresses_exceptions = True ):
430434 """
431435 Args:
432436 data (Orange.data.Table): data to be used (usually split) into
@@ -435,6 +439,7 @@ def __call__(self, data, learners, preprocessor=None, *, callback=None):
435439 preprocessor (Orange.preprocess.Preprocess): preprocessor applied
436440 on training data
437441 callback (Callable): a function called to notify about the progress
442+ suppresses_exceptions (bool): suppress the exceptions if True
438443
439444 Returns:
440445 results (Result): results of testing
@@ -457,7 +462,10 @@ def __call__(self, data, learners, preprocessor=None, *, callback=None):
457462 part_results = []
458463 parts = np .linspace (.0 , .99 , len (learners ) * len (indices ) + 1 )[1 :]
459464 for progress , part in zip (parts , args_iter ):
460- part_results .append (_mp_worker (* (part + ())))
465+ part_results .append (
466+ _mp_worker (* (part + ()),
467+ suppresses_exceptions = suppresses_exceptions )
468+ )
461469 callback (progress )
462470 callback (1 )
463471
@@ -723,7 +731,7 @@ def __new__(cls, data=None, test_data=None, learners=None,
723731 test_data = test_data , ** kwargs )
724732
725733 def __call__ (self , data , test_data , learners , preprocessor = None ,
726- * , callback = None ):
734+ * , callback = None , suppresses_exceptions = True ):
727735 """
728736 Args:
729737 data (Orange.data.Table): training data
@@ -732,6 +740,7 @@ def __call__(self, data, test_data, learners, preprocessor=None,
732740 preprocessor (Orange.preprocess.Preprocess): preprocessor applied
733741 on training data
734742 callback (Callable): a function called to notify about the progress
743+ suppresses_exceptions (bool): suppress the exceptions if True
735744
736745 Returns:
737746 results (Result): results of testing
@@ -746,7 +755,7 @@ def __call__(self, data, test_data, learners, preprocessor=None,
746755 for (learner_i , learner ) in enumerate (learners ):
747756 part_results .append (
748757 _mp_worker (0 , train_data , test_data , learner_i , learner ,
749- self .store_models ))
758+ self .store_models , suppresses_exceptions ))
750759 callback ((learner_i + 1 ) / len (learners ))
751760 callback (1 )
752761
@@ -778,13 +787,14 @@ def __new__(cls, data=None, learners=None, preprocessor=None, **kwargs):
778787 ** kwargs )
779788
780789 def __call__ (self , data , learners , preprocessor = None , * , callback = None ,
781- ** kwargs ):
790+ suppresses_exceptions = True , ** kwargs ):
782791 kwargs .setdefault ("test_data" , data )
783792 # if kwargs contains anything besides test_data, this will be detected
784793 # (and complained about) by super().__call__
785794 return super ().__call__ (
786795 data = data , learners = learners , preprocessor = preprocessor ,
787- callback = callback , ** kwargs )
796+ callback = callback , suppresses_exceptions = suppresses_exceptions ,
797+ ** kwargs )
788798
789799
790800def sample (table , n = 0.7 , stratified = False , replace = False ,
0 commit comments