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: Flags = <Flags.Any: 1>, *, inner: Inner = None, conversion_context: 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)
- inner: Inner = None¶
Inner array type (e.g. for dask).
- conversion_context: ConversionContext | None = None¶
Conversion context required for converting to h5py.
- property cls: type[Arr]¶
Array class for
isinstance()checks.
- 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 * BmeansA @ 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.
- testing.fast_array_utils.pytest.array_type(request: FixtureRequest) ArrayType¶
Fixture for a supported
ArrayType.Use
testing.fast_array_utils.Flagsto 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
setof 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: ...