Skip to content

Commit 62b46f2

Browse files
author
Benoit Bovy
committed
check for level/var name conflicts in one place
1 parent 7738059 commit 62b46f2

File tree

2 files changed

+8
-17
lines changed

2 files changed

+8
-17
lines changed

xarray/core/coordinates.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,6 @@ def to_dataset(self):
151151
def _update_coords(self, coords):
152152
from .dataset import calculate_dimensions
153153

154-
for key in coords:
155-
if key in self._data._level_coords:
156-
raise ValueError("%r is already a MultiIndex level of "
157-
"coordinate %r"
158-
% (key, self._data._level_coords[key]))
159-
160154
variables = self._data._variables.copy()
161155
variables.update(coords)
162156

@@ -202,12 +196,6 @@ def _names(self):
202196
def _update_coords(self, coords):
203197
from .dataset import calculate_dimensions
204198

205-
for key in coords:
206-
if key in self._data._level_coords:
207-
raise ValueError("%r is already a MultiIndex level of "
208-
"coordinate %r"
209-
% (key, self._data._level_coords[key]))
210-
211199
dims = calculate_dimensions(coords)
212200
if set(dims) != set(self.dims):
213201
raise ValueError('cannot add coordinates with new dimensions to '

xarray/core/variable.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1321,13 +1321,16 @@ def assert_unique_multiindex_level_names(variables):
13211321
idx_level_names = var.to_coord().level_names
13221322
if idx_level_names is not None:
13231323
for n in idx_level_names:
1324-
level_names[n].append(var_name)
1324+
level_names[n].append('%r (%s)' % (n, var_name))
1325+
1326+
for n in level_names:
1327+
if n in variables:
1328+
level_names[n].append('(%s)' % n)
13251329

13261330
duplicate_level_names = {k: v for k, v in level_names.items()
13271331
if len(v) > 1}
13281332
if duplicate_level_names:
1329-
duplicate_str = '\n'.join(['level %r found in %s'
1330-
% (k, ' and '.join(v))
1331-
for k, v in duplicate_level_names.items()])
1332-
raise ValueError('conflicting MultiIndex level names:\n%s'
1333+
duplicate_str = '\n'.join([', '.join(v)
1334+
for v in duplicate_level_names.values()])
1335+
raise ValueError('conflicting MultiIndex level name(s):\n%s'
13331336
% duplicate_str)

0 commit comments

Comments
 (0)