diff --git a/cf/data/data.py b/cf/data/data.py index a1be420377..6ce102bc6d 100644 --- a/cf/data/data.py +++ b/cf/data/data.py @@ -34,7 +34,6 @@ abspath, ) from ..functions import atol as cf_atol -from ..functions import chunksize as cf_chunksize from ..functions import default_netCDF_fillvals from ..functions import fm_threshold as cf_fm_threshold from ..functions import free_memory @@ -9575,6 +9574,7 @@ def change_calendar(self, calendar, inplace=False, i=False): return d + @daskified(_DASKIFIED_VERBOSE) @_deprecated_kwarg_check("i") @_inplace_enabled(default=False) def override_units(self, units, inplace=False, i=False): @@ -9598,27 +9598,28 @@ def override_units(self, units, inplace=False, i=False): :Returns: `Data` or `None` + The new data, or `None` if the operation was in-place. **Examples** >>> d = cf.Data(1012.0, 'hPa') - >>> d.override_units('km') - >>> d.Units + >>> e = d.override_units('km') + >>> e.Units - >>> d.datum(0) + >>> e.datum() 1012.0 - >>> d.override_units(Units('watts')) + >>> d.override_units(cf.Units('watts'), inplace=True) >>> d.Units - >>> d.datum(0) + >>> d.datum() 1012.0 """ d = _inplace_enabled_define_and_cleanup(self) d._Units = Units(units) - return d + @daskified(_DASKIFIED_VERBOSE) @_deprecated_kwarg_check("i") @_inplace_enabled(default=False) def override_calendar(self, calendar, inplace=False, i=False): @@ -9642,13 +9643,23 @@ def override_calendar(self, calendar, inplace=False, i=False): :Returns: `Data` or `None` + The new data, or `None` if the operation was in-place. **Examples** + >>> d = cf.Data(1, 'days since 2020-02-28') + >>> d + + >>> d.datum() + 1 + >>> e = d.override_calendar('noleap') + + >>> e.datum() + 1 + """ d = _inplace_enabled_define_and_cleanup(self) d._Units = Units(d.Units._units, calendar) - return d def to_dask_array(self): diff --git a/cf/test/test_Data.py b/cf/test/test_Data.py index bf9d1c9ba6..1a9b62cf58 100644 --- a/cf/test/test_Data.py +++ b/cf/test/test_Data.py @@ -3835,6 +3835,22 @@ def test_Data_fill_value(self): del d.fill_value self.assertIsNone(d.fill_value) + def test_Data_override_units(self): + d = cf.Data(1012, "hPa") + e = d.override_units("km") + self.assertEqual(e.Units, cf.Units("km")) + self.assertEqual(e.datum(), d.datum()) + + self.assertIsNone(d.override_units(cf.Units("watts"), inplace=True)) + + def test_Data_override_calendar(self): + d = cf.Data(1, "days since 2020-02-28") + e = d.override_calendar("noleap") + self.assertEqual(e.Units, cf.Units("days since 2020-02-28", "noleap")) + self.assertEqual(e.datum(), d.datum()) + + self.assertIsNone(d.override_calendar("all_leap", inplace=True)) + if __name__ == "__main__": print("Run date:", datetime.datetime.now())