@@ -148,8 +148,8 @@ class Plan(BaseConsoleEvent):
148148@dataclass (kw_only = True )
149149class LogTestResults (BaseConsoleEvent ):
150150 result : unittest .result .TestResult
151- output : str | None
152151 target_dialect : str
152+ output : str | None = None
153153
154154@dataclass (kw_only = True )
155155class ShowSQL (BaseConsoleEvent ):
@@ -298,7 +298,7 @@ def __init_subclass__(cls):
298298 for known_event in known_events_classes :
299299 assert inspect .isclass (known_event ), "event must be a class"
300300 known_events .append (known_event .__name__ )
301-
301+
302302
303303 # Iterate through all the available abstract methods in console
304304 for method_name in Console .__abstractmethods__ :
@@ -314,7 +314,7 @@ def __init_subclass__(cls):
314314 # events has it's values checked. The dataclass should define the
315315 # required fields and everything else should be sent to a catchall
316316 # argument in the dataclass for the event
317-
317+
318318 # Convert method name from snake_case to camel case
319319 camel_case_method_name = "" .join (
320320 word .capitalize ()
@@ -352,6 +352,24 @@ def create_signatures_and_params(cls, signature: inspect.Signature):
352352 func_signature .append ("self" )
353353 continue
354354
355+ # Handle *args
356+ if param .kind == inspect .Parameter .VAR_POSITIONAL :
357+ param_type_name = param .annotation
358+ if not isinstance (param_type_name , str ):
359+ param_type_name = param_type_name .__name__
360+ func_signature .append (f"*{ param_name } : '{ param_type_name } '" )
361+ call_params .append (f"*{ param_name } " )
362+ continue
363+
364+ # Handle **kwargs
365+ if param .kind == inspect .Parameter .VAR_KEYWORD :
366+ param_type_name = param .annotation
367+ if not isinstance (param_type_name , str ):
368+ param_type_name = param_type_name .__name__
369+ func_signature .append (f"**{ param_name } : '{ param_type_name } '" )
370+ call_params .append (f"**{ param_name } " )
371+ continue
372+
355373 if param .default is inspect ._empty :
356374 param_type_name = param .annotation
357375 if not isinstance (param_type_name , str ):
@@ -389,7 +407,7 @@ def __init__(self, log_override: logging.Logger | None = None) -> None:
389407 def publish_known_event (self , event_name : str , ** kwargs : t .Any ) -> None :
390408 console_event = get_console_event_by_name (event_name )
391409 assert console_event is not None , f"Event { event_name } not found"
392-
410+
393411 expected_kwargs_fields = console_event .__dataclass_fields__
394412 expected_kwargs : dict [str , t .Any ] = {}
395413 unknown_args : dict [str , t .Any ] = {}
@@ -398,7 +416,7 @@ def publish_known_event(self, event_name: str, **kwargs: t.Any) -> None:
398416 unknown_args [key ] = value
399417 else :
400418 expected_kwargs [key ] = value
401-
419+
402420 event = console_event (** expected_kwargs , unknown_args = unknown_args )
403421
404422 self .publish (event )
@@ -424,7 +442,7 @@ def add_handler(self, handler: ConsoleEventHandler) -> str:
424442
425443 def remove_handler (self , handler_id : str ) -> None :
426444 del self ._handlers [handler_id ]
427-
445+
428446
429447class EventConsole (IntrospectingConsole ):
430448 """
0 commit comments