testing.fast_array_utils
¶
Testing utilities.
Ideally used through the testing.fast_array_utils.pytest
plugin.
- testing.fast_array_utils.SUPPORTED_TYPES: tuple[ArrayType, ...] = (numpy.ndarray, cupy.ndarray, scipy.sparse.csr_array, scipy.sparse.csc_array, scipy.sparse.csr_matrix, cupyx.scipy.sparse.csr_matrix, scipy.sparse.csc_matrix, cupyx.scipy.sparse.csc_matrix, dask.array.Array[numpy.ndarray], dask.array.Array[cupy.ndarray], dask.array.Array[scipy.sparse.csr_array], dask.array.Array[scipy.sparse.csc_array], dask.array.Array[scipy.sparse.csr_matrix], dask.array.Array[cupyx.scipy.sparse.csr_matrix], dask.array.Array[scipy.sparse.csc_matrix], dask.array.Array[cupyx.scipy.sparse.csc_matrix], h5py.Dataset, zarr.Array, anndata.abc.CSRDataset[h5py.Dataset], anndata.abc.CSCDataset[h5py.Dataset], anndata.abc.CSRDataset[zarr.Array], anndata.abc.CSCDataset[zarr.Array])¶
All supported array types.
- class testing.fast_array_utils.ArrayType(mod: str, name: str, flags: ~testing.fast_array_utils._array_type.Flags = <Flags.Any: 1>, *, inner: ~testing.fast_array_utils._array_type.Inner = None, conversion_context: ~testing.fast_array_utils._array_type.ConversionContext | None = None)¶
Supported array type with methods for conversion and random generation.
Examples
>>> at = ArrayType("numpy", "ndarray") >>> arr = at([1, 2, 3]) >>> arr array([1, 2, 3]) >>> assert isinstance(arr, at.cls)
- __call__(x: ArrayLike | Array, /, *, dtype: DTypeLike | None = None) Arr ¶
Convert to this array type.
- property cls: type[Arr]¶
Array class for
isinstance()
checks.
- conversion_context: ConversionContext | None = None¶
Conversion context required for converting to h5py.
- inner: Inner = None¶
Inner array type (e.g. for dask).
- random(shape: tuple[int, int], *, dtype: _DTypeLikeNum | None = None, gen: np.random.Generator | None = None, density: float | np.floating[Any] = 0.01) Arr ¶
Create a random array.
- class testing.fast_array_utils.ConversionContext(hdf5_file: h5py.File)¶
Conversion context required for h5py.
- class testing.fast_array_utils.Flags(*values)¶
Array classification flags.
- None_ = 0¶
No array type.
- Any = 1¶
Any array type.
- Sparse = 2¶
Sparse array.
- Matrix = 4¶
Matrix API (
A * B
meansA @ B
).
- Gpu = 8¶
GPU array.
- Dask = 16¶
Dask array.
- Disk = 32¶
On-disk array.
- testing.fast_array_utils.random_mat(shape: tuple[int, int], *, density: float | np.floating[Any] = 0.01, format: Literal['csr', 'csc'] = 'csr', dtype: _DTypeLikeNum | None = None, container: Literal['array', 'matrix'] = 'array', rng: np.random.Generator | None = None) types.CSBase ¶
Create a random sparse matrix/array.
testing.fast_array_utils.pytest
¶
Pytest fixtures to get supported array types.
Can be used as pytest plugin: pytest -p testing.fast_array_utils.pytest
.
- fixture testing.fast_array_utils.pytest.array_type¶
Scope: function
Fixture for a supported
ArrayType
.Use
testing.fast_array_utils.Flags
to select or skip array types:using
select=
/args[0]
:@pytest.mark.array_type(Flags.Sparse) def test_something(array_type: ArrayType) -> None: ...
and/or using
skip=
/args[1]
:@pytest.mark.array_type(skip=Flags.Dask | Flags.Disk | Flags.Gpu) def test_something(array_type: ArrayType) -> None: ...
For special cases, you can also specify a
set
of array types and flags. This is useful if you want to select or skip only specific array types.from testing.fast_array_utils import SUPPORTED_TYPES SPARSE_AND_DASK = { at for at in SUPPORTED_TYPES if at.flags & Flags.Sparse and at.flags & Flags.Dask } @pytest.mark.array_type(skip={*SPARSE_AND_DASK, Flags.Disk}) def test_something(array_type: ArrayType) -> None: ...