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/pull/6232#issuecomment-1048608502,https://api.github.com/repos/pydata/xarray/issues/6232,1048608502,IC_kwDOAMm_X84-gH72,10194086,2022-02-23T09:51:31Z,2022-02-23T09:51:41Z,MEMBER,"This change makes sense (although I never thought of a custom function copying the attrs). Thanks for your contribution @lpilz and welcome to xarray!","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1121761078 https://github.com/pydata/xarray/pull/6232#issuecomment-1027833819,https://api.github.com/repos/pydata/xarray/issues/6232,1027833819,IC_kwDOAMm_X849Q3_b,14808389,2022-02-02T11:13:09Z,2022-02-02T14:14:53Z,MEMBER,"you can control the behavior using `keep_attrs`, either globally using `set_options` or by passing it to the call: ```python assert air.map(np.mean, keep_attrs=True).air.attrs != {} ``` so the docs change does make sense to me","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1121761078 https://github.com/pydata/xarray/pull/6232#issuecomment-1027925460,https://api.github.com/repos/pydata/xarray/issues/6232,1027925460,IC_kwDOAMm_X849ROXU,14276158,2022-02-02T13:10:10Z,2022-02-02T13:12:44Z,CONTRIBUTOR,"@mathause You are right in the general case. The function we were working with copied the attributes, but the standard behavior of `map` is to not explicitly add the attributes for dataset and variables. However, they are also not explicitly deleted after applying `func`, so `func` is able to modify them. So i still feel writing `the new object will be returned without attributes.` is misleading. I updated my proposed change. ``` import xarray as xr air = xr.tutorial.open_dataset(""air_temperature"") def func(da): ret = da.copy(data=da.data) del ret.attrs['units'] return ret assert 'units' not in air.map(func, keep_attrs=False).air.attrs assert air.map(func, keep_attrs=False).air.attrs != {} ``` ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1121761078 https://github.com/pydata/xarray/pull/6232#issuecomment-1027825483,https://api.github.com/repos/pydata/xarray/issues/6232,1027825483,IC_kwDOAMm_X849Q19L,10194086,2022-02-02T11:05:26Z,2022-02-02T11:05:26Z,MEMBER,"Looks like this depends on the applied function - can you give an example where it keeps the `attrs`? ``` import xarray as xr import numpy as np air = xr.tutorial.open_dataset(""air_temperature"") assert air.air.attrs != {} air.map(np.mean) assert air.map(np.mean).air.attrs == {} ``` (maybe we should adapt the code instead of the docstring) ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1121761078