From 247c0076e4c94982cd571e391cac9b64563c3434 Mon Sep 17 00:00:00 2001 From: nikitakuklev Date: Sun, 10 Mar 2024 21:24:28 -0500 Subject: [PATCH] Add better verification of source df data --- pysdds/readers/readers.py | 2 +- pysdds/structures/structures.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pysdds/readers/readers.py b/pysdds/readers/readers.py index f80dbbc..c764ec3 100644 --- a/pysdds/readers/readers.py +++ b/pysdds/readers/readers.py @@ -266,7 +266,7 @@ def read(filepath: Union[Path, str, IO[bytes]], pages_mask = None sdds = SDDSFile() - sdds.__source_file = str(filepath) + sdds._source_file = str(filepath) logger.debug(f'Opening file "%s"', str(filepath)) #logger.debug(f'Mode (%s), compression (%s), endianness (%s)', mode, compression, endianness) diff --git a/pysdds/structures/structures.py b/pysdds/structures/structures.py index 2ee2482..6780a0d 100644 --- a/pysdds/structures/structures.py +++ b/pysdds/structures/structures.py @@ -969,6 +969,9 @@ def from_df(df_list: List[pd.DataFrame], else: val = df.iloc[:, i].values sdds_type = constants._NUMPY_DTYPES_INV[df.dtypes.iloc[i]] + if sdds_type == object: + if not isinstance(val[0], str): + raise ValueError(f'Column [{c}] is of object type but items are not strings') namelist = {'name': c, 'type': sdds_type} col = Column(namelist, sdds) sdds.columns.append(col) @@ -976,6 +979,7 @@ def from_df(df_list: List[pd.DataFrame], if parameter_dict is not None: for i, (k, v) in enumerate(parameter_dict.items()): + assert isinstance(v, list), f'Data of parameter [{k}] is not a list' assert len(v) == n_pages, f'Length {len(v)} of parameter {k} different from page ' \ f'count {n_pages}' namelist = {'name': k, 'type': constants._PYTHON_TYPE_INV[type(v[0])]}