diff --git a/xarray/core/coordinates.py b/xarray/core/coordinates.py index b304bc88f87..1dda1e9ffc0 100644 --- a/xarray/core/coordinates.py +++ b/xarray/core/coordinates.py @@ -245,8 +245,8 @@ def _names(self): @property def variables(self): level_coords = OrderedDict( - (k, self._data[v].variable.get_level_coord(k)) - for k, v in self._data._level_coords.items()) + (k, self._data[v].variable.get_level_variable(k)) + for k, v in self._data._level_coords.items()) return Frozen(level_coords) diff --git a/xarray/core/dataarray.py b/xarray/core/dataarray.py index 0479eb1faba..e8758c7b62e 100644 --- a/xarray/core/dataarray.py +++ b/xarray/core/dataarray.py @@ -429,7 +429,7 @@ def _level_coords(self): level_coords = OrderedDict() for cname, var in self._coords.items(): if var.ndim == 1: - level_names = var.to_coord().level_names + level_names = var.to_index_variable().level_names if level_names is not None: dim = var.dims[0] level_coords.update({lname: dim for lname in level_names}) diff --git a/xarray/core/dataset.py b/xarray/core/dataset.py index 1f488c424ab..71867f0537b 100644 --- a/xarray/core/dataset.py +++ b/xarray/core/dataset.py @@ -50,7 +50,7 @@ def _get_virtual_variable(variables, key, level_vars={}): if ref_name in level_vars: dim_var = variables[level_vars[ref_name]] - ref_var = dim_var.to_coord().get_level_coord(ref_name) + ref_var = dim_var.to_index_variable().get_level_variable(ref_name) else: ref_var = variables[ref_name] @@ -447,7 +447,7 @@ def _level_coords(self): for cname in self._coord_names: var = self.variables[cname] if var.ndim == 1: - level_names = var.to_coord().level_names + level_names = var.to_index_variable().level_names if level_names is not None: dim = var.dims[0] level_coords.update({lname: dim for lname in level_names}) diff --git a/xarray/core/formatting.py b/xarray/core/formatting.py index 985daf0fc59..dfe07ea31bf 100644 --- a/xarray/core/formatting.py +++ b/xarray/core/formatting.py @@ -212,7 +212,8 @@ def _summarize_coord_multiindex(coord, col_width, marker): def _summarize_coord_levels(coord, col_width, marker=u'-'): relevant_coord = coord[:30] return u'\n'.join( - [_summarize_var_or_coord(lname, relevant_coord.get_level_coord(lname), + [_summarize_var_or_coord(lname, + relevant_coord.get_level_variable(lname), col_width, marker=marker) for lname in coord.level_names]) @@ -237,7 +238,7 @@ def summarize_coord(name, var, col_width): show_values = is_index or _not_remote(var) marker = u'*' if is_index else u' ' if is_index: - coord = var.variable.to_coord() + coord = var.variable.to_index_variable() if coord.level_names is not None: return u'\n'.join( [_summarize_coord_multiindex(coord, col_width, marker), diff --git a/xarray/core/indexing.py b/xarray/core/indexing.py index 65243c3fa04..3cafda83bc4 100644 --- a/xarray/core/indexing.py +++ b/xarray/core/indexing.py @@ -216,8 +216,8 @@ def convert_label_indexer(index, label, index_name='', method=None, def get_dim_indexers(data_obj, indexers): - """Given an xarray data object and label based indexers, return a mapping - of indexers with only dimension names as keys. + """Given a xarray data object and label based indexers, return a mapping + of label indexers with only dimension names as keys. It groups multiple level indexers given on a multi-index dimension into a single, dictionary indexer for that dimension (Raise a ValueError diff --git a/xarray/core/variable.py b/xarray/core/variable.py index a25dc007ac5..7f62b0e0886 100644 --- a/xarray/core/variable.py +++ b/xarray/core/variable.py @@ -1079,7 +1079,8 @@ class IndexVariable(Variable): def __init__(self, dims, data, attrs=None, encoding=None, name=None, fastpath=False): - super(IndexVariable, self).__init__(dim, data, attrs, encoding, fastpath) + super(IndexVariable, self).__init__(dims, data, attrs, encoding, + fastpath) if self.ndim != 1: raise ValueError('%s objects must be 1-dimensional' % type(self).__name__) @@ -1183,7 +1184,7 @@ def to_index(self): @property def level_names(self): - """Return MultiIndex level names or None if Coordinate has no + """Return MultiIndex level names or None if this IndexVariable has no MultiIndex. """ index = self.to_index() @@ -1194,12 +1195,13 @@ def level_names(self): @level_names.setter def level_names(self, value): - raise AttributeError('cannot modify level names of Coordinate in-place') + raise AttributeError('cannot modify level names of ' + 'IndexVariable in-place') - def get_level_coord(self, level): - """Return a new Coordinate from a given MultiIndex level.""" + def get_level_variable(self, level): + """Return a new IndexVariable from a given MultiIndex level.""" if self.level_names is None: - raise ValueError("Coordinate %s has no MultiIndex" % self.name) + raise ValueError("IndexVariable %r has no MultiIndex" % self.name) index = self.to_index() return type(self)(self.dims, index.get_level_values(level), name=level) @@ -1318,7 +1320,7 @@ def assert_unique_multiindex_level_names(variables): level_names = defaultdict(list) for var_name, var in variables.items(): if isinstance(var._data, PandasIndexAdapter): - idx_level_names = var.to_coord().level_names + idx_level_names = var.to_index_variable().level_names if idx_level_names is not None: for n in idx_level_names: level_names[n].append('%r (%s)' % (n, var_name))