|
19 | 19 | class SetOperations:
|
20 | 20 |
|
21 | 21 | params = (
|
22 |
| - ["datetime", "date_string", "int", "strings"], |
| 22 | + ["monotonic", "non_monotonic"], |
| 23 | + ["datetime", "date_string", "int", "strings", "ea_int"], |
23 | 24 | ["intersection", "union", "symmetric_difference"],
|
24 | 25 | )
|
25 |
| - param_names = ["dtype", "method"] |
| 26 | + param_names = ["index_structure", "dtype", "method"] |
26 | 27 |
|
27 |
| - def setup(self, dtype, method): |
| 28 | + def setup(self, index_structure, dtype, method): |
28 | 29 | N = 10**5
|
29 | 30 | dates_left = date_range("1/1/2000", periods=N, freq="T")
|
30 | 31 | fmt = "%Y-%m-%d %H:%M:%S"
|
31 | 32 | date_str_left = Index(dates_left.strftime(fmt))
|
32 | 33 | int_left = Index(np.arange(N))
|
| 34 | + ea_int_left = Index(np.arange(N), dtype="Int64") |
33 | 35 | str_left = tm.makeStringIndex(N)
|
| 36 | + |
34 | 37 | data = {
|
35 |
| - "datetime": {"left": dates_left, "right": dates_left[:-1]}, |
36 |
| - "date_string": {"left": date_str_left, "right": date_str_left[:-1]}, |
37 |
| - "int": {"left": int_left, "right": int_left[:-1]}, |
38 |
| - "strings": {"left": str_left, "right": str_left[:-1]}, |
| 38 | + "datetime": dates_left, |
| 39 | + "date_string": date_str_left, |
| 40 | + "int": int_left, |
| 41 | + "strings": str_left, |
| 42 | + "ea_int": ea_int_left, |
39 | 43 | }
|
| 44 | + |
| 45 | + if index_structure == "non_monotonic": |
| 46 | + data = {k: mi[::-1] for k, mi in data.items()} |
| 47 | + |
| 48 | + data = {k: {"left": idx, "right": idx[:-1]} for k, idx in data.items()} |
| 49 | + |
40 | 50 | self.left = data[dtype]["left"]
|
41 | 51 | self.right = data[dtype]["right"]
|
42 | 52 |
|
43 |
| - def time_operation(self, dtype, method): |
| 53 | + def time_operation(self, index_structure, dtype, method): |
44 | 54 | getattr(self.left, method)(self.right)
|
45 | 55 |
|
46 | 56 |
|
|
0 commit comments