@@ -71,97 +71,122 @@ array_api_tests/test_searching_functions.py::test_argmin
7171array_api_tests/test_signatures.py::test_func_signature[argmax]
7272array_api_tests/test_signatures.py::test_func_signature[argmin]
7373
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+
7480# NumPy 1.21 doesn't support NPY_PROMOTION_STATE=weak, so many tests fail with
7581# 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
7883array_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)]
7985array_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)]
8087array_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)]
8388array_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)]
8490array_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)]
8892array_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 )]
9296array_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 )]
96100array_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 )]
100104array_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)]
103108array_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)]
106111array_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)]
107113array_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)]
108115array_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)]
112116array_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 )]
116120array_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 )]
120124array_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 )]
124128array_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)]
126132array_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]
127133array_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]
128159array_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]
129163array_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]
131164array_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]
138169array_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]
142171array_api_tests/test_special_cases.py::test_binary[pow(abs(x1_i) > 1 and x2_i is +infinity) -> +infinity]
143172array_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]
148174array_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]
150178array_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]
160186array_api_tests/test_special_cases.py::test_binary[remainder(isfinite(x1_i) and x1_i > 0 and x2_i is +infinity) -> x1_i]
161187array_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]
167192array_api_tests/test_special_cases.py::test_iop[__iadd__(x1_i is -0 and x2_i is -0) -> -0]
0 commit comments