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 1217425815,I_kwDOAMm_X85IkHGX,6524,NumPy `__array_ufunc__` does not work with typing,61316,open,0,,,6,2022-04-27T14:16:00Z,2022-06-05T19:54:47Z,,NONE,,,,"### What is your issue? When using NumPy functions which have been patched to work with xarray objects using `__array_ufunc__`, typing tools like MyPy do not correctly calculate the return value. For example, the function `np.exp` has been adapted by xarray to return a DataArray if it is passed a DataArray, so that code like the following will work: ```python import xarray as xr import numpy as np da = xr.DataArray([1, 2, 3, 4]) blah = np.exp(da).rename(""blah"") ``` This code creates an `xr.DataArray`, uses numpy to calculate the `exp` of its values and then, since it is returned as a `xr.DataArray` it can call xarray methods like `rename` on it. However, running MyPy on this code gives the error: ``` error: ""ndarray[Any, dtype[Any]]"" has no attribute ""rename"" ``` This is because there is typing information from NumPy which claims that `np.exp` returns `ndarray[Any, dtype[Any]]`. Now, I'm unsure whether this is a bug in xarray not providing the typing information to the `__array_ufunc__` code, a bug in NumPy for not having the flexibility to type these overrides or in MyPy for now allowing for overrides like this to happen but I wanted to star with the place where the observed error occurs.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6524/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue