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 831008649,MDExOlB1bGxSZXF1ZXN0NTkyNDM0MDEy,5033,Allow using a custom engine class directly in xr.open_dataset,14371165,closed,0,,,13,2021-03-13T22:12:39Z,2021-05-18T18:16:28Z,2021-04-15T02:02:04Z,MEMBER,,0,pydata/xarray/pulls/5033," - [x] Closes #4838 - [x] Tests added - [x] Passes `pre-commit run --all-files` ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/5033/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 791725552,MDU6SXNzdWU3OTE3MjU1NTI=,4838,Simplify adding custom backends,14371165,closed,0,,,0,2021-01-22T06:02:53Z,2021-04-15T02:02:03Z,2021-04-15T02:02:03Z,MEMBER,,,," **Is your feature request related to a problem? Please describe.** I've been working on opening custom hdf formats in xarray, reading up on the apiv2 it is currently only possible to declare a new external plugin in setup.py but that doesn't seem easy or intuitive to me. **Describe the solution you'd like** Why can't we simply be allowed to add functions to the engine parameter? Example: ```python from custom_backend import engine ds = xr.load_dataset(filename, engine=engine) ``` This seems like a small function change to me from my initial _quick_ look because there's mainly a bunch of string checks in the normal case until we get to the registered backend functions, if we send in a function instead in the engine-parameter we can just bypass those checks. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/4838/reactions"", ""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue