@@ -403,24 +403,16 @@ def __iter__(self) -> Iterator[ChunkDimProjection]:
403403 dim_chunk_sel_start = self .start - dim_offset
404404 dim_out_offset = 0
405405
406- # Use None to indicate this selection ends at the chunk edge
407- # This is useful for is_total_slice at boundary chunks,
408406 if self .stop > dim_limit :
409407 # selection ends after current chunk
410- dim_chunk_sel_stop = None # dim_chunk_len
408+ dim_chunk_sel_stop = dim_chunk_len
411409
412410 else :
413411 # selection ends within current chunk
414- if dim_chunk_ix == (self .nchunks - 1 ):
415- # all of the last chunk is included
416- dim_chunk_sel_stop = None
417- else :
418- dim_chunk_sel_stop = self .stop - dim_offset
412+ dim_chunk_sel_stop = self .stop - dim_offset
419413
420414 dim_chunk_sel = slice (dim_chunk_sel_start , dim_chunk_sel_stop , self .step )
421- dim_chunk_nitems = ceildiv (
422- ((dim_chunk_sel_stop or dim_chunk_len ) - dim_chunk_sel_start ), self .step
423- )
415+ dim_chunk_nitems = ceildiv ((dim_chunk_sel_stop - dim_chunk_sel_start ), self .step )
424416
425417 # If there are no elements on the selection within this chunk, then skip
426418 if dim_chunk_nitems == 0 :
@@ -1386,17 +1378,7 @@ def is_total_slice(item: Selection, shape: ChunkCoords) -> bool:
13861378 isinstance (dim_sel , slice )
13871379 and (
13881380 (dim_sel == slice (None ))
1389- or (
1390- dim_sel .stop is not None
1391- and (dim_sel .stop - dim_sel .start == dim_len )
1392- and (dim_sel .step in [1 , None ])
1393- )
1394- # starts exactly at a chunk
1395- or (
1396- (dim_sel .start % dim_len == 0 )
1397- and dim_sel .stop is None
1398- and (dim_sel .step in [1 , None ])
1399- )
1381+ or ((dim_sel .stop - dim_sel .start == dim_len ) and (dim_sel .step in [1 , None ]))
14001382 )
14011383 )
14021384 for dim_sel , dim_len in zip (item , shape , strict = False )
0 commit comments