python-blosc2 icon indicating copy to clipboard operation
python-blosc2 copied to clipboard

Array API compliance

Open lshaw8317 opened this issue 7 months ago • 1 comments

The following is a summary of the failing tests in the array-api-tests suite. When you have managed to make the test pass, mark the box next to the file.

There are three main groups of tests: 1 - lazy expression and chunking related things (unique_counts, cumulative_sum etc.) 2 - indexing related things (chiefly implement fancy indexing for .slice method) 3 - improving numexpr (add op_codes such as ge_bcd etc.)

  • [ ] test_utility_functions.py : add blosc2.diff function, squeeze needs to be modified to return a view (at C-level, follow expand_dims)
  • [ ] test_statistical_functions.py : add cumulative_sum and cumulative_prod
  • [ ] test_special_cases.py: everything
  • [ ] test_sorting_functions.py: add argsort
  • [ ] test_signatures.py : everything
  • [ ] test_set_functions.py: add unique_counts, unique_inverse, unique_all, unique_values
  • [ ] test_searching_functions.py: add argmax, argmin, where attribute to NDArray, nonzero, count_nonzero
  • [ ] test_operators_and_elementwise_functions.py: everything
  • [ ] test_manipulation_functions.py: SERIOUS (Fatal Python error: Floating-point exception)
  • [ ] test_linalg.py: haven't implemented most things (see #476), which is fine, but some tests also fail because numexpr needs a ge_bcd opcode.
  • [x] ~test_inspection_functions: passes all~
  • [ ] test_indexing_functions.py: need to improvetake and take_along_axis (latter fails tests)
  • [ ] test_has_names : fails 23 tests, need to add functions listed in comment below
  • [ ] test_fft.py: skips all tests
  • [ ] test_data_type_functions.py: a few different things (11 tests), add broadcast_arrays
  • [ ] test_creation_functions.py: add reshape for N-D arrays.
  • [x] ~test_constants.py: passes all~
  • [ ] test_array_object.py: one test takes too long for some reason sometimes

In order to run the tests, follow these steps:

  1. Git clone array-api test suite https://github.com/data-apis/array-api-tests
  2. Navigate to array-api-tests and $ pip install -r requirements.txt into environment.
  3. Return to home directory, git clone blosc2, navigate to resulting directory and pip install -e . in your environment.
  4. Run tests from python-blosc2 directory via ARRAY_API_TESTS_MODULE=blosc2 pytest ../array-api-tests/array_api_tests/test_has_names.py

lshaw8317 avatar Sep 10 '25 11:09 lshaw8317

Seems like the remaining functions we need are:

  • [ ] tril
  • [ ] triu
  • [ ] flip
  • [ ] repeat
  • [ ] roll
  • [ ] tile
  • [ ] argmax/argmin
  • [ ] searchsorted
  • [ ] cumulative_sum/cumulative_prod
  • [ ] argsort
  • [ ] diff
  • [ ] unique_counts/unique_inverse/unique_values/unique_all
  • [ ] broadcast_arrays
  • [ ] moveaxis
  • [ ] unstack
  • [ ] from_dlpack/__dlpack__/__dlpack_device__

lshaw8317 avatar Sep 23 '25 16:09 lshaw8317