@@ -289,11 +289,17 @@ def show_row_diff(
289289
290290class BaseConsole (abc .ABC ):
291291 @abc .abstractmethod
292- def log_error (self , message : str ) -> None :
292+ def log_error (self , message : str , * args : t . Any , ** kwargs : t . Any ) -> None :
293293 """Display error info to the user."""
294294
295295 @abc .abstractmethod
296- def log_warning (self , short_message : str , long_message : t .Optional [str ] = None ) -> None :
296+ def log_warning (
297+ self ,
298+ short_message : str ,
299+ long_message : t .Optional [str ] = None ,
300+ * args : t .Any ,
301+ ** kwargs : t .Any ,
302+ ) -> None :
297303 """Display warning info to the user.
298304
299305 Args:
@@ -3082,15 +3088,23 @@ def consume_captured_errors(self) -> str:
30823088 finally :
30833089 self ._errors = []
30843090
3085- def log_warning (self , short_message : str , long_message : t .Optional [str ] = None ) -> None :
3091+ def log_warning (
3092+ self ,
3093+ short_message : str ,
3094+ long_message : t .Optional [str ] = None ,
3095+ * args : t .Any ,
3096+ ** kwargs : t .Any ,
3097+ ) -> None :
30863098 if short_message not in self ._warnings :
30873099 self ._warnings .append (short_message )
3088- super ().log_warning (short_message , long_message )
3100+ if kwargs .pop ("print" , True ):
3101+ super ().log_warning (short_message , long_message )
30893102
3090- def log_error (self , message : str ) -> None :
3103+ def log_error (self , message : str , * args : t . Any , ** kwargs : t . Any ) -> None :
30913104 if message not in self ._errors :
30923105 self ._errors .append (message )
3093- super ().log_error (message )
3106+ if kwargs .pop ("print" , True ):
3107+ super ().log_error (message )
30943108
30953109 def log_skipped_models (self , snapshot_names : t .Set [str ]) -> None :
30963110 if snapshot_names :
@@ -3127,6 +3141,11 @@ def __init__(self, **kwargs: t.Any) -> None:
31273141 kwargs .pop ("alert_block_collapsible_threshold" , 200 )
31283142 )
31293143
3144+ # capture_only = True: capture but dont print to console
3145+ # capture_only = False: capture and also print to console
3146+ self .warning_capture_only = kwargs .pop ("warning_capture_only" , False )
3147+ self .error_capture_only = kwargs .pop ("error_capture_only" , False )
3148+
31303149 super ().__init__ (
31313150 ** {** kwargs , "console" : RichConsole (no_color = True , width = kwargs .pop ("width" , None ))}
31323151 )
@@ -3401,6 +3420,12 @@ def stop_promotion_progress(self, success: bool = True) -> None:
34013420 super ().stop_promotion_progress (success )
34023421 self ._print ("\n " )
34033422
3423+ def log_warning (self , short_message : str , long_message : t .Optional [str ] = None ) -> None :
3424+ super ().log_warning (short_message , long_message , print = not self .warning_capture_only )
3425+
3426+ def log_error (self , message : str ) -> None :
3427+ super ().log_error (message , print = not self .error_capture_only )
3428+
34043429 def log_success (self , message : str ) -> None :
34053430 self ._print (message )
34063431
@@ -3427,19 +3452,24 @@ def log_test_results(self, result: ModelTextTestResult, target_dialect: str) ->
34273452
34283453 def log_skipped_models (self , snapshot_names : t .Set [str ]) -> None :
34293454 if snapshot_names :
3430- msg = " " + "\n " .join (snapshot_names )
3431- self ._print (f"**Skipped models**\n \n { msg } " )
3455+ self ._print (f"**Skipped models**" )
3456+ for snapshot_name in snapshot_names :
3457+ self ._print (f"* `{ snapshot_name } `" )
3458+ self ._print ("" )
34323459
34333460 def log_failed_models (self , errors : t .List [NodeExecutionFailedError ]) -> None :
34343461 if errors :
3435- self ._print ("\n ``` \n Failed models\n " )
3462+ self ._print ("**Failed models** " )
34363463
34373464 error_messages = _format_node_errors (errors )
34383465
34393466 for node_name , msg in error_messages .items ():
3440- self ._print (f" **{ node_name } **\n \n { msg } " )
3467+ self ._print (f"* `{ node_name } `\n " )
3468+ self ._print (" ```" )
3469+ self ._print (msg )
3470+ self ._print (" ```" )
34413471
3442- self ._print ("``` \n " )
3472+ self ._print ("" )
34433473
34443474 def show_linter_violations (
34453475 self , violations : t .List [RuleViolation ], model : Model , is_error : bool = False
0 commit comments