def _valid_grid_backend(): class DummyBackend: name = "dummy_backend" location = Path() def __init__(self, location: Union[str, Path]) -> None: raise NotImplementedError @staticmethod def is_valid_backend(location: Union[str, Path]) -> bool: ... dataset_name = str() dataset_label = str() dataset_unit = str() axes_names = [] axes_labels = [] axes_units = [] axes_min = np.empty(0) axes_max = np.empty(0) iteration = int() time_step = float() time_unit = str() shape = tuple() dtype = np.dtype("i") ndim = int() assert isinstance(DummyBackend, GridBackend) yield DummyBackend if DummyBackend.name in GridArray.get_backends(): GridArray.remove_backend(DummyBackend)
def test_GridArray_add_remove_backend(valid_grid_backend: GridBackend): assert valid_grid_backend.name not in GridArray.get_backends() GridArray.add_backend(valid_grid_backend) assert valid_grid_backend.name in GridArray.get_backends() GridArray.remove_backend(valid_grid_backend) assert valid_grid_backend.name not in GridArray.get_backends()
def _grid_files(tmp_path: Path, monkeypatch: pytest.MonkeyPatch): # make checking for 'is_valid_backend' always succeed monkeypatch.setattr(GridArray, "is_valid_backend", lambda _: True) # make 'basedir' basedir = tmp_path / "grid_files" basedir.mkdir(parents=True, exist_ok=True) # create dummy files dummy_data = np.arange(32).reshape((4, 8)) np.savetxt(basedir / "grid.0", dummy_data, delimiter=",") np.savetxt(basedir / "grid.1", dummy_data, delimiter=",") np.savetxt(basedir / "grid.2", dummy_data, delimiter=",") @register_backend(GridArray) class Dummy_GridFile: name: str = "dummy_backend" def __init__(self, location: Union[str, Path]) -> None: self.location = Path(location) self.name = "dummy_backend" self.data = np.loadtxt(location, delimiter=",") self.dataset_name = "dummy_grid" self.dataset_label = "dummy grid label" self.dataset_unit = "dummy unit" self.ndim = dummy_data.ndim self.shape = dummy_data.shape self.dtype = dummy_data.dtype self.axes_min = (0, 1) self.axes_max = (1, 2) self.axes_names = ("dummy_axis0", "dummy_axis1") self.axes_labels = ("dummy label axis0", "dummy label axis1") self.axes_units = ("dummy unit axis0", "dummy unit axis1") self.iteration = 0 self.time_step = 1.0 self.time_unit = "dummy time unit" @staticmethod def is_valid_backend(location: Union[str, Path]) -> bool: location = Path(location) if location.stem == "grid" and location.suffix in (".0", ".1", ".2"): return True else: return False def get_data(self, indexing: Optional[Any] = None) -> ArrayLike: if indexing: return self.data[indexing] else: return self.data yield basedir GridArray.remove_backend(Dummy_GridFile)