You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
NetCDF IO cleanup, including in-memory reads/writes with netCDF4 (#10624)
* 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()`).
0 commit comments