Exemple #1
0
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)
Exemple #2
0
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()
Exemple #3
0
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)