Commit 86563b9
committed
Rewrite DataTree.to_netcdf and support netCDF4 in-memory
This PR includes a handful of significant changes:
1. It refactors the internal structure of `DataTree.to_netcdf()` and
`DataTree.to_zarr()` to use lower level interfaces, rather than
calling `Dataset` methods. This allows for properly supporting
`compute=False` (and likely various other improvements).
2. Reading and writing in-memory data with netCDF4-python is now
supported, including DataTree.
3. The `engine` argument in `DataTree.to_netcdf()` is now set
consistently with `Dataset.to_netcdf()`, preferring `netcdf4` to
`h5netcdf`.
3. Calling `Dataset.to_netcdf()` without a target now always returns a
`memoryview` object, *including* in the case where `engine='scipy'`
is used (which currently returns `bytes`). This is a breaking change,
rather than merely issuing a warning as is done in #10571. I believe
it probably makes sense to do as a this breaking change because (1)
it offers significant performance benefits, (2) the default behavior
without specifying an engine will already change (because `netcdf4`
is preferred to the `scipy` backend) and (3) restoring previous
behavior is easy (by wrapping the memoryview with `bytes()`).
mypy1 parent ea9f02b commit 86563b9
16 files changed
Lines changed: 796 additions & 405 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
96 | 97 | | |
97 | 98 | | |
98 | 99 | | |
| 100 | + | |
99 | 101 | | |
100 | 102 | | |
101 | 103 | | |
| |||
0 commit comments