11from collections .abc import Mapping
22from dataclasses import dataclass , field
33from numbers import Integral
4- from typing import Any
4+ from typing import Any , cast
55
66from collections import defaultdict
77
@@ -322,6 +322,7 @@ def from_variables(cls, variables, *, options):
322322 {name : var }, options = options
323323 )
324324
325+ assert interval_index is not None , f"No interval index found for { dim_name } "
325326 interval_dims [dim_name ] = IntervalDimInfo (
326327 dim_name = dim_name ,
327328 coord_name = coord_name ,
@@ -347,8 +348,10 @@ def from_variables(cls, variables, *, options):
347348 debug = debug ,
348349 )
349350
350- def create_variables (self , variables ):
351- idx_variables = {}
351+ def create_variables (
352+ self , variables : Mapping [Any , Variable ] | None = None
353+ ) -> dict [Any , Variable ]:
354+ idx_variables : dict [Any , Variable ] = {}
352355
353356 idx_variables .update (self ._continuous_index .create_variables (variables ))
354357
@@ -431,7 +434,7 @@ def _get_overlapping_slice(
431434 )
432435
433436 # Find which intervals overlap
434- overlaps = interval_index .overlaps (query_interval )
437+ overlaps = interval_index .overlaps (query_interval ) # type: ignore[union-attr]
435438 overlap_indices = np .where (overlaps )[0 ]
436439
437440 if self ._debug :
@@ -603,7 +606,7 @@ def isel(
603606 continue
604607
605608 overlap_slice = self ._get_overlapping_slice (
606- info .interval_index .index ,
609+ cast ( pd . IntervalIndex , info .interval_index .index ) ,
607610 time_range ,
608611 )
609612
@@ -681,7 +684,7 @@ def sel(self, labels, method=None, tolerance=None):
681684 ) is not _MISSING or (
682685 dim_name := self ._label_to_dim .get (key , _MISSING )
683686 ) is not _MISSING :
684- info = self ._interval_dims [dim_name ]
687+ info = self ._interval_dims [cast ( str , dim_name ) ]
685688 # Use label index if key is a label, otherwise use interval index
686689 idx = info .label_indexes .get (key , info .interval_index )
687690 sel_res = idx .sel ({key : value }, method = method , tolerance = tolerance )
@@ -714,7 +717,7 @@ def sel(self, labels, method=None, tolerance=None):
714717
715718 # Find overlapping intervals
716719 overlap_slice = self ._get_overlapping_slice (
717- info .interval_index .index ,
720+ cast ( pd . IntervalIndex , info .interval_index .index ) ,
718721 time_range ,
719722 )
720723
0 commit comments