numpydantic/tests/conftest.py

40 lines
1 KiB
Python

import pytest
from pathlib import Path
from typing import Optional, Union, Type
import h5py
import numpy as np
from pydantic import BaseModel, Field
from numpydantic.interface.hdf5 import H5Array
from numpydantic import NDArray, Shape
from nptyping import Number
@pytest.fixture(scope="session")
def model_rgb() -> Type[BaseModel]:
class RGB(BaseModel):
array: Optional[
Union[
NDArray[Shape["* x, * y"], Number],
NDArray[Shape["* x, * y, 3 r_g_b"], Number],
NDArray[Shape["* x, * y, 3 r_g_b, 4 r_g_b_a"], Number],
]
] = Field(None)
return RGB
@pytest.fixture(scope="function")
def h5file(tmp_path) -> h5py.File:
h5f = h5py.File(tmp_path / "file.h5", "w")
yield h5f
h5f.close()
@pytest.fixture(scope="function")
def h5_array(h5file) -> H5Array:
"""trivial hdf5 array used for testing array existence"""
path = "/data"
h5file.create_dataset(path, data=np.zeros((3, 4)))
return H5Array(file=Path(h5file.filename), path=path)