@@ -223,6 +223,8 @@ def get(self, **kwargs) -> pd.DataFrame:
223223 elif isinstance (val , str ):
224224 kwargs [k ] = v (val )
225225
226+ # This raises TypeError if it fails
227+ self ._validate_list_args (** kwargs )
226228 result = self .engine .get (** kwargs , columns = columns )
227229 if self ._is_result_empty (result ):
228230 fields = self ._get_empty_cols (columns , 'get' , ** kwargs )
@@ -245,6 +247,8 @@ def summarize(self, **kwargs) -> pd.DataFrame:
245247 raise AttributeError ('No analysis engine specified' )
246248
247249 self .validate_summarize_input (** kwargs )
250+ # This raises TypeError if it fails
251+ self ._validate_list_args (** kwargs )
248252
249253 result = self .engine .summarize (** kwargs )
250254 if self ._is_result_empty (result ):
@@ -284,6 +288,8 @@ def aver(self, **kwargs):
284288 '''Assert one or more checks on table'''
285289 kwargs .pop ('ignore_warning' , None )
286290 columns = kwargs .pop ('columns' , self .columns )
291+ # This raises TypeError if it fails
292+ self ._validate_list_args (** kwargs )
287293 if self ._valid_assert_args :
288294 result = self ._assert_if_supported (** kwargs , columns = columns )
289295 if self ._is_result_empty (result ):
@@ -312,6 +318,8 @@ def top(self, what: str = '', count: int = 5, reverse: bool = False,
312318 df = pd .DataFrame ({'error' : [f'{ error } ' ]})
313319 return df
314320
321+ # This raises TypeError if it fails
322+ self ._validate_list_args (** kwargs )
315323 # This raises ValueError if it fails
316324 table_schema = SchemaForTable (self ._table , self .all_schemas )
317325 if not self ._field_exists (table_schema , what ):
@@ -573,3 +581,18 @@ def _empty_result(self, columns: List[str]) -> pd.DataFrame:
573581 pd.DataFrame: empty dataframe
574582 """
575583 return pd .DataFrame (columns = columns )
584+
585+ def _validate_list_args (self , ** kwargs ):
586+ """Method to ensure specified kwargs are lists."""
587+ # Specify which arguments should be lists
588+ list_args = ['namespace' , 'hostname' ]
589+ for arg in list_args :
590+ if arg not in kwargs or kwargs [arg ] is None :
591+ continue
592+ if not isinstance (kwargs [arg ], list ):
593+ error_msg = (
594+ f"The argument '{ arg } ' must be a List of strings, "
595+ f"got '{ type (kwargs [arg ]).__name__ } ' instead. current "
596+ f"val: { kwargs [arg ]} "
597+ )
598+ raise TypeError (error_msg )
0 commit comments