File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed
Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change 88from xr .testing .strategies import unique_subset_of
99
1010
11+ def _basic_indexers (size ):
12+ return st .one_of (
13+ st .integers (min_value = - size , max_value = size - 1 ),
14+ st .slices (size ),
15+ )
16+
17+
18+ def _outer_array_indexers (size , max_size ):
19+ return npst .arrays (
20+ dtype = np .int64 ,
21+ shape = st .integers (min_value = 1 , max_value = min (size , max_size )),
22+ elements = st .integers (min_value = - size , max_value = size - 1 ),
23+ )
24+
25+
1126# vendored from `xarray`, should be included in `xarray>=2026.01.0`
1227@st .composite
1328def basic_indexers (
@@ -101,6 +116,29 @@ def outer_array_indexers(
101116 return idxr
102117
103118
119+ @st .composite
120+ def orthogonal_indexers (
121+ draw ,
122+ / ,
123+ * ,
124+ sizes : dict [Hashable , int ],
125+ min_dims : int = 2 ,
126+ max_dims : int | None = None ,
127+ max_size : int = 10 ,
128+ ) -> dict [Hashable , int | slice | np .ndarray ]:
129+ selected_dims = draw (unique_subset_of (sizes , min_size = min_dims , max_size = max_dims ))
130+
131+ return {
132+ dim : draw (
133+ st .one_of (
134+ _basic_indexers (size ),
135+ _outer_array_indexers (size , max_size ),
136+ )
137+ )
138+ for dim , size in selected_dims .items ()
139+ }
140+
141+
104142@st .composite
105143def vectorized_indexers (
106144 draw ,
You can’t perform that action at this time.
0 commit comments