Skip to content

Commit 4197e32

Browse files
authored
Merge pull request #340 from davidhassell/dask-filled
dask: `Data.filled`
2 parents ee78e19 + bb10a87 commit 4197e32

File tree

2 files changed

+6
-16
lines changed

2 files changed

+6
-16
lines changed

cf/data/data.py

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9818,9 +9818,10 @@ def soften_mask(self):
98189818
self._map_blocks(cf_soften_mask, dtype=self.dtype)
98199819
self._hardmask = False
98209820

9821+
@daskified(_DASKIFIED_VERBOSE)
98219822
@_inplace_enabled(default=False)
98229823
def filled(self, fill_value=None, inplace=False):
9823-
"""Replace masked elements with the fill value.
9824+
"""Replace masked elements with a fill value.
98249825
98259826
.. versionadded:: 3.4.0
98269827
@@ -9857,25 +9858,17 @@ def filled(self, fill_value=None, inplace=False):
98579858
if fill_value is None:
98589859
fill_value = d.get_fill_value(None)
98599860
if fill_value is None: # still...
9860-
fill_value = default_netCDF_fillvals().get(
9861-
d.dtype.str[1:], None
9862-
)
9861+
fill_value = default_netCDF_fillvals().get(d.dtype.str[1:])
98639862
if fill_value is None and d.dtype.kind in ("SU"):
98649863
fill_value = default_netCDF_fillvals().get("S1", None)
98659864

9866-
if fill_value is None: # should not be None by this stage
9865+
if fill_value is None:
98679866
raise ValueError(
98689867
"Can't determine fill value for "
9869-
"data type {!r}".format(d.dtype.str)
9868+
f"data type {d.dtype.str!r}"
98709869
)
9871-
# --- End: if
9872-
9873-
hardmask = d.hardmask
9874-
d.hardmask = False
9875-
9876-
d.where(d.mask, fill_value, inplace=True)
98779870

9878-
d.hardmask = hardmask
9871+
d._map_blocks(np.ma.filled, fill_value=fill_value, dtype=d.dtype)
98799872

98809873
return d
98819874

cf/test/test_Data.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3627,9 +3627,6 @@ def test_Data_trigonometric_hyperbolic(self):
36273627
# self.assertTrue((e.array == c).all())
36283628
# self.assertTrue((d1.mask.array == c.mask).all())
36293629

3630-
@unittest.skipIf(
3631-
TEST_DASKIFIED_ONLY, "hits 'TODODASK - use harden_mask/soften_mask'"
3632-
)
36333630
def test_Data_filled(self):
36343631
if self.test_only and inspect.stack()[0][3] not in self.test_only:
36353632
return

0 commit comments

Comments
 (0)