106
106
from ..backends import AbstractDataStore , ZarrStore
107
107
from .dataarray import DataArray
108
108
from .merge import CoercibleMapping
109
- from .types import T_Xarray
109
+ from .types import ErrorChoice , ErrorChoiceWithWarn , T_Xarray
110
110
111
111
try :
112
112
from dask .delayed import Delayed
@@ -2059,7 +2059,7 @@ def chunk(
2059
2059
return self ._replace (variables )
2060
2060
2061
2061
def _validate_indexers (
2062
- self , indexers : Mapping [Any , Any ], missing_dims : str = "raise"
2062
+ self , indexers : Mapping [Any , Any ], missing_dims : ErrorChoiceWithWarn = "raise"
2063
2063
) -> Iterator [tuple [Hashable , int | slice | np .ndarray | Variable ]]:
2064
2064
"""Here we make sure
2065
2065
+ indexer has a valid keys
@@ -2164,7 +2164,7 @@ def isel(
2164
2164
self ,
2165
2165
indexers : Mapping [Any , Any ] = None ,
2166
2166
drop : bool = False ,
2167
- missing_dims : str = "raise" ,
2167
+ missing_dims : ErrorChoiceWithWarn = "raise" ,
2168
2168
** indexers_kwargs : Any ,
2169
2169
) -> Dataset :
2170
2170
"""Returns a new dataset with each array indexed along the specified
@@ -2183,14 +2183,14 @@ def isel(
2183
2183
If DataArrays are passed as indexers, xarray-style indexing will be
2184
2184
carried out. See :ref:`indexing` for the details.
2185
2185
One of indexers or indexers_kwargs must be provided.
2186
- drop : bool, optional
2186
+ drop : bool, default: False
2187
2187
If ``drop=True``, drop coordinates variables indexed by integers
2188
2188
instead of making them scalar.
2189
2189
missing_dims : {"raise", "warn", "ignore"}, default: "raise"
2190
2190
What to do if dimensions that should be selected from are not present in the
2191
2191
Dataset:
2192
2192
- "raise": raise an exception
2193
- - "warning ": raise a warning, and ignore the missing dimensions
2193
+ - "warn ": raise a warning, and ignore the missing dimensions
2194
2194
- "ignore": ignore the missing dimensions
2195
2195
**indexers_kwargs : {dim: indexer, ...}, optional
2196
2196
The keyword arguments form of ``indexers``.
@@ -2255,7 +2255,7 @@ def _isel_fancy(
2255
2255
indexers : Mapping [Any , Any ],
2256
2256
* ,
2257
2257
drop : bool ,
2258
- missing_dims : str = "raise" ,
2258
+ missing_dims : ErrorChoiceWithWarn = "raise" ,
2259
2259
) -> Dataset :
2260
2260
valid_indexers = dict (self ._validate_indexers (indexers , missing_dims ))
2261
2261
@@ -2271,6 +2271,10 @@ def _isel_fancy(
2271
2271
}
2272
2272
if var_indexers :
2273
2273
new_var = var .isel (indexers = var_indexers )
2274
+ # drop scalar coordinates
2275
+ # https://github.com/pydata/xarray/issues/6554
2276
+ if name in self .coords and drop and new_var .ndim == 0 :
2277
+ continue
2274
2278
else :
2275
2279
new_var = var .copy (deep = False )
2276
2280
if name not in indexes :
@@ -4521,16 +4525,16 @@ def _assert_all_in_dataset(
4521
4525
)
4522
4526
4523
4527
def drop_vars (
4524
- self , names : Hashable | Iterable [Hashable ], * , errors : str = "raise"
4528
+ self , names : Hashable | Iterable [Hashable ], * , errors : ErrorChoice = "raise"
4525
4529
) -> Dataset :
4526
4530
"""Drop variables from this dataset.
4527
4531
4528
4532
Parameters
4529
4533
----------
4530
4534
names : hashable or iterable of hashable
4531
4535
Name(s) of variables to drop.
4532
- errors : {"raise", "ignore"}, optional
4533
- If 'raise' (default) , raises a ValueError error if any of the variable
4536
+ errors : {"raise", "ignore"}, default: "raise"
4537
+ If 'raise', raises a ValueError error if any of the variable
4534
4538
passed are not in the dataset. If 'ignore', any given names that are in the
4535
4539
dataset are dropped and no error is raised.
4536
4540
@@ -4556,7 +4560,9 @@ def drop_vars(
4556
4560
variables , coord_names = coord_names , indexes = indexes
4557
4561
)
4558
4562
4559
- def drop (self , labels = None , dim = None , * , errors = "raise" , ** labels_kwargs ):
4563
+ def drop (
4564
+ self , labels = None , dim = None , * , errors : ErrorChoice = "raise" , ** labels_kwargs
4565
+ ):
4560
4566
"""Backward compatible method based on `drop_vars` and `drop_sel`
4561
4567
4562
4568
Using either `drop_vars` or `drop_sel` is encouraged
@@ -4605,15 +4611,15 @@ def drop(self, labels=None, dim=None, *, errors="raise", **labels_kwargs):
4605
4611
)
4606
4612
return self .drop_sel (labels , errors = errors )
4607
4613
4608
- def drop_sel (self , labels = None , * , errors = "raise" , ** labels_kwargs ):
4614
+ def drop_sel (self , labels = None , * , errors : ErrorChoice = "raise" , ** labels_kwargs ):
4609
4615
"""Drop index labels from this dataset.
4610
4616
4611
4617
Parameters
4612
4618
----------
4613
4619
labels : mapping of hashable to Any
4614
4620
Index labels to drop
4615
- errors : {"raise", "ignore"}, optional
4616
- If 'raise' (default) , raises a ValueError error if
4621
+ errors : {"raise", "ignore"}, default: "raise"
4622
+ If 'raise', raises a ValueError error if
4617
4623
any of the index labels passed are not
4618
4624
in the dataset. If 'ignore', any given labels that are in the
4619
4625
dataset are dropped and no error is raised.
@@ -4740,7 +4746,7 @@ def drop_isel(self, indexers=None, **indexers_kwargs):
4740
4746
return ds
4741
4747
4742
4748
def drop_dims (
4743
- self , drop_dims : Hashable | Iterable [Hashable ], * , errors : str = "raise"
4749
+ self , drop_dims : Hashable | Iterable [Hashable ], * , errors : ErrorChoice = "raise"
4744
4750
) -> Dataset :
4745
4751
"""Drop dimensions and associated variables from this dataset.
4746
4752
@@ -4780,7 +4786,7 @@ def drop_dims(
4780
4786
def transpose (
4781
4787
self ,
4782
4788
* dims : Hashable ,
4783
- missing_dims : str = "raise" ,
4789
+ missing_dims : ErrorChoiceWithWarn = "raise" ,
4784
4790
) -> Dataset :
4785
4791
"""Return a new Dataset object with all array dimensions transposed.
4786
4792
@@ -7714,7 +7720,7 @@ def query(
7714
7720
queries : Mapping [Any , Any ] = None ,
7715
7721
parser : str = "pandas" ,
7716
7722
engine : str = None ,
7717
- missing_dims : str = "raise" ,
7723
+ missing_dims : ErrorChoiceWithWarn = "raise" ,
7718
7724
** queries_kwargs : Any ,
7719
7725
) -> Dataset :
7720
7726
"""Return a new dataset with each array indexed along the specified
@@ -7747,7 +7753,7 @@ def query(
7747
7753
Dataset:
7748
7754
7749
7755
- "raise": raise an exception
7750
- - "warning ": raise a warning, and ignore the missing dimensions
7756
+ - "warn ": raise a warning, and ignore the missing dimensions
7751
7757
- "ignore": ignore the missing dimensions
7752
7758
7753
7759
**queries_kwargs : {dim: query, ...}, optional
0 commit comments