Skip to content

Commit c872d57

Browse files
committed
Use h5py.string_dtype() for all string arrays
1 parent 7db9727 commit c872d57

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

Orange/data/io.py

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

Comments
 (0)