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/3315#issuecomment-584975960,https://api.github.com/repos/pydata/xarray/issues/3315,584975960,MDEyOklzc3VlQ29tbWVudDU4NDk3NTk2MA==,10554254,2020-02-12T01:46:00Z,2020-02-12T01:46:00Z,NONE,"Few observations after looking at the default flags for `concat`: ```python xr.concat( objs, dim, data_vars='all', coords='different', compat='equals', positions=None, fill_value=, join='outer', ) ``` The description of `compat='equals'` indicates combining DataArrays with different names should fail: `'equals': all values and dimensions must be the same.` (though I am not entirely sure what is meant by `values`... I assume this perhaps generically means `keys`?) Another option is `compat='identical'` which is described as: `'identical': all values, dimensions and attributes must be the same.` Using this flag will cause the operation to fail, as one would expect from the description... ```python objs = [xr.DataArray([0], dims='x', name='a'), xr.DataArray([1], dims='x', name='b')] xr.concat(objs, dim='x', compat='identical') ``` ```python ValueError: array names not identical ``` ... and is the case for `concat` on Datasets, as previously shown by @TomNicholas ``` objs = [xr.Dataset({'a': ('x', [0])}), xr.Dataset({'b': ('x', [0])})] xr.concat(objs, dim='x') ``` ```python ValueError: 'a' is not present in all datasets. ``` However, `'identical': all values, dimensions and **attributes** must be the same.` doesn't quite seem to be the case for DataArrays, as ```python objs = [xr.DataArray([0], dims='x', name='a', attrs={'foo':1}), xr.DataArray([1], dims='x', name='a', attrs={'bar':2})] xr.concat(objs, dim='x', compat='identical') ``` succeeds with ```python array([0, 1]) Dimensions without coordinates: x Attributes: foo: 1 ``` but again fails on Datasets, as one would expect from the description. ```python ds1 = xr.Dataset({'a': ('x', [0])}) ds1.attrs['foo'] = 'example attribute' ds2 = xr.Dataset({'a': ('x', [1])}) ds2.attrs['bar'] = 'example attribute' objs = [ds1,ds2] xr.concat(objs, dim='x',compat='identical') ``` ```python ValueError: Dataset global attributes not equal. ``` Also had a look at `compat='override'`, which will override an `attrs` inconsistency but not a naming one when applied to Datasets. Works as expected on DataArrays. It is described as `'override': skip comparing and pick variable from first dataset`. Potential resolutions: 1. `'identical'` should raise an error when attributes are not the same for DataArrays 2. `'equals'` should raise an error when DataArray names are not identical (unless one is None, which works with Datasets and seems fine to be replaced) 3. `'override'` should override naming inconsistencies when combining DataSets. Final thought: perhaps promoting to Dataset when all requirements are met for a DataArray to be considered as such, might simplify keeping operations and checks consistent? ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,494906646