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/4309#issuecomment-747055666,https://api.github.com/repos/pydata/xarray/issues/4309,747055666,MDEyOklzc3VlQ29tbWVudDc0NzA1NTY2Ng==,226037,2020-12-16T21:35:57Z,2020-12-16T21:35:57Z,MEMBER,"I'm looking at other bits of knowledge of how backends work that are still present in the generic parts of `open_dataset`. We see `_autodetect_engine` and `_normalize_path`. We aim at removing `_autodetect_engine` in favour of adding a new `can_open(filename_or_obj, ...)` backend function declared via the plugin interface. On the other hand `_normalize_path` can be removed entirely once `ZarrStore.open_group` will accept `os.PathLike` objects.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,672912921 https://github.com/pydata/xarray/issues/4309#issuecomment-697952300,https://api.github.com/repos/pydata/xarray/issues/4309,697952300,MDEyOklzc3VlQ29tbWVudDY5Nzk1MjMwMA==,226037,2020-09-23T20:23:17Z,2020-09-24T15:12:18Z,MEMBER,"@shoyer & @jhamman just to give you an idea, I aim to see `open_dataset` reduced to the following: ```python def open_dataset(filename_or_obj, *, engine=None, chunks=None, cache=None, backend_kwargs=None, **kwargs): filename_or_obj = nomalize_filename_or_obj(filename_or_obj) if engine is None: engine = autodetect_engine(filename_or_obj) open_backend_dataset = get_opener(engine) backend_ds = open_backend_dataset(filename_or_obj, **backend_kwargs, **kwargs) ds = dataset_from_backend_dataset( backend_ds, chunks, cache, filename_or_obj=filename_or_obj, **kwargs ) return ds ``` Where the key observation is that `backend_ds` variable must be either `np.ndarray` or subclasses of `BackendArray`. That is backend should not be concerned with the in-memory representation of the variables, so they know nothign about `dask`, cache behaviour, etc. (@shoyer this was addressed briefly today)","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,672912921 https://github.com/pydata/xarray/issues/4309#issuecomment-685928460,https://api.github.com/repos/pydata/xarray/issues/4309,685928460,MDEyOklzc3VlQ29tbWVudDY4NTkyODQ2MA==,226037,2020-09-02T18:46:58Z,2020-09-02T18:55:52Z,MEMBER,"@shoyer and @jhamman, I'm looking into the write support and if we let a backend return a `xr.Dataset`, as agreed, we lose the ability to support in-place change of a file, no update of attributes or `mode='a'`, unless the backend has a unambiguous way to identify persistent `xr.Dataset`. I'm not sure what options for in-place change are supported, but I see at least `mode='a'` for zarr. Let's discuss this tomorrow.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,672912921 https://github.com/pydata/xarray/issues/4309#issuecomment-679950009,https://api.github.com/repos/pydata/xarray/issues/4309,679950009,MDEyOklzc3VlQ29tbWVudDY3OTk1MDAwOQ==,226037,2020-08-25T10:46:48Z,2020-08-25T10:46:48Z,MEMBER,"We agreed with @shoyer to go with proposal 3 for reading: the backends will return a fully build `xr.Dataset` Among other advantages this reduces the amount of backend-specific documentation as the documentation of `xr.Dataset` and `xr.Variable` already contains almost all that is needed by backend developers. The one bit of documentation that needs addressing is the use of `BackendArray` as the `data` argument for `xr.Variable`.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,672912921 https://github.com/pydata/xarray/issues/4309#issuecomment-669247250,https://api.github.com/repos/pydata/xarray/issues/4309,669247250,MDEyOklzc3VlQ29tbWVudDY2OTI0NzI1MA==,226037,2020-08-05T15:05:08Z,2020-08-05T15:05:08Z,MEMBER,Note that the above proposals only address the *store* / *encoding* part the backend API. We will address the `BackendArray` part later and I expect it to be trickier.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,672912921