Skip to content

Commit 07d7355

Browse files
authored
Merge pull request #932 from Sepehr-A/Bug925-Fix
Bug #925 fix
2 parents b22700e + ee1b366 commit 07d7355

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

suzieq/engines/pandas/topology.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def __init__(self, baseobj):
2929
self.lsdb = pd.DataFrame()
3030
self._a_df = pd.DataFrame()
3131
self._ip_table = pd.DataFrame()
32+
self._namespaces = []
3233

3334
@staticmethod
3435
def table_name():
@@ -77,7 +78,7 @@ class Services:
7778
extra_cols: list
7879
augment: any
7980

80-
self._namespaces = kwargs.get("namespace", self.ctxt.namespace)
81+
self._namespaces = kwargs.get("namespace", self.ctxt.namespace) or []
8182
hostname = kwargs.pop('hostname', [])
8283
user_query = kwargs.pop('query_str', '')
8384
polled = kwargs.pop('polled', '')

suzieq/sqobjects/basicobj.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)