diff --git a/CHANGES.rst b/CHANGES.rst index 63fa8db2..8f8123ce 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -7,6 +7,9 @@ Changelog of threedigrid-builder - Make package compatible with Python 3.12 - Make package compatible with GDAL 3.4 and 3.6. Note that in GDAL 3.6 refinements where the area exactly matches the grid may slightly differ from those in GDAL 3.4 and older. +- Add geopackage schematisation to test data +- Use geopackage, instead of spatialite, for tests +- Add geopackage to schematisations tested in integration test 1.13.1 (2024-02-19) diff --git a/integration_tests/test_bergermeer.py b/integration_tests/test_bergermeer.py index e323fbc2..464e61c5 100644 --- a/integration_tests/test_bergermeer.py +++ b/integration_tests/test_bergermeer.py @@ -20,7 +20,10 @@ def count_unique(arr): return dict(zip(*np.unique(arr, return_counts=True))) -@pytest.mark.parametrize("filename", ["v2_bergermeer.sqlite"]) +@pytest.mark.parametrize( + "filename", + ["v2_bergermeer.sqlite", "v2_bergermeer.gpkg"], +) def test_integration(tmp_path, filename): shutil.copyfile(unittests_data_path / filename, tmp_path / filename) progress_callback = Mock() diff --git a/setup.py b/setup.py index 39ace7cd..187dd9e3 100644 --- a/setup.py +++ b/setup.py @@ -53,7 +53,7 @@ def get_version(): install_requires = [ "numpy>=1.15", - "threedi-schema==0.219.*", + "threedi-schema==0.220.*", "shapely>=2", "pyproj>=3", "condenser[geo]>=0.1.1", diff --git a/threedigrid_builder/__init__.py b/threedigrid_builder/__init__.py index 673b836b..6d3bf3cb 100644 --- a/threedigrid_builder/__init__.py +++ b/threedigrid_builder/__init__.py @@ -2,5 +2,5 @@ from .exceptions import * # NOQA # fmt: off -__version__ = '1.13.2.dev0' +__version__ = '1.13.2.dev1' # fmt: on diff --git a/threedigrid_builder/application.py b/threedigrid_builder/application.py index 3c357aca..2e37379a 100644 --- a/threedigrid_builder/application.py +++ b/threedigrid_builder/application.py @@ -39,10 +39,13 @@ def _make_gridadmin( meta=None, progress_callback=None, upgrade=False, + convert_to_geopackage=False, ): """Compute interpolated channel nodes""" progress_callback(0.0, "Reading input schematisation...") - db = SQLite(sqlite_path, upgrade=upgrade) + db = SQLite( + sqlite_path, upgrade=upgrade, convert_to_geopackage=convert_to_geopackage + ) node_id_counter = itertools.count() line_id_counter = itertools.count() @@ -221,6 +224,7 @@ def make_gridadmin( meta: dict = None, progress_callback: Optional[Callable[[float, str], None]] = None, upgrade: bool = False, + convert_to_geopackage: bool = False, ): """Create a Grid instance from sqlite and DEM paths @@ -272,6 +276,7 @@ def make_gridadmin( meta=meta, progress_callback=progress_callback, upgrade=upgrade, + convert_to_geopackage=convert_to_geopackage, ) progress_callback(0.99, "Writing gridadmin...") diff --git a/threedigrid_builder/interface/db.py b/threedigrid_builder/interface/db.py index 2d56f5be..6e361cb0 100644 --- a/threedigrid_builder/interface/db.py +++ b/threedigrid_builder/interface/db.py @@ -97,7 +97,7 @@ def _set_initialization_type( class SQLite: - def __init__(self, path: pathlib.Path, upgrade=False): + def __init__(self, path: pathlib.Path, upgrade=False, convert_to_geopackage=False): if not path.exists(): raise FileNotFoundError(f"File not found: {path}") self.db = ThreediDatabase(path) @@ -106,7 +106,7 @@ def __init__(self, path: pathlib.Path, upgrade=False): version = self.get_version() if version < MIN_SQLITE_VERSION: if upgrade: - self.upgrade() + self.upgrade(convert_to_geopackage=convert_to_geopackage) else: raise SchematisationError(f"Too old sqlite version {version}.") @@ -115,9 +115,11 @@ def get_version(self) -> int: schema = ModelSchema(self.db) return schema.get_version() - def upgrade(self): + def upgrade(self, convert_to_geopackage=False): schema = ModelSchema(self.db) - schema.upgrade(backup=False, set_views=False) + schema.upgrade( + backup=False, set_views=False, convert_to_geopackage=convert_to_geopackage + ) @contextmanager def get_session(self) -> ContextManager[Session]: diff --git a/threedigrid_builder/tests/conftest.py b/threedigrid_builder/tests/conftest.py index 49b083f9..087f66ff 100644 --- a/threedigrid_builder/tests/conftest.py +++ b/threedigrid_builder/tests/conftest.py @@ -34,8 +34,8 @@ def db(tmp_path_factory): """Yields a threedigrid_builder.interface.db.SQLite object with access to the test v2_bergermeer.sqlite.""" - fn = tmp_path_factory.mktemp("data") / "v2_bergermeer.sqlite" - sqlite_path = data_path / "v2_bergermeer.sqlite" + fn = tmp_path_factory.mktemp("data") / "v2_bergermeer.gpkg" + sqlite_path = data_path / "v2_bergermeer.gpkg" shutil.copyfile(sqlite_path, fn) if not os.path.isfile(fn): pytest.skip("sample sqlite is not available", allow_module_level=True) diff --git a/threedigrid_builder/tests/data/v2_bergermeer.gpkg b/threedigrid_builder/tests/data/v2_bergermeer.gpkg new file mode 100644 index 00000000..869074b2 Binary files /dev/null and b/threedigrid_builder/tests/data/v2_bergermeer.gpkg differ diff --git a/threedigrid_builder/tests/data/v2_bergermeer.sqlite b/threedigrid_builder/tests/data/v2_bergermeer.sqlite index c5d762dc..a266fd9e 100644 --- a/threedigrid_builder/tests/data/v2_bergermeer.sqlite +++ b/threedigrid_builder/tests/data/v2_bergermeer.sqlite @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cbf6018bef282854cdf591d4b568d67390b4a66a5bd8cead0951934865530ab0 +oid sha256:4bef610dc0656707d6b7f34e93fa576702fecc20b361666d12d63c605c111ae0 size 6317056 diff --git a/threedigrid_builder/tests/test_db.py b/threedigrid_builder/tests/test_db.py index c0f31f45..cb1439f9 100644 --- a/threedigrid_builder/tests/test_db.py +++ b/threedigrid_builder/tests/test_db.py @@ -65,7 +65,7 @@ def test_init_bad_version(tmp_path): def test_get_version(db): - assert db.get_version() == 218 + assert db.get_version() == 220 def test_get_boundary_conditions_1d(db):