geocase 1.0.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- geocase-1.0.0rc1/.gitignore +38 -0
- geocase-1.0.0rc1/CHANGELOG.md +103 -0
- geocase-1.0.0rc1/LICENSE +21 -0
- geocase-1.0.0rc1/PKG-INFO +173 -0
- geocase-1.0.0rc1/README.md +112 -0
- geocase-1.0.0rc1/conftest.py +22 -0
- geocase-1.0.0rc1/examples/conftest.py +172 -0
- geocase-1.0.0rc1/pyproject.toml +142 -0
- geocase-1.0.0rc1/src/geocase/__init__.py +92 -0
- geocase-1.0.0rc1/src/geocase/api/__init__.py +68 -0
- geocase-1.0.0rc1/src/geocase/api/public.py +198 -0
- geocase-1.0.0rc1/src/geocase/api/types.py +60 -0
- geocase-1.0.0rc1/src/geocase/assertions/__init__.py +87 -0
- geocase-1.0.0rc1/src/geocase/assertions/crs.py +99 -0
- geocase-1.0.0rc1/src/geocase/assertions/footprint.py +102 -0
- geocase-1.0.0rc1/src/geocase/assertions/format_compliance.py +352 -0
- geocase-1.0.0rc1/src/geocase/assertions/geometry.py +124 -0
- geocase-1.0.0rc1/src/geocase/assertions/metadata.py +151 -0
- geocase-1.0.0rc1/src/geocase/assertions/raster.py +245 -0
- geocase-1.0.0rc1/src/geocase/assertions/topology.py +91 -0
- geocase-1.0.0rc1/src/geocase/cases/__init__.py +15 -0
- geocase-1.0.0rc1/src/geocase/cases/base.py +103 -0
- geocase-1.0.0rc1/src/geocase/cases/factory.py +40 -0
- geocase-1.0.0rc1/src/geocase/cases/netcdf.py +52 -0
- geocase-1.0.0rc1/src/geocase/cases/raster.py +74 -0
- geocase-1.0.0rc1/src/geocase/cases/vector.py +121 -0
- geocase-1.0.0rc1/src/geocase/catalog/__init__.py +48 -0
- geocase-1.0.0rc1/src/geocase/catalog/errors.py +64 -0
- geocase-1.0.0rc1/src/geocase/catalog/loader.py +111 -0
- geocase-1.0.0rc1/src/geocase/catalog/manifests.py +78 -0
- geocase-1.0.0rc1/src/geocase/catalog/models.py +200 -0
- geocase-1.0.0rc1/src/geocase/catalog/registry.py +278 -0
- geocase-1.0.0rc1/src/geocase/catalog/roots.py +76 -0
- geocase-1.0.0rc1/src/geocase/catalog/selectors.py +112 -0
- geocase-1.0.0rc1/src/geocase/catalog/suites/core-vector.yaml +30 -0
- geocase-1.0.0rc1/src/geocase/catalog/suites/crs-edge-cases.yaml +23 -0
- geocase-1.0.0rc1/src/geocase/catalog/suites/raster-nodata.yaml +21 -0
- geocase-1.0.0rc1/src/geocase/catalog/suites/vector-crs-edge.yaml +44 -0
- geocase-1.0.0rc1/src/geocase/catalog/suites/vector-schema-encoding.yaml +37 -0
- geocase-1.0.0rc1/src/geocase/catalog/suites/vector-topology.yaml +35 -0
- geocase-1.0.0rc1/src/geocase/catalog/suites.py +127 -0
- geocase-1.0.0rc1/src/geocase/data/core/netcdf/latlon_small/case.yaml +60 -0
- geocase-1.0.0rc1/src/geocase/data/core/netcdf/latlon_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/netcdf/latlon_small/latlon_sample.nc +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/netcdf/latlon_small/notes.md +25 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/cog_multispectral_small/case.yaml +66 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/cog_multispectral_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/cog_multispectral_small/cog_multispectral_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/cog_singleband_small/case.yaml +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/cog_singleband_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/cog_singleband_small/cog_singleband_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/dem_nan_nodata_small/case.yaml +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/dem_nan_nodata_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/dem_nan_nodata_small/dem_nan_nodata_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/dem_small/case.yaml +63 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/dem_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/dem_small/dem_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/dem_small/notes.md +28 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/all_valid_rectangular.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/all_valid_rectangular_footprint.geojson +47 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/case_all_valid_rectangular.yaml +50 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/case_hole_center_nodata.yaml +52 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/case_nonsquare_diagonal_sparse.yaml +51 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/case_rotated_two_islands.yaml +51 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/case_thin_corridor_shape.yaml +50 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/hole_center_nodata.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/hole_center_nodata_footprint.geojson +47 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/nonsquare_diagonal_sparse.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/nonsquare_diagonal_sparse_footprint.geojson +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/notes.md +29 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/rotated_two_islands.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/rotated_two_islands_footprint.geojson +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/thin_corridor_shape.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/footprint_edge_cases/thin_corridor_shape_footprint.geojson +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_external_overviews_small/case.yaml +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_external_overviews_small/checksums.sha256 +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_external_overviews_small/geotiff_external_overviews_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_external_overviews_small/geotiff_external_overviews_small.tif.ovr +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_float64_small/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_float64_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_float64_small/float64_sample.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_float64_small/notes.md +12 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int16_small/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int16_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int16_small/int16_sample.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int16_small/notes.md +12 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int32_small/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int32_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int32_small/int32_sample.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int32_small/notes.md +12 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int8_small/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int8_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int8_small/int8_sample.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_int8_small/notes.md +12 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_multiband_small/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_multiband_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_multiband_small/multiband_sample.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_multiband_small/notes.md +25 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_nodata_small/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_nodata_small/checksums.sha256 +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_nodata_small/nodata_sample.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_nodata_small/nodata_sample.tif.aux.xml +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_nodata_small/notes.md +24 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_nodata_small_shifted/case.yaml +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_nodata_small_shifted/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_nodata_small_shifted/nodata_sample_shifted.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_nodata_small_shifted/notes.md +6 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_utm_boundary/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_utm_boundary/checksums.sha256 +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_utm_boundary/notes.md +24 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_utm_boundary/utm_boundary.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/geotiff_utm_boundary/utm_boundary.tif.aux.xml +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/landcover_small/case.yaml +64 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/landcover_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/landcover_small/landcover_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/multispectral_mixed_resolution_small/case.yaml +66 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/multispectral_mixed_resolution_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/multispectral_mixed_resolution_small/multispectral_mixed_resolution_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/multispectral_s2_like_small/case.yaml +67 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/multispectral_s2_like_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/multispectral_s2_like_small/multispectral_s2_like_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/multispectral_s2_like_small/notes.md +29 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/ndvi_scaled_int16_small/case.yaml +64 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/ndvi_scaled_int16_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/ndvi_scaled_int16_small/ndvi_scaled_int16_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/ndvi_small/case.yaml +61 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/ndvi_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/ndvi_small/ndvi_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/ndvi_small/notes.md +27 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_dateline_small/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_dateline_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_dateline_small/optical_dateline_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_equator_small/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_equator_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_equator_small/optical_equator_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_polar_small/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_polar_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_polar_small/optical_polar_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_rgb_small/case.yaml +61 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_rgb_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_rgb_small/notes.md +28 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/optical_rgb_small/optical_rgb_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/sar_dualpol_small/case.yaml +58 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/sar_dualpol_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/sar_dualpol_small/sar_dualpol_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/sar_vv_small/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/sar_vv_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/sar_vv_small/sar_vv_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/water_mask_small/case.yaml +67 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/water_mask_small/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/water_mask_small/notes.md +27 -0
- geocase-1.0.0rc1/src/geocase/data/core/raster/water_mask_small/water_mask_small.tif +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/geometrycollection/geojson/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/geometrycollection/geojson/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/geometrycollection/geojson/geometry.geojson +40 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/geometrycollection/geojson/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/csv_wkt/linestring_csv_wkt_baseline/case.yaml +58 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/csv_wkt/linestring_csv_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/csv_wkt/linestring_csv_wkt_baseline/geometry.csv +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/csv_wkt/linestring_csv_wkt_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/flatgeobuf/linestring_flatgeobuf_baseline/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/flatgeobuf/linestring_flatgeobuf_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/flatgeobuf/linestring_flatgeobuf_baseline/line.fgb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/flatgeobuf/linestring_flatgeobuf_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geoarrow/linestring_geoarrow_baseline/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geoarrow/linestring_geoarrow_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geoarrow/linestring_geoarrow_baseline/geometry.arrow +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geoarrow/linestring_geoarrow_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geojson/simple_valid_linestring/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geojson/simple_valid_linestring/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geojson/simple_valid_linestring/geometry.geojson +19 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geojson/simple_valid_linestring/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geopackage/linestring_geopackage_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geopackage/linestring_geopackage_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geopackage/linestring_geopackage_baseline/data.gpkg +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/geopackage/linestring_geopackage_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/gml/linestring_gml_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/gml/linestring_gml_baseline/checksums.sha256 +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/gml/linestring_gml_baseline/data.gml +18 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/gml/linestring_gml_baseline/data.xsd +60 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/gml/linestring_gml_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/kml/linestring_kml_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/kml/linestring_kml_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/kml/linestring_kml_baseline/data.kml +12 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/kml/linestring_kml_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/shapefile/linestring_shapefile_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/shapefile/linestring_shapefile_baseline/checksums.sha256 +5 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/shapefile/linestring_shapefile_baseline/data.cpg +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/shapefile/linestring_shapefile_baseline/data.dbf +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/shapefile/linestring_shapefile_baseline/data.prj +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/shapefile/linestring_shapefile_baseline/data.shp +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/shapefile/linestring_shapefile_baseline/data.shx +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/shapefile/linestring_shapefile_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/sqlite/linestring_sqlite_baseline/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/sqlite/linestring_sqlite_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/sqlite/linestring_sqlite_baseline/data.sqlite +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/sqlite/linestring_sqlite_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/wkb/linestring_wkb_baseline/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/wkb/linestring_wkb_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/wkb/linestring_wkb_baseline/geometry.wkb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/wkb/linestring_wkb_baseline/notes.md +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/wkt/linestring_wkt_baseline/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/wkt/linestring_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/wkt/linestring_wkt_baseline/geometry.wkt +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/linestring/wkt/linestring_wkt_baseline/notes.md +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/csv_wkt/multilinestring_csv_wkt_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/csv_wkt/multilinestring_csv_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/csv_wkt/multilinestring_csv_wkt_baseline/data.csv +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/csv_wkt/multilinestring_csv_wkt_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/flatgeobuf/multilinestring_flatgeobuf_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/flatgeobuf/multilinestring_flatgeobuf_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/flatgeobuf/multilinestring_flatgeobuf_baseline/data.fgb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/flatgeobuf/multilinestring_flatgeobuf_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/geojson/simple_valid_multilinestring/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/geojson/simple_valid_multilinestring/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/geojson/simple_valid_multilinestring/geometry.geojson +26 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/geojson/simple_valid_multilinestring/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/geopackage/multilinestring_geopackage_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/geopackage/multilinestring_geopackage_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/geopackage/multilinestring_geopackage_baseline/data.gpkg +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/geopackage/multilinestring_geopackage_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/gml/multilinestring_gml_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/gml/multilinestring_gml_baseline/checksums.sha256 +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/gml/multilinestring_gml_baseline/data.gml +18 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/gml/multilinestring_gml_baseline/data.xsd +60 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/gml/multilinestring_gml_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/kml/multilinestring_kml_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/kml/multilinestring_kml_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/kml/multilinestring_kml_baseline/data.kml +12 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/kml/multilinestring_kml_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/parquet/multilinestring_parquet_baseline/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/parquet/multilinestring_parquet_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/parquet/multilinestring_parquet_baseline/geometry.parquet +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/parquet/multilinestring_parquet_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/shapefile/multilinestring_shapefile_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/shapefile/multilinestring_shapefile_baseline/checksums.sha256 +5 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/shapefile/multilinestring_shapefile_baseline/data.cpg +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/shapefile/multilinestring_shapefile_baseline/data.dbf +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/shapefile/multilinestring_shapefile_baseline/data.prj +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/shapefile/multilinestring_shapefile_baseline/data.shp +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/shapefile/multilinestring_shapefile_baseline/data.shx +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/shapefile/multilinestring_shapefile_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/sqlite/multilinestring_sqlite_baseline/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/sqlite/multilinestring_sqlite_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/sqlite/multilinestring_sqlite_baseline/data.sqlite +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/sqlite/multilinestring_sqlite_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/wkb/multilinestring_wkb_baseline/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/wkb/multilinestring_wkb_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/wkb/multilinestring_wkb_baseline/geometry.wkb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/wkb/multilinestring_wkb_baseline/notes.md +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/wkt/multilinestring_wkt_baseline/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/wkt/multilinestring_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/wkt/multilinestring_wkt_baseline/geometry.wkt +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multilinestring/wkt/multilinestring_wkt_baseline/notes.md +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/csv_wkt/multipoint_csv_wkt_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/csv_wkt/multipoint_csv_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/csv_wkt/multipoint_csv_wkt_baseline/data.csv +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/csv_wkt/multipoint_csv_wkt_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/feather/multipoint_feather_baseline/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/feather/multipoint_feather_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/feather/multipoint_feather_baseline/geometry.feather +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/feather/multipoint_feather_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/flatgeobuf/multipoint_flatgeobuf_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/flatgeobuf/multipoint_flatgeobuf_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/flatgeobuf/multipoint_flatgeobuf_baseline/data.fgb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/flatgeobuf/multipoint_flatgeobuf_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/geojson/simple_valid_multipoint/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/geojson/simple_valid_multipoint/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/geojson/simple_valid_multipoint/geometry.geojson +19 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/geojson/simple_valid_multipoint/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/geopackage/multipoint_geopackage_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/geopackage/multipoint_geopackage_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/geopackage/multipoint_geopackage_baseline/data.gpkg +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/geopackage/multipoint_geopackage_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/gml/multipoint_gml_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/gml/multipoint_gml_baseline/checksums.sha256 +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/gml/multipoint_gml_baseline/data.gml +18 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/gml/multipoint_gml_baseline/data.xsd +60 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/gml/multipoint_gml_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/kml/multipoint_kml_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/kml/multipoint_kml_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/kml/multipoint_kml_baseline/data.kml +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/kml/multipoint_kml_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/shapefile/multipoint_shapefile_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/shapefile/multipoint_shapefile_baseline/checksums.sha256 +5 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/shapefile/multipoint_shapefile_baseline/data.cpg +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/shapefile/multipoint_shapefile_baseline/data.dbf +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/shapefile/multipoint_shapefile_baseline/data.prj +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/shapefile/multipoint_shapefile_baseline/data.shp +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/shapefile/multipoint_shapefile_baseline/data.shx +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/shapefile/multipoint_shapefile_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/sqlite/multipoint_sqlite_baseline/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/sqlite/multipoint_sqlite_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/sqlite/multipoint_sqlite_baseline/data.sqlite +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/sqlite/multipoint_sqlite_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/wkb/multipoint_wkb_baseline/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/wkb/multipoint_wkb_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/wkb/multipoint_wkb_baseline/geometry.wkb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/wkb/multipoint_wkb_baseline/notes.md +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/wkt/multipoint_wkt_baseline/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/wkt/multipoint_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/wkt/multipoint_wkt_baseline/geometry.wkt +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipoint/wkt/multipoint_wkt_baseline/notes.md +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/csv_wkt/multipolygon_csv_wkt_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/csv_wkt/multipolygon_csv_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/csv_wkt/multipolygon_csv_wkt_baseline/data.csv +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/csv_wkt/multipolygon_csv_wkt_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/flatgeobuf/multipolygon_flatgeobuf_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/flatgeobuf/multipolygon_flatgeobuf_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/flatgeobuf/multipolygon_flatgeobuf_baseline/data.fgb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/flatgeobuf/multipolygon_flatgeobuf_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/geojson/simple_valid_multipolygon/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/geojson/simple_valid_multipolygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/geojson/simple_valid_multipolygon/geometry.geojson +34 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/geojson/simple_valid_multipolygon/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/geopackage/multipolygon_geopackage_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/geopackage/multipolygon_geopackage_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/geopackage/multipolygon_geopackage_baseline/data.gpkg +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/geopackage/multipolygon_geopackage_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/gml/multipolygon_gml_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/gml/multipolygon_gml_baseline/checksums.sha256 +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/gml/multipolygon_gml_baseline/data.gml +18 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/gml/multipolygon_gml_baseline/data.xsd +60 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/gml/multipolygon_gml_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/kml/multipolygon_kml_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/kml/multipolygon_kml_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/kml/multipolygon_kml_baseline/data.kml +12 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/kml/multipolygon_kml_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/shapefile/multipolygon_shapefile_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/shapefile/multipolygon_shapefile_baseline/checksums.sha256 +5 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/shapefile/multipolygon_shapefile_baseline/data.cpg +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/shapefile/multipolygon_shapefile_baseline/data.dbf +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/shapefile/multipolygon_shapefile_baseline/data.prj +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/shapefile/multipolygon_shapefile_baseline/data.shp +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/shapefile/multipolygon_shapefile_baseline/data.shx +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/shapefile/multipolygon_shapefile_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/sqlite/multipolygon_sqlite_baseline/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/sqlite/multipolygon_sqlite_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/sqlite/multipolygon_sqlite_baseline/data.sqlite +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/sqlite/multipolygon_sqlite_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/wkb/multipolygon_wkb_baseline/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/wkb/multipolygon_wkb_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/wkb/multipolygon_wkb_baseline/geometry.wkb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/wkb/multipolygon_wkb_baseline/notes.md +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/wkt/multipolygon_wkt_baseline/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/wkt/multipolygon_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/wkt/multipolygon_wkt_baseline/geometry.wkt +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/multipolygon/wkt/multipolygon_wkt_baseline/notes.md +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/arrow/point_arrow_baseline/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/arrow/point_arrow_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/arrow/point_arrow_baseline/geometry.arrow +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/arrow/point_arrow_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/csv_wkt/point_csv_wkt_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/csv_wkt/point_csv_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/csv_wkt/point_csv_wkt_baseline/data.csv +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/csv_wkt/point_csv_wkt_baseline/notes.md +14 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/feather/point_feather_baseline/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/feather/point_feather_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/feather/point_feather_baseline/geometry.feather +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/feather/point_feather_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/flatgeobuf/point_flatgeobuf_baseline/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/flatgeobuf/point_flatgeobuf_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/flatgeobuf/point_flatgeobuf_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/flatgeobuf/point_flatgeobuf_baseline/point.fgb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/geojson/simple_valid_point/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/geojson/simple_valid_point/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/geojson/simple_valid_point/geometry.geojson +21 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/geojson/simple_valid_point/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/geopackage/point_geopackage_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/geopackage/point_geopackage_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/geopackage/point_geopackage_baseline/data.gpkg +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/geopackage/point_geopackage_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/gml/point_gml_baseline/case.yaml +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/gml/point_gml_baseline/checksums.sha256 +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/gml/point_gml_baseline/geometry.gml +17 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/gml/point_gml_baseline/geometry.xsd +53 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/gml/point_gml_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/kml/point_kml_baseline/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/kml/point_kml_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/kml/point_kml_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/kml/point_kml_baseline/point.kml +10 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/shapefile/point_shapefile_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/shapefile/point_shapefile_baseline/checksums.sha256 +5 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/shapefile/point_shapefile_baseline/data.cpg +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/shapefile/point_shapefile_baseline/data.dbf +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/shapefile/point_shapefile_baseline/data.prj +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/shapefile/point_shapefile_baseline/data.shp +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/shapefile/point_shapefile_baseline/data.shx +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/shapefile/point_shapefile_baseline/notes.md +14 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/sqlite/point_sqlite_baseline/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/sqlite/point_sqlite_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/sqlite/point_sqlite_baseline/data.sqlite +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/sqlite/point_sqlite_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/wkb/point_wkb_baseline/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/wkb/point_wkb_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/wkb/point_wkb_baseline/geometry.wkb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/wkb/point_wkb_baseline/notes.md +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/wkt/point_wkt_baseline/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/wkt/point_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/wkt/point_wkt_baseline/geometry.wkt +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/point/wkt/point_wkt_baseline/notes.md +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/csv_wkt/polygon_csv_wkt_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/csv_wkt/polygon_csv_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/csv_wkt/polygon_csv_wkt_baseline/data.csv +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/csv_wkt/polygon_csv_wkt_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/flatgeobuf/polygon_flatgeobuf_baseline/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/flatgeobuf/polygon_flatgeobuf_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/flatgeobuf/polygon_flatgeobuf_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/flatgeobuf/polygon_flatgeobuf_baseline/polygon.fgb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/geojson/simple_valid_polygon/case.yaml +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/geojson/simple_valid_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/geojson/simple_valid_polygon/geometry.geojson +24 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/geojson/simple_valid_polygon/notes.md +25 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/geopackage/polygon_geopackage_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/geopackage/polygon_geopackage_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/geopackage/polygon_geopackage_baseline/data.gpkg +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/geopackage/polygon_geopackage_baseline/notes.md +13 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/gml/polygon_gml_baseline/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/gml/polygon_gml_baseline/checksums.sha256 +2 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/gml/polygon_gml_baseline/geometry.gml +17 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/gml/polygon_gml_baseline/geometry.xsd +53 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/gml/polygon_gml_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/kml/polygon_kml_baseline/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/kml/polygon_kml_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/kml/polygon_kml_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/kml/polygon_kml_baseline/polygon.kml +11 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/parquet/polygon_parquet_baseline/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/parquet/polygon_parquet_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/parquet/polygon_parquet_baseline/geometry.parquet +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/parquet/polygon_parquet_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/shapefile/polygon_shapefile_baseline/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/shapefile/polygon_shapefile_baseline/checksums.sha256 +5 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/shapefile/polygon_shapefile_baseline/geometry.cpg +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/shapefile/polygon_shapefile_baseline/geometry.dbf +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/shapefile/polygon_shapefile_baseline/geometry.prj +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/shapefile/polygon_shapefile_baseline/geometry.shp +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/shapefile/polygon_shapefile_baseline/geometry.shx +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/shapefile/polygon_shapefile_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/sqlite/polygon_sqlite_baseline/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/sqlite/polygon_sqlite_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/sqlite/polygon_sqlite_baseline/geometry.sqlite +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/sqlite/polygon_sqlite_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/wkb/polygon_wkb_baseline/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/wkb/polygon_wkb_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/wkb/polygon_wkb_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/wkb/polygon_wkb_baseline/polygon.wkb +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/wkt/polygon_wkt_baseline/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/wkt/polygon_wkt_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/wkt/polygon_wkt_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/polygon/wkt/polygon_wkt_baseline/polygon.wkt +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/equator_crossing_line/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/equator_crossing_line/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/equator_crossing_line/geometry.geojson +25 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/equator_crossing_line/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/equator_polygon/case.yaml +63 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/equator_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/equator_polygon/geometry.geojson +30 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/equator_polygon/notes.md +30 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/north_pole_point/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/north_pole_point/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/north_pole_point/geometry.geojson +21 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/north_pole_point/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/north_pole_polygon/case.yaml +66 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/north_pole_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/north_pole_polygon/geometry.geojson +30 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/north_pole_polygon/notes.md +30 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/rasterize_match_utm33_polygon/case.yaml +52 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/rasterize_match_utm33_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/rasterize_match_utm33_polygon/geometry.geojson +29 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/rasterize_match_utm33_polygon/notes.md +3 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/rasterize_match_wgs84_polygon/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/rasterize_match_wgs84_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/rasterize_match_wgs84_polygon/geometry.geojson +23 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/rasterize_match_wgs84_polygon/notes.md +3 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/south_pole_point/case.yaml +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/south_pole_point/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/south_pole_point/geometry.geojson +21 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/south_pole_point/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/south_pole_polygon/case.yaml +64 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/south_pole_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/south_pole_polygon/geometry.geojson +30 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/south_pole_polygon/notes.md +25 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/svalbard_special_zone_polygon/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/svalbard_special_zone_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/svalbard_special_zone_polygon/geometry.geojson +23 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/svalbard_special_zone_polygon/notes.md +3 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/utm_zone_33_polygon/case.yaml +54 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/utm_zone_33_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/utm_zone_33_polygon/geometry.geojson +23 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/utm_zone_33_polygon/notes.md +3 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/web_mercator_baseline/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/web_mercator_baseline/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/web_mercator_baseline/geometry.geojson +21 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/crs/web_mercator_baseline/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/antimeridian_crossing_line/case.yaml +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/antimeridian_crossing_line/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/antimeridian_crossing_line/geometry.geojson +19 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/antimeridian_crossing_line/notes.md +26 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/classic_antimeridian_polygon/case.yaml +55 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/classic_antimeridian_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/classic_antimeridian_polygon/geometry.geojson +23 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/classic_antimeridian_polygon/notes.md +3 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_chain_cluster/case.yaml +62 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_chain_cluster/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_chain_cluster/geometry.geojson +45 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_chain_cluster/notes.md +5 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_crossing_polygon/case.yaml +60 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_crossing_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_crossing_polygon/geometry.geojson +24 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_crossing_polygon/notes.md +23 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_points_pair/case.yaml +58 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_points_pair/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_points_pair/geometry.geojson +25 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/dateline_points_pair/notes.md +3 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/wrapped_longitude_point/case.yaml +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/wrapped_longitude_point/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/wrapped_longitude_point/geometry.geojson +23 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/dateline/wrapped_longitude_point/notes.md +5 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/degenerate/degenerate_but_parseable_line/case.yaml +60 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/degenerate/degenerate_but_parseable_line/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/degenerate/degenerate_but_parseable_line/geometry.geojson +24 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/degenerate/degenerate_but_parseable_line/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/degenerate/disjoint_polygons/case.yaml +51 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/degenerate/disjoint_polygons/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/degenerate/disjoint_polygons/geometry.geojson +41 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/degenerate/disjoint_polygons/notes.md +3 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/empty/empty_geometry_gpkg/case.yaml +65 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/empty/empty_geometry_gpkg/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/empty/empty_geometry_gpkg/empty_geom.gpkg +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/empty/empty_geometry_gpkg/notes.md +56 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/empty/empty_polygon/case.yaml +49 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/empty/empty_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/empty/empty_polygon/geometry.geojson +15 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/empty/empty_polygon/notes.md +3 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/format_limited_kml_case/case.yaml +79 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/format_limited_kml_case/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/format_limited_kml_case/notes.md +47 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/format_limited_kml_case/zones.kml +46 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/mixed_encoding_attributes/case.yaml +60 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/mixed_encoding_attributes/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/mixed_encoding_attributes/mixed_attrs.gpkg +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/mixed_encoding_attributes/notes.md +24 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/parquet_mixed_schema_attributes/case.yaml +80 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/parquet_mixed_schema_attributes/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/parquet_mixed_schema_attributes/mixed_attrs.parquet +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/parquet_mixed_schema_attributes/notes.md +30 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_encoding_legacy/case.yaml +77 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_encoding_legacy/checksums.sha256 +5 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_encoding_legacy/legacy_encoding.cpg +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_encoding_legacy/legacy_encoding.dbf +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_encoding_legacy/legacy_encoding.prj +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_encoding_legacy/legacy_encoding.shp +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_encoding_legacy/legacy_encoding.shx +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_encoding_legacy/notes.md +52 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_field_truncation/case.yaml +78 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_field_truncation/checksums.sha256 +5 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_field_truncation/notes.md +43 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_field_truncation/truncated_fields.cpg +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_field_truncation/truncated_fields.dbf +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_field_truncation/truncated_fields.prj +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_field_truncation/truncated_fields.shp +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/encoding/shapefile_field_truncation/truncated_fields.shx +0 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/holes/polygon_with_hole/case.yaml +57 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/holes/polygon_with_hole/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/holes/polygon_with_hole/geometry.geojson +31 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/holes/polygon_with_hole/notes.md +24 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/ambiguous_engine_dependent_polygon/case.yaml +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/ambiguous_engine_dependent_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/ambiguous_engine_dependent_polygon/geometry.geojson +36 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/ambiguous_engine_dependent_polygon/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/null_island_point/case.yaml +65 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/null_island_point/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/null_island_point/geometry.geojson +16 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/null_island_point/notes.md +27 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/out_of_bounds_coordinates/case.yaml +65 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/out_of_bounds_coordinates/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/out_of_bounds_coordinates/geometry.geojson +17 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/out_of_bounds_coordinates/notes.md +29 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/self_intersecting_polygon/case.yaml +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/self_intersecting_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/self_intersecting_polygon/geometry.geojson +24 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/self_intersecting_polygon/notes.md +24 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/spike_invalid_polygon/case.yaml +59 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/spike_invalid_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/spike_invalid_polygon/geometry.geojson +34 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/spike_invalid_polygon/notes.md +5 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/unclosed_ring_polygon/case.yaml +62 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/unclosed_ring_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/unclosed_ring_polygon/geometry.geojson +23 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/invalid/unclosed_ring_polygon/notes.md +18 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/format_limited_precision_polygon/case.yaml +61 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/format_limited_precision_polygon/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/format_limited_precision_polygon/geometry.geojson +29 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/format_limited_precision_polygon/notes.md +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/nearby_points_cluster/case.yaml +53 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/nearby_points_cluster/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/nearby_points_cluster/geometry.geojson +35 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/nearby_points_cluster/notes.md +3 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/precision_loss_geojson_roundtrip/case.yaml +69 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/precision_loss_geojson_roundtrip/checksums.sha256 +1 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/precision_loss_geojson_roundtrip/high_precision_points.geojson +47 -0
- geocase-1.0.0rc1/src/geocase/data/core/vector/special/precision/precision_loss_geojson_roundtrip/notes.md +51 -0
- geocase-1.0.0rc1/src/geocase/loaders/__init__.py +1 -0
- geocase-1.0.0rc1/src/geocase/loaders/generic.py +47 -0
- geocase-1.0.0rc1/src/geocase/loaders/geopandas_loader.py +22 -0
- geocase-1.0.0rc1/src/geocase/loaders/rasterio_loader.py +59 -0
- geocase-1.0.0rc1/src/geocase/loaders/xarray_loader.py +22 -0
- geocase-1.0.0rc1/src/geocase/metadata/case-index.yaml +136 -0
- geocase-1.0.0rc1/src/geocase/metadata/schemas/case.schema.yaml +241 -0
- geocase-1.0.0rc1/src/geocase/metadata/schemas/manifest.schema.yaml +67 -0
- geocase-1.0.0rc1/src/geocase/metadata/schemas/suite.schema.yaml +75 -0
- geocase-1.0.0rc1/src/geocase/metadata/suite-index.yaml +9 -0
- geocase-1.0.0rc1/src/geocase/py.typed +0 -0
- geocase-1.0.0rc1/src/geocase/pytest_plugin/__init__.py +60 -0
- geocase-1.0.0rc1/src/geocase/pytest_plugin/case_diagnostics.py +91 -0
- geocase-1.0.0rc1/src/geocase/pytest_plugin/fixtures.py +134 -0
- geocase-1.0.0rc1/src/geocase/pytest_plugin/markers.py +29 -0
- geocase-1.0.0rc1/src/geocase/storage/__init__.py +1 -0
- geocase-1.0.0rc1/src/geocase/storage/hashing.py +62 -0
- geocase-1.0.0rc1/src/geocase/templates/new_case.yaml +61 -0
- geocase-1.0.0rc1/src/geocase/templates/notes.md +1 -0
- geocase-1.0.0rc1/tests/fixtures/expected_hashes.yaml +1 -0
- geocase-1.0.0rc1/tests/integration/test_core_raster_suite.py +78 -0
- geocase-1.0.0rc1/tests/unit/test_assertions.py +498 -0
- geocase-1.0.0rc1/tests/unit/test_case_models.py +361 -0
- geocase-1.0.0rc1/tests/unit/test_cases.py +1193 -0
- geocase-1.0.0rc1/tests/unit/test_catalog_diagrams.py +106 -0
- geocase-1.0.0rc1/tests/unit/test_format_compliance.py +197 -0
- geocase-1.0.0rc1/tests/unit/test_format_specific_cases.py +269 -0
- geocase-1.0.0rc1/tests/unit/test_loader.py +207 -0
- geocase-1.0.0rc1/tests/unit/test_manifests.py +148 -0
- geocase-1.0.0rc1/tests/unit/test_public_api.py +182 -0
- geocase-1.0.0rc1/tests/unit/test_pytest_plugin.py +184 -0
- geocase-1.0.0rc1/tests/unit/test_raster_action_plan.py +243 -0
- geocase-1.0.0rc1/tests/unit/test_raster_loaders.py +69 -0
- geocase-1.0.0rc1/tests/unit/test_raster_manifest_followon.py +239 -0
- geocase-1.0.0rc1/tests/unit/test_raster_priority2_4_families.py +277 -0
- geocase-1.0.0rc1/tests/unit/test_registry.py +292 -0
- geocase-1.0.0rc1/tests/unit/test_remote_cases.py +311 -0
- geocase-1.0.0rc1/tests/unit/test_selectors.py +300 -0
- geocase-1.0.0rc1/tests/unit/test_suites.py +276 -0
- geocase-1.0.0rc1/tests/unit/test_validate_catalog_manifests.py +209 -0
- geocase-1.0.0rc1/tests/unit/test_verify_dist.py +69 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# Distribution / packaging
|
|
7
|
+
build/
|
|
8
|
+
dist/
|
|
9
|
+
*.egg-info/
|
|
10
|
+
*.egg
|
|
11
|
+
|
|
12
|
+
# Virtual environments
|
|
13
|
+
.venv/
|
|
14
|
+
venv/
|
|
15
|
+
env/
|
|
16
|
+
|
|
17
|
+
# IDE
|
|
18
|
+
.vscode/
|
|
19
|
+
.idea/
|
|
20
|
+
*.swp
|
|
21
|
+
*.swo
|
|
22
|
+
|
|
23
|
+
# Testing
|
|
24
|
+
.pytest_cache/
|
|
25
|
+
.coverage
|
|
26
|
+
htmlcov/
|
|
27
|
+
.mypy_cache/
|
|
28
|
+
.ruff_cache/
|
|
29
|
+
|
|
30
|
+
# MkDocs
|
|
31
|
+
site/
|
|
32
|
+
|
|
33
|
+
# OS files
|
|
34
|
+
.DS_Store
|
|
35
|
+
Thumbs.db
|
|
36
|
+
|
|
37
|
+
# GeoCase storage cache
|
|
38
|
+
.geocase_cache/
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to GeoCase are documented here.
|
|
4
|
+
|
|
5
|
+
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this
|
|
6
|
+
project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.0.0] — 2026-08-02
|
|
9
|
+
|
|
10
|
+
First stable release, and the first release published to PyPI. Version `0.1.0` was never
|
|
11
|
+
uploaded.
|
|
12
|
+
|
|
13
|
+
### The compatibility promise
|
|
14
|
+
|
|
15
|
+
v1.0 makes a stability commitment on **two surfaces only**:
|
|
16
|
+
|
|
17
|
+
1. **The pytest workflow** — the `geocase_case` / `geocase` fixtures and the
|
|
18
|
+
`geocase_case`, `geocase_suite`, and `geocase_select` markers.
|
|
19
|
+
2. **The public API** — the 27 names exported from `import geocase`, pinned against a
|
|
20
|
+
literal in `tests/unit/test_public_api.py`.
|
|
21
|
+
|
|
22
|
+
Everything else — module layout, internal helpers, the shape of `geocase.catalog` — is
|
|
23
|
+
internal and may change in a minor release. The promise is deliberately narrow because
|
|
24
|
+
those two surfaces are the genuinely mature ones; a wider claim would make the 1.0 label
|
|
25
|
+
dishonest.
|
|
26
|
+
|
|
27
|
+
### Breaking changes
|
|
28
|
+
|
|
29
|
+
- **The command-line interface and its `[project.scripts]` entry point have been
|
|
30
|
+
removed.** The declared `geocase` console script was broken in every install — it
|
|
31
|
+
pointed at a module that raised `ImportError` — so no working usage can depend on it.
|
|
32
|
+
There is no CLI in v1.0. Use the Python API or the pytest plugin.
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
|
|
36
|
+
- **Public API** (`import geocase`): a pinned 27-name surface covering case discovery,
|
|
37
|
+
loading, and inspection — `list_cases`, `get_case`, `load_case`, `show_case`,
|
|
38
|
+
`list_suites`, `get_suite`, `__version__`, the case classes, the metadata models and
|
|
39
|
+
enums, and `RemoteCaseUnavailableError`.
|
|
40
|
+
- **`docs/dataset-catalog.md`**: what the catalog contains, why each format was chosen,
|
|
41
|
+
the geodetic rationale for every coordinate cluster, and an honest list of coverage
|
|
42
|
+
gaps.
|
|
43
|
+
- **Generated catalog pages** under `docs/_generated/catalog/`: an index plus one page
|
|
44
|
+
per case, per risk type, and per format, carrying `schema.org/Dataset` JSON-LD.
|
|
45
|
+
- **Manifest support**: `extended-manifests/*.yaml` parse and resolve, remote case ids are
|
|
46
|
+
discoverable through the registry and `show_case`, and `GEOCASE_MANIFESTS` selects which
|
|
47
|
+
manifests are loaded.
|
|
48
|
+
- **CI quality gates**: `ruff check` and `ruff format --check`, `mypy`, a Python
|
|
49
|
+
3.11/3.14 test matrix, and non-blocking coverage reporting.
|
|
50
|
+
- **Catalog integrity gates**: orphaned case metadata, manifest validity (shadowed ids,
|
|
51
|
+
cross-manifest duplicates, malformed digests, dangling `bundled_analog` references),
|
|
52
|
+
`size_class` versus real on-disk payload, generated-page drift, and case ids named in
|
|
53
|
+
hand-written docs.
|
|
54
|
+
|
|
55
|
+
### Changed
|
|
56
|
+
|
|
57
|
+
- **Bundled data shrank from 36 MB to 4.2 MB.** Five SpatiaLite fixtures declared
|
|
58
|
+
`size_class: tiny` were 6.7 MB each; `size_class` now has enforced byte thresholds.
|
|
59
|
+
- `cases/raster.py` loads through `loaders/rasterio_loader.py`, making it the single
|
|
60
|
+
raster load path.
|
|
61
|
+
- `requires-python` is `>=3.11`, with classifiers for 3.11 through 3.14 — the versions
|
|
62
|
+
actually tested rather than the ones plausibly supported.
|
|
63
|
+
- Development status classifier: `3 - Alpha` → `5 - Production/Stable`.
|
|
64
|
+
- `project.urls` now point at GitLab, where the project actually lives.
|
|
65
|
+
- The case schema's `format` enum went from 7 values to 17, and its `assertions` block
|
|
66
|
+
from 6 documented fields to all 16. Both are now pinned to the models by a test.
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
|
|
70
|
+
- The raster coverage matrix reported 25 of 30 cases: the generator's glob missed the five
|
|
71
|
+
`footprint_edge_cases` files. Because the artifact was gated by `git diff --exit-code`,
|
|
72
|
+
CI was actively enforcing the wrong number.
|
|
73
|
+
- Case pages linked risk hubs at `../../risk/`, one level too high, producing 187 broken
|
|
74
|
+
links. `mkdocs build --strict` now passes.
|
|
75
|
+
- `materialize_case` raised an internal `No case root found` for manifest cases instead of
|
|
76
|
+
an actionable error; both error paths are now asserted in tests.
|
|
77
|
+
- The registry singleton ignored `GEOCASE_MANIFESTS` changes after first use; resolved
|
|
78
|
+
manifest paths are part of the cache key.
|
|
79
|
+
|
|
80
|
+
### Removed
|
|
81
|
+
|
|
82
|
+
- The `cli/` package and its entry point (see Breaking changes).
|
|
83
|
+
- `catalog/validators.py` — an empty stub nothing imported.
|
|
84
|
+
- `raster/affine_transform_quirk/` — an empty case directory that shipped in the wheel
|
|
85
|
+
while appearing in no index. The rotated/skewed-transform coverage it implied is a
|
|
86
|
+
genuine gap, now tracked on the v1.1 list rather than implied by a placeholder.
|
|
87
|
+
|
|
88
|
+
### Deferred to v1.1
|
|
89
|
+
|
|
90
|
+
Stated as decisions, not omissions:
|
|
91
|
+
|
|
92
|
+
- **Remote dataset transport.** Declared remote cases are discoverable and raise clear
|
|
93
|
+
errors, but nothing downloads, caches, or unpacks. Both manifests are entirely
|
|
94
|
+
placeholder — every `sha256` is `replace_me`, every `base_uri` is `example.org`. The
|
|
95
|
+
gate for reopening this is concrete: at least one real published archive with a real
|
|
96
|
+
sha256.
|
|
97
|
+
- **Rotated/skewed affine transforms and non-square pixels**, and **southern-hemisphere
|
|
98
|
+
UTM coverage** — see the coverage gaps in the dataset catalog.
|
|
99
|
+
|
|
100
|
+
### Known numbers
|
|
101
|
+
|
|
102
|
+
134 bundled cases (103 vector, 30 raster, 1 NetCDF) across 16 formats, 4.2 MB of bundled
|
|
103
|
+
data, 780 passing tests, 54% line coverage.
|
geocase-1.0.0rc1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Farzin Ashouri
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: geocase
|
|
3
|
+
Version: 1.0.0rc1
|
|
4
|
+
Summary: A curated library of geospatial test cases for automated and parameterized testing.
|
|
5
|
+
Project-URL: Homepage, https://github.com/farzinashouri/geocase
|
|
6
|
+
Project-URL: Documentation, https://farzinashouri.github.io/geocase
|
|
7
|
+
Project-URL: Repository, https://github.com/farzinashouri/geocase
|
|
8
|
+
Project-URL: Issues, https://github.com/farzinashouri/geocase/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/farzinashouri/geocase/blob/main/CHANGELOG.md
|
|
10
|
+
Author: Farzin Ashouri
|
|
11
|
+
License-Expression: MIT
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: geospatial,gis,pytest,test-cases,testing
|
|
14
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
15
|
+
Classifier: Framework :: Pytest
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
24
|
+
Classifier: Topic :: Software Development :: Testing
|
|
25
|
+
Requires-Python: >=3.11
|
|
26
|
+
Requires-Dist: pydantic>=2.0
|
|
27
|
+
Requires-Dist: pyyaml>=6.0
|
|
28
|
+
Provides-Extra: all
|
|
29
|
+
Requires-Dist: geopandas>=0.14; extra == 'all'
|
|
30
|
+
Requires-Dist: netcdf4>=1.6; extra == 'all'
|
|
31
|
+
Requires-Dist: pyarrow>=14.0; extra == 'all'
|
|
32
|
+
Requires-Dist: rasterio>=1.3; extra == 'all'
|
|
33
|
+
Requires-Dist: shapely>=2.0; extra == 'all'
|
|
34
|
+
Requires-Dist: xarray>=2023.1; extra == 'all'
|
|
35
|
+
Provides-Extra: dev
|
|
36
|
+
Requires-Dist: geopandas>=0.14; extra == 'dev'
|
|
37
|
+
Requires-Dist: mypy>=1.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: netcdf4>=1.6; extra == 'dev'
|
|
39
|
+
Requires-Dist: pyarrow>=14.0; extra == 'dev'
|
|
40
|
+
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
|
|
41
|
+
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
42
|
+
Requires-Dist: rasterio>=1.3; extra == 'dev'
|
|
43
|
+
Requires-Dist: ruff<0.16,>=0.15.7; extra == 'dev'
|
|
44
|
+
Requires-Dist: shapely>=2.0; extra == 'dev'
|
|
45
|
+
Requires-Dist: types-pyyaml; extra == 'dev'
|
|
46
|
+
Requires-Dist: types-shapely; extra == 'dev'
|
|
47
|
+
Requires-Dist: xarray>=2023.1; extra == 'dev'
|
|
48
|
+
Provides-Extra: docs
|
|
49
|
+
Requires-Dist: mkdocs-material>=9.0; extra == 'docs'
|
|
50
|
+
Requires-Dist: mkdocs>=1.5; extra == 'docs'
|
|
51
|
+
Provides-Extra: netcdf
|
|
52
|
+
Requires-Dist: netcdf4>=1.6; extra == 'netcdf'
|
|
53
|
+
Requires-Dist: xarray>=2023.1; extra == 'netcdf'
|
|
54
|
+
Provides-Extra: raster
|
|
55
|
+
Requires-Dist: rasterio>=1.3; extra == 'raster'
|
|
56
|
+
Provides-Extra: vector
|
|
57
|
+
Requires-Dist: geopandas>=0.14; extra == 'vector'
|
|
58
|
+
Requires-Dist: pyarrow>=14.0; extra == 'vector'
|
|
59
|
+
Requires-Dist: shapely>=2.0; extra == 'vector'
|
|
60
|
+
Description-Content-Type: text/markdown
|
|
61
|
+
|
|
62
|
+
# GeoCase
|
|
63
|
+
|
|
64
|
+
GeoCase is a geospatial testing toolkit and case catalog for realistic, reproducible `pytest` tests.
|
|
65
|
+
|
|
66
|
+
> Status: **1.0**. The compatibility promise covers two surfaces — the `pytest` workflow (fixtures and markers) and the `import geocase` public API. 134 bundled cases, 4.2 MB. Remote dataset transport is deferred to v1.1; see the [changelog](CHANGELOG.md).
|
|
67
|
+
|
|
68
|
+
The main goal is simple: use plain `pytest` with a few GeoCase fixtures and markers to run your geospatial code against curated edge cases.
|
|
69
|
+
|
|
70
|
+
Instead of hand-picking random sample files, you select packaged cases (vector, raster, NetCDF) and run your function against scenarios such as CRS issues, dateline crossing, topology problems, and NoData behavior.
|
|
71
|
+
|
|
72
|
+
## Quick Start
|
|
73
|
+
|
|
74
|
+
### 1) Install
|
|
75
|
+
|
|
76
|
+
For local development in this repo:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
pip install -e ".[dev]"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
When a package release is published, install from the package index:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
pip install "geocase[all]"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Or from conda-forge — note the extras are not packaged there, since bundling
|
|
89
|
+
GDAL would make the conda package far heavier than the PyPI equivalent:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
conda install -c conda-forge geocase
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 2) Write a test with GeoCase markers
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
import pytest
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
@pytest.mark.geocase_case("dateline_crossing_polygon")
|
|
102
|
+
def test_vector_case_loads(geocase_case) -> None:
|
|
103
|
+
gdf = geocase_case.load()
|
|
104
|
+
assert geocase_case.id == "dateline_crossing_polygon"
|
|
105
|
+
assert gdf.crs is not None
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
@pytest.mark.geocase_select(category="raster")
|
|
109
|
+
def test_all_raster_cases_have_pixels(geocase) -> None:
|
|
110
|
+
data, _, _ = geocase.read(1)
|
|
111
|
+
assert data.size > 0
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 3) Run tests
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
pytest -v
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Run only GeoCase-marked tests:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
pytest -m "geocase_case or geocase_suite or geocase_select" -v
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## CI Jobs
|
|
127
|
+
|
|
128
|
+
This repository uses GitHub Actions, defined in `.github/workflows/`.
|
|
129
|
+
|
|
130
|
+
`ci.yml` runs on pushes to `main` and on pull requests:
|
|
131
|
+
|
|
132
|
+
- `catalog` — catalog integrity checks (`build_case_index.py` smoke check,
|
|
133
|
+
`validate_catalog.py`, fixture and checksum gates, generated-page freshness)
|
|
134
|
+
- `tests` — the whole `tests/` directory on Python 3.11 and 3.14, reporting
|
|
135
|
+
coverage (not gated)
|
|
136
|
+
- `lint` — `ruff format --check` and `ruff check` over `src` and `tests`
|
|
137
|
+
- `typecheck` — `mypy src`
|
|
138
|
+
- `docs` — `mkdocs build --strict`
|
|
139
|
+
|
|
140
|
+
`release.yml` runs only on `vX.Y.Z` tags; see
|
|
141
|
+
[Releasing](contributing/releasing.md).
|
|
142
|
+
|
|
143
|
+
Local equivalents:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
python scripts/build_case_index.py --check
|
|
147
|
+
python scripts/validate_catalog.py
|
|
148
|
+
|
|
149
|
+
python -m pytest tests -q
|
|
150
|
+
ruff format --check src tests && ruff check src tests
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Core Concepts
|
|
154
|
+
|
|
155
|
+
- `@pytest.mark.geocase_case(...)`: select explicit case IDs.
|
|
156
|
+
- `@pytest.mark.geocase_suite(...)`: use named suites.
|
|
157
|
+
- `@pytest.mark.geocase_select(...)`: select by metadata (`category`, `format`, `geometry_type`, `tags`, `risk_types_any`, etc.).
|
|
158
|
+
- `geocase`: auto-parameterized fixture (one invocation per resolved case).
|
|
159
|
+
- `geocase_case`: convenience fixture for exactly one resolved case.
|
|
160
|
+
- CLI tooling is optional; the primary workflow is plain `pytest`.
|
|
161
|
+
|
|
162
|
+
If a GeoCase marker is missing, resolves no cases, refers to an unknown suite, or `geocase_case` resolves more than one case, the plugin now raises a focused `pytest.UsageError` that explains what to fix.
|
|
163
|
+
|
|
164
|
+
## Learn More
|
|
165
|
+
|
|
166
|
+
- [`docs/getting-started.md`](docs/getting-started.md)
|
|
167
|
+
- [`docs/testing-your-function-with-geocase.md`](docs/testing-your-function-with-geocase.md)
|
|
168
|
+
- [`docs/case-discovery.md`](docs/case-discovery.md)
|
|
169
|
+
- [`docs/assertions-reference.md`](docs/assertions-reference.md)
|
|
170
|
+
- [`docs/examples-index.md`](docs/examples-index.md)
|
|
171
|
+
- [`docs/plans/development-plan.md`](docs/plans/development-plan.md)
|
|
172
|
+
- [`docs/contributing/workflow.md`](docs/contributing/workflow.md)
|
|
173
|
+
- [`docs/design/case-recommendation-service.md`](docs/design/case-recommendation-service.md)
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# GeoCase
|
|
2
|
+
|
|
3
|
+
GeoCase is a geospatial testing toolkit and case catalog for realistic, reproducible `pytest` tests.
|
|
4
|
+
|
|
5
|
+
> Status: **1.0**. The compatibility promise covers two surfaces — the `pytest` workflow (fixtures and markers) and the `import geocase` public API. 134 bundled cases, 4.2 MB. Remote dataset transport is deferred to v1.1; see the [changelog](CHANGELOG.md).
|
|
6
|
+
|
|
7
|
+
The main goal is simple: use plain `pytest` with a few GeoCase fixtures and markers to run your geospatial code against curated edge cases.
|
|
8
|
+
|
|
9
|
+
Instead of hand-picking random sample files, you select packaged cases (vector, raster, NetCDF) and run your function against scenarios such as CRS issues, dateline crossing, topology problems, and NoData behavior.
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
### 1) Install
|
|
14
|
+
|
|
15
|
+
For local development in this repo:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pip install -e ".[dev]"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
When a package release is published, install from the package index:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install "geocase[all]"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Or from conda-forge — note the extras are not packaged there, since bundling
|
|
28
|
+
GDAL would make the conda package far heavier than the PyPI equivalent:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
conda install -c conda-forge geocase
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 2) Write a test with GeoCase markers
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
import pytest
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@pytest.mark.geocase_case("dateline_crossing_polygon")
|
|
41
|
+
def test_vector_case_loads(geocase_case) -> None:
|
|
42
|
+
gdf = geocase_case.load()
|
|
43
|
+
assert geocase_case.id == "dateline_crossing_polygon"
|
|
44
|
+
assert gdf.crs is not None
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@pytest.mark.geocase_select(category="raster")
|
|
48
|
+
def test_all_raster_cases_have_pixels(geocase) -> None:
|
|
49
|
+
data, _, _ = geocase.read(1)
|
|
50
|
+
assert data.size > 0
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 3) Run tests
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pytest -v
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Run only GeoCase-marked tests:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pytest -m "geocase_case or geocase_suite or geocase_select" -v
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## CI Jobs
|
|
66
|
+
|
|
67
|
+
This repository uses GitHub Actions, defined in `.github/workflows/`.
|
|
68
|
+
|
|
69
|
+
`ci.yml` runs on pushes to `main` and on pull requests:
|
|
70
|
+
|
|
71
|
+
- `catalog` — catalog integrity checks (`build_case_index.py` smoke check,
|
|
72
|
+
`validate_catalog.py`, fixture and checksum gates, generated-page freshness)
|
|
73
|
+
- `tests` — the whole `tests/` directory on Python 3.11 and 3.14, reporting
|
|
74
|
+
coverage (not gated)
|
|
75
|
+
- `lint` — `ruff format --check` and `ruff check` over `src` and `tests`
|
|
76
|
+
- `typecheck` — `mypy src`
|
|
77
|
+
- `docs` — `mkdocs build --strict`
|
|
78
|
+
|
|
79
|
+
`release.yml` runs only on `vX.Y.Z` tags; see
|
|
80
|
+
[Releasing](contributing/releasing.md).
|
|
81
|
+
|
|
82
|
+
Local equivalents:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
python scripts/build_case_index.py --check
|
|
86
|
+
python scripts/validate_catalog.py
|
|
87
|
+
|
|
88
|
+
python -m pytest tests -q
|
|
89
|
+
ruff format --check src tests && ruff check src tests
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Core Concepts
|
|
93
|
+
|
|
94
|
+
- `@pytest.mark.geocase_case(...)`: select explicit case IDs.
|
|
95
|
+
- `@pytest.mark.geocase_suite(...)`: use named suites.
|
|
96
|
+
- `@pytest.mark.geocase_select(...)`: select by metadata (`category`, `format`, `geometry_type`, `tags`, `risk_types_any`, etc.).
|
|
97
|
+
- `geocase`: auto-parameterized fixture (one invocation per resolved case).
|
|
98
|
+
- `geocase_case`: convenience fixture for exactly one resolved case.
|
|
99
|
+
- CLI tooling is optional; the primary workflow is plain `pytest`.
|
|
100
|
+
|
|
101
|
+
If a GeoCase marker is missing, resolves no cases, refers to an unknown suite, or `geocase_case` resolves more than one case, the plugin now raises a focused `pytest.UsageError` that explains what to fix.
|
|
102
|
+
|
|
103
|
+
## Learn More
|
|
104
|
+
|
|
105
|
+
- [`docs/getting-started.md`](docs/getting-started.md)
|
|
106
|
+
- [`docs/testing-your-function-with-geocase.md`](docs/testing-your-function-with-geocase.md)
|
|
107
|
+
- [`docs/case-discovery.md`](docs/case-discovery.md)
|
|
108
|
+
- [`docs/assertions-reference.md`](docs/assertions-reference.md)
|
|
109
|
+
- [`docs/examples-index.md`](docs/examples-index.md)
|
|
110
|
+
- [`docs/plans/development-plan.md`](docs/plans/development-plan.md)
|
|
111
|
+
- [`docs/contributing/workflow.md`](docs/contributing/workflow.md)
|
|
112
|
+
- [`docs/design/case-recommendation-service.md`](docs/design/case-recommendation-service.md)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from importlib import metadata
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
ROOT = Path(__file__).resolve().parent
|
|
8
|
+
SRC = ROOT / "src"
|
|
9
|
+
|
|
10
|
+
if str(SRC) not in sys.path:
|
|
11
|
+
sys.path.insert(0, str(SRC))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _has_geocase_pytest_entry_point() -> bool:
|
|
15
|
+
try:
|
|
16
|
+
metadata.version("geocase")
|
|
17
|
+
except metadata.PackageNotFoundError:
|
|
18
|
+
return False
|
|
19
|
+
return True
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
pytest_plugins = [] if _has_geocase_pytest_entry_point() else ["geocase.pytest_plugin"]
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"""Pytest configuration for the GeoCase example suites.
|
|
2
|
+
|
|
3
|
+
The "simple" interview suite (``test_easy_geospatial_interview_questions_simple``)
|
|
4
|
+
runs the shared edge-case scenarios against the *naive* reference
|
|
5
|
+
implementation. Those scenarios are "expose"/"discover" demonstrations: they
|
|
6
|
+
assert the correct, edge-case-aware behaviour that only the ``_perfect``
|
|
7
|
+
implementation provides, so the simple helper is expected to fail exactly the
|
|
8
|
+
inputs listed below (every other input, and every ``_perfect`` counterpart,
|
|
9
|
+
passes).
|
|
10
|
+
|
|
11
|
+
We mark only those specific nodes ``xfail(strict=True)`` from here, instead of
|
|
12
|
+
marking whole test functions, so that:
|
|
13
|
+
|
|
14
|
+
* the parametrized "handles_all_cases" tests still report normal ``passed`` on
|
|
15
|
+
the inputs the simple helper *does* handle (no ``xpassed`` noise), and
|
|
16
|
+
* if the simple helper is ever improved to handle one of these inputs, the
|
|
17
|
+
strict xfail turns into a failure and prompts us to drop it from this list.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
from __future__ import annotations
|
|
21
|
+
|
|
22
|
+
_SIMPLE_SUITE_FILENAME = "test_easy_geospatial_interview_questions_simple.py"
|
|
23
|
+
|
|
24
|
+
# One reason per demonstration scenario, keyed by the (unparametrized) test
|
|
25
|
+
# function name.
|
|
26
|
+
_SIMPLE_LIMITATION_REASONS: dict[str, str] = {
|
|
27
|
+
"test_reproject_point_normalizes_wrapped_longitude_fixture": (
|
|
28
|
+
"simple reproject_point does not normalize wrapped longitudes"
|
|
29
|
+
),
|
|
30
|
+
"test_reproject_point_handles_all_point_cases": (
|
|
31
|
+
"simple reproject_point does not normalize dateline-wrapped longitudes"
|
|
32
|
+
),
|
|
33
|
+
"test_point_in_polygon_excludes_boundary_point": (
|
|
34
|
+
"simple point_in_polygon treats boundary points as inside"
|
|
35
|
+
),
|
|
36
|
+
"test_get_bbox_classic_antimeridian_polygon_uses_minimal_span": (
|
|
37
|
+
"simple get_bbox does not compute the minimal antimeridian span"
|
|
38
|
+
),
|
|
39
|
+
"test_get_bbox_handles_all_polygon_cases": (
|
|
40
|
+
"simple get_bbox does not compute the minimal antimeridian span"
|
|
41
|
+
),
|
|
42
|
+
"test_buffer_in_meters_keeps_dateline_polygon_valid": (
|
|
43
|
+
"simple buffer_in_meters does not handle dateline-crossing geometries"
|
|
44
|
+
),
|
|
45
|
+
"test_buffer_in_meters_handles_all_polygon_cases": (
|
|
46
|
+
"simple buffer_in_meters assumes WGS84 input and breaks on projected/"
|
|
47
|
+
"dateline geometries"
|
|
48
|
+
),
|
|
49
|
+
"test_get_utm_epsg_handles_svalbard_special_zone": (
|
|
50
|
+
"simple get_utm_epsg lacks Svalbard/Norway special-zone handling"
|
|
51
|
+
),
|
|
52
|
+
"test_get_utm_epsg_handles_all_utm_polygon_cases": (
|
|
53
|
+
"simple get_utm_epsg lacks UTM special-zone handling"
|
|
54
|
+
),
|
|
55
|
+
"test_area_m2_rejects_invalid_self_intersection": (
|
|
56
|
+
"simple area_m2 does not validate or reject invalid geometries"
|
|
57
|
+
),
|
|
58
|
+
"test_area_m2_handles_all_polygon_cases": (
|
|
59
|
+
"simple area_m2 assumes WGS84 input and does not reject invalid geometries"
|
|
60
|
+
),
|
|
61
|
+
"test_dissolve_polygons_repairs_invalid_inputs_before_union": (
|
|
62
|
+
"simple dissolve_polygons does not repair invalid inputs before union"
|
|
63
|
+
),
|
|
64
|
+
"test_dissolve_polygons_handles_all_polygon_cases": (
|
|
65
|
+
"simple dissolve_polygons does not repair invalid inputs before union"
|
|
66
|
+
),
|
|
67
|
+
"test_clip_raster_accepts_wgs84_bbox_for_projected_raster": (
|
|
68
|
+
"simple clip_raster assumes the bbox CRS matches the raster CRS"
|
|
69
|
+
),
|
|
70
|
+
"test_pixel_to_world_returns_pixel_center_coordinates": (
|
|
71
|
+
"simple pixel_to_world returns the pixel corner, not its center"
|
|
72
|
+
),
|
|
73
|
+
"test_rasters_aligned_accepts_shifted_raster_on_same_pixel_lattice": (
|
|
74
|
+
"simple rasters_aligned is overly strict about origin offsets"
|
|
75
|
+
),
|
|
76
|
+
"test_reproject_geometry_handles_all_polygon_cases": (
|
|
77
|
+
"simple reproject_geometry does not normalize dateline longitudes"
|
|
78
|
+
),
|
|
79
|
+
"test_reproject_geometry_normalizes_dateline_case_longitudes": (
|
|
80
|
+
"simple reproject_geometry does not normalize dateline longitudes"
|
|
81
|
+
),
|
|
82
|
+
"test_find_intersections_reports_metric_area": (
|
|
83
|
+
"simple find_intersections reports area in degrees, not metres"
|
|
84
|
+
),
|
|
85
|
+
"test_validate_polygon_geometry_accepts_repairable_invalid_polygon": (
|
|
86
|
+
"simple validate_polygon_geometry does not repair fixable invalid polygons"
|
|
87
|
+
),
|
|
88
|
+
"test_validate_polygon_geometry_handles_all_polygon_cases": (
|
|
89
|
+
"simple validate_polygon_geometry does not repair fixable invalid polygons"
|
|
90
|
+
),
|
|
91
|
+
"test_sample_raster_at_lonlat_masks_nodata_pixel": (
|
|
92
|
+
"simple sample_raster_at_lonlat returns the raw NoData sentinel"
|
|
93
|
+
),
|
|
94
|
+
"test_cluster_points_keeps_dateline_chain_connected": (
|
|
95
|
+
"simple cluster_points does not keep a transitive dateline chain together"
|
|
96
|
+
),
|
|
97
|
+
"test_cluster_points_handles_all_point_cases": (
|
|
98
|
+
"simple cluster_points assumes WGS84 input and breaks on projected/dateline "
|
|
99
|
+
"points"
|
|
100
|
+
),
|
|
101
|
+
"test_fix_geometry_returns_polygonal_output_for_spike_case": (
|
|
102
|
+
"simple fix_geometry returns mixed-geometry output for spike fixtures"
|
|
103
|
+
),
|
|
104
|
+
"test_rasterize_geometries_burns_pixels_for_geocase_polygon": (
|
|
105
|
+
"simple rasterize_geometries does not reproject geometry to the raster CRS"
|
|
106
|
+
),
|
|
107
|
+
"test_rasterize_geometries_handles_all_rasterization_polygon_cases": (
|
|
108
|
+
"simple rasterize_geometries does not reproject geometry to the raster CRS"
|
|
109
|
+
),
|
|
110
|
+
"test_crosses_antimeridian_matches_case_expectation": (
|
|
111
|
+
"simple crosses_antimeridian misses >180-degree dateline encodings"
|
|
112
|
+
),
|
|
113
|
+
"test_crosses_antimeridian_handles_all_polygon_cases": (
|
|
114
|
+
"simple crosses_antimeridian misses >180-degree encodings and 3D coords"
|
|
115
|
+
),
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
# The exact set of node names (``item.name``, including any ``[param]`` suffix)
|
|
119
|
+
# in the simple suite that the naive implementation is expected to fail.
|
|
120
|
+
_SIMPLE_EXPECTED_FAILURES: frozenset[str] = frozenset({
|
|
121
|
+
"test_reproject_point_normalizes_wrapped_longitude_fixture",
|
|
122
|
+
"test_reproject_point_handles_all_point_cases[vector-point-epsg4326-dateline-longitude-wrapping-reprojection]",
|
|
123
|
+
"test_point_in_polygon_excludes_boundary_point",
|
|
124
|
+
"test_get_bbox_classic_antimeridian_polygon_uses_minimal_span",
|
|
125
|
+
"test_get_bbox_handles_all_polygon_cases[vector-polygon-epsg4326-antimeridian-dateline]",
|
|
126
|
+
"test_buffer_in_meters_keeps_dateline_polygon_valid",
|
|
127
|
+
"test_buffer_in_meters_handles_all_polygon_cases[vector-polygon-epsg32633-rasterization-utm]",
|
|
128
|
+
"test_buffer_in_meters_handles_all_polygon_cases[vector-polygon-epsg4326-antimeridian-dateline-2]",
|
|
129
|
+
"test_get_utm_epsg_handles_svalbard_special_zone",
|
|
130
|
+
"test_get_utm_epsg_handles_all_utm_polygon_cases",
|
|
131
|
+
"test_area_m2_rejects_invalid_self_intersection",
|
|
132
|
+
"test_area_m2_handles_all_polygon_cases[vector-polygon-epsg32633-rasterization-utm]",
|
|
133
|
+
"test_area_m2_handles_all_polygon_cases[vector-polygon-epsg4326-invalid-self-intersection-topology]",
|
|
134
|
+
"test_area_m2_handles_all_polygon_cases[vector-polygon-epsg4326-invalid-repair-spike]",
|
|
135
|
+
"test_dissolve_polygons_repairs_invalid_inputs_before_union",
|
|
136
|
+
"test_dissolve_polygons_handles_all_polygon_cases[vector-polygon-epsg4326-invalid-self-intersection-topology]",
|
|
137
|
+
"test_dissolve_polygons_handles_all_polygon_cases[vector-polygon-epsg4326-invalid-repair-spike]",
|
|
138
|
+
"test_clip_raster_accepts_wgs84_bbox_for_projected_raster",
|
|
139
|
+
"test_pixel_to_world_returns_pixel_center_coordinates",
|
|
140
|
+
"test_rasters_aligned_accepts_shifted_raster_on_same_pixel_lattice",
|
|
141
|
+
"test_reproject_geometry_handles_all_polygon_cases[vector-polygon-epsg4326-antimeridian-dateline-2]",
|
|
142
|
+
"test_reproject_geometry_normalizes_dateline_case_longitudes",
|
|
143
|
+
"test_find_intersections_reports_metric_area",
|
|
144
|
+
"test_validate_polygon_geometry_accepts_repairable_invalid_polygon",
|
|
145
|
+
"test_validate_polygon_geometry_handles_all_polygon_cases[vector-polygon-epsg32633-rasterization-utm]",
|
|
146
|
+
"test_sample_raster_at_lonlat_masks_nodata_pixel",
|
|
147
|
+
"test_cluster_points_keeps_dateline_chain_connected",
|
|
148
|
+
"test_cluster_points_handles_all_point_cases[vector-point-epsg3857-epsg3857-valid-web-mercator]",
|
|
149
|
+
"test_cluster_points_handles_all_point_cases[vector-point-epsg4326-clustering-dateline-transitive-connectivity]",
|
|
150
|
+
"test_fix_geometry_returns_polygonal_output_for_spike_case",
|
|
151
|
+
"test_rasterize_geometries_burns_pixels_for_geocase_polygon",
|
|
152
|
+
"test_rasterize_geometries_handles_all_rasterization_polygon_cases",
|
|
153
|
+
"test_crosses_antimeridian_matches_case_expectation[_dateline_polygon_geometry-True]",
|
|
154
|
+
"test_crosses_antimeridian_handles_all_polygon_cases[vector-polygon-epsg32633-rasterization-utm]",
|
|
155
|
+
"test_crosses_antimeridian_handles_all_polygon_cases[vector-polygon-epsg4326-antimeridian-dateline-2]",
|
|
156
|
+
"test_crosses_antimeridian_handles_all_polygon_cases[vector-polygon-epsg4326-attributes-format-limitation-format-specific]",
|
|
157
|
+
})
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def pytest_collection_modifyitems(config, items): # noqa: ARG001
|
|
161
|
+
"""Mark the known simple-implementation deficiencies as strict xfails."""
|
|
162
|
+
import pytest
|
|
163
|
+
|
|
164
|
+
for item in items:
|
|
165
|
+
if item.fspath.basename != _SIMPLE_SUITE_FILENAME:
|
|
166
|
+
continue
|
|
167
|
+
if item.name not in _SIMPLE_EXPECTED_FAILURES:
|
|
168
|
+
continue
|
|
169
|
+
reason = _SIMPLE_LIMITATION_REASONS.get(item.originalname)
|
|
170
|
+
if reason is None:
|
|
171
|
+
continue
|
|
172
|
+
item.add_marker(pytest.mark.xfail(reason=reason, strict=True))
|