home / github / issue_comments

Menu
  • Search all tables
  • GraphQL API

issue_comments: 139239983

This data as json

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/567#issuecomment-139239983 https://api.github.com/repos/pydata/xarray/issues/567 139239983 MDEyOklzc3VlQ29tbWVudDEzOTIzOTk4Mw== 950575 2015-09-10T13:50:12Z 2015-09-10T13:50:12Z CONTRIBUTOR

How about the function below? (Stolen from pyaxiom.)

``` python def get_variables_by_attributes(ds, strict=False, **kwargs): """ Returns variables that match specific conditions. * Can pass in key=value parameters and variables are returned that contain all of the matches. ex.: vs = nc.get_variables_by_attributes(axis='X') * Can pass in key=callable parameter and if the callable returns True. The callable should accept a single parameter, the attribute value. None is returned as the attribute valuewhen the attribute does not exist on the variable. ex.: # Get Axis variables vs = nc.get_variables_by_attributes(axis=lambda v: v in ['X', 'Y', 'Z', 'T']) # Get variable that don't have a "axis" attribute vs = nc.get_variables_by_attributes(axis=lambda v: v is None) # Get variable that have a "grid_mapping" attribute vs = nc.get_variables_by_attributes(axis=lambda v: v is not None)

* strict : True/False
    If True will return only 1 variable if only one is found. Default is False.
"""
vs = []

has_value_flag  = False
for vname, var in ds.iteritems():
    for k, v in kwargs.items():
        if callable(v):
            has_value_flag = v(getattr(var, k, None))
            if has_value_flag is False:
                break
        elif hasattr(var, k) and getattr(var, k) == v:
            has_value_flag = True
        else:
            has_value_flag = False
            break

    if has_value_flag is True:
        vs.append(ds[vname])

if strict:
    if len(vs) == 1:
        vs = vs[0]
    else:
        msg = "Expected only one variable.  Got {!r}".format
        raise ValueError(msg(vs))
return vs

```

See it in action here.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  105688738
Powered by Datasette · Queries took 0.657ms · About: xarray-datasette