@@ -596,18 +596,19 @@ def parse(attr):
596596 f .attrs ['Orange_version' ] = ORANGE_VERSION
597597 f .attrs ['HDF5_Version' ] = h5py .version .hdf5_version
598598 f .attrs ['h5py_version' ] = h5py .version .version
599+ str_dtype = h5py .string_dtype ()
599600 for subdomain in ['attributes' , 'class_vars' , 'metas' ]:
600601 parsed = [parse (feature ) for feature in getattr (data .domain , subdomain )]
601- domain = np .array ([[name , header ] for name , header , _ in parsed ], 'S' )
602- domain_args = np .array ([json .dumps (args ) for * _ , args in parsed ], 'S' )
602+ domain = np .array ([[name , header ] for name , header , _ in parsed ], dtype = str_dtype )
603+ domain_args = np .array ([json .dumps (args ) for * _ , args in parsed ], dtype = str_dtype )
603604 f .create_dataset (f'domain/{ subdomain } ' , data = domain )
604605 f .create_dataset (f'domain/{ subdomain } _args' , data = domain_args )
605606 f .create_dataset ("X" , data = data .X )
606607 if data .Y .size :
607608 f .create_dataset ("Y" , data = data .Y )
608609 if data .metas .size :
609610 for i , attr in enumerate (data .domain .metas ):
610- col_type = h5py . string_dtype () if isinstance (attr , StringVariable ) else 'f'
611+ col_type = str_dtype if isinstance (attr , StringVariable ) else 'f'
611612 col_data = data .metas [:, [i ]].astype (col_type )
612613 if col_type != 'f' :
613614 col_data [pd .isnull (col_data )] = ""
0 commit comments