id,node_id,number,title,user,state,locked,assignee,milestone,comments,created_at,updated_at,closed_at,author_association,active_lock_reason,draft,pull_request,body,reactions,performed_via_github_app,state_reason,repo,type 2024737017,PR_kwDOAMm_X85hGgaB,8520,Allow configuring open_dataset via backend instances,43316012,open,0,,,9,2023-12-04T21:03:12Z,2024-01-14T21:40:38Z,,COLLABORATOR,,0,pydata/xarray/pulls/8520,"Support passing instances of `BackendEntryPoints` as the `engine` argument. Closes #8447 Then instead of passing a long list of options to the `open_dataset` method directly, you can also configure the entrypoint in the constructor and pass it as the engine. It would look something like this: ```python engine = NetCDF4BackendEntrypoint(mode=""a"", clobber=False) ds = xr.open_dataset(""some_file.nc"", engine=engine) ``` While this is actually even more lines of code, the main advantage is to have better discoverability of the options. TODO: - [x] Adapt netcdf4 backend - [x] Adapt h5netcdf backend - [x] Find out if h5netcdf backend should have ""autoclose"" and ""mode"" options (https://github.com/pydata/xarray/pull/8520#pullrequestreview-1769368001_) - [x] What to do with ""decode_vlen_strings"" option in h5netcdf (was this deprecated?) - [x] Adapt zarr backend - [x] Adapt scipy backend - [x] Adapt pydap backend - [ ] `output_grid` seems to be always set to `True`? is this intentional, why not remove it instead? - [x] ~`verify` and `user_charset` are non-existent in pydap?~ > I still had pydap version 3.2, in 3.4 they exist... - [x] typing is only my first impression. Not easy if upstream libs are untyped :/ - [x] ~Adapt pynio backend~ > Won't adapt because deprecated - [x] Fix docstrings to include init options - [x] Check if `lock=True` is allowed > Not allowed, otherwise scipy backend breaks - [ ] Change default to `lock=True` instead of `None`? Maybe a later PR? - [ ] Rename `XXXBackendEntrypoint` > `XXXBackend` ? - [x] ~The `autoclose` argument seems to do nothing?~ > Actually it is used in `BaseNetCDF4Array`, all good - [x] ~Move `group` to open_dataset instead of backend option?~ > Its not really a decoder either. Not sure, for now leave it in the init... - [ ] Improve `_resolve_decoders_kwargs`, this function has a lot of implicit assumtions? Maybe remove `open_dataset_parameters` alltogether? - [x] Add tests for passing backend directly via engine argument - [x] `open_dataset` now has `**kwargs` to support backwards compatibility. Probably we should raise if unsupported stuff is added (i.e. typos) otherwise this could be confusing? (i.e. see test in zarr that checks for deprecated `auto_chunk`)","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8520/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull