Upgrading xarray 0.16 to 0.17
Review needed0.16.2 → 0.17.0New1Changed3Other2
Review neededUpgrade verdict
3 behavior changes.
In plain terms
- Better handling of cftime-based dates and calendars.
- Unstacking is faster.
- Rolling operations use less memory.
Must act Nothing to change
No breaking, platform, security or deprecated items in this range.
Python requirement changed in 0.17.0: >=3.6 → >=3.7.
Installs 6 packages in all (was 5).
Also installs six.
Moves python-dateutil 4.0.0 → 3.0.0. Your build may pick other versions.
Nothing in this upgrade needs a code or configuration change.
API changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- added:
export list_engines
- changed:
function open_dataarray(filename_or_obj, group=…, decode_cf=…, mask_and_scale=…, decode_times=…, autoclose=…, concat_characters=…, decode_coords=…, engine=…, chunks=…, lock=…, cache=…, drop_variables=…, backend_kwargs=…, use_cftime=…, decode_timedelta=…) → function open_dataarray(filename_or_obj, group=…, decode_cf=…, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, engine=…, chunks=…, lock=…, cache=…, drop_variables=…, backend_kwargs=…, use_cftime=…, decode_timedelta=…) - changed:
function open_dataset(filename_or_obj, group=…, decode_cf=…, mask_and_scale=…, decode_times=…, autoclose=…, concat_characters=…, decode_coords=…, engine=…, chunks=…, lock=…, cache=…, drop_variables=…, backend_kwargs=…, use_cftime=…, decode_timedelta=…) → function open_dataset(filename_or_obj, group=…, decode_cf=…, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, engine=…, chunks=…, lock=…, cache=…, drop_variables=…, backend_kwargs=…, use_cftime=…, decode_timedelta=…) - changed:
function open_mfdataset(paths, chunks=…, concat_dim=…, compat=…, preprocess=…, engine=…, lock=…, data_vars=…, coords=…, combine=…, autoclose=…, parallel=…, join=…, attrs_file=…, **kwargs) → function open_mfdataset(paths, chunks=…, concat_dim=…, compat=…, preprocess=…, engine=…, lock=…, data_vars=…, coords=…, combine=…, parallel=…, join=…, attrs_file=…, **kwargs)
- removed:
function dataset_from_backend_dataset(ds, filename_or_obj, engine, chunks, cache, overwrite_encoded_chunks, **extra_tokens) - removed:
function resolve_decoders_kwargs(decode_cf, engine, **decoders)
- removed:
function open_backend_dataset_cfgrib(filename_or_obj, *, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…, lock=…, indexpath=…, filter_by_keys=…, read_keys=…, encode_cf=…, squeeze=…, time_dims=…) - added:
class CfgribfBackendEntrypoint(BackendEntrypoint) - added:
method CfgribfBackendEntrypoint.guess_can_open(store_spec) - added:
method CfgribfBackendEntrypoint.open_dataset(filename_or_obj, *, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…, lock=…, indexpath=…, filter_by_keys=…, read_keys=…, encode_cf=…, squeeze=…, time_dims=…) - added:
variable has_cfgrib
- added:
class BackendEntrypoint - added:
field BackendEntrypoint.open_dataset_parameters: Union[Tuple, None] - added:
method BackendEntrypoint.guess_can_open(store_spec) - added:
method BackendEntrypoint.open_dataset() - added:
variable BACKEND_ENTRYPOINTS: Dict[str, Type[BackendEntrypoint]]
- removed:
function open_backend_dataset_h5necdf(filename_or_obj, *, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…, format=…, group=…, lock=…, invalid_netcdf=…, phony_dims=…) - changed:
static method H5NetCDFStore.open(filename, mode=…, format=…, group=…, lock=…, autoclose=…, invalid_netcdf=…, phony_dims=…) → static method H5NetCDFStore.open(filename, mode=…, format=…, group=…, lock=…, autoclose=…, invalid_netcdf=…, phony_dims=…, decode_vlen_strings=…) - added:
class H5netcdfBackendEntrypoint(BackendEntrypoint) - added:
method H5netcdfBackendEntrypoint.guess_can_open(store_spec) - added:
method H5netcdfBackendEntrypoint.open_dataset(filename_or_obj, *, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…, format=…, group=…, lock=…, invalid_netcdf=…, phony_dims=…, decode_vlen_strings=…) - added:
variable has_h5netcdf
- added:
class NetCDF4BackendEntrypoint(BackendEntrypoint) - added:
method NetCDF4BackendEntrypoint.guess_can_open(store_spec) - added:
method NetCDF4BackendEntrypoint.open_dataset(filename_or_obj, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…, group=…, mode=…, format=…, clobber=…, diskless=…, persist=…, lock=…, autoclose=…) - added:
variable has_netcdf4
- removed:
variable ENGINES: T.Dict[str, T.Dict[str, T.Any]] - added:
function backends_dict_from_pkg(pkg_entrypoints) - added:
function build_engines(pkg_entrypoints) - added:
function detect_parameters(open_dataset) - added:
function get_backend(engine) - added:
function guess_engine(store_spec) - added:
function list_engines() - added:
function remove_duplicates(pkg_entrypoints) - added:
function set_missing_parameters(backend_entrypoints) - added:
function sort_backends(backend_entrypoints) - added:
variable STANDARD_BACKENDS_ORDER
- added:
class PseudoNetCDFBackendEntrypoint(BackendEntrypoint) - added:
field PseudoNetCDFBackendEntrypoint.open_dataset_parameters - added:
method PseudoNetCDFBackendEntrypoint.open_dataset(filename_or_obj, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…, mode=…, lock=…, **format_kwargs) - added:
variable has_pseudonetcdf
- added:
class PydapBackendEntrypoint(BackendEntrypoint) - added:
method PydapBackendEntrypoint.guess_can_open(store_spec) - added:
method PydapBackendEntrypoint.open_dataset(filename_or_obj, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…, session=…) - added:
variable has_pydap
- added:
class PynioBackendEntrypoint(BackendEntrypoint) - added:
method PynioBackendEntrypoint.open_dataset(mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…, mode=…, lock=…) - added:
variable has_pynio
- added:
class ScipyBackendEntrypoint(BackendEntrypoint) - added:
method ScipyBackendEntrypoint.guess_can_open(store_spec) - added:
method ScipyBackendEntrypoint.open_dataset(filename_or_obj, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…, mode=…, format=…, group=…, mmap=…, lock=…) - added:
variable has_scipy
- added:
class StoreBackendEntrypoint(BackendEntrypoint) - added:
method StoreBackendEntrypoint.guess_can_open(store_spec) - added:
method StoreBackendEntrypoint.open_dataset(store, *, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…)
- removed:
function open_backend_dataset_zarr(filename_or_obj, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…, group=…, mode=…, synchronizer=…, consolidated=…, consolidate_on_close=…, chunk_store=…) - removed:
static method ZarrStore.get_chunk(name, var, chunks) - removed:
static method ZarrStore.maybe_chunk(name, var, chunks, overwrite_encoded_chunks) - changed:
function open_zarr(store, group=…, synchronizer=…, chunks=…, decode_cf=…, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, consolidated=…, overwrite_encoded_chunks=…, chunk_store=…, decode_timedelta=…, use_cftime=…, **kwargs) → function open_zarr(store, group=…, synchronizer=…, chunks=…, decode_cf=…, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, consolidated=…, overwrite_encoded_chunks=…, chunk_store=…, storage_options=…, decode_timedelta=…, use_cftime=…, **kwargs) - changed:
static method ZarrStore.open_group(store, mode=…, synchronizer=…, group=…, consolidated=…, consolidate_on_close=…, chunk_store=…, append_dim=…, write_region=…) → static method ZarrStore.open_group(store, mode=…, synchronizer=…, group=…, consolidated=…, consolidate_on_close=…, chunk_store=…, storage_options=…, append_dim=…, write_region=…) - added:
class ZarrBackendEntrypoint(BackendEntrypoint) - added:
method ZarrBackendEntrypoint.open_dataset(filename_or_obj, mask_and_scale=…, decode_times=…, concat_characters=…, decode_coords=…, drop_variables=…, use_cftime=…, decode_timedelta=…, group=…, mode=…, synchronizer=…, consolidated=…, consolidate_on_close=…, chunk_store=…, storage_options=…) - added:
variable has_zarr
- added:
class Microsecond(BaseCFTimeOffset) - added:
class Millisecond(BaseCFTimeOffset) - added:
method Microsecond.as_timedelta() - added:
method Millisecond.as_timedelta()
- added:
variable CF_RELATED_DATA - added:
variable CF_RELATED_DATA_NEEDS_PARSING
- changed:
function full_like(other, fill_value, dtype: DTypeLike=…) → function full_like(other: Dataset, fill_value, dtype: Union[DTypeLike, Mapping[Hashable, DTypeLike]]=…) -> Dataset | (other: DataArray, fill_value, dtype: DTypeLike=…) -> DataArray | (other: Variable, fill_value, dtype: DTypeLike=…) -> Variable - changed:
method DataWithCoords.astype(dtype, casting=…, copy=…, keep_attrs=…) → method DataWithCoords.astype(dtype, *, order=…, casting=…, subok=…, copy=…, keep_attrs=…) -> T - changed:
method DataWithCoords.weighted(weights) → method DataWithCoords.weighted(weights: DataArray) -> Weighted[T_DataWithCoords] - added:
method DataWithCoords.set_close(close: Optional[Callable[[], None]]) -> None - added:
variable T_DataWithCoords
- removed:
class LevelCoordinatesSource(Mapping[Hashable, Any]) - removed:
constructor LevelCoordinatesSource(data_object: Union[DataArray, Dataset])
- changed:
method DataArray.chunk(chunks: Union[None, Number, Tuple[Number, ...], Tuple[Tuple[Number, ...], ...], Mapping[Hashable, Union[None, Number, Tuple[Number, ...]]]]=…, name_prefix: str=…, token: str=…, lock: bool=…) -> DataArray → method DataArray.chunk(chunks: Union[Number, Tuple[Number, ...], Tuple[Tuple[Number, ...], ...], Mapping[Hashable, Union[None, Number, Tuple[Number, ...]]]]=…, name_prefix: str=…, token: str=…, lock: bool=…) -> DataArray - changed:
method DataArray.integrate(dim: Union[Hashable, Sequence[Hashable]], datetime_unit: str=…) -> DataArray → method DataArray.integrate(coord: Union[Hashable, Sequence[Hashable]]=…, datetime_unit: str=…, *, dim: Union[Hashable, Sequence[Hashable]]=…) -> DataArray - changed:
method DataArray.reorder_levels(dim_order: Mapping[Hashable, Sequence[int]]=…, inplace: bool=…, **dim_order_kwargs: Sequence[int]) -> DataArray → method DataArray.reorder_levels(dim_order: Mapping[Hashable, Sequence[int]]=…, **dim_order_kwargs: Sequence[int]) -> DataArray - changed:
method DataArray.reset_coords(names: Union[Iterable[Hashable], Hashable, None]=…, drop: bool=…, inplace: bool=…) -> Union[None, DataArray, Dataset] → method DataArray.reset_coords(names: Union[Iterable[Hashable], Hashable, None]=…, drop: bool=…) -> Union[None, DataArray, Dataset] - changed:
method DataArray.reset_index(dims_or_levels: Union[Hashable, Sequence[Hashable]], drop: bool=…, inplace: bool=…) -> Optional[DataArray] → method DataArray.reset_index(dims_or_levels: Union[Hashable, Sequence[Hashable]], drop: bool=…) -> Optional[DataArray] - changed:
method DataArray.set_index(indexes: Mapping[Hashable, Union[Hashable, Sequence[Hashable]]]=…, append: bool=…, inplace: bool=…, **indexes_kwargs: Union[Hashable, Sequence[Hashable]]) -> Optional[DataArray] → method DataArray.set_index(indexes: Mapping[Hashable, Union[Hashable, Sequence[Hashable]]]=…, append: bool=…, **indexes_kwargs: Union[Hashable, Sequence[Hashable]]) -> Optional[DataArray] - changed:
method DataArray.swap_dims(dims_dict: Mapping[Hashable, Hashable]) -> DataArray → method DataArray.swap_dims(dims_dict: Mapping[Hashable, Hashable]=…, **dims_kwargs) -> DataArray - changed:
method DataArray.transpose(*dims: Hashable, transpose_coords: bool=…) -> DataArray → method DataArray.transpose(*dims: Hashable, transpose_coords: bool=…, missing_dims: str=…) -> DataArray - added:
method DataArray.drop_isel(indexers=…, **indexers_kwargs)
- changed:
method Dataset.chunk(chunks: Union[None, Number, str, Mapping[Hashable, Union[None, Number, str, Tuple[Number, ...]]]]=…, name_prefix: str=…, token: str=…, lock: bool=…) -> Dataset → method Dataset.chunk(chunks: Union[Number, str, Mapping[Hashable, Union[None, Number, str, Tuple[Number, ...]]]]=…, name_prefix: str=…, token: str=…, lock: bool=…) -> Dataset - changed:
method Dataset.integrate(coord, datetime_unit=…) → method Dataset.integrate(coord: Union[Hashable, Sequence[Hashable]], datetime_unit: str=…) -> Dataset - changed:
method Dataset.merge(other: Union[CoercibleMapping, DataArray], inplace: bool=…, overwrite_vars: Union[Hashable, Iterable[Hashable]]=…, compat: str=…, join: str=…, fill_value: Any=…) -> Dataset → method Dataset.merge(other: Union[CoercibleMapping, DataArray], overwrite_vars: Union[Hashable, Iterable[Hashable]]=…, compat: str=…, join: str=…, fill_value: Any=…) -> Dataset - changed:
method Dataset.reorder_levels(dim_order: Mapping[Hashable, Sequence[int]]=…, inplace: bool=…, **dim_order_kwargs: Sequence[int]) -> Dataset → method Dataset.reorder_levels(dim_order: Mapping[Hashable, Sequence[int]]=…, **dim_order_kwargs: Sequence[int]) -> Dataset - changed:
method Dataset.reset_coords(names: Union[Hashable, Iterable[Hashable], None]=…, drop: bool=…, inplace: bool=…) -> Dataset → method Dataset.reset_coords(names: Union[Hashable, Iterable[Hashable], None]=…, drop: bool=…) -> Dataset - changed:
method Dataset.reset_index(dims_or_levels: Union[Hashable, Sequence[Hashable]], drop: bool=…, inplace: bool=…) -> Dataset → method Dataset.reset_index(dims_or_levels: Union[Hashable, Sequence[Hashable]], drop: bool=…) -> Dataset - changed:
method Dataset.set_coords(names: Union[Hashable, Iterable[Hashable]], inplace: bool=…) -> Dataset → method Dataset.set_coords(names: Union[Hashable, Iterable[Hashable]]) -> Dataset - changed:
method Dataset.set_index(indexes: Mapping[Hashable, Union[Hashable, Sequence[Hashable]]]=…, append: bool=…, inplace: bool=…, **indexes_kwargs: Union[Hashable, Sequence[Hashable]]) -> Dataset → method Dataset.set_index(indexes: Mapping[Hashable, Union[Hashable, Sequence[Hashable]]]=…, append: bool=…, **indexes_kwargs: Union[Hashable, Sequence[Hashable]]) -> Dataset - changed:
method Dataset.swap_dims(dims_dict: Mapping[Hashable, Hashable], inplace: bool=…) -> Dataset → method Dataset.swap_dims(dims_dict: Mapping[Hashable, Hashable]=…, **dims_kwargs) -> Dataset - changed:
method Dataset.update(other: CoercibleMapping, inplace: bool=…) -> Dataset → method Dataset.update(other: CoercibleMapping) -> Dataset - added:
method Dataset.drop_isel(indexers=…, **indexers_kwargs)
- changed:
function get_neg_infinity(dtype) → function get_neg_infinity(dtype, min_for_int=…) - changed:
function get_pos_infinity(dtype) → function get_pos_infinity(dtype, max_for_int=…)
- changed:
function astype(data, **kwargs) → function astype(data, dtype, **kwargs)
- added:
variable DISPLAY_MAX_ROWS
- added:
method DataArrayCoarsen.reduce(func: Callable, **kwargs) - added:
method DatasetCoarsen.reduce(func: Callable, **kwargs)
- changed:
constructor OrderedSet(values: AbstractSet[T]=…) → constructor OrderedSet(values: Iterable[T]=…) - changed:
function infix_dims(dims_supplied: Collection, dims_all: Collection) -> Iterator → function infix_dims(dims_supplied: Collection, dims_all: Collection, missing_dims: str=…) -> Iterator - changed:
method OrderedSet.update(values: AbstractSet[T]) -> None → method OrderedSet.update(values: Iterable[T]) -> None - added:
class HybridMappingProxy(Mapping[K, V]) - added:
constructor HybridMappingProxy(keys: Collection[K], mapping: Mapping[K, V]) - added:
function drop_missing_dims(supplied_dims: Collection, dims: Collection, missing_dims: str) -> Collection - added:
function maybe_coerce_to_str(index, original_coords) - added:
function read_magic_number(filename_or_obj, count=…)
- changed:
method Variable.astype(dtype, casting=…, copy=…, keep_attrs=…) → method Variable.astype(dtype, *, order=…, casting=…, subok=…, copy=…, keep_attrs=…) -> VariableType
- changed:
class DataArrayWeighted(Weighted) → class DataArrayWeighted(Weighted['DataArray']) - changed:
class DatasetWeighted(Weighted) → class DatasetWeighted(Weighted['Dataset']) - changed:
class Weighted → class Weighted(Generic[T_DataWithCoords]) - changed:
constructor Weighted(obj: DataArray, weights: DataArray) -> None | (obj: Dataset, weights: DataArray) -> None → constructor Weighted(obj: T_DataWithCoords, weights: DataArray) - changed:
method Weighted.mean(dim: Optional[Union[Hashable, Iterable[Hashable]]]=…, skipna: Optional[bool]=…, keep_attrs: Optional[bool]=…) -> Union[DataArray, Dataset] → method Weighted.mean(dim: Optional[Union[Hashable, Iterable[Hashable]]]=…, skipna: Optional[bool]=…, keep_attrs: Optional[bool]=…) -> T_DataWithCoords - changed:
method Weighted.sum(dim: Optional[Union[Hashable, Iterable[Hashable]]]=…, skipna: Optional[bool]=…, keep_attrs: Optional[bool]=…) -> Union[DataArray, Dataset] → method Weighted.sum(dim: Optional[Union[Hashable, Iterable[Hashable]]]=…, skipna: Optional[bool]=…, keep_attrs: Optional[bool]=…) -> T_DataWithCoords - changed:
method Weighted.sum_of_weights(dim: Optional[Union[Hashable, Iterable[Hashable]]]=…, keep_attrs: Optional[bool]=…) -> Union[DataArray, Dataset] → method Weighted.sum_of_weights(dim: Optional[Union[Hashable, Iterable[Hashable]]]=…, keep_attrs: Optional[bool]=…) -> T_DataWithCoords - added:
variable T_DataWithCoords
- changed:
function scatter(ds, x, y, ax, **kwargs) → function scatter(ds, x, y, ax, u, v, **kwargs) - added:
function quiver(ds, x, y, ax, u, v, **kwargs)
- added:
method FacetGrid.add_quiverkey(u, v, **kwargs)