Skip to content

Commit fb0a864

Browse files
committed
confirm if units satisfy pint.
1 parent bf3f4fb commit fb0a864

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/pynxtools/dataconverter/writer.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
)
3636

3737
logger = logging.getLogger("pynxtools") # pylint: disable=C0103
38-
38+
ureg = pint.UnitRegistry()
3939

4040
def does_path_exist(path, h5py_obj) -> bool:
4141
"""Returns true if the requested path exists in the given h5py object."""
@@ -260,9 +260,21 @@ def _put_data_into_hdf5(self):
260260
def add_units_key(dataset, path):
261261
units_key = f"{path}/@units"
262262
units = self.data.get(units_key, None)
263-
units = str(units) if isinstance(units, pint.Unit) else units
264-
if units:
265-
dataset.attrs["units"] = units
263+
if units is None:
264+
return
265+
if isinstance(units, pint.Unit):
266+
units = str(units)
267+
else:
268+
try:
269+
ureg.Unit(units)
270+
except pint.errors.UndefinedUnitError as exc:
271+
massage = (
272+
f"Units provided for path: '{path}@units' are not valid."
273+
f" Please provide a valid unit."
274+
)
275+
raise InvalidDictProvided(massage) from exc
276+
277+
dataset.attrs["units"] = units
266278

267279
for path, value in self.data.items():
268280
try:

0 commit comments

Comments
 (0)