diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index ac4facf..b9765a1 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -23,7 +23,7 @@ jobs:
       matrix:
         os: ["ubuntu-latest"]
         # Bookend python versions
-        python-version: ["3.9", "3.11"]
+        python-version: ["3.9", "3.12"]
     steps:
       - uses: actions/checkout@v4
         with:
diff --git a/.github/workflows/linting.yaml b/.github/workflows/linting.yaml
index 6c2b3d6..e5a3b70 100644
--- a/.github/workflows/linting.yaml
+++ b/.github/workflows/linting.yaml
@@ -23,7 +23,7 @@ jobs:
       matrix:
         os: ["ubuntu-latest"]
         # Bookend python versions
-        python-version: ["3.11"]
+        python-version: ["3.12"]
     steps:
       - uses: actions/checkout@v4
         with:
diff --git a/.github/workflows/upstream-dev-ci.yaml b/.github/workflows/upstream-dev-ci.yaml
index 0841085..2f11651 100644
--- a/.github/workflows/upstream-dev-ci.yaml
+++ b/.github/workflows/upstream-dev-ci.yaml
@@ -33,7 +33,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        python-version: ["3.11"]
+        python-version: ["3.12"]
     steps:
       - uses: actions/checkout@v4
         with:
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 5bcd1f9..39baca4 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -26,12 +26,15 @@ Breaking Changes
 Enhancements
 ~~~~~~~~~~~~
 
+- Add python 3.12 to list of supported versions (:pull:`494`).
+
 New regions
 ~~~~~~~~~~~
 
 Bug Fixes
 ~~~~~~~~~
 
+- Ensure correct masks are created for `float32` coordinates (:issue:`489`, :pull:`493`).
 - Fixed the default value of ``overlap`` of :py:func:`from_geopandas` to ``None`` (:issue:`453`, :pull:`470`).
 
 Docs
diff --git a/ci/requirements/docs.yml b/ci/requirements/docs.yml
index af14e8e..40d3cea 100644
--- a/ci/requirements/docs.yml
+++ b/ci/requirements/docs.yml
@@ -5,7 +5,7 @@ channels:
   - nodefaults
 
 dependencies:
-  - python=3.11
+  - python=3.12
 # regionmask dependencies
   - cartopy
   - geopandas
diff --git a/regionmask/core/mask.py b/regionmask/core/mask.py
index cf1f85e..eba2571 100644
--- a/regionmask/core/mask.py
+++ b/regionmask/core/mask.py
@@ -204,8 +204,8 @@ def _mask(
                 "be converted to degree?"
             )
 
-    lon_arr = np.asarray(lon)
-    lat_arr = np.asarray(lat)
+    lon_arr = np.asarray(lon, dtype=float)
+    lat_arr = np.asarray(lat, dtype=float)
 
     # automatically detect whether wrapping is necessary
     if wrap_lon is None:
diff --git a/setup.cfg b/setup.cfg
index 32ae80f..acdf717 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -17,6 +17,7 @@ classifiers =
     Programming Language :: Python :: 3.9
     Programming Language :: Python :: 3.10
     Programming Language :: Python :: 3.11
+    Programming Language :: Python :: 3.12
     Topic :: Scientific/Engineering
     Topic :: Scientific/Engineering :: Atmospheric Science
     Topic :: Scientific/Engineering :: GIS

diff --git a/regionmask/tests/test_mask.py b/regionmask/tests/test_mask.py
index 8996f0e..b279a1c 100644
--- a/regionmask/tests/test_mask.py
+++ b/regionmask/tests/test_mask.py
@@ -964,12 +964,29 @@ def test_mask_whole_grid(method, regions, lon):
     mask = regions.mask(lon, lat, method=method)
 
     assert (mask == 0).all()
+    assert mask.lon.dtype == int
+    assert mask.lat.dtype == int
 
     # with wrap_lon=False the edges are not masked
     mask = regions.mask(lon, lat, method=method, wrap_lon=False)
     assert mask.sel(lat=-90).isnull().all()
 
 
+@pytest.mark.parametrize("method", MASK_METHODS)
+@pytest.mark.parametrize("regions", [r_GLOB_180, r_GLOB_360])
+@pytest.mark.parametrize("lon", [lon180, lon360])
+def test_mask_whole_grid_float32(method, regions, lon):
+
+    lat = np.arange(90, -91, -10, dtype=np.float32)
+    lon = lon.astype(np.float32)  # creates a copy
+    mask = regions.mask(lon, lat, method=method)
+
+    assert (mask == 0).all()
+
+    assert mask.lon.dtype == np.float32
+    assert mask.lat.dtype == np.float32
+
+
 @pytest.mark.parametrize("regions", [r_GLOB_180, r_GLOB_360])
 @pytest.mark.parametrize("lon", [lon180, lon360])
 def test_mask_whole_grid_nan_lon(regions, lon):

test on python 3.12
All dependencies are ready and the tests pass. So it should just be a matter of updating everything that is needed.
regionmask/tests/test_mask.py::test_mask_whole_grid_float32[lon0-regions0-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid_float32[lon0-regions0-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid_float32[lon0-regions1-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid_float32[lon0-regions1-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid_float32[lon1-regions0-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid_float32[lon1-regions0-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid_float32[lon1-regions1-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid_float32[lon1-regions1-shapely]
regionmask/tests/test_mask.py::test_mask_func[_mask_rasterize] regionmask/tests/test_mask.py::test_mask_func[_mask_shapely] regionmask/tests/test_mask.py::test_mask_func[_mask_shapely_v2] regionmask/tests/test_mask.py::test_mask_wrong_number_fill[_mask_rasterize] regionmask/tests/test_mask.py::test_mask_wrong_number_fill[_mask_shapely] regionmask/tests/test_mask.py::test_mask_wrong_number_fill[_mask_shapely_v2] regionmask/tests/test_mask.py::test_mask[rasterize] regionmask/tests/test_mask.py::test_mask[shapely] regionmask/tests/test_mask.py::test_mask_method_internal[rasterize] regionmask/tests/test_mask.py::test_mask_method_internal[shapely] regionmask/tests/test_mask.py::test_missing_pygeos_error regionmask/tests/test_mask.py::test_mask_xr_keep_name[rasterize] regionmask/tests/test_mask.py::test_mask_xr_keep_name[shapely] regionmask/tests/test_mask.py::test_mask_poly_z_value[rasterize] regionmask/tests/test_mask.py::test_mask_poly_z_value[shapely] regionmask/tests/test_mask.py::test_mask_xarray_name[rasterize] regionmask/tests/test_mask.py::test_mask_xarray_name[shapely] regionmask/tests/test_mask.py::test_mask_unequal_ndim[ndims0] regionmask/tests/test_mask.py::test_mask_unequal_ndim[ndims1] regionmask/tests/test_mask.py::test_mask_unequal_2D_shapes regionmask/tests/test_mask.py::test_mask_ndim_ne_1_2[0] regionmask/tests/test_mask.py::test_mask_ndim_ne_1_2[3] regionmask/tests/test_mask.py::test_mask_ndim_ne_1_2[4] regionmask/tests/test_mask.py::test_mask_obj[rasterize-lat-lon] regionmask/tests/test_mask.py::test_mask_obj[rasterize-lat-longitude] regionmask/tests/test_mask.py::test_mask_obj[rasterize-latitude-lon] regionmask/tests/test_mask.py::test_mask_obj[rasterize-latitude-longitude] regionmask/tests/test_mask.py::test_mask_obj[shapely-lat-lon] regionmask/tests/test_mask.py::test_mask_obj[shapely-lat-longitude] regionmask/tests/test_mask.py::test_mask_obj[shapely-latitude-lon] regionmask/tests/test_mask.py::test_mask_obj[shapely-latitude-longitude] regionmask/tests/test_mask.py::test_mask_wrap[rasterize] regionmask/tests/test_mask.py::test_mask_wrap[shapely] regionmask/tests/test_mask.py::test_wrap_lon_no_error_wrap_lon_false[mask] regionmask/tests/test_mask.py::test_wrap_lon_no_error_wrap_lon_false[mask_3D] regionmask/tests/test_mask.py::test_wrap_lon_error_wrap_lon[mask] regionmask/tests/test_mask.py::test_wrap_lon_error_wrap_lon[mask_3D] regionmask/tests/test_mask.py::test_mask_autowrap[lon0-extent0-rasterize] regionmask/tests/test_mask.py::test_mask_autowrap[lon0-extent0-shapely] regionmask/tests/test_mask.py::test_mask_autowrap[lon1-extent1-rasterize] regionmask/tests/test_mask.py::test_mask_autowrap[lon1-extent1-shapely] regionmask/tests/test_mask.py::test_mask_autowrap[lon2-extent2-rasterize] regionmask/tests/test_mask.py::test_mask_autowrap[lon2-extent2-shapely] regionmask/tests/test_mask.py::test_mask_autowrap[lon3-extent3-rasterize] regionmask/tests/test_mask.py::test_mask_autowrap[lon3-extent3-shapely] regionmask/tests/test_mask.py::test_mask_wrong_method regionmask/tests/test_mask.py::test_mask_2D_overlap_error[rasterize] regionmask/tests/test_mask.py::test_mask_2D_overlap_error[shapely] regionmask/tests/test_mask.py::test_mask_2D_overlap_false[rasterize] regionmask/tests/test_mask.py::test_mask_2D_overlap_false[shapely] regionmask/tests/test_mask.py::test_mask_2D_overlap_none[rasterize] regionmask/tests/test_mask.py::test_mask_2D_overlap_none[shapely] regionmask/tests/test_mask.py::test_mask_2D_overlap_default[rasterize] regionmask/tests/test_mask.py::test_mask_2D_overlap_default[shapely] regionmask/tests/test_mask.py::test_mask_3D_overlap[rasterize-True] regionmask/tests/test_mask.py::test_mask_3D_overlap[rasterize-False] regionmask/tests/test_mask.py::test_mask_3D_overlap[shapely-True] regionmask/tests/test_mask.py::test_mask_3D_overlap[shapely-False] regionmask/tests/test_mask.py::test_mask_3D_overlap_one[rasterize-True] regionmask/tests/test_mask.py::test_mask_3D_overlap_one[rasterize-False] regionmask/tests/test_mask.py::test_mask_3D_overlap_one[shapely-True] regionmask/tests/test_mask.py::test_mask_3D_overlap_one[shapely-False] regionmask/tests/test_mask.py::test_mask_3D_overlap_more_than_64[rasterize-None] regionmask/tests/test_mask.py::test_mask_3D_overlap_more_than_64[rasterize-True] regionmask/tests/test_mask.py::test_mask_3D_overlap_more_than_64[rasterize-False] regionmask/tests/test_mask.py::test_mask_3D_overlap_more_than_64[shapely-None] regionmask/tests/test_mask.py::test_mask_3D_overlap_more_than_64[shapely-True] regionmask/tests/test_mask.py::test_mask_3D_overlap_more_than_64[shapely-False] regionmask/tests/test_mask.py::test_mask_3D_overlap_default[rasterize-True] regionmask/tests/test_mask.py::test_mask_3D_overlap_default[rasterize-False] regionmask/tests/test_mask.py::test_mask_3D_overlap_default[shapely-True] regionmask/tests/test_mask.py::test_mask_3D_overlap_default[shapely-False] regionmask/tests/test_mask.py::test_mask_3D_overlap_empty[rasterize] regionmask/tests/test_mask.py::test_mask_3D_overlap_empty[shapely] regionmask/tests/test_mask.py::test_mask_overlap_unstructured[shapely-True] regionmask/tests/test_mask.py::test_mask_overlap_unstructured[shapely-False] regionmask/tests/test_mask.py::test_mask_flag regionmask/tests/test_mask.py::test_mask_flag_space regionmask/tests/test_mask.py::test_mask_flag_only_found regionmask/tests/test_mask.py::test_mask_2D[shapely] regionmask/tests/test_mask.py::test_mask_rasterize_irregular[lat0-lon0] regionmask/tests/test_mask.py::test_mask_rasterize_irregular[lat0-lon1] regionmask/tests/test_mask.py::test_mask_rasterize_irregular[lat0-0] regionmask/tests/test_mask.py::test_mask_rasterize_irregular[lat1-lon0] regionmask/tests/test_mask.py::test_mask_rasterize_irregular[lat1-lon1] regionmask/tests/test_mask.py::test_mask_rasterize_irregular[lat1-0] regionmask/tests/test_mask.py::test_mask_rasterize_irregular[0-lon0] regionmask/tests/test_mask.py::test_mask_rasterize_irregular[0-lon1] regionmask/tests/test_mask.py::test_mask_rasterize_irregular[0-0] regionmask/tests/test_mask.py::test_mask_xarray_in_out_2D[shapely] regionmask/tests/test_mask.py::test_transform_from_latlon[1-0-1-0] regionmask/tests/test_mask.py::test_transform_from_latlon[1-0-1-1] regionmask/tests/test_mask.py::test_transform_from_latlon[1-0-1--5] regionmask/tests/test_mask.py::test_transform_from_latlon[1-0-2-0] regionmask/tests/test_mask.py::test_transform_from_latlon[1-0-2-1] regionmask/tests/test_mask.py::test_transform_from_latlon[1-0-2--5] regionmask/tests/test_mask.py::test_transform_from_latlon[1-1-1-0] regionmask/tests/test_mask.py::test_transform_from_latlon[1-1-1-1] regionmask/tests/test_mask.py::test_transform_from_latlon[1-1-1--5] regionmask/tests/test_mask.py::test_transform_from_latlon[1-1-2-0] regionmask/tests/test_mask.py::test_transform_from_latlon[1-1-2-1] regionmask/tests/test_mask.py::test_transform_from_latlon[1-1-2--5] regionmask/tests/test_mask.py::test_transform_from_latlon[1--5-1-0] regionmask/tests/test_mask.py::test_transform_from_latlon[1--5-1-1] regionmask/tests/test_mask.py::test_transform_from_latlon[1--5-1--5] regionmask/tests/test_mask.py::test_transform_from_latlon[1--5-2-0] regionmask/tests/test_mask.py::test_transform_from_latlon[1--5-2-1] regionmask/tests/test_mask.py::test_transform_from_latlon[1--5-2--5] regionmask/tests/test_mask.py::test_transform_from_latlon[2-0-1-0] regionmask/tests/test_mask.py::test_transform_from_latlon[2-0-1-1] regionmask/tests/test_mask.py::test_transform_from_latlon[2-0-1--5] regionmask/tests/test_mask.py::test_transform_from_latlon[2-0-2-0] regionmask/tests/test_mask.py::test_transform_from_latlon[2-0-2-1] regionmask/tests/test_mask.py::test_transform_from_latlon[2-0-2--5] regionmask/tests/test_mask.py::test_transform_from_latlon[2-1-1-0] regionmask/tests/test_mask.py::test_transform_from_latlon[2-1-1-1] regionmask/tests/test_mask.py::test_transform_from_latlon[2-1-1--5] regionmask/tests/test_mask.py::test_transform_from_latlon[2-1-2-0] regionmask/tests/test_mask.py::test_transform_from_latlon[2-1-2-1] regionmask/tests/test_mask.py::test_transform_from_latlon[2-1-2--5] regionmask/tests/test_mask.py::test_transform_from_latlon[2--5-1-0] regionmask/tests/test_mask.py::test_transform_from_latlon[2--5-1-1] regionmask/tests/test_mask.py::test_transform_from_latlon[2--5-1--5] regionmask/tests/test_mask.py::test_transform_from_latlon[2--5-2-0] regionmask/tests/test_mask.py::test_transform_from_latlon[2--5-2-1] regionmask/tests/test_mask.py::test_transform_from_latlon[2--5-2--5] regionmask/tests/test_mask.py::test_rasterize[nan-0-1] regionmask/tests/test_mask.py::test_rasterize[nan-4-5] regionmask/tests/test_mask.py::test_rasterize[3-0-1] regionmask/tests/test_mask.py::test_rasterize[3-4-5] regionmask/tests/test_mask.py::test_mask_empty[rasterize] regionmask/tests/test_mask.py::test_mask_empty[shapely] regionmask/tests/test_mask.py::test_mask_unstructured[shapely] regionmask/tests/test_mask.py::test_mask_3D[rasterize-True] regionmask/tests/test_mask.py::test_mask_3D[rasterize-False] regionmask/tests/test_mask.py::test_mask_3D[shapely-True] regionmask/tests/test_mask.py::test_mask_3D[shapely-False] regionmask/tests/test_mask.py::test_mask_3D_empty[rasterize] regionmask/tests/test_mask.py::test_mask_3D_empty[shapely] regionmask/tests/test_mask.py::test_mask_3D_obj[rasterize-True-lat-lon] regionmask/tests/test_mask.py::test_mask_3D_obj[rasterize-True-lat-longitude] regionmask/tests/test_mask.py::test_mask_3D_obj[rasterize-True-latitude-lon] regionmask/tests/test_mask.py::test_mask_3D_obj[rasterize-True-latitude-longitude] regionmask/tests/test_mask.py::test_mask_3D_obj[rasterize-False-lat-lon] regionmask/tests/test_mask.py::test_mask_3D_obj[rasterize-False-lat-longitude] regionmask/tests/test_mask.py::test_mask_3D_obj[rasterize-False-latitude-lon] regionmask/tests/test_mask.py::test_mask_3D_obj[rasterize-False-latitude-longitude] regionmask/tests/test_mask.py::test_mask_3D_obj[shapely-True-lat-lon] regionmask/tests/test_mask.py::test_mask_3D_obj[shapely-True-lat-longitude] regionmask/tests/test_mask.py::test_mask_3D_obj[shapely-True-latitude-lon] regionmask/tests/test_mask.py::test_mask_3D_obj[shapely-True-latitude-longitude] regionmask/tests/test_mask.py::test_mask_3D_obj[shapely-False-lat-lon] regionmask/tests/test_mask.py::test_mask_3D_obj[shapely-False-lat-longitude] regionmask/tests/test_mask.py::test_mask_3D_obj[shapely-False-latitude-lon] regionmask/tests/test_mask.py::test_mask_3D_obj[shapely-False-latitude-longitude] regionmask/tests/test_mask.py::test_mask_warn_radian[mask] regionmask/tests/test_mask.py::test_mask_warn_radian[mask_3D] regionmask/tests/test_mask.py::test_mask_edge[ds_US0-False-regions0-rasterize] regionmask/tests/test_mask.py::test_mask_edge[ds_US0-False-regions0-shapely] regionmask/tests/test_mask.py::test_mask_edge[ds_US0-False-regions1-rasterize] regionmask/tests/test_mask.py::test_mask_edge[ds_US0-False-regions1-shapely] regionmask/tests/test_mask.py::test_mask_edge[ds_US0-False-regions2-rasterize] regionmask/tests/test_mask.py::test_mask_edge[ds_US0-False-regions2-shapely] regionmask/tests/test_mask.py::test_mask_edge[ds_US0-False-regions3-rasterize] regionmask/tests/test_mask.py::test_mask_edge[ds_US0-False-regions3-shapely] regionmask/tests/test_mask.py::test_mask_edge[ds_US1-True-regions0-rasterize] regionmask/tests/test_mask.py::test_mask_edge[ds_US1-True-regions0-shapely] regionmask/tests/test_mask.py::test_mask_edge[ds_US1-True-regions1-rasterize] regionmask/tests/test_mask.py::test_mask_edge[ds_US1-True-regions1-shapely] regionmask/tests/test_mask.py::test_mask_edge[ds_US1-True-regions2-rasterize] regionmask/tests/test_mask.py::test_mask_edge[ds_US1-True-regions2-shapely] regionmask/tests/test_mask.py::test_mask_edge[ds_US1-True-regions3-rasterize] regionmask/tests/test_mask.py::test_mask_edge[ds_US1-True-regions3-shapely] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US0-False-regions0-rasterize] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US0-False-regions0-shapely] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US0-False-regions1-rasterize] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US0-False-regions1-shapely] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US0-False-regions2-rasterize] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US0-False-regions2-shapely] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US0-False-regions3-rasterize] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US0-False-regions3-shapely] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US1-True-regions0-rasterize] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US1-True-regions0-shapely] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US1-True-regions1-rasterize] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US1-True-regions1-shapely] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US1-True-regions2-rasterize] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US1-True-regions2-shapely] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US1-True-regions3-rasterize] regionmask/tests/test_mask.py::test_mask_interior_and_edge[ds_US1-True-regions3-shapely] regionmask/tests/test_mask.py::test_deg45_rasterize_shapely_equal[regions0] regionmask/tests/test_mask.py::test_deg45_rasterize_shapely_equal[regions1] regionmask/tests/test_mask.py::test_deg45_rasterize_offset_equal[regions0] regionmask/tests/test_mask.py::test_deg45_rasterize_offset_equal[regions1] regionmask/tests/test_mask.py::test_rasterize_on_split_lon[regions_1800-ds_3600] regionmask/tests/test_mask.py::test_rasterize_on_split_lon[regions_1800-ds_3601] regionmask/tests/test_mask.py::test_rasterize_on_split_lon[regions_1801-ds_3600] regionmask/tests/test_mask.py::test_rasterize_on_split_lon[regions_1801-ds_3601] regionmask/tests/test_mask.py::test_rasterize_on_split_lon_asymmetric regionmask/tests/test_mask.py::test_determine_method[lat0-0-lon0-0] regionmask/tests/test_mask.py::test_determine_method[lat0-0-lon1-0] regionmask/tests/test_mask.py::test_determine_method[lat0-0-lon2-1] regionmask/tests/test_mask.py::test_determine_method[lat0-0-lon3-2] regionmask/tests/test_mask.py::test_determine_method[lat0-0-lon4-3] regionmask/tests/test_mask.py::test_determine_method[lat0-0-lon5-3] regionmask/tests/test_mask.py::test_determine_method[lat0-0-lon6-3] regionmask/tests/test_mask.py::test_determine_method[lat1-0-lon0-0] regionmask/tests/test_mask.py::test_determine_method[lat1-0-lon1-0] regionmask/tests/test_mask.py::test_determine_method[lat1-0-lon2-1] regionmask/tests/test_mask.py::test_determine_method[lat1-0-lon3-2] regionmask/tests/test_mask.py::test_determine_method[lat1-0-lon4-3] regionmask/tests/test_mask.py::test_determine_method[lat1-0-lon5-3] regionmask/tests/test_mask.py::test_determine_method[lat1-0-lon6-3] regionmask/tests/test_mask.py::test_determine_method[lat2-3-lon0-0] regionmask/tests/test_mask.py::test_determine_method[lat2-3-lon1-0] regionmask/tests/test_mask.py::test_determine_method[lat2-3-lon2-1] regionmask/tests/test_mask.py::test_determine_method[lat2-3-lon3-2] regionmask/tests/test_mask.py::test_determine_method[lat2-3-lon4-3] regionmask/tests/test_mask.py::test_determine_method[lat2-3-lon5-3] regionmask/tests/test_mask.py::test_determine_method[lat2-3-lon6-3] regionmask/tests/test_mask.py::test_determine_method[lat3-3-lon0-0] regionmask/tests/test_mask.py::test_determine_method[lat3-3-lon1-0] regionmask/tests/test_mask.py::test_determine_method[lat3-3-lon2-1] regionmask/tests/test_mask.py::test_determine_method[lat3-3-lon3-2] regionmask/tests/test_mask.py::test_determine_method[lat3-3-lon4-3] regionmask/tests/test_mask.py::test_determine_method[lat3-3-lon5-3] regionmask/tests/test_mask.py::test_determine_method[lat3-3-lon6-3] regionmask/tests/test_mask.py::test_determine_method[lat4-3-lon0-0] regionmask/tests/test_mask.py::test_determine_method[lat4-3-lon1-0] regionmask/tests/test_mask.py::test_determine_method[lat4-3-lon2-1] regionmask/tests/test_mask.py::test_determine_method[lat4-3-lon3-2] regionmask/tests/test_mask.py::test_determine_method[lat4-3-lon4-3] regionmask/tests/test_mask.py::test_determine_method[lat4-3-lon5-3] regionmask/tests/test_mask.py::test_determine_method[lat4-3-lon6-3] regionmask/tests/test_mask.py::test_mask_whole_grid[lon0-regions0-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid[lon0-regions0-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid[lon0-regions1-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid[lon0-regions1-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid[lon1-regions0-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid[lon1-regions0-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid[lon1-regions1-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid[lon1-regions1-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid_nan_lon[lon0-regions0] regionmask/tests/test_mask.py::test_mask_whole_grid_nan_lon[lon0-regions1] regionmask/tests/test_mask.py::test_mask_whole_grid_nan_lon[lon1-regions0] regionmask/tests/test_mask.py::test_mask_whole_grid_nan_lon[lon1-regions1] regionmask/tests/test_mask.py::test_mask_whole_grid_unusual_lon[regions0-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid_unusual_lon[regions0-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid_unusual_lon[regions1-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid_unusual_lon[regions1-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid_overlap[lon0-outline0-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid_overlap[lon0-outline0-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid_overlap[lon0-outline1-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid_overlap[lon0-outline1-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid_overlap[lon1-outline0-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid_overlap[lon1-outline0-shapely] regionmask/tests/test_mask.py::test_mask_whole_grid_overlap[lon1-outline1-rasterize] regionmask/tests/test_mask.py::test_mask_whole_grid_overlap[lon1-outline1-shapely] regionmask/tests/test_mask.py::test_inject_mask_docstring