From 05dcd2718960d194bd351867e5ecc44e0a29dc86 Mon Sep 17 00:00:00 2001 From: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> Date: Sun, 30 Aug 2026 16:22:39 +0530 Subject: [PATCH 1/9] Re-introduce Array API Tests suite Signed-off-by: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> --- .github/workflows/build_and_test.yml | 47 ++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index a4b5ddf8f3..36dc541022 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -139,6 +139,53 @@ jobs: with: toolkit: ${{ matrix.toolkit }} + array_api_test: + name: Array API Tests (Metal) + if: github.repository == 'ml-explore/mlx' + needs: mac_build + runs-on: 'macos-26-xlarge' + steps: + - uses: actions/checkout@v7 + - uses: ./.github/actions/setup + with: + toolkit: 'metal' + use-ccache: false + - uses: actions/download-artifact@v8 + with: + path: artifact + pattern: mlx-metal-* + - name: Checkout array-api-tests + uses: actions/checkout@v7 + with: + repository: data-apis/array-api-tests + ref: '41379d15d26d67a1e66c840e775d41a8a7fb1516' # v2026.02.26 + submodules: 'true' + path: 'array-api-tests' + persist-credentials: false + - name: Install dependencies + shell: bash + run: | + uv pip install pytest-xdist -r array-api-tests/requirements.txt + - name: Run the test suite + shell: bash + env: + ARRAY_API_TESTS_MODULE: mlx.core + ARRAY_API_TESTS_SKIP_DTYPES: 'float64,complex128' + PYTHONWARNINGS: 'ignore::UserWarning::,ignore::DeprecationWarning::,ignore::RuntimeWarning::' + METAL_DEBUG_ERROR_MODE: 0 + METAL_DEVICE_WRAPPER_TYPE: 1 + run: | + if [[ -d artifact ]] ; then + for SUBDIR in artifact/*; do + rm -rf build dist + mv "$SUBDIR"/* . + break + done + fi + uv pip install dist/*.whl + cd "${GITHUB_WORKSPACE}/array-api-tests" + pytest array_api_tests -v -c pytest.ini -n 2 --max-examples=1000 --derandomize --disable-data-dependent-shapes --disable-deadline + build_documentation: name: Build Documentation if: github.repository == 'ml-explore/mlx' From 54ffa053c9cf0799e341ee9f1199991354907765 Mon Sep 17 00:00:00 2001 From: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> Date: Sun, 30 Aug 2026 22:25:49 +0530 Subject: [PATCH 2/9] ref master Signed-off-by: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 36dc541022..79f3e0dd82 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -158,7 +158,7 @@ jobs: uses: actions/checkout@v7 with: repository: data-apis/array-api-tests - ref: '41379d15d26d67a1e66c840e775d41a8a7fb1516' # v2026.02.26 + ref: master submodules: 'true' path: 'array-api-tests' persist-credentials: false From 22e9e2cce9ae7f7e46ba0f3092db427b19f273ac Mon Sep 17 00:00:00 2001 From: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:18:32 +0530 Subject: [PATCH 3/9] Add complete list of xfails Signed-off-by: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> --- .github/workflows/build_and_test.yml | 2 +- xfail.txt | 291 +++++++++++++++++++++++++++ 2 files changed, 292 insertions(+), 1 deletion(-) create mode 100644 xfail.txt diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 79f3e0dd82..228aa3c2d3 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -184,7 +184,7 @@ jobs: fi uv pip install dist/*.whl cd "${GITHUB_WORKSPACE}/array-api-tests" - pytest array_api_tests -v -c pytest.ini -n 2 --max-examples=1000 --derandomize --disable-data-dependent-shapes --disable-deadline + pytest array_api_tests -v -c pytest.ini -n 2 --max-examples=1000 --derandomize --disable-data-dependent-shapes --disable-deadline --skips-file "${GITHUB_WORKSPACE}/xfail.txt" build_documentation: name: Build Documentation diff --git a/xfail.txt b/xfail.txt new file mode 100644 index 0000000000..c26ccebaac --- /dev/null +++ b/xfail.txt @@ -0,0 +1,291 @@ +array_api_tests/test_has_names.py::test_has_names[elementwise-copysign] # copysign is not implemented +array_api_tests/test_has_names.py::test_has_names[elementwise-hypot] # hypot is not implemented +array_api_tests/test_has_names.py::test_has_names[elementwise-nextafter] # nextafter is not implemented +array_api_tests/test_has_names.py::test_has_names[elementwise-signbit] # signbit is not implemented +array_api_tests/test_has_names.py::test_has_names[array_method-__pos__] # __pos__ is not implemented +array_api_tests/test_has_names.py::test_has_names[array_method-to_device] # to_device is not implemented +array_api_tests/test_has_names.py::test_has_names[array_attribute-device] # device attribute is missing +array_api_tests/test_has_names.py::test_has_names[array_attribute-mT] # mT attribute is missing +array_api_tests/test_inspection_functions.py::TestInspection::test_capabilities # failure +array_api_tests/test_inspection_functions.py::test_array_namespace_info_dtypes # device argument is unsupported +array_api_tests/test_linalg.py::test_cholesky # cholesky is not supported on GPU +array_api_tests/test_array_object.py::test_setitem_masking # 0-D boolean masking raises SmallVector error +array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_1[1] # advanced indexing crashes +array_api_tests/test_special_cases.py::test_unary[expm1((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is +0) -> 0 + 0j] # expm1 does not support complex64 +array_api_tests/test_special_cases.py::test_unary[expm1(isfinite(real(x_i)) and imag(x_i) is +infinity) -> NaN + NaN j] # expm1 does not support complex64 +array_api_tests/test_special_cases.py::test_unary[expm1(isfinite(real(x_i)) and imag(x_i) is NaN) -> NaN + NaN j] # expm1 does not support complex64 +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j] # expm1 does not support complex64 +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is -infinity and imag(x_i) is +infinity) -> -1 + 0j] # expm1 does not support complex64 +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is +infinity) -> infinity + NaN j] # expm1 does not support complex64 +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is -infinity and imag(x_i) is NaN) -> -1 + 0j] # expm1 does not support complex64 +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is NaN) -> infinity + NaN j] # expm1 does not support complex64 +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] # expm1 does not support complex64 +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and not imag(x_i) == 0) -> NaN + NaN j] # expm1 does not support complex64 +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] # expm1 does not support complex64 +array_api_tests/test_special_cases.py::test_unary[log((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[log(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[log1p((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[log1p(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[sign(x_i is NaN) -> NaN] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[sign((real(x_i) is -0 or real(x_i) == +0) and (imag(x_i) is -0 or imag(x_i) == +0)) -> 0 + 0j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +0) -> False] # signbit is not implemented +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -0) -> True] # signbit is not implemented +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +infinity) -> False] # signbit is not implemented +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -infinity) -> True] # signbit is not implemented +array_api_tests/test_special_cases.py::test_unary[signbit(isfinite(x_i) and x_i > 0) -> False] # signbit is not implemented +array_api_tests/test_special_cases.py::test_unary[signbit(isfinite(x_i) and x_i < 0) -> True] # signbit is not implemented +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +NaN) -> False] # signbit is not implemented +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -NaN) -> True] # signbit is not implemented +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +0 and imag(x_i) is +infinity) -> 0 + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +0 and imag(x_i) is NaN) -> 0 + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +infinity and imag(x_i) is +infinity) -> infinity + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +infinity and imag(x_i) is NaN) -> infinity + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0 j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is -infinity and imag(x_i) is NaN) -> NaN + infinity j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity and imag(x_i) is NaN) -> +infinity + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +0 and imag(x_i) is +infinity) -> +0 + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +0 and imag(x_i) is NaN) -> +0 + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +infinity and imag(x_i) is +infinity) -> 1 + 0j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +infinity and imag(x_i) is NaN) -> 1 + 0j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i < 0) -> NaN] # special-case behavior differs +array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i is -0) -> NaN] # special-case behavior differs +array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i is +0) -> NaN] # special-case behavior differs +array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i > 0) -> NaN] # special-case behavior differs +array_api_tests/test_linalg.py::test_det # unsupported behavior +array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is NaN or x2_i is NaN) -> NaN] # special-case behavior differs +array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is -0 and x2_i is +0) -> +0] # special-case behavior differs +array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is +0 and x2_i is -0) -> -0] # special-case behavior differs +array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is -0 and x2_i > 0) -> +0] # special-case behavior differs +array_api_tests/test_linalg.py::test_diagonal # failure +array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is +0 and x2_i < 0) -> -0] # special-case behavior differs +array_api_tests/test_linalg.py::test_eigh # unsupported behavior +array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is -0 and x2_i > 0) -> +0] # special-case behavior differs +array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is +0 and x2_i < 0) -> -0] # special-case behavior differs +array_api_tests/test_linalg.py::test_eigvalsh # failure +array_api_tests/test_linalg.py::test_eig # unsupported behavior +array_api_tests/test_special_cases.py::test_iop[__imod__(x1_i is -0 and x2_i > 0) -> +0] # special-case behavior differs +array_api_tests/test_special_cases.py::test_iop[__imod__(x1_i is +0 and x2_i < 0) -> -0] # special-case behavior differs +array_api_tests/test_linalg.py::test_eigvals # unsupported behavior +array_api_tests/test_linalg.py::test_inv # unsupported behavior +array_api_tests/test_linalg.py::test_linalg_matmul # failure +array_api_tests/test_linalg.py::test_matmul # unsupported behavior +array_api_tests/test_linalg.py::test_matrix_norm # failure +array_api_tests/test_linalg.py::test_matrix_power # failure +array_api_tests/test_linalg.py::test_matrix_rank # failure +array_api_tests/test_linalg.py::test_linalg_matrix_transpose # failure +array_api_tests/test_linalg.py::test_matrix_transpose # behavior differs +array_api_tests/test_linalg.py::test_outer # failure +array_api_tests/test_linalg.py::test_pinv # failure +array_api_tests/test_linalg.py::test_qr # failure +array_api_tests/test_linalg.py::test_slogdet # unsupported behavior +array_api_tests/test_linalg.py::test_solve # unsupported behavior +array_api_tests/test_linalg.py::test_svd # failure +array_api_tests/test_linalg.py::test_svdvals # failure +array_api_tests/test_linalg.py::test_linalg_tensordot # failure +array_api_tests/test_linalg.py::test_tensordot # unsupported behavior +array_api_tests/test_linalg.py::test_trace # failure +array_api_tests/test_linalg.py::test_linalg_vecdot # failure +array_api_tests/test_statistical_functions.py::test_cumulative_sum # failure +array_api_tests/test_linalg.py::test_vecdot # failure +array_api_tests/test_linalg.py::test_vecdot_conj # failure +array_api_tests/test_statistical_functions.py::test_cumulative_prod # failure +array_api_tests/test_linalg.py::test_vector_norm # failure +array_api_tests/test_manipulation_functions.py::TestExpandDims::test_expand_dims # unsupported behavior +array_api_tests/test_statistical_functions.py::test_prod # failure +array_api_tests/test_statistical_functions.py::test_std # incompatible arguments +array_api_tests/test_statistical_functions.py::test_sum # failure +array_api_tests/test_manipulation_functions.py::test_moveaxis # incompatible arguments +array_api_tests/test_statistical_functions.py::test_var # incompatible arguments +array_api_tests/test_manipulation_functions.py::test_repeat # incompatible arguments +array_api_tests/test_utility_functions.py::test_diff_append_prepend # diff lacks append/prepend support +array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_1[None] # advanced indexing crashes +array_api_tests/test_manipulation_functions.py::test_reshape # incompatible arguments +array_api_tests/test_manipulation_functions.py::test_unstack # failure +array_api_tests/test_creation_functions.py::test_asarray_arrays # unsupported behavior +array_api_tests/test_creation_functions.py::test_eye # failure +array_api_tests/test_operators_and_elementwise_functions.py::test_acos # unsupported behavior +array_api_tests/test_data_type_functions.py::test_iinfo[dtype4] # dtype is unsupported +array_api_tests/test_data_type_functions.py::test_iinfo[dtype5] # dtype is unsupported +array_api_tests/test_data_type_functions.py::test_iinfo[dtype6] # dtype is unsupported +array_api_tests/test_data_type_functions.py::test_iinfo[dtype7] # dtype is unsupported +array_api_tests/test_operators_and_elementwise_functions.py::test_acosh # runtime error +array_api_tests/test_data_type_functions.py::TestResultType::test_with_scalars # unsupported behavior +array_api_tests/test_operators_and_elementwise_functions.py::test_asin # behavior differs +array_api_tests/test_dlpack.py::test_from_dlpack # DLPack behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_asinh # runtime error +array_api_tests/test_operators_and_elementwise_functions.py::test_atan # failure +array_api_tests/test_operators_and_elementwise_functions.py::test_atanh # runtime error +array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[bitwise_left_shift(x1, x2)] # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__lshift__(x1, x2)] # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__ilshift__(x1, x2)] # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__rshift__(x1, x2)] # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__irshift__(x1, x2)] # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_clip # incompatible arguments +array_api_tests/test_operators_and_elementwise_functions.py::test_copysign # behavior differs +array_api_tests/test_fft.py::test_hfft # failure +array_api_tests/test_operators_and_elementwise_functions.py::test_divide[divide(x1, x2)] # failure +array_api_tests/test_fft.py::test_ihfft # failure +array_api_tests/test_fft.py::test_fftfreq # incompatible arguments +array_api_tests/test_fft.py::test_rfftfreq # incompatible arguments +array_api_tests/test_has_names.py::test_has_names[linalg-diagonal] # behavior differs +array_api_tests/test_has_names.py::test_has_names[linalg-matmul] # behavior differs +array_api_tests/test_has_names.py::test_has_names[linalg-matrix_norm] # behavior differs +array_api_tests/test_has_names.py::test_has_names[linalg-matrix_power] # behavior differs +array_api_tests/test_has_names.py::test_has_names[linalg-matrix_rank] # behavior differs +array_api_tests/test_has_names.py::test_has_names[linalg-matrix_transpose] # behavior differs +array_api_tests/test_has_names.py::test_has_names[linalg-outer] # behavior differs +array_api_tests/test_has_names.py::test_has_names[linalg-svdvals] # behavior differs +array_api_tests/test_has_names.py::test_has_names[linalg-tensordot] # behavior differs +array_api_tests/test_has_names.py::test_has_names[linalg-trace] # behavior differs +array_api_tests/test_has_names.py::test_has_names[linalg-vecdot] # behavior differs +array_api_tests/test_has_names.py::test_has_names[linalg-vector_norm] # behavior differs +array_api_tests/test_has_names.py::test_has_names[fft-hfft] # behavior differs +array_api_tests/test_has_names.py::test_has_names[fft-ihfft] # behavior differs +array_api_tests/test_has_names.py::test_has_names[set-isin] # behavior differs +array_api_tests/test_has_names.py::test_has_names[set-unique_all] # behavior differs +array_api_tests/test_has_names.py::test_has_names[set-unique_counts] # behavior differs +array_api_tests/test_has_names.py::test_has_names[set-unique_inverse] # behavior differs +array_api_tests/test_has_names.py::test_has_names[set-unique_values] # behavior differs +array_api_tests/test_has_names.py::test_has_names[searching-nonzero] # behavior differs +array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_2[1] # advanced indexing crashes +array_api_tests/test_data_type_functions.py::test_astype # incompatible arguments +array_api_tests/test_data_type_functions.py::test_broadcast_arrays # behavior differs +array_api_tests/test_data_type_functions.py::TestBroadcastShapes::test_empty # unsupported behavior +array_api_tests/test_data_type_functions.py::test_can_cast # incompatible arguments +array_api_tests/test_data_type_functions.py::test_finfo[dtype0] # incompatible arguments +array_api_tests/test_data_type_functions.py::test_finfo[dtype1] # incompatible arguments +array_api_tests/test_data_type_functions.py::test_iinfo[dtype0] # dtype is unsupported +array_api_tests/test_data_type_functions.py::test_iinfo[dtype1] # dtype is unsupported +array_api_tests/test_data_type_functions.py::test_iinfo[dtype2] # dtype is unsupported +array_api_tests/test_data_type_functions.py::test_iinfo[dtype3] # dtype is unsupported +array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_2[None] # advanced indexing crashes +array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__truediv__(x1, x2)] # failure +array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__itruediv__(x1, x2)] # failure +array_api_tests/test_operators_and_elementwise_functions.py::test_expm1 # unsupported behavior +array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[floor_divide(x1, x2)] # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__floordiv__(x1, x2)] # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__ifloordiv__(x1, x2)] # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_hypot # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_log1p # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_log2 # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_log10 # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_nextafter # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_positive[__pos__] # failure +array_api_tests/test_operators_and_elementwise_functions.py::test_signbit # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_sqrt # behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[atan2] # special-case behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[copysign] # special-case behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[hypot] # special-case behavior differs +array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[nextafter] # special-case behavior differs +array_api_tests/test_searching_functions.py::test_argmax # behavior differs +array_api_tests/test_searching_functions.py::test_argmin # behavior differs +array_api_tests/test_searching_functions.py::test_searchsorted # incompatible arguments +array_api_tests/test_searching_functions.py::test_searchsorted_with_scalars # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[cumulative_sum] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[cumulative_prod] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[prod] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[std] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[sum] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[var] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[isin] # behavior differs +array_api_tests/test_signatures.py::test_func_signature[unique_all] # behavior differs +array_api_tests/test_signatures.py::test_func_signature[unique_counts] # behavior differs +array_api_tests/test_signatures.py::test_func_signature[unique_inverse] # behavior differs +array_api_tests/test_signatures.py::test_func_signature[unique_values] # behavior differs +array_api_tests/test_signatures.py::test_func_signature[nonzero] # behavior differs +array_api_tests/test_signatures.py::test_func_signature[searchsorted] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[asarray] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[empty_like] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[from_dlpack] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[full_like] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[ones_like] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[zeros_like] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[diff] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[permute_dims] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[reshape] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[argsort] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[sort] # incompatible arguments +array_api_tests/test_signatures.py::test_func_signature[clip] # failure +array_api_tests/test_signatures.py::test_func_signature[copysign] # behavior differs +array_api_tests/test_signatures.py::test_func_signature[hypot] # behavior differs +array_api_tests/test_signatures.py::test_func_signature[nextafter] # behavior differs +array_api_tests/test_signatures.py::test_func_signature[signbit] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.cholesky] # unsupported behavior +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.det] # unsupported behavior +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.diagonal] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.eigh] # unsupported behavior +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.eigvalsh] # unsupported behavior +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.inv] # unsupported behavior +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matmul] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_norm] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_power] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_rank] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_transpose] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.outer] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.pinv] # incompatible arguments +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.qr] # incompatible arguments +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.slogdet] # unsupported behavior +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.solve] # unsupported behavior +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.svd] # incompatible arguments +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.svdvals] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.tensordot] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.trace] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.vecdot] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.vector_norm] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[fft.hfft] # behavior differs +array_api_tests/test_signatures.py::test_extension_func_signature[fft.ihfft] # behavior differs +array_api_tests/test_signatures.py::test_array_method_signature[__pos__] # behavior differs +array_api_tests/test_signatures.py::test_array_method_signature[to_device] # behavior differs +array_api_tests/test_sorting_functions.py::test_argsort # failure +array_api_tests/test_sorting_functions.py::test_sort # incompatible arguments +array_api_tests/test_special_cases.py::test_unary[acos((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is NaN) -> \u03c0/2 + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[acos(isfinite(real(x_i)) and imag(x_i) is +infinity) -> \u03c0/2] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> \u03c0] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and imag(x_i) is +infinity) -> 3\u03c0/4] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is +infinity and imag(x_i) is +infinity) -> \u03c0/4] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[acos((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> NaN \u00b1 infinity j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is NaN and imag(x_i) is +infinity) -> NaN] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[acosh((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is +0) -> +0 + \u03c0j/2] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[acosh(isfinite(real(x_i)) and imag(x_i) is +infinity) -> +infinity + \u03c0j/2] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[acosh(isfinite(real(x_i)) and real(x_i) != 0 and imag(x_i) is NaN) -> NaN + NaN j] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN \u00b1 \u03c0j/2] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is -infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + \u03c0j] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0j] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is -infinity and imag(x_i) is +infinity) -> +infinity + 3\u03c0j/4] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + \u03c0j/4] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[acosh((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and isfinite(imag(x_i))) -> NaN + NaN j] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] # ArcCosh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +0 and imag(x_i) is +0) -> +0 + 0j] # ArcSinh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[asinh(isfinite(real(x_i)) and real(x_i) > 0 and imag(x_i) is +infinity) -> +infinity + \u03c0j/2] # ArcSinh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[asinh(isfinite(real(x_i)) and imag(x_i) is NaN) -> NaN + NaN j] # ArcSinh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0j] # ArcSinh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + \u03c0j/4] # ArcSinh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] # ArcSinh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and isfinite(imag(x_i)) and imag(x_i) != 0) -> NaN + NaN j] # ArcSinh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is +infinity) -> \u00b1infinity + NaN j] # ArcSinh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] # ArcSinh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[atan(x_i is -0) -> -0] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +0 and imag(x_i) is +0) -> +0 + 0j] # ArcTanh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +0 and imag(x_i) is NaN) -> +0 + NaN j] # ArcTanh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is 1 and imag(x_i) is +0) -> +infinity + 0j] # ArcTanh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[atanh(isfinite(real(x_i)) and real(x_i) > 0 and imag(x_i) is +infinity) -> +0 + \u03c0j/2] # ArcTanh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[atanh(isfinite(real(x_i)) and real(x_i) != 0 and imag(x_i) is NaN) -> NaN + NaN j] # ArcTanh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0 + \u03c0j/2] # ArcTanh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +0 + \u03c0j/2] # ArcTanh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and imag(x_i) is NaN) -> +0 + NaN j] # ArcTanh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and isfinite(imag(x_i))) -> NaN + NaN j] # ArcTanh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and imag(x_i) is +infinity) -> \u00b10 + \u03c0j/2] # ArcTanh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] # ArcTanh complex64 kernel unavailable +array_api_tests/test_special_cases.py::test_unary[clip(x_i is NaN) -> NaN] # incompatible arguments +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +0 and imag(x_i) is +infinity) -> NaN + 0j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN + 0j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is NaN) -> +infinity + NaN j] # special-case behavior differs +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is NaN and (imag(x_i) is +0 or imag(x_i) == -0)) -> NaN + 0j] # special-case behavior differs \ No newline at end of file From b4d8b23ef9a1c99cea16d2e36c620b255a935e13 Mon Sep 17 00:00:00 2001 From: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> Date: Tue, 8 Sep 2026 13:55:01 +0530 Subject: [PATCH 4/9] point to v2026.09.08 and use better xfail file Signed-off-by: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> --- .github/workflows/build_and_test.yml | 2 +- xfail.txt | 595 ++++++++++++++------------- 2 files changed, 305 insertions(+), 292 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 228aa3c2d3..2aed86614b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -158,7 +158,7 @@ jobs: uses: actions/checkout@v7 with: repository: data-apis/array-api-tests - ref: master + ref: 'ef5b39f1190d54dca0d9a12646033d2d123afdd5' # v2026.09.08 submodules: 'true' path: 'array-api-tests' persist-credentials: false diff --git a/xfail.txt b/xfail.txt index c26ccebaac..91ac908ac3 100644 --- a/xfail.txt +++ b/xfail.txt @@ -1,291 +1,304 @@ -array_api_tests/test_has_names.py::test_has_names[elementwise-copysign] # copysign is not implemented -array_api_tests/test_has_names.py::test_has_names[elementwise-hypot] # hypot is not implemented -array_api_tests/test_has_names.py::test_has_names[elementwise-nextafter] # nextafter is not implemented -array_api_tests/test_has_names.py::test_has_names[elementwise-signbit] # signbit is not implemented -array_api_tests/test_has_names.py::test_has_names[array_method-__pos__] # __pos__ is not implemented -array_api_tests/test_has_names.py::test_has_names[array_method-to_device] # to_device is not implemented -array_api_tests/test_has_names.py::test_has_names[array_attribute-device] # device attribute is missing -array_api_tests/test_has_names.py::test_has_names[array_attribute-mT] # mT attribute is missing -array_api_tests/test_inspection_functions.py::TestInspection::test_capabilities # failure -array_api_tests/test_inspection_functions.py::test_array_namespace_info_dtypes # device argument is unsupported -array_api_tests/test_linalg.py::test_cholesky # cholesky is not supported on GPU -array_api_tests/test_array_object.py::test_setitem_masking # 0-D boolean masking raises SmallVector error -array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_1[1] # advanced indexing crashes -array_api_tests/test_special_cases.py::test_unary[expm1((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is +0) -> 0 + 0j] # expm1 does not support complex64 -array_api_tests/test_special_cases.py::test_unary[expm1(isfinite(real(x_i)) and imag(x_i) is +infinity) -> NaN + NaN j] # expm1 does not support complex64 -array_api_tests/test_special_cases.py::test_unary[expm1(isfinite(real(x_i)) and imag(x_i) is NaN) -> NaN + NaN j] # expm1 does not support complex64 -array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j] # expm1 does not support complex64 -array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is -infinity and imag(x_i) is +infinity) -> -1 + 0j] # expm1 does not support complex64 -array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is +infinity) -> infinity + NaN j] # expm1 does not support complex64 -array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is -infinity and imag(x_i) is NaN) -> -1 + 0j] # expm1 does not support complex64 -array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is NaN) -> infinity + NaN j] # expm1 does not support complex64 -array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] # expm1 does not support complex64 -array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and not imag(x_i) == 0) -> NaN + NaN j] # expm1 does not support complex64 -array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] # expm1 does not support complex64 -array_api_tests/test_special_cases.py::test_unary[log((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[log(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[log1p((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[log1p(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[sign(x_i is NaN) -> NaN] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[sign((real(x_i) is -0 or real(x_i) == +0) and (imag(x_i) is -0 or imag(x_i) == +0)) -> 0 + 0j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +0) -> False] # signbit is not implemented -array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -0) -> True] # signbit is not implemented -array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +infinity) -> False] # signbit is not implemented -array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -infinity) -> True] # signbit is not implemented -array_api_tests/test_special_cases.py::test_unary[signbit(isfinite(x_i) and x_i > 0) -> False] # signbit is not implemented -array_api_tests/test_special_cases.py::test_unary[signbit(isfinite(x_i) and x_i < 0) -> True] # signbit is not implemented -array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +NaN) -> False] # signbit is not implemented -array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -NaN) -> True] # signbit is not implemented -array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +0 and imag(x_i) is +infinity) -> 0 + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +0 and imag(x_i) is NaN) -> 0 + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +infinity and imag(x_i) is +infinity) -> infinity + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +infinity and imag(x_i) is NaN) -> infinity + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0 j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is -infinity and imag(x_i) is NaN) -> NaN + infinity j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity and imag(x_i) is NaN) -> +infinity + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +0 and imag(x_i) is +infinity) -> +0 + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +0 and imag(x_i) is NaN) -> +0 + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +infinity and imag(x_i) is +infinity) -> 1 + 0j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +infinity and imag(x_i) is NaN) -> 1 + 0j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i < 0) -> NaN] # special-case behavior differs -array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i is -0) -> NaN] # special-case behavior differs -array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i is +0) -> NaN] # special-case behavior differs -array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i > 0) -> NaN] # special-case behavior differs -array_api_tests/test_linalg.py::test_det # unsupported behavior -array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is NaN or x2_i is NaN) -> NaN] # special-case behavior differs -array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is -0 and x2_i is +0) -> +0] # special-case behavior differs -array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is +0 and x2_i is -0) -> -0] # special-case behavior differs -array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is -0 and x2_i > 0) -> +0] # special-case behavior differs -array_api_tests/test_linalg.py::test_diagonal # failure -array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is +0 and x2_i < 0) -> -0] # special-case behavior differs -array_api_tests/test_linalg.py::test_eigh # unsupported behavior -array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is -0 and x2_i > 0) -> +0] # special-case behavior differs -array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is +0 and x2_i < 0) -> -0] # special-case behavior differs -array_api_tests/test_linalg.py::test_eigvalsh # failure -array_api_tests/test_linalg.py::test_eig # unsupported behavior -array_api_tests/test_special_cases.py::test_iop[__imod__(x1_i is -0 and x2_i > 0) -> +0] # special-case behavior differs -array_api_tests/test_special_cases.py::test_iop[__imod__(x1_i is +0 and x2_i < 0) -> -0] # special-case behavior differs -array_api_tests/test_linalg.py::test_eigvals # unsupported behavior -array_api_tests/test_linalg.py::test_inv # unsupported behavior -array_api_tests/test_linalg.py::test_linalg_matmul # failure -array_api_tests/test_linalg.py::test_matmul # unsupported behavior -array_api_tests/test_linalg.py::test_matrix_norm # failure -array_api_tests/test_linalg.py::test_matrix_power # failure -array_api_tests/test_linalg.py::test_matrix_rank # failure -array_api_tests/test_linalg.py::test_linalg_matrix_transpose # failure -array_api_tests/test_linalg.py::test_matrix_transpose # behavior differs -array_api_tests/test_linalg.py::test_outer # failure -array_api_tests/test_linalg.py::test_pinv # failure -array_api_tests/test_linalg.py::test_qr # failure -array_api_tests/test_linalg.py::test_slogdet # unsupported behavior -array_api_tests/test_linalg.py::test_solve # unsupported behavior -array_api_tests/test_linalg.py::test_svd # failure -array_api_tests/test_linalg.py::test_svdvals # failure -array_api_tests/test_linalg.py::test_linalg_tensordot # failure -array_api_tests/test_linalg.py::test_tensordot # unsupported behavior -array_api_tests/test_linalg.py::test_trace # failure -array_api_tests/test_linalg.py::test_linalg_vecdot # failure -array_api_tests/test_statistical_functions.py::test_cumulative_sum # failure -array_api_tests/test_linalg.py::test_vecdot # failure -array_api_tests/test_linalg.py::test_vecdot_conj # failure -array_api_tests/test_statistical_functions.py::test_cumulative_prod # failure -array_api_tests/test_linalg.py::test_vector_norm # failure -array_api_tests/test_manipulation_functions.py::TestExpandDims::test_expand_dims # unsupported behavior -array_api_tests/test_statistical_functions.py::test_prod # failure -array_api_tests/test_statistical_functions.py::test_std # incompatible arguments -array_api_tests/test_statistical_functions.py::test_sum # failure -array_api_tests/test_manipulation_functions.py::test_moveaxis # incompatible arguments -array_api_tests/test_statistical_functions.py::test_var # incompatible arguments -array_api_tests/test_manipulation_functions.py::test_repeat # incompatible arguments -array_api_tests/test_utility_functions.py::test_diff_append_prepend # diff lacks append/prepend support -array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_1[None] # advanced indexing crashes -array_api_tests/test_manipulation_functions.py::test_reshape # incompatible arguments -array_api_tests/test_manipulation_functions.py::test_unstack # failure -array_api_tests/test_creation_functions.py::test_asarray_arrays # unsupported behavior -array_api_tests/test_creation_functions.py::test_eye # failure -array_api_tests/test_operators_and_elementwise_functions.py::test_acos # unsupported behavior -array_api_tests/test_data_type_functions.py::test_iinfo[dtype4] # dtype is unsupported -array_api_tests/test_data_type_functions.py::test_iinfo[dtype5] # dtype is unsupported -array_api_tests/test_data_type_functions.py::test_iinfo[dtype6] # dtype is unsupported -array_api_tests/test_data_type_functions.py::test_iinfo[dtype7] # dtype is unsupported -array_api_tests/test_operators_and_elementwise_functions.py::test_acosh # runtime error -array_api_tests/test_data_type_functions.py::TestResultType::test_with_scalars # unsupported behavior -array_api_tests/test_operators_and_elementwise_functions.py::test_asin # behavior differs -array_api_tests/test_dlpack.py::test_from_dlpack # DLPack behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_asinh # runtime error -array_api_tests/test_operators_and_elementwise_functions.py::test_atan # failure -array_api_tests/test_operators_and_elementwise_functions.py::test_atanh # runtime error -array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[bitwise_left_shift(x1, x2)] # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__lshift__(x1, x2)] # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__ilshift__(x1, x2)] # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__rshift__(x1, x2)] # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__irshift__(x1, x2)] # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_clip # incompatible arguments -array_api_tests/test_operators_and_elementwise_functions.py::test_copysign # behavior differs -array_api_tests/test_fft.py::test_hfft # failure -array_api_tests/test_operators_and_elementwise_functions.py::test_divide[divide(x1, x2)] # failure -array_api_tests/test_fft.py::test_ihfft # failure -array_api_tests/test_fft.py::test_fftfreq # incompatible arguments -array_api_tests/test_fft.py::test_rfftfreq # incompatible arguments -array_api_tests/test_has_names.py::test_has_names[linalg-diagonal] # behavior differs -array_api_tests/test_has_names.py::test_has_names[linalg-matmul] # behavior differs -array_api_tests/test_has_names.py::test_has_names[linalg-matrix_norm] # behavior differs -array_api_tests/test_has_names.py::test_has_names[linalg-matrix_power] # behavior differs -array_api_tests/test_has_names.py::test_has_names[linalg-matrix_rank] # behavior differs -array_api_tests/test_has_names.py::test_has_names[linalg-matrix_transpose] # behavior differs -array_api_tests/test_has_names.py::test_has_names[linalg-outer] # behavior differs -array_api_tests/test_has_names.py::test_has_names[linalg-svdvals] # behavior differs -array_api_tests/test_has_names.py::test_has_names[linalg-tensordot] # behavior differs -array_api_tests/test_has_names.py::test_has_names[linalg-trace] # behavior differs -array_api_tests/test_has_names.py::test_has_names[linalg-vecdot] # behavior differs -array_api_tests/test_has_names.py::test_has_names[linalg-vector_norm] # behavior differs -array_api_tests/test_has_names.py::test_has_names[fft-hfft] # behavior differs -array_api_tests/test_has_names.py::test_has_names[fft-ihfft] # behavior differs -array_api_tests/test_has_names.py::test_has_names[set-isin] # behavior differs -array_api_tests/test_has_names.py::test_has_names[set-unique_all] # behavior differs -array_api_tests/test_has_names.py::test_has_names[set-unique_counts] # behavior differs -array_api_tests/test_has_names.py::test_has_names[set-unique_inverse] # behavior differs -array_api_tests/test_has_names.py::test_has_names[set-unique_values] # behavior differs -array_api_tests/test_has_names.py::test_has_names[searching-nonzero] # behavior differs -array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_2[1] # advanced indexing crashes -array_api_tests/test_data_type_functions.py::test_astype # incompatible arguments -array_api_tests/test_data_type_functions.py::test_broadcast_arrays # behavior differs -array_api_tests/test_data_type_functions.py::TestBroadcastShapes::test_empty # unsupported behavior -array_api_tests/test_data_type_functions.py::test_can_cast # incompatible arguments -array_api_tests/test_data_type_functions.py::test_finfo[dtype0] # incompatible arguments -array_api_tests/test_data_type_functions.py::test_finfo[dtype1] # incompatible arguments -array_api_tests/test_data_type_functions.py::test_iinfo[dtype0] # dtype is unsupported -array_api_tests/test_data_type_functions.py::test_iinfo[dtype1] # dtype is unsupported -array_api_tests/test_data_type_functions.py::test_iinfo[dtype2] # dtype is unsupported -array_api_tests/test_data_type_functions.py::test_iinfo[dtype3] # dtype is unsupported -array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_2[None] # advanced indexing crashes -array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__truediv__(x1, x2)] # failure -array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__itruediv__(x1, x2)] # failure -array_api_tests/test_operators_and_elementwise_functions.py::test_expm1 # unsupported behavior -array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[floor_divide(x1, x2)] # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__floordiv__(x1, x2)] # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__ifloordiv__(x1, x2)] # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_hypot # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_log1p # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_log2 # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_log10 # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_nextafter # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_positive[__pos__] # failure -array_api_tests/test_operators_and_elementwise_functions.py::test_signbit # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_sqrt # behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[atan2] # special-case behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[copysign] # special-case behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[hypot] # special-case behavior differs -array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[nextafter] # special-case behavior differs -array_api_tests/test_searching_functions.py::test_argmax # behavior differs -array_api_tests/test_searching_functions.py::test_argmin # behavior differs -array_api_tests/test_searching_functions.py::test_searchsorted # incompatible arguments -array_api_tests/test_searching_functions.py::test_searchsorted_with_scalars # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[cumulative_sum] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[cumulative_prod] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[prod] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[std] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[sum] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[var] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[isin] # behavior differs -array_api_tests/test_signatures.py::test_func_signature[unique_all] # behavior differs -array_api_tests/test_signatures.py::test_func_signature[unique_counts] # behavior differs -array_api_tests/test_signatures.py::test_func_signature[unique_inverse] # behavior differs -array_api_tests/test_signatures.py::test_func_signature[unique_values] # behavior differs -array_api_tests/test_signatures.py::test_func_signature[nonzero] # behavior differs -array_api_tests/test_signatures.py::test_func_signature[searchsorted] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[asarray] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[empty_like] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[from_dlpack] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[full_like] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[ones_like] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[zeros_like] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[diff] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[permute_dims] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[reshape] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[argsort] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[sort] # incompatible arguments -array_api_tests/test_signatures.py::test_func_signature[clip] # failure -array_api_tests/test_signatures.py::test_func_signature[copysign] # behavior differs -array_api_tests/test_signatures.py::test_func_signature[hypot] # behavior differs -array_api_tests/test_signatures.py::test_func_signature[nextafter] # behavior differs -array_api_tests/test_signatures.py::test_func_signature[signbit] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.cholesky] # unsupported behavior -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.det] # unsupported behavior -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.diagonal] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.eigh] # unsupported behavior -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.eigvalsh] # unsupported behavior -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.inv] # unsupported behavior -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matmul] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_norm] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_power] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_rank] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_transpose] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.outer] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.pinv] # incompatible arguments -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.qr] # incompatible arguments -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.slogdet] # unsupported behavior -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.solve] # unsupported behavior -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.svd] # incompatible arguments -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.svdvals] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.tensordot] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.trace] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.vecdot] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[linalg.vector_norm] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[fft.hfft] # behavior differs -array_api_tests/test_signatures.py::test_extension_func_signature[fft.ihfft] # behavior differs -array_api_tests/test_signatures.py::test_array_method_signature[__pos__] # behavior differs -array_api_tests/test_signatures.py::test_array_method_signature[to_device] # behavior differs -array_api_tests/test_sorting_functions.py::test_argsort # failure -array_api_tests/test_sorting_functions.py::test_sort # incompatible arguments -array_api_tests/test_special_cases.py::test_unary[acos((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is NaN) -> \u03c0/2 + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[acos(isfinite(real(x_i)) and imag(x_i) is +infinity) -> \u03c0/2] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> \u03c0] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and imag(x_i) is +infinity) -> 3\u03c0/4] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is +infinity and imag(x_i) is +infinity) -> \u03c0/4] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[acos((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> NaN \u00b1 infinity j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is NaN and imag(x_i) is +infinity) -> NaN] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[acosh((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is +0) -> +0 + \u03c0j/2] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[acosh(isfinite(real(x_i)) and imag(x_i) is +infinity) -> +infinity + \u03c0j/2] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[acosh(isfinite(real(x_i)) and real(x_i) != 0 and imag(x_i) is NaN) -> NaN + NaN j] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN \u00b1 \u03c0j/2] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is -infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + \u03c0j] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0j] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is -infinity and imag(x_i) is +infinity) -> +infinity + 3\u03c0j/4] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + \u03c0j/4] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[acosh((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and isfinite(imag(x_i))) -> NaN + NaN j] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] # ArcCosh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +0 and imag(x_i) is +0) -> +0 + 0j] # ArcSinh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[asinh(isfinite(real(x_i)) and real(x_i) > 0 and imag(x_i) is +infinity) -> +infinity + \u03c0j/2] # ArcSinh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[asinh(isfinite(real(x_i)) and imag(x_i) is NaN) -> NaN + NaN j] # ArcSinh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0j] # ArcSinh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + \u03c0j/4] # ArcSinh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] # ArcSinh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and isfinite(imag(x_i)) and imag(x_i) != 0) -> NaN + NaN j] # ArcSinh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is +infinity) -> \u00b1infinity + NaN j] # ArcSinh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] # ArcSinh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[atan(x_i is -0) -> -0] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +0 and imag(x_i) is +0) -> +0 + 0j] # ArcTanh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +0 and imag(x_i) is NaN) -> +0 + NaN j] # ArcTanh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is 1 and imag(x_i) is +0) -> +infinity + 0j] # ArcTanh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[atanh(isfinite(real(x_i)) and real(x_i) > 0 and imag(x_i) is +infinity) -> +0 + \u03c0j/2] # ArcTanh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[atanh(isfinite(real(x_i)) and real(x_i) != 0 and imag(x_i) is NaN) -> NaN + NaN j] # ArcTanh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0 + \u03c0j/2] # ArcTanh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +0 + \u03c0j/2] # ArcTanh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and imag(x_i) is NaN) -> +0 + NaN j] # ArcTanh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and isfinite(imag(x_i))) -> NaN + NaN j] # ArcTanh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and imag(x_i) is +infinity) -> \u00b10 + \u03c0j/2] # ArcTanh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] # ArcTanh complex64 kernel unavailable -array_api_tests/test_special_cases.py::test_unary[clip(x_i is NaN) -> NaN] # incompatible arguments -array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +0 and imag(x_i) is +infinity) -> NaN + 0j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN + 0j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is NaN) -> +infinity + NaN j] # special-case behavior differs -array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is NaN and (imag(x_i) is +0 or imag(x_i) == -0)) -> NaN + 0j] # special-case behavior differs \ No newline at end of file +# Extensions (linalg, fft) +array_api_tests/test_linalg.py::test_cholesky +array_api_tests/test_linalg.py::test_det +array_api_tests/test_linalg.py::test_diagonal +array_api_tests/test_linalg.py::test_eigh +array_api_tests/test_linalg.py::test_eigvalsh +array_api_tests/test_linalg.py::test_eig +array_api_tests/test_linalg.py::test_eigvals +array_api_tests/test_linalg.py::test_inv +array_api_tests/test_linalg.py::test_linalg_matmul +array_api_tests/test_linalg.py::test_matmul +array_api_tests/test_linalg.py::test_matrix_norm +array_api_tests/test_linalg.py::test_matrix_power +array_api_tests/test_linalg.py::test_matrix_rank +array_api_tests/test_linalg.py::test_linalg_matrix_transpose +array_api_tests/test_linalg.py::test_matrix_transpose +array_api_tests/test_linalg.py::test_outer +array_api_tests/test_linalg.py::test_pinv +array_api_tests/test_linalg.py::test_qr +array_api_tests/test_linalg.py::test_slogdet +array_api_tests/test_linalg.py::test_solve +array_api_tests/test_linalg.py::test_svd +array_api_tests/test_linalg.py::test_svdvals +array_api_tests/test_linalg.py::test_linalg_tensordot +array_api_tests/test_linalg.py::test_tensordot +array_api_tests/test_linalg.py::test_trace +array_api_tests/test_linalg.py::test_linalg_vecdot +array_api_tests/test_linalg.py::test_vecdot +array_api_tests/test_linalg.py::test_vecdot_conj +array_api_tests/test_linalg.py::test_vector_norm +array_api_tests/test_fft.py::test_hfft +array_api_tests/test_fft.py::test_ihfft +array_api_tests/test_fft.py::test_fftfreq +array_api_tests/test_fft.py::test_rfftfreq +array_api_tests/test_has_names.py::test_has_names[linalg-diagonal] +array_api_tests/test_has_names.py::test_has_names[linalg-matmul] +array_api_tests/test_has_names.py::test_has_names[linalg-matrix_norm] +array_api_tests/test_has_names.py::test_has_names[linalg-matrix_power] +array_api_tests/test_has_names.py::test_has_names[linalg-matrix_rank] +array_api_tests/test_has_names.py::test_has_names[linalg-matrix_transpose] +array_api_tests/test_has_names.py::test_has_names[linalg-outer] +array_api_tests/test_has_names.py::test_has_names[linalg-svdvals] +array_api_tests/test_has_names.py::test_has_names[linalg-tensordot] +array_api_tests/test_has_names.py::test_has_names[linalg-trace] +array_api_tests/test_has_names.py::test_has_names[linalg-vecdot] +array_api_tests/test_has_names.py::test_has_names[linalg-vector_norm] +array_api_tests/test_has_names.py::test_has_names[fft-hfft] +array_api_tests/test_has_names.py::test_has_names[fft-ihfft] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.cholesky] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.det] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.diagonal] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.eigh] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.eigvalsh] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.inv] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matmul] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_norm] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_power] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_rank] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_transpose] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.outer] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.pinv] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.qr] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.slogdet] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.solve] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.svd] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.svdvals] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.tensordot] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.trace] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.vecdot] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.vector_norm] +array_api_tests/test_signatures.py::test_extension_func_signature[fft.hfft] +array_api_tests/test_signatures.py::test_extension_func_signature[fft.ihfft] + +# Missing functions +array_api_tests/test_has_names.py::test_has_names[elementwise-copysign] +array_api_tests/test_has_names.py::test_has_names[elementwise-hypot] +array_api_tests/test_has_names.py::test_has_names[elementwise-nextafter] +array_api_tests/test_has_names.py::test_has_names[elementwise-signbit] +array_api_tests/test_has_names.py::test_has_names[array_method-__pos__] +array_api_tests/test_has_names.py::test_has_names[array_method-to_device] +array_api_tests/test_has_names.py::test_has_names[array_attribute-device] +array_api_tests/test_has_names.py::test_has_names[array_attribute-mT] +array_api_tests/test_operators_and_elementwise_functions.py::test_copysign +array_api_tests/test_operators_and_elementwise_functions.py::test_hypot +array_api_tests/test_operators_and_elementwise_functions.py::test_nextafter +array_api_tests/test_operators_and_elementwise_functions.py::test_positive[__pos__] +array_api_tests/test_operators_and_elementwise_functions.py::test_signbit +array_api_tests/test_signatures.py::test_array_method_signature[__pos__] +array_api_tests/test_signatures.py::test_array_method_signature[to_device] + +# Missing complex kernels +array_api_tests/test_operators_and_elementwise_functions.py::test_acosh +array_api_tests/test_operators_and_elementwise_functions.py::test_asinh +array_api_tests/test_operators_and_elementwise_functions.py::test_atanh +array_api_tests/test_operators_and_elementwise_functions.py::test_expm1 + +# Missing arguments +array_api_tests/test_inspection_functions.py::test_array_namespace_info_dtypes +array_api_tests/test_statistical_functions.py::test_std +array_api_tests/test_manipulation_functions.py::test_moveaxis +array_api_tests/test_statistical_functions.py::test_var +array_api_tests/test_manipulation_functions.py::test_repeat +array_api_tests/test_manipulation_functions.py::test_reshape +array_api_tests/test_operators_and_elementwise_functions.py::test_clip +array_api_tests/test_data_type_functions.py::test_astype +array_api_tests/test_data_type_functions.py::test_can_cast +array_api_tests/test_data_type_functions.py::test_finfo[dtype0] +array_api_tests/test_data_type_functions.py::test_finfo[dtype1] +array_api_tests/test_searching_functions.py::test_searchsorted +array_api_tests/test_searching_functions.py::test_searchsorted_with_scalars +array_api_tests/test_signatures.py::test_func_signature[cumulative_sum] +array_api_tests/test_signatures.py::test_func_signature[cumulative_prod] +array_api_tests/test_signatures.py::test_func_signature[prod] +array_api_tests/test_signatures.py::test_func_signature[std] +array_api_tests/test_signatures.py::test_func_signature[sum] +array_api_tests/test_signatures.py::test_func_signature[var] +array_api_tests/test_signatures.py::test_func_signature[isin] +array_api_tests/test_signatures.py::test_func_signature[unique_all] +array_api_tests/test_signatures.py::test_func_signature[unique_counts] +array_api_tests/test_signatures.py::test_func_signature[unique_inverse] +array_api_tests/test_signatures.py::test_func_signature[unique_values] +array_api_tests/test_signatures.py::test_func_signature[nonzero] +array_api_tests/test_signatures.py::test_func_signature[searchsorted] +array_api_tests/test_signatures.py::test_func_signature[asarray] +array_api_tests/test_signatures.py::test_func_signature[empty_like] +array_api_tests/test_signatures.py::test_func_signature[from_dlpack] +array_api_tests/test_signatures.py::test_func_signature[full_like] +array_api_tests/test_signatures.py::test_func_signature[ones_like] +array_api_tests/test_signatures.py::test_func_signature[zeros_like] +array_api_tests/test_signatures.py::test_func_signature[diff] +array_api_tests/test_signatures.py::test_func_signature[permute_dims] +array_api_tests/test_signatures.py::test_func_signature[reshape] +array_api_tests/test_signatures.py::test_func_signature[argsort] +array_api_tests/test_signatures.py::test_func_signature[sort] +array_api_tests/test_signatures.py::test_func_signature[clip] +array_api_tests/test_signatures.py::test_func_signature[copysign] +array_api_tests/test_signatures.py::test_func_signature[hypot] +array_api_tests/test_signatures.py::test_func_signature[nextafter] +array_api_tests/test_signatures.py::test_func_signature[signbit] + +# Loss of precision in the complex plane +array_api_tests/test_operators_and_elementwise_functions.py::test_acos +array_api_tests/test_operators_and_elementwise_functions.py::test_asin +array_api_tests/test_operators_and_elementwise_functions.py::test_atan + +# Other failures +array_api_tests/test_inspection_functions.py::TestInspection::test_capabilities +array_api_tests/test_array_object.py::test_setitem_masking +array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_1[1] +array_api_tests/test_statistical_functions.py::test_cumulative_sum +array_api_tests/test_statistical_functions.py::test_cumulative_prod +array_api_tests/test_manipulation_functions.py::TestExpandDims::test_expand_dims +array_api_tests/test_statistical_functions.py::test_prod +array_api_tests/test_statistical_functions.py::test_sum +array_api_tests/test_utility_functions.py::test_diff_append_prepend +array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_1[None] +array_api_tests/test_manipulation_functions.py::test_unstack +array_api_tests/test_creation_functions.py::test_asarray_arrays +array_api_tests/test_creation_functions.py::test_eye +array_api_tests/test_data_type_functions.py::test_iinfo[dtype4] +array_api_tests/test_data_type_functions.py::test_iinfo[dtype5] +array_api_tests/test_data_type_functions.py::test_iinfo[dtype6] +array_api_tests/test_data_type_functions.py::test_iinfo[dtype7] +array_api_tests/test_data_type_functions.py::TestResultType::test_with_scalars +array_api_tests/test_dlpack.py::test_from_dlpack +array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[bitwise_left_shift(x1, x2)] +array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__lshift__(x1, x2)] +array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__ilshift__(x1, x2)] +array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__rshift__(x1, x2)] +array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__irshift__(x1, x2)] +array_api_tests/test_operators_and_elementwise_functions.py::test_divide[divide(x1, x2)] +array_api_tests/test_has_names.py::test_has_names[set-isin] +array_api_tests/test_has_names.py::test_has_names[set-unique_all] +array_api_tests/test_has_names.py::test_has_names[set-unique_counts] +array_api_tests/test_has_names.py::test_has_names[set-unique_inverse] +array_api_tests/test_has_names.py::test_has_names[set-unique_values] +array_api_tests/test_has_names.py::test_has_names[searching-nonzero] +array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_2[1] +array_api_tests/test_data_type_functions.py::test_broadcast_arrays +array_api_tests/test_data_type_functions.py::TestBroadcastShapes::test_empty +array_api_tests/test_data_type_functions.py::test_iinfo[dtype0] +array_api_tests/test_data_type_functions.py::test_iinfo[dtype1] +array_api_tests/test_data_type_functions.py::test_iinfo[dtype2] +array_api_tests/test_data_type_functions.py::test_iinfo[dtype3] +array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_2[None] +array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__truediv__(x1, x2)] +array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__itruediv__(x1, x2)] +array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[floor_divide(x1, x2)] +array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__floordiv__(x1, x2)] +array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__ifloordiv__(x1, x2)] +array_api_tests/test_operators_and_elementwise_functions.py::test_log1p +array_api_tests/test_operators_and_elementwise_functions.py::test_log2 +array_api_tests/test_operators_and_elementwise_functions.py::test_log10 +array_api_tests/test_operators_and_elementwise_functions.py::test_sqrt +array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[atan2] +array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[copysign] +array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[hypot] +array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[nextafter] +array_api_tests/test_searching_functions.py::test_argmax +array_api_tests/test_searching_functions.py::test_argmin +array_api_tests/test_sorting_functions.py::test_argsort +array_api_tests/test_sorting_functions.py::test_sort + +# Special cases +array_api_tests/test_special_cases.py::test_unary[expm1((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is +0) -> 0 + 0j] +array_api_tests/test_special_cases.py::test_unary[expm1(isfinite(real(x_i)) and imag(x_i) is +infinity) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[expm1(isfinite(real(x_i)) and imag(x_i) is NaN) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j] +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is -infinity and imag(x_i) is +infinity) -> -1 + 0j] +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is +infinity) -> infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is -infinity and imag(x_i) is NaN) -> -1 + 0j] +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is NaN) -> infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and not imag(x_i) == 0) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[log((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[log(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[log1p((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[log1p(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[sign(x_i is NaN) -> NaN] +array_api_tests/test_special_cases.py::test_unary[sign((real(x_i) is -0 or real(x_i) == +0) and (imag(x_i) is -0 or imag(x_i) == +0)) -> 0 + 0j] +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +0) -> False] +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -0) -> True] +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +infinity) -> False] +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -infinity) -> True] +array_api_tests/test_special_cases.py::test_unary[signbit(isfinite(x_i) and x_i > 0) -> False] +array_api_tests/test_special_cases.py::test_unary[signbit(isfinite(x_i) and x_i < 0) -> True] +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +NaN) -> False] +array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -NaN) -> True] +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +0 and imag(x_i) is +infinity) -> 0 + NaN j] +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +0 and imag(x_i) is NaN) -> 0 + NaN j] +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j] +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +infinity and imag(x_i) is +infinity) -> infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +infinity and imag(x_i) is NaN) -> infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] +array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0 j] +array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is -infinity and imag(x_i) is NaN) -> NaN + infinity j] +array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity and imag(x_i) is NaN) -> +infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +0 and imag(x_i) is +infinity) -> +0 + NaN j] +array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +0 and imag(x_i) is NaN) -> +0 + NaN j] +array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +infinity and imag(x_i) is +infinity) -> 1 + 0j] +array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +infinity and imag(x_i) is NaN) -> 1 + 0j] +array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] +array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i < 0) -> NaN] +array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i is -0) -> NaN] +array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i is +0) -> NaN] +array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i > 0) -> NaN] +array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is NaN or x2_i is NaN) -> NaN] +array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is -0 and x2_i is +0) -> +0] +array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is +0 and x2_i is -0) -> -0] +array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is -0 and x2_i > 0) -> +0] +array_api_tests/test_special_cases.py::test_binary[remainder(x1_i is +0 and x2_i < 0) -> -0] +array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is -0 and x2_i > 0) -> +0] +array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is +0 and x2_i < 0) -> -0] +array_api_tests/test_special_cases.py::test_iop[__imod__(x1_i is -0 and x2_i > 0) -> +0] +array_api_tests/test_special_cases.py::test_iop[__imod__(x1_i is +0 and x2_i < 0) -> -0] +array_api_tests/test_special_cases.py::test_unary[acos((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is NaN) -> \u03c0/2 + NaN j] +array_api_tests/test_special_cases.py::test_unary[acos(isfinite(real(x_i)) and imag(x_i) is +infinity) -> \u03c0/2] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> \u03c0] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and imag(x_i) is +infinity) -> 3\u03c0/4] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is +infinity and imag(x_i) is +infinity) -> \u03c0/4] +array_api_tests/test_special_cases.py::test_unary[acos((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> NaN \u00b1 infinity j] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is NaN and imag(x_i) is +infinity) -> NaN] +array_api_tests/test_special_cases.py::test_unary[acosh((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is +0) -> +0 + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[acosh(isfinite(real(x_i)) and imag(x_i) is +infinity) -> +infinity + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[acosh(isfinite(real(x_i)) and real(x_i) != 0 and imag(x_i) is NaN) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN \u00b1 \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is -infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + \u03c0j] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0j] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is -infinity and imag(x_i) is +infinity) -> +infinity + 3\u03c0j/4] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + \u03c0j/4] +array_api_tests/test_special_cases.py::test_unary[acosh((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and isfinite(imag(x_i))) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +0 and imag(x_i) is +0) -> +0 + 0j] +array_api_tests/test_special_cases.py::test_unary[asinh(isfinite(real(x_i)) and real(x_i) > 0 and imag(x_i) is +infinity) -> +infinity + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[asinh(isfinite(real(x_i)) and imag(x_i) is NaN) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0j] +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + \u03c0j/4] +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and isfinite(imag(x_i)) and imag(x_i) != 0) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is +infinity) -> \u00b1infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[atan(x_i is -0) -> -0] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +0 and imag(x_i) is +0) -> +0 + 0j] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +0 and imag(x_i) is NaN) -> +0 + NaN j] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is 1 and imag(x_i) is +0) -> +infinity + 0j] +array_api_tests/test_special_cases.py::test_unary[atanh(isfinite(real(x_i)) and real(x_i) > 0 and imag(x_i) is +infinity) -> +0 + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[atanh(isfinite(real(x_i)) and real(x_i) != 0 and imag(x_i) is NaN) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0 + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +0 + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and imag(x_i) is NaN) -> +0 + NaN j] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and isfinite(imag(x_i))) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and imag(x_i) is +infinity) -> \u00b10 + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] +array_api_tests/test_special_cases.py::test_unary[clip(x_i is NaN) -> NaN] +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +0 and imag(x_i) is +infinity) -> NaN + 0j] +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN + 0j] +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j] +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is NaN) -> +infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is NaN and (imag(x_i) is +0 or imag(x_i) == -0)) -> NaN + 0j] \ No newline at end of file From c090a016b29f9a61fe81de5c1367cbd2e008f380 Mon Sep 17 00:00:00 2001 From: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> Date: Tue, 8 Sep 2026 14:49:57 +0530 Subject: [PATCH 5/9] Adding xfail option and using strict option Signed-off-by: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 2aed86614b..bc4470386b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -184,7 +184,7 @@ jobs: fi uv pip install dist/*.whl cd "${GITHUB_WORKSPACE}/array-api-tests" - pytest array_api_tests -v -c pytest.ini -n 2 --max-examples=1000 --derandomize --disable-data-dependent-shapes --disable-deadline --skips-file "${GITHUB_WORKSPACE}/xfail.txt" + pytest array_api_tests -v -c pytest.ini -n 2 --max-examples=1000 --derandomize --disable-data-dependent-shapes --disable-deadline -o strict_xfail=True --xfails-file "${GITHUB_WORKSPACE}/xfail.txt" build_documentation: name: Build Documentation From 8781144ea3fe62a1180d3f45126aacafa6d05305 Mon Sep 17 00:00:00 2001 From: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> Date: Tue, 8 Sep 2026 16:04:06 +0530 Subject: [PATCH 6/9] changing loaction of xfail file Signed-off-by: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> --- .github/workflows/build_and_test.yml | 2 +- xfail.txt => python/tests/xp-tests/xfail.txt | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename xfail.txt => python/tests/xp-tests/xfail.txt (100%) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index bc4470386b..a36d0d44a3 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -184,7 +184,7 @@ jobs: fi uv pip install dist/*.whl cd "${GITHUB_WORKSPACE}/array-api-tests" - pytest array_api_tests -v -c pytest.ini -n 2 --max-examples=1000 --derandomize --disable-data-dependent-shapes --disable-deadline -o strict_xfail=True --xfails-file "${GITHUB_WORKSPACE}/xfail.txt" + pytest array_api_tests -v -c pytest.ini -n 2 --max-examples=1000 --derandomize --disable-data-dependent-shapes --disable-deadline -o strict_xfail=True --xfails-file "${GITHUB_WORKSPACE}/python/tests/xp-tests/xfail.txt" build_documentation: name: Build Documentation diff --git a/xfail.txt b/python/tests/xp-tests/xfail.txt similarity index 100% rename from xfail.txt rename to python/tests/xp-tests/xfail.txt From 0ee08e0d02e17b48cb663ebdb7170a12e7e31092 Mon Sep 17 00:00:00 2001 From: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> Date: Fri, 11 Sep 2026 15:34:25 +0530 Subject: [PATCH 7/9] better xfail and a skip file Signed-off-by: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> --- python/tests/xp-tests/skips.txt | 2 ++ python/tests/xp-tests/xfail.txt | 60 +++++++++++++++------------------ 2 files changed, 30 insertions(+), 32 deletions(-) create mode 100644 python/tests/xp-tests/skips.txt diff --git a/python/tests/xp-tests/skips.txt b/python/tests/xp-tests/skips.txt new file mode 100644 index 0000000000..e9c52e2f06 --- /dev/null +++ b/python/tests/xp-tests/skips.txt @@ -0,0 +1,2 @@ +# 64bit dtype not supported https://github.com/ml-explore/mlx/issues/4300 +array_api_tests/test_creation_functions.py::test_eye \ No newline at end of file diff --git a/python/tests/xp-tests/xfail.txt b/python/tests/xp-tests/xfail.txt index 91ac908ac3..9b85e67d18 100644 --- a/python/tests/xp-tests/xfail.txt +++ b/python/tests/xp-tests/xfail.txt @@ -146,17 +146,13 @@ array_api_tests/test_operators_and_elementwise_functions.py::test_atan # Other failures array_api_tests/test_inspection_functions.py::TestInspection::test_capabilities array_api_tests/test_array_object.py::test_setitem_masking -array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_1[1] array_api_tests/test_statistical_functions.py::test_cumulative_sum array_api_tests/test_statistical_functions.py::test_cumulative_prod array_api_tests/test_manipulation_functions.py::TestExpandDims::test_expand_dims array_api_tests/test_statistical_functions.py::test_prod array_api_tests/test_statistical_functions.py::test_sum array_api_tests/test_utility_functions.py::test_diff_append_prepend -array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_1[None] -array_api_tests/test_manipulation_functions.py::test_unstack array_api_tests/test_creation_functions.py::test_asarray_arrays -array_api_tests/test_creation_functions.py::test_eye array_api_tests/test_data_type_functions.py::test_iinfo[dtype4] array_api_tests/test_data_type_functions.py::test_iinfo[dtype5] array_api_tests/test_data_type_functions.py::test_iinfo[dtype6] @@ -175,23 +171,18 @@ array_api_tests/test_has_names.py::test_has_names[set-unique_counts] array_api_tests/test_has_names.py::test_has_names[set-unique_inverse] array_api_tests/test_has_names.py::test_has_names[set-unique_values] array_api_tests/test_has_names.py::test_has_names[searching-nonzero] -array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_2[1] array_api_tests/test_data_type_functions.py::test_broadcast_arrays array_api_tests/test_data_type_functions.py::TestBroadcastShapes::test_empty array_api_tests/test_data_type_functions.py::test_iinfo[dtype0] array_api_tests/test_data_type_functions.py::test_iinfo[dtype1] array_api_tests/test_data_type_functions.py::test_iinfo[dtype2] array_api_tests/test_data_type_functions.py::test_iinfo[dtype3] -array_api_tests/test_array_object.py::test_getitem_arrays_and_ints_2[None] array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__truediv__(x1, x2)] array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__itruediv__(x1, x2)] array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[floor_divide(x1, x2)] array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__floordiv__(x1, x2)] array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__ifloordiv__(x1, x2)] array_api_tests/test_operators_and_elementwise_functions.py::test_log1p -array_api_tests/test_operators_and_elementwise_functions.py::test_log2 -array_api_tests/test_operators_and_elementwise_functions.py::test_log10 -array_api_tests/test_operators_and_elementwise_functions.py::test_sqrt array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[atan2] array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[copysign] array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[hypot] @@ -213,12 +204,9 @@ array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity a array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and not imag(x_i) == 0) -> NaN + NaN j] array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] -array_api_tests/test_special_cases.py::test_unary[log((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] -array_api_tests/test_special_cases.py::test_unary[log(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] array_api_tests/test_special_cases.py::test_unary[log1p((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] array_api_tests/test_special_cases.py::test_unary[log1p(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] array_api_tests/test_special_cases.py::test_unary[sign(x_i is NaN) -> NaN] -array_api_tests/test_special_cases.py::test_unary[sign((real(x_i) is -0 or real(x_i) == +0) and (imag(x_i) is -0 or imag(x_i) == +0)) -> 0 + 0j] array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +0) -> False] array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -0) -> True] array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +infinity) -> False] @@ -234,8 +222,6 @@ array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +infinity an array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is +infinity and imag(x_i) is NaN) -> infinity + NaN j] array_api_tests/test_special_cases.py::test_unary[sinh(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0 j] -array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is -infinity and imag(x_i) is NaN) -> NaN + infinity j] -array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity and imag(x_i) is NaN) -> +infinity + NaN j] array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +0 and imag(x_i) is +infinity) -> +0 + NaN j] array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +0 and imag(x_i) is NaN) -> +0 + NaN j] array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +infinity and imag(x_i) is +infinity) -> 1 + 0j] @@ -254,31 +240,31 @@ array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is -0 and x2_i > array_api_tests/test_special_cases.py::test_binary[__mod__(x1_i is +0 and x2_i < 0) -> -0] array_api_tests/test_special_cases.py::test_iop[__imod__(x1_i is -0 and x2_i > 0) -> +0] array_api_tests/test_special_cases.py::test_iop[__imod__(x1_i is +0 and x2_i < 0) -> -0] -array_api_tests/test_special_cases.py::test_unary[acos((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is NaN) -> \u03c0/2 + NaN j] -array_api_tests/test_special_cases.py::test_unary[acos(isfinite(real(x_i)) and imag(x_i) is +infinity) -> \u03c0/2] -array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> \u03c0] +array_api_tests/test_special_cases.py::test_unary[acos((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is NaN) -> π/2 + NaN j] +array_api_tests/test_special_cases.py::test_unary[acos(isfinite(real(x_i)) and imag(x_i) is +infinity) -> π/2] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> π] array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0] -array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and imag(x_i) is +infinity) -> 3\u03c0/4] -array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is +infinity and imag(x_i) is +infinity) -> \u03c0/4] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and imag(x_i) is +infinity) -> 3π/4] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is +infinity and imag(x_i) is +infinity) -> π/4] array_api_tests/test_special_cases.py::test_unary[acos((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> NaN \u00b1 infinity j] array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is NaN and imag(x_i) is +infinity) -> NaN] -array_api_tests/test_special_cases.py::test_unary[acosh((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is +0) -> +0 + \u03c0j/2] -array_api_tests/test_special_cases.py::test_unary[acosh(isfinite(real(x_i)) and imag(x_i) is +infinity) -> +infinity + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[acosh((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is +0) -> +0 + πj/2] +array_api_tests/test_special_cases.py::test_unary[acosh(isfinite(real(x_i)) and imag(x_i) is +infinity) -> +infinity + πj/2] array_api_tests/test_special_cases.py::test_unary[acosh(isfinite(real(x_i)) and real(x_i) != 0 and imag(x_i) is NaN) -> NaN + NaN j] -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN \u00b1 \u03c0j/2] -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is -infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + \u03c0j] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN \u00b1 πj/2] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is -infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + πj] array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0j] -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is -infinity and imag(x_i) is +infinity) -> +infinity + 3\u03c0j/4] -array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + \u03c0j/4] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is -infinity and imag(x_i) is +infinity) -> +infinity + 3πj/4] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + πj/4] array_api_tests/test_special_cases.py::test_unary[acosh((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j] array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and isfinite(imag(x_i))) -> NaN + NaN j] array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j] array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +0 and imag(x_i) is +0) -> +0 + 0j] -array_api_tests/test_special_cases.py::test_unary[asinh(isfinite(real(x_i)) and real(x_i) > 0 and imag(x_i) is +infinity) -> +infinity + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[asinh(isfinite(real(x_i)) and real(x_i) > 0 and imag(x_i) is +infinity) -> +infinity + πj/2] array_api_tests/test_special_cases.py::test_unary[asinh(isfinite(real(x_i)) and imag(x_i) is NaN) -> NaN + NaN j] array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +infinity + 0j] -array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + \u03c0j/4] +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + πj/4] array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j] array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and isfinite(imag(x_i)) and imag(x_i) != 0) -> NaN + NaN j] array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is +infinity) -> \u00b1infinity + NaN j] @@ -287,13 +273,13 @@ array_api_tests/test_special_cases.py::test_unary[atan(x_i is -0) -> -0] array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +0 and imag(x_i) is +0) -> +0 + 0j] array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +0 and imag(x_i) is NaN) -> +0 + NaN j] array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is 1 and imag(x_i) is +0) -> +infinity + 0j] -array_api_tests/test_special_cases.py::test_unary[atanh(isfinite(real(x_i)) and real(x_i) > 0 and imag(x_i) is +infinity) -> +0 + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[atanh(isfinite(real(x_i)) and real(x_i) > 0 and imag(x_i) is +infinity) -> +0 + πj/2] array_api_tests/test_special_cases.py::test_unary[atanh(isfinite(real(x_i)) and real(x_i) != 0 and imag(x_i) is NaN) -> NaN + NaN j] -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0 + \u03c0j/2] -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +0 + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0 + πj/2] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +0 + πj/2] array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is +infinity and imag(x_i) is NaN) -> +0 + NaN j] array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and isfinite(imag(x_i))) -> NaN + NaN j] -array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and imag(x_i) is +infinity) -> \u00b10 + \u03c0j/2] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and imag(x_i) is +infinity) -> \u00b10 + πj/2] array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and imag(x_i) is NaN) -> NaN + NaN j] array_api_tests/test_special_cases.py::test_unary[clip(x_i is NaN) -> NaN] array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +0 and imag(x_i) is +infinity) -> NaN + 0j] @@ -301,4 +287,14 @@ array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +0 and imag( array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j] array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is +infinity) -> +infinity + NaN j] array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is +infinity and imag(x_i) is NaN) -> +infinity + NaN j] -array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is NaN and (imag(x_i) is +0 or imag(x_i) == -0)) -> NaN + 0j] \ No newline at end of file +array_api_tests/test_special_cases.py::test_unary[cosh(real(x_i) is NaN and (imag(x_i) is +0 or imag(x_i) == -0)) -> NaN + 0j] +array_api_tests/test_special_cases.py::test_unary[acos((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> NaN ± infinity j] +array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN ± πj/2] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is +infinity and imag(x_i) is +infinity) -> π/4 - infinity j] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and imag(x_i) is +infinity) -> 3π/4 - infinity j] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is NaN and imag(x_i) is +infinity) -> NaN - infinity j] +array_api_tests/test_special_cases.py::test_unary[asinh(real(x_i) is NaN and imag(x_i) is +infinity) -> ±infinity + NaN j] +array_api_tests/test_special_cases.py::test_unary[atanh(real(x_i) is NaN and imag(x_i) is +infinity) -> ±0 + πj/2] +array_api_tests/test_special_cases.py::test_unary[acos(isfinite(real(x_i)) and imag(x_i) is +infinity) -> π/2 - infinity j] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is -infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> π - infinity j] +array_api_tests/test_special_cases.py::test_unary[acos(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0 - infinity j] \ No newline at end of file From b696a8066fed65184e126362b2cbcff7d0a641b6 Mon Sep 17 00:00:00 2001 From: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> Date: Fri, 11 Sep 2026 15:37:36 +0530 Subject: [PATCH 8/9] add skip file in ci command Signed-off-by: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index a36d0d44a3..00ce7b8acb 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -184,7 +184,7 @@ jobs: fi uv pip install dist/*.whl cd "${GITHUB_WORKSPACE}/array-api-tests" - pytest array_api_tests -v -c pytest.ini -n 2 --max-examples=1000 --derandomize --disable-data-dependent-shapes --disable-deadline -o strict_xfail=True --xfails-file "${GITHUB_WORKSPACE}/python/tests/xp-tests/xfail.txt" + pytest array_api_tests -v -c pytest.ini -n 2 --max-examples=1000 --derandomize --disable-data-dependent-shapes --disable-deadline -o strict_xfail=True --xfails-file "${GITHUB_WORKSPACE}/python/tests/xp-tests/xfail.txt" --skips-file "${GITHUB_WORKSPACE}/python/tests/xp-tests/skip.txt}" build_documentation: name: Build Documentation From 1cfb0d4a31aa69b360ad7cf076564a1e9c2cfd22 Mon Sep 17 00:00:00 2001 From: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> Date: Sun, 13 Sep 2026 16:18:58 +0530 Subject: [PATCH 9/9] Better xfail file Signed-off-by: Pradyot Ranjan <99216956+pradyotRanjan@users.noreply.github.com> --- python/tests/xp-tests/xfail.txt | 288 +++++++++++++++++++++++--------- 1 file changed, 210 insertions(+), 78 deletions(-) diff --git a/python/tests/xp-tests/xfail.txt b/python/tests/xp-tests/xfail.txt index 9b85e67d18..58a21a6936 100644 --- a/python/tests/xp-tests/xfail.txt +++ b/python/tests/xp-tests/xfail.txt @@ -1,4 +1,5 @@ -# Extensions (linalg, fft) +# test_linalg.py +## Missing Extensions (linalg, fft) array_api_tests/test_linalg.py::test_cholesky array_api_tests/test_linalg.py::test_det array_api_tests/test_linalg.py::test_diagonal @@ -28,10 +29,17 @@ array_api_tests/test_linalg.py::test_linalg_vecdot array_api_tests/test_linalg.py::test_vecdot array_api_tests/test_linalg.py::test_vecdot_conj array_api_tests/test_linalg.py::test_vector_norm +array_api_tests/test_linalg.py::test_eigvals + +# test_fft.py +## Missing Extensions (linalg, fft) array_api_tests/test_fft.py::test_hfft array_api_tests/test_fft.py::test_ihfft array_api_tests/test_fft.py::test_fftfreq array_api_tests/test_fft.py::test_rfftfreq + +# test_has_names.py +## Missing Functions array_api_tests/test_has_names.py::test_has_names[linalg-diagonal] array_api_tests/test_has_names.py::test_has_names[linalg-matmul] array_api_tests/test_has_names.py::test_has_names[linalg-matrix_norm] @@ -46,6 +54,23 @@ array_api_tests/test_has_names.py::test_has_names[linalg-vecdot] array_api_tests/test_has_names.py::test_has_names[linalg-vector_norm] array_api_tests/test_has_names.py::test_has_names[fft-hfft] array_api_tests/test_has_names.py::test_has_names[fft-ihfft] +array_api_tests/test_has_names.py::test_has_names[elementwise-copysign] +array_api_tests/test_has_names.py::test_has_names[elementwise-hypot] +array_api_tests/test_has_names.py::test_has_names[elementwise-nextafter] +array_api_tests/test_has_names.py::test_has_names[elementwise-signbit] +array_api_tests/test_has_names.py::test_has_names[array_method-__pos__] +array_api_tests/test_has_names.py::test_has_names[array_method-to_device] +array_api_tests/test_has_names.py::test_has_names[array_attribute-device] +array_api_tests/test_has_names.py::test_has_names[array_attribute-mT] +array_api_tests/test_has_names.py::test_has_names[set-isin] +array_api_tests/test_has_names.py::test_has_names[set-unique_all] +array_api_tests/test_has_names.py::test_has_names[set-unique_counts] +array_api_tests/test_has_names.py::test_has_names[set-unique_inverse] +array_api_tests/test_has_names.py::test_has_names[set-unique_values] +array_api_tests/test_has_names.py::test_has_names[searching-nonzero] + +# test_signatures.py +## Missing Extensions (linalg, fft) array_api_tests/test_signatures.py::test_extension_func_signature[linalg.cholesky] array_api_tests/test_signatures.py::test_extension_func_signature[linalg.det] array_api_tests/test_signatures.py::test_extension_func_signature[linalg.diagonal] @@ -70,129 +95,236 @@ array_api_tests/test_signatures.py::test_extension_func_signature[linalg.vecdot] array_api_tests/test_signatures.py::test_extension_func_signature[linalg.vector_norm] array_api_tests/test_signatures.py::test_extension_func_signature[fft.hfft] array_api_tests/test_signatures.py::test_extension_func_signature[fft.ihfft] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.cholesky] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.det] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.eigh] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.eigvalsh] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.inv] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.slogdet] +array_api_tests/test_signatures.py::test_extension_func_signature[linalg.solve] -# Missing functions -array_api_tests/test_has_names.py::test_has_names[elementwise-copysign] -array_api_tests/test_has_names.py::test_has_names[elementwise-hypot] -array_api_tests/test_has_names.py::test_has_names[elementwise-nextafter] -array_api_tests/test_has_names.py::test_has_names[elementwise-signbit] -array_api_tests/test_has_names.py::test_has_names[array_method-__pos__] -array_api_tests/test_has_names.py::test_has_names[array_method-to_device] -array_api_tests/test_has_names.py::test_has_names[array_attribute-device] -array_api_tests/test_has_names.py::test_has_names[array_attribute-mT] -array_api_tests/test_operators_and_elementwise_functions.py::test_copysign -array_api_tests/test_operators_and_elementwise_functions.py::test_hypot -array_api_tests/test_operators_and_elementwise_functions.py::test_nextafter -array_api_tests/test_operators_and_elementwise_functions.py::test_positive[__pos__] -array_api_tests/test_operators_and_elementwise_functions.py::test_signbit +## Missing functions array_api_tests/test_signatures.py::test_array_method_signature[__pos__] array_api_tests/test_signatures.py::test_array_method_signature[to_device] +array_api_tests/test_signatures.py::test_func_signature[signbit] +array_api_tests/test_signatures.py::test_func_signature[nextafter] +array_api_tests/test_signatures.py::test_func_signature[hypot] +array_api_tests/test_signatures.py::test_func_signature[copysign] +array_api_tests/test_signatures.py::test_func_signature[nonzero] +array_api_tests/test_signatures.py::test_func_signature[isin] +array_api_tests/test_signatures.py::test_func_signature[unique_all] +array_api_tests/test_signatures.py::test_func_signature[unique_counts] +array_api_tests/test_signatures.py::test_func_signature[unique_inverse] +array_api_tests/test_signatures.py::test_func_signature[unique_values] -# Missing complex kernels -array_api_tests/test_operators_and_elementwise_functions.py::test_acosh -array_api_tests/test_operators_and_elementwise_functions.py::test_asinh -array_api_tests/test_operators_and_elementwise_functions.py::test_atanh -array_api_tests/test_operators_and_elementwise_functions.py::test_expm1 - -# Missing arguments -array_api_tests/test_inspection_functions.py::test_array_namespace_info_dtypes -array_api_tests/test_statistical_functions.py::test_std -array_api_tests/test_manipulation_functions.py::test_moveaxis -array_api_tests/test_statistical_functions.py::test_var -array_api_tests/test_manipulation_functions.py::test_repeat -array_api_tests/test_manipulation_functions.py::test_reshape -array_api_tests/test_operators_and_elementwise_functions.py::test_clip -array_api_tests/test_data_type_functions.py::test_astype -array_api_tests/test_data_type_functions.py::test_can_cast -array_api_tests/test_data_type_functions.py::test_finfo[dtype0] -array_api_tests/test_data_type_functions.py::test_finfo[dtype1] -array_api_tests/test_searching_functions.py::test_searchsorted -array_api_tests/test_searching_functions.py::test_searchsorted_with_scalars +## Missing arguments +### Missing argument `include_initial` array_api_tests/test_signatures.py::test_func_signature[cumulative_sum] +### Missing argument `include_initial` array_api_tests/test_signatures.py::test_func_signature[cumulative_prod] +### Missing argument `dtype` array_api_tests/test_signatures.py::test_func_signature[prod] +### Missing argument `correction` array_api_tests/test_signatures.py::test_func_signature[std] +### Missing argument `dtype` array_api_tests/test_signatures.py::test_func_signature[sum] +### Missing argument `correction` array_api_tests/test_signatures.py::test_func_signature[var] -array_api_tests/test_signatures.py::test_func_signature[isin] -array_api_tests/test_signatures.py::test_func_signature[unique_all] -array_api_tests/test_signatures.py::test_func_signature[unique_counts] -array_api_tests/test_signatures.py::test_func_signature[unique_inverse] -array_api_tests/test_signatures.py::test_func_signature[unique_values] -array_api_tests/test_signatures.py::test_func_signature[nonzero] +### Missing argument `sorter` array_api_tests/test_signatures.py::test_func_signature[searchsorted] +### Missing argument `device` array_api_tests/test_signatures.py::test_func_signature[asarray] +### Missing argument `device` array_api_tests/test_signatures.py::test_func_signature[empty_like] +### Missing argument `device` array_api_tests/test_signatures.py::test_func_signature[from_dlpack] +### Missing argument `device` array_api_tests/test_signatures.py::test_func_signature[full_like] +### Missing argument `device` array_api_tests/test_signatures.py::test_func_signature[ones_like] +### Missing argument `device` array_api_tests/test_signatures.py::test_func_signature[zeros_like] +### Missing arguments `prepend` `append` array_api_tests/test_signatures.py::test_func_signature[diff] +### rejects an integer `axes` argument array_api_tests/test_signatures.py::test_func_signature[permute_dims] +### Missing argument `copy` array_api_tests/test_signatures.py::test_func_signature[reshape] +### Missing arguments `descending` `stable` array_api_tests/test_signatures.py::test_func_signature[argsort] +### Missing arguments `descending` `stable` array_api_tests/test_signatures.py::test_func_signature[sort] +### Missing `min` argument array_api_tests/test_signatures.py::test_func_signature[clip] -array_api_tests/test_signatures.py::test_func_signature[copysign] -array_api_tests/test_signatures.py::test_func_signature[hypot] -array_api_tests/test_signatures.py::test_func_signature[nextafter] -array_api_tests/test_signatures.py::test_func_signature[signbit] -# Loss of precision in the complex plane + +# test_operators_and_elementwise_functions.py +## Missing functions +array_api_tests/test_operators_and_elementwise_functions.py::test_copysign +array_api_tests/test_operators_and_elementwise_functions.py::test_hypot +array_api_tests/test_operators_and_elementwise_functions.py::test_nextafter +array_api_tests/test_operators_and_elementwise_functions.py::test_positive[__pos__] +array_api_tests/test_operators_and_elementwise_functions.py::test_signbit +array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[nextafter] +array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[hypot] +array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[copysign] + +## Missing complex kernels +array_api_tests/test_operators_and_elementwise_functions.py::test_acosh +array_api_tests/test_operators_and_elementwise_functions.py::test_asinh +array_api_tests/test_operators_and_elementwise_functions.py::test_atanh +array_api_tests/test_operators_and_elementwise_functions.py::test_expm1 + +## Missing arguments +### edge case +array_api_tests/test_operators_and_elementwise_functions.py::test_clip + +## Loss of precision in the complex plane array_api_tests/test_operators_and_elementwise_functions.py::test_acos array_api_tests/test_operators_and_elementwise_functions.py::test_asin array_api_tests/test_operators_and_elementwise_functions.py::test_atan -# Other failures -array_api_tests/test_inspection_functions.py::TestInspection::test_capabilities -array_api_tests/test_array_object.py::test_setitem_masking -array_api_tests/test_statistical_functions.py::test_cumulative_sum -array_api_tests/test_statistical_functions.py::test_cumulative_prod -array_api_tests/test_manipulation_functions.py::TestExpandDims::test_expand_dims -array_api_tests/test_statistical_functions.py::test_prod -array_api_tests/test_statistical_functions.py::test_sum -array_api_tests/test_utility_functions.py::test_diff_append_prepend -array_api_tests/test_creation_functions.py::test_asarray_arrays -array_api_tests/test_data_type_functions.py::test_iinfo[dtype4] -array_api_tests/test_data_type_functions.py::test_iinfo[dtype5] -array_api_tests/test_data_type_functions.py::test_iinfo[dtype6] -array_api_tests/test_data_type_functions.py::test_iinfo[dtype7] -array_api_tests/test_data_type_functions.py::TestResultType::test_with_scalars -array_api_tests/test_dlpack.py::test_from_dlpack +## Other failures +### wraps shift counts instead of returning zero for shifts >= the integer width array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[bitwise_left_shift(x1, x2)] +### wraps shift counts instead of returning zero for shifts >= the integer width array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__lshift__(x1, x2)] +### wraps shift counts instead of returning zero for shifts >= the integer width array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__ilshift__(x1, x2)] +### wraps shift counts instead of returning zero for shifts >= the integer width array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__rshift__(x1, x2)] +### wraps shift counts instead of returning zero for shifts >= the integer width array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__irshift__(x1, x2)] +### wraps shift counts instead of returning zero for shifts >= the integer width array_api_tests/test_operators_and_elementwise_functions.py::test_divide[divide(x1, x2)] -array_api_tests/test_has_names.py::test_has_names[set-isin] -array_api_tests/test_has_names.py::test_has_names[set-unique_all] -array_api_tests/test_has_names.py::test_has_names[set-unique_counts] -array_api_tests/test_has_names.py::test_has_names[set-unique_inverse] -array_api_tests/test_has_names.py::test_has_names[set-unique_values] -array_api_tests/test_has_names.py::test_has_names[searching-nonzero] -array_api_tests/test_data_type_functions.py::test_broadcast_arrays -array_api_tests/test_data_type_functions.py::TestBroadcastShapes::test_empty -array_api_tests/test_data_type_functions.py::test_iinfo[dtype0] -array_api_tests/test_data_type_functions.py::test_iinfo[dtype1] -array_api_tests/test_data_type_functions.py::test_iinfo[dtype2] -array_api_tests/test_data_type_functions.py::test_iinfo[dtype3] +### wraps shift counts instead of returning zero for shifts >= the integer width array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__truediv__(x1, x2)] +### wraps shift counts instead of returning zero for shifts >= the integer width array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__itruediv__(x1, x2)] +### truncates toward zero instead of flooring negative results array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[floor_divide(x1, x2)] +### truncates toward zero instead of flooring negative results array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__floordiv__(x1, x2)] +### truncates toward zero instead of flooring negative results array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__ifloordiv__(x1, x2)] +### truncates toward zero instead of flooring negative results array_api_tests/test_operators_and_elementwise_functions.py::test_log1p +### does not accept a scalar argument array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[atan2] -array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[copysign] -array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[hypot] -array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[nextafter] + +# test_inspection_functions.py +## Missing arguments +### Missing argument `device` +array_api_tests/test_inspection_functions.py::test_array_namespace_info_dtypes + +## Other failures +### Missing attribute '__array_api_version__' +array_api_tests/test_inspection_functions.py::TestInspection::test_capabilities + +# test_statistical_functions.py +## Missing arguments +### Missing argument `correction` +array_api_tests/test_statistical_functions.py::test_std +### Missing argument `correction` +array_api_tests/test_statistical_functions.py::test_var +### Missing argument `include_initial` and does not promote uint8 results to uint32 +array_api_tests/test_statistical_functions.py::test_cumulative_sum +### Missing argument `include_initial` and does not promote uint8 results to uint32 +array_api_tests/test_statistical_functions.py::test_cumulative_prod +### Missing argument `include_initial` and does not promote uint8 results to uint32 +array_api_tests/test_statistical_functions.py::test_prod +### Missing argument `include_initial` and does not promote uint8 results to uint32 +array_api_tests/test_statistical_functions.py::test_sum + +# test_manipulation_functions.py +## Missing arguments +### Missing argument `copy` +array_api_tests/test_manipulation_functions.py::test_reshape + +## Other failures +### raises ValueError instead of the required IndexError +array_api_tests/test_manipulation_functions.py::TestExpandDims::test_expand_dims +### `repeats` only accepts int +array_api_tests/test_manipulation_functions.py::test_repeat +### `source` `destination` only accepts ints +array_api_tests/test_manipulation_functions.py::test_moveaxis + +# test_data_type_functions.py +## Missing arguments +### Missing argument `copy` +array_api_tests/test_data_type_functions.py::test_astype +### +array_api_tests/test_data_type_functions.py::test_can_cast +### +array_api_tests/test_data_type_functions.py::test_finfo[dtype0] +### +array_api_tests/test_data_type_functions.py::test_finfo[dtype1] +### Missing attribute `bits` +array_api_tests/test_data_type_functions.py::test_iinfo[dtype0] +### Missing attribute `bits` +array_api_tests/test_data_type_functions.py::test_iinfo[dtype1] +### Missing attribute `bits` +array_api_tests/test_data_type_functions.py::test_iinfo[dtype2] +### Missing attribute `bits` +array_api_tests/test_data_type_functions.py::test_iinfo[dtype3] +### Missing attribute `bits` +array_api_tests/test_data_type_functions.py::test_iinfo[dtype4] +### Missing attribute `bits` +array_api_tests/test_data_type_functions.py::test_iinfo[dtype5] +### Missing attribute `bits` +array_api_tests/test_data_type_functions.py::test_iinfo[dtype6] +### Missing attribute `bits` +array_api_tests/test_data_type_functions.py::test_iinfo[dtype7] + +## Other failures +### MLX result_type() does not accept Python scalar values alongside dtypes +array_api_tests/test_data_type_functions.py::TestResultType::test_with_scalars +### returns a list instead of the required tuple +array_api_tests/test_data_type_functions.py::test_broadcast_arrays +### MLX broadcast_shapes() requires at least one shape +array_api_tests/test_data_type_functions.py::TestBroadcastShapes::test_empty + + +# test_searching_functions.py +## Missing arguments +### Missing argument `sorter` +array_api_tests/test_searching_functions.py::test_searchsorted +### Missing argument `sorter` +array_api_tests/test_searching_functions.py::test_searchsorted_with_scalars + +## Other failures +### returns uint32 indices instead of the required default signed integer dtype array_api_tests/test_searching_functions.py::test_argmax +### returns uint32 indices instead of the required default signed integer dtype array_api_tests/test_searching_functions.py::test_argmin + +# test_array_object.py +## Other failures +array_api_tests/test_array_object.py::test_setitem_masking + +# test_utility_functions.py +## Misisng arguments +### Missing argument `append` `prepend` +array_api_tests/test_utility_functions.py::test_diff_append_prepend + +# test_creation_functions.py +## Other failures +### copy=False is not supported, https://github.com/ml-explore/mlx/pull/4036 +array_api_tests/test_creation_functions.py::test_asarray_arrays + +# test_dlpack.py +## Other failures +array_api_tests/test_dlpack.py::test_from_dlpack + +# test_sorting_functions.py +## Missing attributes +### Missing attribute `stable` array_api_tests/test_sorting_functions.py::test_argsort +### Missing attribute `stable` array_api_tests/test_sorting_functions.py::test_sort -# Special cases +# test_special_cases.py +## Special cases array_api_tests/test_special_cases.py::test_unary[expm1((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is +0) -> 0 + 0j] array_api_tests/test_special_cases.py::test_unary[expm1(isfinite(real(x_i)) and imag(x_i) is +infinity) -> NaN + NaN j] array_api_tests/test_special_cases.py::test_unary[expm1(isfinite(real(x_i)) and imag(x_i) is NaN) -> NaN + NaN j]