@@ -1775,23 +1775,26 @@ def check_variables():
17751775
17761776
17771777def _apply_indexes_isel (
1778- indexes : Indexes [Index ],
1778+ indexes : dict [Hashable , Index ],
1779+ coords ,
17791780 args : Mapping [Any , Any ],
17801781):
17811782 new_indexes : dict [Hashable , Index ] = {k : v for k , v in indexes .items ()}
17821783 new_index_variables : dict [Hashable , Variable ] = {}
1783- # for index, index_vars in indexes.group_by_index():
1784- for index in indexes ._id_index .values ():
1785- # index = indexes._id_index[i]
1786- index_dims = (index .index .name ,)
1787- index_args = {k : v for k , v in args .items () if k in index_dims }
1784+ for name , index in indexes .items ():
1785+ index_args = {k : v for k , v in args .items () if k == name }
1786+ index_dims = (name ,)
1787+ index_vars = {name : coords [name ]}
17881788 if index_args :
17891789 new_index = index .isel (index_args )
17901790 if new_index is not None :
17911791 new_indexes .update ({k : new_index for k in index_vars })
17921792 new_index_vars = new_index .create_variables (index_vars )
17931793 new_index_variables .update (new_index_vars )
1794-
1794+ new_index_variables .update (new_index_vars )
1795+ else :
1796+ for k in index_vars :
1797+ new_indexes .pop (k , None )
17951798 return new_indexes , new_index_variables
17961799
17971800
@@ -1820,10 +1823,11 @@ def _apply_indexes(
18201823
18211824
18221825def isel_indexes (
1823- indexes : Indexes [Index ],
1826+ indexes ,
1827+ coords ,
18241828 indexers : Mapping [Any , Any ],
18251829) -> tuple [dict [Hashable , Index ], dict [Hashable , Variable ]]:
1826- return _apply_indexes_isel (indexes , indexers )
1830+ return _apply_indexes_isel (indexes , coords , indexers )
18271831
18281832
18291833def roll_indexes (
0 commit comments