home / github / issues

Menu
  • Search all tables
  • GraphQL API

issues: 168876028

This data as json

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
168876028 MDU6SXNzdWUxNjg4NzYwMjg= 933 rc 0.8: register_dataset_accessor silently ignores AttributeError 10050469 closed 0     3 2016-08-02T12:44:46Z 2016-08-03T06:51:22Z 2016-08-03T06:51:22Z MEMBER      

If an AttributeError is raised at construction time by the accessor, it will be ignored silently:

``` python import xarray as xr

@xr.register_dataset_accessor('stupid_accessor') class GeoAccessor(object): def init(self, xarray_obj): self._obj = xarray_obj
raise AttributeError('Ups')

def plot(self):
    """Plot data on a map."""
    return 'plotting!'

ds = xr.Dataset({'longitude': np.linspace(0, 10), 'latitude': np.linspace(0, 20)}) ds.stupid_accessor.plot() ```

Will raise:

``` AttributeError Traceback (most recent call last) <ipython-input-1-b47ffc33cff2> in <module>() 12 13 ds = xr.Dataset({'longitude': np.linspace(0, 10), 'latitude': np.linspace(0, 20)}) ---> 14 ds.stupid_accessor.plot()

/home/mowglie/.pyvirtualenvs/py3/lib/python3.4/site-packages/xarray/core/common.py in getattr(self, name) 192 return source[name] 193 raise AttributeError("%r object has no attribute %r" % --> 194 (type(self).name, name)) 195 196 def setattr(self, name, value):

AttributeError: 'Dataset' object has no attribute 'stupid_accessor' ```

The problem with this error message is that it doesn't tell you that the problem is in your code.

Interestingly, raising other exceptions like RuntimeError will result in the more informative traceback:

``` RuntimeError Traceback (most recent call last) <ipython-input-1-b575d0257332> in <module>() 12 13 ds = xr.Dataset({'longitude': np.linspace(0, 10), 'latitude': np.linspace(0, 20)}) ---> 14 ds.stupid_accessor.plot()

/home/mowglie/.pyvirtualenvs/py3/lib/python3.4/site-packages/xarray/core/extensions.py in get(self, obj, cls) 17 # we're accessing the attribute of the class, i.e., Dataset.geo 18 return self._accessor ---> 19 accessor_obj = self._accessor(obj) 20 # Replace the property with the accessor object. Inspired by: 21 # http://www.pydanny.com/cached-property.html

<ipython-input-1-b575d0257332> in init(self, xarray_obj) 5 def init(self, xarray_obj): 6 self._obj = xarray_obj ----> 7 raise RuntimeError('Ups') 8 9 def plot(self):

RuntimeError: Ups ```

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/933/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed 13221727 issue

Links from other tables

  • 0 rows from issues_id in issues_labels
  • 3 rows from issue in issue_comments
Powered by Datasette · Queries took 0.59ms · About: xarray-datasette