@@ -789,17 +789,19 @@ def __init__(self, intervals, sub_iterators=None, directions=None):
789789 super ().__init__ (intervals )
790790
791791 # Normalize sub-iterators
792- sub_iterators = dict ([(k , tuple (filter_ordered (as_tuple (v ))))
793- for k , v in (sub_iterators or {}).items ()])
792+ sub_iterators = sub_iterators or {}
793+ sub_iterators = {d : tuple (filter_ordered (as_tuple (v )))
794+ for d , v in sub_iterators .items () if d in self .intervals }
794795 sub_iterators .update ({i .dim : () for i in self .intervals
795796 if i .dim not in sub_iterators })
796797 self ._sub_iterators = frozendict (sub_iterators )
797798
798799 # Normalize directions
799- if directions is None :
800- self ._directions = frozendict ([(i .dim , Any ) for i in self .intervals ])
801- else :
802- self ._directions = frozendict (directions )
800+ directions = directions or {}
801+ directions = {d : v for d , v in directions .items () if d in self .intervals }
802+ directions .update ({i .dim : Any for i in self .intervals
803+ if i .dim not in directions })
804+ self ._directions = frozendict (directions )
803805
804806 def __repr__ (self ):
805807 ret = ', ' .join ([f"{ repr (i )} { repr (self .directions [i .dim ])} "
@@ -821,8 +823,7 @@ def __lt__(self, other):
821823 return len (self .itintervals ) < len (other .itintervals )
822824
823825 def __hash__ (self ):
824- return hash ((super ().__hash__ (), self .sub_iterators ,
825- self .directions ))
826+ return hash ((super ().__hash__ (), self .sub_iterators , self .directions ))
826827
827828 def __contains__ (self , d ):
828829 try :
0 commit comments