Skip to content

Commit 314cb26

Browse files
authored
Fix open_datatree when decode_cf=False (#10141)
* test: update render of simple_datatree * bugfix: correctly propagate decode_cf=False for datatrees
1 parent 380b6b1 commit 314cb26

File tree

3 files changed

+40
-22
lines changed

3 files changed

+40
-22
lines changed

xarray/backends/api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1119,7 +1119,7 @@ def open_datatree(
11191119

11201120
decoders = _resolve_decoders_kwargs(
11211121
decode_cf,
1122-
open_backend_dataset_parameters=(),
1122+
open_backend_dataset_parameters=backend.open_dataset_parameters,
11231123
mask_and_scale=mask_and_scale,
11241124
decode_times=decode_times,
11251125
decode_timedelta=decode_timedelta,

xarray/tests/conftest.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -164,27 +164,27 @@ def create_test_datatree():
164164
Create a test datatree with this structure:
165165
166166
<xarray.DataTree>
167-
|-- set1
168-
| |-- <xarray.Dataset>
169-
| | Dimensions: ()
170-
| | Data variables:
171-
| | a int64 0
172-
| | b int64 1
173-
| |-- set1
174-
| |-- set2
175-
|-- set2
176-
| |-- <xarray.Dataset>
177-
| | Dimensions: (x: 2)
178-
| | Data variables:
179-
| | a (x) int64 2, 3
180-
| | b (x) int64 0.1, 0.2
181-
| |-- set1
182-
|-- set3
183-
|-- <xarray.Dataset>
184-
| Dimensions: (x: 2, y: 3)
185-
| Data variables:
186-
| a (y) int64 6, 7, 8
187-
| set0 (x) int64 9, 10
167+
Group: /
168+
Dimensions: (y: 3, x: 2)
169+
Dimensions without coordinates: y, x
170+
Data variables:
171+
a (y) int64 24B 6 7 8
172+
set0 (x) int64 16B 9 10
173+
├── Group: /set1
174+
│ Dimensions: ()
175+
│ │ Data variables:
176+
│ a int64 8B 0
177+
b int64 8B 1
178+
├── Group: /set1/set1
179+
└── Group: /set1/set2
180+
├── Group: /set2
181+
│ Dimensions: (x: 2)
182+
│ │ Dimensions without coordinates: x
183+
│ │ Data variables:
184+
│ a (x) int64 16B 2 3
185+
│ b (x) float64 16B 0.1 0.2
186+
└── Group: /set2/set1
187+
└── Group: /set3
188188
189189
The structure has deliberately repeated names of tags, variables, and
190190
dimensions in order to better check for bugs caused by name conflicts.

xarray/tests/test_backends_datatree.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,24 @@ def test_to_netcdf(self, tmpdir, simple_datatree):
164164
assert roundtrip_dt._close is not None
165165
assert_equal(original_dt, roundtrip_dt)
166166

167+
def test_decode_cf(self, tmpdir):
168+
filepath = tmpdir / "test-cf-convention.nc"
169+
original_dt = xr.DataTree(
170+
xr.Dataset(
171+
{
172+
"test": xr.DataArray(
173+
data=np.array([0, 1, 2], dtype=np.uint16),
174+
attrs={"_FillValue": 99},
175+
),
176+
}
177+
)
178+
)
179+
original_dt.to_netcdf(filepath, engine=self.engine)
180+
with open_datatree(
181+
filepath, engine=self.engine, decode_cf=False
182+
) as roundtrip_dt:
183+
assert original_dt["test"].dtype == roundtrip_dt["test"].dtype
184+
167185
def test_to_netcdf_inherited_coords(self, tmpdir):
168186
filepath = tmpdir / "test.nc"
169187
original_dt = DataTree.from_dict(

0 commit comments

Comments
 (0)