I was reading through the code for accessing the numpy data:
https://github.com/ilan-gold/zarrs-python/blob/cca07fc5d0b179e76e4d553988037052117dcf4c/src/lib.rs#L157-L177
I'm not sure I'm well versed enough to assert that it could be unsound, but it looks a little quick to cast the pointer. It seems to expect that the input array is C-order contiguous, but doesn't provide any validation to that effect.
Instead of doing raw unsafe casts through pointers, you could use the safe as_slice
method to access the underlying &[u8]
of a numpy array.
Alternatively, you could use the buffer protocol to access data. Which is unsafe for different reasons, and requires the Python user to not mutate your buffers, but more flexible for varied inputs. https://alexgaynor.net/2022/oct/23/buffers-on-the-edge/