1717import json
1818
1919from .custom_exceptions import UnsupportedTypeError , ImproperSizeError
20+ import warnings
2021
2122# FIXME: add support for yaml, xml
2223supported_formats = ['.json' ]
@@ -64,7 +65,11 @@ def serialize_data(filename, hdata: dict, data_table: list, show_path=True, dt_c
6465 # title the entry with name of file (taken from end of path)
6566 title = abs_path .name
6667
67- # first add named columns in dt_cols
68+ # first add data in hddata dict
69+ data .update (hdata )
70+
71+ # second add named columns in dt_cols
72+ # performed second to prioritize overwriting hdata entries with data_table column entries
6873 named_columns = 0 # initial value
6974 max_columns = 1 # higher than named_columns to trigger 'data table' entry
7075 if dt_colnames is not None :
@@ -77,21 +82,18 @@ def serialize_data(filename, hdata: dict, data_table: list, show_path=True, dt_c
7782 for idx in range (num_col_names ):
7883 colname = dt_colnames [idx ]
7984 if colname is not None :
85+ if colname in hdata .keys ():
86+ warnings .warn (f'Entry \' { colname } \' in hdata has been overwritten by a data_table entry.' ,
87+ RuntimeWarning )
8088 data .update ({colname : list (data_table [:, idx ])})
8189 named_columns += 1
8290
83- # second add data in hddata dict
84- data .update (hdata )
85-
8691 # finally add data_table as an entry named 'data table' if not all columns were parsed
8792 if named_columns < max_columns :
88- if 'data table' not in data .keys ():
89- data .update ({'data table' : data_table })
90- else : # if 'data table' is already a key, keep adding primes to the end
91- dt_name = 'data table'
92- while dt_name in data .keys ():
93- dt_name += " prime"
94- data .update ({dt_name : data_table })
93+ if 'data table' in data .keys ():
94+ warnings .warn ('Entry \' data table\' in hdata has been overwritten by data_table.' ,
95+ RuntimeWarning )
96+ data .update ({'data table' : data_table })
9597
9698 # parse name using pathlib and generate dictionary entry
9799 entry = {title : data }
0 commit comments