(self, time_unit)
| 529 | |
| 530 | @pytest.mark.parametrize("time_unit", ["s", "ms", "us", "ns"]) |
| 531 | def test_decode_cf_time_kwargs(self, time_unit) -> None: |
| 532 | ds = Dataset.from_dict( |
| 533 | { |
| 534 | "coords": { |
| 535 | "timedelta": { |
| 536 | "data": np.array([1, 2, 3], dtype="int64"), |
| 537 | "dims": "timedelta", |
| 538 | "attrs": {"units": "days"}, |
| 539 | }, |
| 540 | "time": { |
| 541 | "data": np.array([1, 2, 3], dtype="int64"), |
| 542 | "dims": "time", |
| 543 | "attrs": {"units": "days since 2000-01-01"}, |
| 544 | }, |
| 545 | }, |
| 546 | "dims": {"time": 3, "timedelta": 3}, |
| 547 | "data_vars": { |
| 548 | "a": {"dims": ("time", "timedelta"), "data": np.ones((3, 3))}, |
| 549 | }, |
| 550 | } |
| 551 | ) |
| 552 | |
| 553 | dsc = conventions.decode_cf( |
| 554 | ds, |
| 555 | decode_times=CFDatetimeCoder(time_unit=time_unit), |
| 556 | decode_timedelta=CFTimedeltaCoder( |
| 557 | decode_via_units=True, time_unit=time_unit |
| 558 | ), |
| 559 | ) |
| 560 | assert dsc.timedelta.dtype == np.dtype(f"m8[{time_unit}]") |
| 561 | assert dsc.time.dtype == np.dtype(f"M8[{time_unit}]") |
| 562 | dsc = conventions.decode_cf(ds, decode_times=False) |
| 563 | assert dsc.timedelta.dtype == np.dtype("int64") |
| 564 | assert dsc.time.dtype == np.dtype("int64") |
| 565 | dsc = conventions.decode_cf( |
| 566 | ds, |
| 567 | decode_times=CFDatetimeCoder(time_unit=time_unit), |
| 568 | decode_timedelta=False, |
| 569 | ) |
| 570 | assert dsc.timedelta.dtype == np.dtype("int64") |
| 571 | assert dsc.time.dtype == np.dtype(f"M8[{time_unit}]") |
| 572 | dsc = conventions.decode_cf(ds, decode_times=False, decode_timedelta=True) |
| 573 | assert dsc.timedelta.dtype == np.dtype("m8[ns]") |
| 574 | assert dsc.time.dtype == np.dtype("int64") |
| 575 | |
| 576 | |
| 577 | class CFEncodedInMemoryStore(WritableCFDataStore, InMemoryDataStore): |
nothing calls this directly
no test coverage detected