Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 25 additions & 31 deletions xarray/core/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -696,9 +696,16 @@ def _from_vars_and_coord_names(cls, variables, coord_names, attrs=None):
dims = dict(calculate_dimensions(variables))
return cls._construct_direct(variables, coord_names, dims, attrs)

def _replace_vars_and_dims(self, variables, coord_names=None, dims=None,
attrs=__default_attrs, encoding=None,
indexes=None, inplace=False):
def _replace(
self: T,
variables: 'OrderedDict[Any, Variable]' = None,
coord_names: set = None,
dims: 'OrderedDict[Any, int]' = None,
attrs: 'Optional[OrderedDict]' = __default,
indexes: 'Optional[OrderedDict[Any, pd.Index]]' = __default,
encoding: Optional[dict] = __default,
inplace: bool = False,
) -> T:
"""Fastpath constructor for internal use.

Returns an object with optionally with replaced attributes.
Expand Down Expand Up @@ -738,12 +745,18 @@ def _replace_vars_and_dims(self, variables, coord_names=None, dims=None,
variables, coord_names, dims, attrs, indexes, encoding)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shoyer - just to close the loop on this. Your indexes refactor added the encoding argument here. You'll see in this merge diff that I had also added this argument in the same place.

return obj

Parameters
----------
variables : OrderedDict
coord_names : set or None, optional
attrs : OrderedDict or None, optional
encoding : OrderedDict or None, optional
def _replace_with_new_dims(
self: T,
variables: 'OrderedDict[Any, Variable]' = None,
coord_names: set = None,
attrs: 'Optional[OrderedDict]' = __default,
indexes: 'Optional[OrderedDict[Any, pd.Index]]' = __default,
inplace: bool = False,
) -> T:
"""Replace variables with recalculated dimensions."""
dims = dict(calculate_dimensions(variables))
return self._replace(
variables, coord_names, dims, attrs, indexes, inplace=inplace)

def _replace_vars_and_dims(
self: T,
Expand All @@ -760,26 +773,8 @@ def _replace_vars_and_dims(
"""
if dims is None:
dims = calculate_dimensions(variables)
if inplace:
self._dims = dims
self._variables = variables
if coord_names is not None:
self._coord_names = coord_names
if attrs is not self.__default_attrs:
self._attrs = attrs
if encoding is not None:
self._encoding = encoding
self._indexes = indexes
obj = self
else:
if coord_names is None:
coord_names = self._coord_names.copy()
if attrs is self.__default_attrs:
attrs = self._attrs_copy()
obj = self._construct_direct(variables, coord_names=coord_names,
dims=dims, attrs=attrs,
indexes=indexes, encoding=encoding)
return obj
return self._replace(
variables, coord_names, dims, attrs, indexes=None, inplace=inplace)

def _overwrite_indexes(self, indexes):
if not indexes:
Expand Down Expand Up @@ -1485,8 +1480,7 @@ def maybe_chunk(name, var, chunks):

variables = OrderedDict([(k, maybe_chunk(k, v, chunks))
for k, v in self.variables.items()])
return self._replace_vars_and_dims(variables, attrs=self.attrs,
encoding=self.encoding)
return self._replace(variables)

def _validate_indexers(
self, indexers: Mapping,
Expand Down
You are viewing a condensed version of this merge commit. You can view the full changes here.