Skip to content

Commit 887e1cf

Browse files
Handle missing fillvalue raised by gpm-imerg in #342.
1 parent 105b43d commit 887e1cf

File tree

1 file changed

+19
-6
lines changed
  • virtualizarr/readers/hdf

1 file changed

+19
-6
lines changed

virtualizarr/readers/hdf/hdf.py

+19-6
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,20 @@ def _extract_attrs(h5obj: Union[Dataset, Group]):
247247
attrs[n] = v
248248
return attrs
249249

250+
@staticmethod
251+
def _extract_fill_value(
252+
fill_value: Union[np.ndarray, np.nan, np.generic, None],
253+
) -> Union[int, float, None]:
254+
if not fill_value:
255+
return fill_value
256+
if isinstance(fill_value, np.ndarray):
257+
fillvalue = fill_value[0]
258+
if np.isnan(fill_value):
259+
fillvalue = float("nan")
260+
if isinstance(fill_value, np.generic):
261+
fillvalue = fill_value.item()
262+
return fillvalue
263+
250264
@staticmethod
251265
def _dataset_to_variable(path: str, dataset: Dataset) -> Optional[Variable]:
252266
"""
@@ -279,12 +293,11 @@ def _dataset_to_variable(path: str, dataset: Dataset) -> Optional[Variable]:
279293
else:
280294
dtype = dataset.dtype
281295
fill_value = dataset.fillvalue
282-
if isinstance(fill_value, np.ndarray):
283-
fill_value = fill_value[0]
284-
if np.isnan(fill_value):
285-
fill_value = float("nan")
286-
if isinstance(fill_value, np.generic):
287-
fill_value = fill_value.item()
296+
try:
297+
fill_value = dataset.fillvalue
298+
except Exception:
299+
fill_value = None
300+
fill_value = HDFVirtualBackend._extract_fill_value(fill_value=fill_value)
288301
filters = [codec.get_config() for codec in codecs]
289302
zarray = ZArray(
290303
chunks=chunks, # type: ignore

0 commit comments

Comments
 (0)