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/1303#issuecomment-285380106,https://api.github.com/repos/pydata/xarray/issues/1303,285380106,MDEyOklzc3VlQ29tbWVudDI4NTM4MDEwNg==,1197350,2017-03-09T15:18:18Z,2024-02-06T17:57:21Z,MEMBER,Just wanted to link to a somewhat related discussion happening in [brian-rose/climlab#50](https://github.com/climlab/climlab/issues/50).,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,213004586 https://github.com/pydata/xarray/issues/1303#issuecomment-285351087,https://api.github.com/repos/pydata/xarray/issues/1303,285351087,MDEyOklzc3VlQ29tbWVudDI4NTM1MTA4Nw==,1197350,2017-03-09T13:29:01Z,2017-03-09T13:29:01Z,MEMBER,"Have you considered implementing a custom datastore for your model? Datastores just have to provide variables. This might be the most straightforward option. > On Mar 9, 2017, at 6:07 AM, Benoit Bovy wrote: > > Is it safe to use xarray.core.variable.as_variable() externally? I guess that currently it is not. > > I have a specific use case where this would be very useful. > > I'm working on a package that heavily uses and extends xarray for landscape evolution modeling, and inside a custom class for model parameters I want to be able to create xarray.Variable objects on the fly from any provided object, e.g., a scalar value, an array-like, a (dims, data[, attrs]) tuple, another xarray.Variable, a xarray.DataArray... exactly what xarray.core.variable.as_variable() does. > > Although I know that Variable objects are not needed in most use cases, in this specific case a clean solution would be the following > > import xarray as xr > > class Parameter(object): > > def to_variable(self, obj): > return xr.as_variable(obj) > # ... some validation logic on, e.g., data type, value bounds, dimensions... > # ... add default attributes to the > I don't think it is a viable option to copy as_variable() and all its dependent code in my package as it seems to have quite a lot of logic implemented. > > A workaround using only public API would be something like: > > class Parameter(object): > > def to_variable(self, obj): > return xr.Dataset(data_vars={'v': obj}).variables['v'] > but it feels a bit hacky. > > — > You are receiving this because you are subscribed to this thread. > Reply to this email directly, view it on GitHub, or mute the thread. > ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,213004586