html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/issues/1970#issuecomment-704053953,https://api.github.com/repos/pydata/xarray/issues/1970,704053953,MDEyOklzc3VlQ29tbWVudDcwNDA1Mzk1Mw==,1217238,2020-10-06T06:15:56Z,2020-10-06T06:15:56Z,MEMBER,I wrote up a proposal for grouping together decoding options into a single argument: https://github.com/pydata/xarray/issues/4490. Feedback would be very welcome!,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,302806158
https://github.com/pydata/xarray/issues/1970#issuecomment-370884840,https://api.github.com/repos/pydata/xarray/issues/1970,370884840,MDEyOklzc3VlQ29tbWVudDM3MDg4NDg0MA==,1217238,2018-03-06T18:43:10Z,2020-06-09T01:20:04Z,MEMBER,"Backend needs that have changed since I drafted an API refactor in https://github.com/pydata/xarray/pull/1087:
- pickle support, required to support backends with dask distributed
- caching for managing open files, required for efficiently loading data from multiple files at once (see `file_manager.py`)
- locking, required for threadsafe operations. Note that xarray backends are only threadsafe _after_ files are opened, not during `open_dataset` (https://github.com/pydata/xarray/issues/4100).
- support for array indexing modes, required for supporting various forms of indexing in xarray
- customized conventions for encoding/decoding data (e.g., required for zarr)
It would be nice to figure out how to abstract away these details from backend authors as much as possible. Most of the ingredients for these features exist in `xarray.backends` (e.g., see `CachingFileManager`), but the lack of a clean-separation between internal and public APIs makes it hard to write backends outside of xarray.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,302806158
https://github.com/pydata/xarray/issues/1970#issuecomment-370921380,https://api.github.com/repos/pydata/xarray/issues/1970,370921380,MDEyOklzc3VlQ29tbWVudDM3MDkyMTM4MA==,1217238,2018-03-06T20:43:29Z,2018-03-06T20:44:18Z,MEMBER,"> What is the role of the netCDF API in the backend API?
A netCDF-like API is a good starting place for xarray backends, since our data model is strongly modeled on netCDF. But that's not quite unambiguous enough for us. There are lots of details like indexing, dtypes and locking that need awareness of both how xarray works *and* the specific backend. So I think we are unlikely to be able to eliminate the need for adapter classes.
> My understanding of the point of h5netcdf was to provide a netCDF-like interface for HDF5, thereby making it easier to interface with xarray.
Yes, this was a large point of h5netcdf, although there are also users of h5netcdf without xarray. The main reason why it's a separate project is facilitate separation of concerns: **xarray backends should be about how to adapt storage systems to work with xarray, not focused on details of another file format**.
h5netcdf is now up to about 1500 lines of code (including tests), and that's definitely big enough that I'm happy I wrote it as a separate project. The full netCDF4 data model turns out to involve a fair amount of nuance.
Alternatively, if adaptation to the netCDF data model is easy (e.g., <100 lines of code), then it may not be worth the separate package. This is currently the case for zarr.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,302806158