@@ -71,97 +71,122 @@ array_api_tests/test_searching_functions.py::test_argmin
71
71
array_api_tests/test_signatures.py::test_func_signature[argmax]
72
72
array_api_tests/test_signatures.py::test_func_signature[argmin]
73
73
74
+ # unique doesn't support comparing nans as unequal
75
+ array_api_tests/test_set_functions.py::test_unique_all
76
+ array_api_tests/test_set_functions.py::test_unique_counts
77
+ array_api_tests/test_set_functions.py::test_unique_inverse
78
+ array_api_tests/test_set_functions.py::test_unique_values
79
+
74
80
# NumPy 1.21 doesn't support NPY_PROMOTION_STATE=weak, so many tests fail with
75
81
# type promotion issues
76
- array_api_tests/test_operators_and_elementwise_functions.py::test_add[add(x1, x2)]
77
- array_api_tests/test_operators_and_elementwise_functions.py::test_add[__add__(x1, x2)]
82
+ array_api_tests/test_manipulation_functions.py::test_concat
78
83
array_api_tests/test_operators_and_elementwise_functions.py::test_add[__add__(x, s)]
84
+ array_api_tests/test_operators_and_elementwise_functions.py::test_add[__add__(x1, x2)]
79
85
array_api_tests/test_operators_and_elementwise_functions.py::test_add[__iadd__(x, s)]
86
+ array_api_tests/test_operators_and_elementwise_functions.py::test_add[add(x1, x2)]
80
87
array_api_tests/test_operators_and_elementwise_functions.py::test_atan2
81
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_and[bitwise_and(x1, x2)]
82
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_and[__and__(x1, x2)]
83
88
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_and[__and__(x, s)]
89
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_and[__and__(x1, x2)]
84
90
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_and[__iand__(x, s)]
85
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[bitwise_left_shift(x1, x2)]
86
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__lshift__(x1, x2)]
87
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__lshift__(x, s)]
91
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_and[bitwise_and(x1, x2)]
88
92
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__ilshift__(x, s)]
89
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_or[bitwise_or(x1, x2 )]
90
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_or[__or__ (x1, x2)]
91
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_or[__or__(x, s )]
93
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__lshift__(x, s )]
94
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__lshift__ (x1, x2)]
95
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[bitwise_left_shift(x1, x2 )]
92
96
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_or[__ior__(x, s)]
93
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[bitwise_right_shift(x1, x2 )]
94
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__rshift__ (x1, x2)]
95
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__rshift__(x, s )]
97
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_or[__or__(x, s )]
98
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_or[__or__ (x1, x2)]
99
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_or[bitwise_or(x1, x2 )]
96
100
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__irshift__(x, s)]
97
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_xor[bitwise_xor(x1, x2 )]
98
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_xor[__xor__ (x1, x2)]
99
- array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_xor[__xor__(x, s )]
101
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__rshift__(x, s )]
102
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__rshift__ (x1, x2)]
103
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[bitwise_right_shift(x1, x2 )]
100
104
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_xor[__ixor__(x, s)]
101
- array_api_tests/test_operators_and_elementwise_functions.py::test_divide[divide(x1, x2)]
102
- array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__truediv__(x1, x2)]
105
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_xor[__xor__(x, s)]
106
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_xor[__xor__(x1, x2)]
107
+ array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_xor[bitwise_xor(x1, x2)]
103
108
array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__truediv__(x, s)]
104
- array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[floor_divide (x1, x2)]
105
- array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__floordiv__ (x1, x2)]
109
+ array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__truediv__ (x1, x2)]
110
+ array_api_tests/test_operators_and_elementwise_functions.py::test_divide[divide (x1, x2)]
106
111
array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__floordiv__(x, s)]
112
+ array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__floordiv__(x1, x2)]
107
113
array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__ifloordiv__(x, s)]
114
+ array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[floor_divide(x1, x2)]
108
115
array_api_tests/test_operators_and_elementwise_functions.py::test_logaddexp
109
- array_api_tests/test_operators_and_elementwise_functions.py::test_multiply[multiply(x1, x2)]
110
- array_api_tests/test_operators_and_elementwise_functions.py::test_multiply[__mul__(x1, x2)]
111
- array_api_tests/test_operators_and_elementwise_functions.py::test_multiply[__mul__(x, s)]
112
116
array_api_tests/test_operators_and_elementwise_functions.py::test_multiply[__imul__(x, s)]
113
- array_api_tests/test_operators_and_elementwise_functions.py::test_pow[pow(x1, x2 )]
114
- array_api_tests/test_operators_and_elementwise_functions.py::test_pow[__pow__ (x1, x2)]
115
- array_api_tests/test_operators_and_elementwise_functions.py::test_pow[__pow__(x, s )]
117
+ array_api_tests/test_operators_and_elementwise_functions.py::test_multiply[__mul__(x, s )]
118
+ array_api_tests/test_operators_and_elementwise_functions.py::test_multiply[__mul__ (x1, x2)]
119
+ array_api_tests/test_operators_and_elementwise_functions.py::test_multiply[multiply(x1, x2 )]
116
120
array_api_tests/test_operators_and_elementwise_functions.py::test_pow[__ipow__(x, s)]
117
- array_api_tests/test_operators_and_elementwise_functions.py::test_remainder[remainder(x1, x2 )]
118
- array_api_tests/test_operators_and_elementwise_functions.py::test_remainder[__mod__ (x1, x2)]
119
- array_api_tests/test_operators_and_elementwise_functions.py::test_remainder[__mod__(x, s )]
121
+ array_api_tests/test_operators_and_elementwise_functions.py::test_pow[__pow__(x, s )]
122
+ array_api_tests/test_operators_and_elementwise_functions.py::test_pow[__pow__ (x1, x2)]
123
+ array_api_tests/test_operators_and_elementwise_functions.py::test_pow[pow(x1, x2 )]
120
124
array_api_tests/test_operators_and_elementwise_functions.py::test_remainder[__imod__(x, s)]
121
- array_api_tests/test_operators_and_elementwise_functions.py::test_subtract[subtract(x1, x2 )]
122
- array_api_tests/test_operators_and_elementwise_functions.py::test_subtract[__sub__ (x1, x2)]
123
- array_api_tests/test_operators_and_elementwise_functions.py::test_subtract[__sub__(x, s )]
125
+ array_api_tests/test_operators_and_elementwise_functions.py::test_remainder[__mod__(x, s )]
126
+ array_api_tests/test_operators_and_elementwise_functions.py::test_remainder[__mod__ (x1, x2)]
127
+ array_api_tests/test_operators_and_elementwise_functions.py::test_remainder[remainder(x1, x2 )]
124
128
array_api_tests/test_operators_and_elementwise_functions.py::test_subtract[__isub__(x, s)]
125
- array_api_tests/test_special_cases.py::test_binary[add((x1_i is +0 or x1_i == -0) and isfinite(x2_i) and x2_i != 0) -> x2_i]
129
+ array_api_tests/test_operators_and_elementwise_functions.py::test_subtract[__sub__(x, s)]
130
+ array_api_tests/test_operators_and_elementwise_functions.py::test_subtract[__sub__(x1, x2)]
131
+ array_api_tests/test_operators_and_elementwise_functions.py::test_subtract[subtract(x1, x2)]
126
132
array_api_tests/test_special_cases.py::test_binary[__add__((x1_i is +0 or x1_i == -0) and isfinite(x2_i) and x2_i != 0) -> x2_i]
127
133
array_api_tests/test_special_cases.py::test_binary[__add__(isfinite(x1_i) and x1_i != 0 and (x2_i is +0 or x2_i == -0)) -> x1_i]
134
+ array_api_tests/test_special_cases.py::test_binary[__floordiv__(x1_i < 0 and x2_i is +0) -> -infinity]
135
+ array_api_tests/test_special_cases.py::test_binary[__floordiv__(x1_i > 0 and x2_i is -0) -> -infinity]
136
+ array_api_tests/test_special_cases.py::test_binary[__floordiv__(x1_i is +0 and x2_i > 0) -> +0]
137
+ array_api_tests/test_special_cases.py::test_binary[__floordiv__(x1_i is -0 and x2_i < 0) -> +0]
138
+ array_api_tests/test_special_cases.py::test_binary[__mod__(isfinite(x1_i) and x1_i < 0 and x2_i is -infinity) -> x1_i]
139
+ array_api_tests/test_special_cases.py::test_binary[__mod__(isfinite(x1_i) and x1_i > 0 and x2_i is +infinity) -> x1_i]
140
+ array_api_tests/test_special_cases.py::test_binary[__mod__(isfinite(x1_i) and x1_i > 0 and x2_i is -infinity) -> x2_i]
141
+ array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is +0 and x2_i > 0) -> +0]
142
+ array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is -0 and x2_i < 0) -> -0]
143
+ array_api_tests/test_special_cases.py::test_binary[__pow__(abs(x1_i) < 1 and x2_i is -infinity) -> +infinity]
144
+ array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i < 0 and isfinite(x1_i) and isfinite(x2_i) and not x2_i.is_integer()) -> NaN]
145
+ array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is +0 and x2_i < 0) -> +infinity]
146
+ array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is -0 and x2_i < 0 and x2_i.is_integer() and x2_i % 2 == 1) -> -infinity]
147
+ array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is -0 and x2_i > 0 and x2_i.is_integer() and x2_i % 2 == 1) -> -0]
148
+ array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is -infinity and x2_i < 0 and not (x2_i.is_integer() and x2_i % 2 == 1)) -> +0]
149
+ array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is -infinity and x2_i < 0 and x2_i.is_integer() and x2_i % 2 == 1) -> -0]
150
+ array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is -infinity and x2_i > 0 and x2_i.is_integer() and x2_i % 2 == 1) -> -infinity]
151
+ array_api_tests/test_special_cases.py::test_binary[__truediv__(x1_i > 0 and x2_i is +0) -> +infinity]
152
+ array_api_tests/test_special_cases.py::test_binary[__truediv__(x1_i > 0 and x2_i is -0) -> -infinity]
153
+ array_api_tests/test_special_cases.py::test_binary[__truediv__(x1_i is +0 and x2_i < 0) -> -0]
154
+ array_api_tests/test_special_cases.py::test_binary[__truediv__(x1_i is +0 and x2_i > 0) -> +0]
155
+ array_api_tests/test_special_cases.py::test_binary[__truediv__(x1_i is -0 and x2_i < 0) -> +0]
156
+ array_api_tests/test_special_cases.py::test_binary[__truediv__(x1_i is -0 and x2_i > 0) -> -0]
157
+ array_api_tests/test_special_cases.py::test_binary[add((x1_i is +0 or x1_i == -0) and isfinite(x2_i) and x2_i != 0) -> x2_i]
158
+ array_api_tests/test_special_cases.py::test_binary[add(isfinite(x1_i) and x1_i != 0 and (x2_i is +0 or x2_i == -0)) -> x1_i]
128
159
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i < 0 and x2_i is +0) -> roughly -pi/2]
160
+ array_api_tests/test_special_cases.py::test_binary[atan2(x1_i > 0 and x2_i is +0) -> roughly +pi/2]
161
+ array_api_tests/test_special_cases.py::test_binary[divide(x1_i > 0 and x2_i is -0) -> -infinity]
162
+ array_api_tests/test_special_cases.py::test_binary[divide(x1_i is +0 and x2_i < 0) -> -0]
129
163
array_api_tests/test_special_cases.py::test_binary[divide(x1_i is +0 and x2_i > 0) -> +0]
130
- array_api_tests/test_special_cases.py::test_binary[divide(x1_i is -0 and x2_i > 0) -> -0]
131
164
array_api_tests/test_special_cases.py::test_binary[divide(x1_i is -0 and x2_i < 0) -> +0]
132
- array_api_tests/test_special_cases.py::test_binary[__truediv__(x1_i is +0 and x2_i > 0) -> +0]
133
- array_api_tests/test_special_cases.py::test_binary[__truediv__(x1_i is -0 and x2_i > 0) -> -0]
134
- array_api_tests/test_special_cases.py::test_binary[__truediv__(x1_i is +0 and x2_i < 0) -> -0]
135
- array_api_tests/test_special_cases.py::test_binary[__truediv__(x1_i is -0 and x2_i < 0) -> +0]
136
- array_api_tests/test_special_cases.py::test_binary[__truediv__(x1_i > 0 and x2_i is +0) -> +infinity]
137
- array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i is +0 and x2_i > 0) -> +0]
165
+ array_api_tests/test_special_cases.py::test_binary[divide(x1_i is -0 and x2_i > 0) -> -0]
166
+ array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i < 0 and x2_i is +0) -> -infinity]
167
+ array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i < 0 and x2_i is -0) -> +infinity]
168
+ array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i > 0 and x2_i is -0) -> -infinity]
138
169
array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i is +0 and x2_i < 0) -> -0]
139
- array_api_tests/test_special_cases.py::test_binary[__floordiv__(x1_i is +0 and x2_i > 0) -> +0]
140
- array_api_tests/test_special_cases.py::test_binary[__floordiv__(x1_i > 0 and x2_i is -0) -> -infinity]
141
- array_api_tests/test_special_cases.py::test_binary[pow(x1_i is NaN and not x2_i == 0) -> NaN]
170
+ array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i is +0 and x2_i > 0) -> +0]
142
171
array_api_tests/test_special_cases.py::test_binary[pow(abs(x1_i) > 1 and x2_i is +infinity) -> +infinity]
143
172
array_api_tests/test_special_cases.py::test_binary[pow(abs(x1_i) > 1 and x2_i is -infinity) -> +0]
144
- array_api_tests/test_special_cases.py::test_binary[pow(x1_i is +infinity and x2_i > 0) -> +infinity]
145
- array_api_tests/test_special_cases.py::test_binary[pow(x1_i is +infinity and x2_i < 0) -> +0]
146
- array_api_tests/test_special_cases.py::test_binary[pow(x1_i is -infinity and x2_i < 0 and not (x2_i.is_integer() and x2_i % 2 == 1)) -> +0]
147
- array_api_tests/test_special_cases.py::test_binary[pow(x1_i is +0 and x2_i > 0) -> +0]
173
+ array_api_tests/test_special_cases.py::test_binary[pow(x1_i < 0 and isfinite(x1_i) and isfinite(x2_i) and not x2_i.is_integer()) -> NaN]
148
174
array_api_tests/test_special_cases.py::test_binary[pow(x1_i is +0 and x2_i < 0) -> +infinity]
149
- array_api_tests/test_special_cases.py::test_binary[pow(x1_i is -0 and x2_i > 0 and not (x2_i.is_integer() and x2_i % 2 == 1)) -> +0]
175
+ array_api_tests/test_special_cases.py::test_binary[pow(x1_i is +0 and x2_i > 0) -> +0]
176
+ array_api_tests/test_special_cases.py::test_binary[pow(x1_i is +infinity and x2_i < 0) -> +0]
177
+ array_api_tests/test_special_cases.py::test_binary[pow(x1_i is +infinity and x2_i > 0) -> +infinity]
150
178
array_api_tests/test_special_cases.py::test_binary[pow(x1_i is -0 and x2_i < 0 and not (x2_i.is_integer() and x2_i % 2 == 1)) -> +infinity]
151
- array_api_tests/test_special_cases.py::test_binary[pow(x1_i < 0 and isfinite(x1_i) and isfinite(x2_i) and not x2_i.is_integer()) -> NaN]
152
- array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is -infinity and x2_i < 0 and x2_i.is_integer() and x2_i % 2 == 1) -> -0]
153
- array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is +0 and x2_i < 0) -> +infinity]
154
- array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is -0 and x2_i > 0 and x2_i.is_integer() and x2_i % 2 == 1) -> -0]
155
- array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is -0 and x2_i < 0 and x2_i.is_integer() and x2_i % 2 == 1) -> -infinity]
156
- array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is +0 and x2_i > 0) -> +0]
157
- array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is -0 and x2_i > 0) -> +0]
158
- array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is +0 and x2_i < 0) -> -0]
159
- array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is -0 and x2_i < 0) -> -0]
179
+ array_api_tests/test_special_cases.py::test_binary[pow(x1_i is -0 and x2_i > 0 and not (x2_i.is_integer() and x2_i % 2 == 1)) -> +0]
180
+ array_api_tests/test_special_cases.py::test_binary[pow(x1_i is -0 and x2_i > 0 and x2_i.is_integer() and x2_i % 2 == 1) -> -0]
181
+ array_api_tests/test_special_cases.py::test_binary[pow(x1_i is -infinity and x2_i < 0 and not (x2_i.is_integer() and x2_i % 2 == 1)) -> +0]
182
+ array_api_tests/test_special_cases.py::test_binary[pow(x1_i is -infinity and x2_i > 0 and not (x2_i.is_integer() and x2_i % 2 == 1)) -> +infinity]
183
+ array_api_tests/test_special_cases.py::test_binary[pow(x1_i is -infinity and x2_i > 0 and x2_i.is_integer() and x2_i % 2 == 1) -> -infinity]
184
+ array_api_tests/test_special_cases.py::test_binary[pow(x1_i is NaN and not x2_i == 0) -> NaN]
185
+ array_api_tests/test_special_cases.py::test_binary[remainder(isfinite(x1_i) and x1_i < 0 and x2_i is -infinity) -> x1_i]
160
186
array_api_tests/test_special_cases.py::test_binary[remainder(isfinite(x1_i) and x1_i > 0 and x2_i is +infinity) -> x1_i]
161
187
array_api_tests/test_special_cases.py::test_binary[remainder(isfinite(x1_i) and x1_i > 0 and x2_i is -infinity) -> x2_i]
162
- array_api_tests/test_special_cases.py::test_binary[remainder(isfinite(x1_i) and x1_i < 0 and x2_i is -infinity) -> x1_i]
163
- array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is +0 and x2_i > 0) -> +0]
164
- array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is -0 and x2_i < 0) -> -0]
165
- array_api_tests/test_special_cases.py::test_binary[__mod__(isfinite(x1_i) and x1_i > 0 and x2_i is +infinity) -> x1_i]
166
- array_api_tests/test_special_cases.py::test_binary[__mod__(isfinite(x1_i) and x1_i < 0 and x2_i is -infinity) -> x1_i]
188
+ array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is +0 and x2_i < 0) -> -0]
189
+ array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is +0 and x2_i > 0) -> +0]
190
+ array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is -0 and x2_i < 0) -> -0]
191
+ array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is -0 and x2_i > 0) -> +0]
167
192
array_api_tests/test_special_cases.py::test_iop[__iadd__(x1_i is -0 and x2_i is -0) -> -0]
0 commit comments