diff --git a/Makefile b/Makefile
index e2a65aa..c57faf7 100644
--- a/Makefile
+++ b/Makefile
@@ -32,7 +32,7 @@ coverage:
 	rm -r $(TESTDIR)
 
 pep8:
-	flake8 $(PROJECT) setup.py
+	flake8 $(PROJECT) setup.py examples
 
 lint:
 	pylint $(PROJECT) setup.py
diff --git a/examples/scipygridder.py b/examples/scipygridder.py
new file mode 100644
index 0000000..4531d15
--- /dev/null
+++ b/examples/scipygridder.py
@@ -0,0 +1,84 @@
+"""
+Gridding with Scipy
+===================
+
+Scipy offers a range of interpolation methods in :mod:`scipy.interpolate` and 3
+specifically for 2D data (linear, nearest neighbors, and bicubic). Verde offers
+an interface for these 3 scipy interpolators in :class:`verde.ScipyGridder`.
+
+All of these interpolations work on Cartesian data, so if we want to grid
+geographic data (like our Baja California bathymetry) we need to project them
+into a Cartesian system. We'll use
+`pyproj <https://github.com/jswhit/pyproj>`__ to calculate a Mercator
+projection for the data.
+
+For convenience, Verde still allows us to make geographic grids by passing the
+``projection`` argument to :meth:`verde.ScipyGridder.grid` and the like. When
+doing so, the grid will be generated using geographic coordinates which will be
+projected prior to interpolation.
+"""
+import matplotlib.pyplot as plt
+import cartopy.crs as ccrs
+import cartopy.feature as cfeature
+import pyproj
+import numpy as np
+import verde as vd
+
+# We'll test this on the Baja California shipborne bathymetry data
+data = vd.datasets.fetch_baja_bathymetry()
+
+# Before gridding, we need to decimate the data to avoid aliasing because of
+# the oversampling along the ship tracks. We'll use a blocked median with 5
+# arc-minute blocks.
+spacing = 5/60
+lon, lat, bathymetry = vd.block_reduce(data.longitude, data.latitude,
+                                       data.bathymetry_m, reduction=np.median,
+                                       spacing=spacing)
+
+# Project the data using pyproj so that we can use it as input for the gridder.
+# We'll set the latitude of true scale to the mean latitude of the data.
+projection = pyproj.Proj(proj='merc', lat_ts=data.latitude.mean())
+easting, northing = projection(lon, lat)
+
+# Now we can set up a gridder for the decimated data
+grd = vd.ScipyGridder(method='cubic').fit(easting, northing, bathymetry)
+print("Gridder used:", grd)
+
+# Get the grid region in geographic coordinates
+region = vd.get_region(data.longitude, data.latitude)
+print("Data region:", region)
+
+# The 'grid' method can still make a geographic grid if we pass in a projection
+# function that converts lon, lat into the easting, northing coordinates that
+# we used in 'fit'. This can be any function that takes lon, lat and returns x,
+# y. In our case, it'll be the 'projection' variable that we created above.
+# We'll also set the names of the grid dimensions and the name the data
+# variable in our grid (the default would be 'scalars', which isn't very
+# informative).
+grid = grd.grid(region=region, spacing=spacing, projection=projection,
+                dims=['latitude', 'longitude'], data_names=['bathymetry_m'])
+print("Generated geographic grid:")
+print(grid)
+
+# Cartopy requires setting the coordinate reference system (CRS) of the
+# original data through the transform argument. Their docs say to use
+# PlateCarree to represent geographic data.
+crs = ccrs.PlateCarree()
+
+plt.figure(figsize=(7, 6))
+# Make a Mercator map of our gridded bathymetry
+ax = plt.axes(projection=ccrs.Mercator())
+ax.set_title("Gridded Bathymetry Using Scipy", pad=25)
+# Plot the gridded bathymetry
+pc = ax.pcolormesh(grid.longitude, grid.latitude, grid.bathymetry_m,
+                   transform=crs, vmax=0)
+cb = plt.colorbar(pc, pad=0.08)
+cb.set_label('bathymetry [m]')
+# Plot the locations of the decimated data
+ax.plot(lon, lat, '.k', markersize=0.5, transform=crs)
+# Plot the land as a solid color
+ax.add_feature(cfeature.LAND, edgecolor='black', zorder=2)
+ax.set_extent(region, crs=crs)
+ax.gridlines(draw_labels=True)
+plt.tight_layout()
+plt.show()
diff --git a/verde/__init__.py b/verde/__init__.py
index 6c4e8f6..505fb9c 100644
--- a/verde/__init__.py
+++ b/verde/__init__.py
@@ -5,7 +5,7 @@ from ._version import get_versions as _get_versions
 
 # Import functions/classes to make the API
 from .utils import scatter_points, grid_coordinates, profile_coordinates, \
-    block_reduce, block_region, inside
+    block_reduce, block_region, inside, get_region
 from . import datasets
 from .scipy_bridge import ScipyGridder
 
diff --git a/verde/base/gridder.py b/verde/base/gridder.py
index 58b7ad1..5789398 100644
--- a/verde/base/gridder.py
+++ b/verde/base/gridder.py
@@ -212,7 +212,7 @@ class BaseGridder(BaseEstimator):
         raise NotImplementedError()
 
     def grid(self, region=None, shape=None, spacing=None, adjust='spacing',
-             dims=None, data_names=None):
+             dims=None, data_names=None, projection=None):
         """
         Interpolate the data onto a regular grid.
 
@@ -278,7 +278,10 @@ class BaseGridder(BaseEstimator):
         region = get_region(self, region)
         easting, northing = grid_coordinates(region, shape=shape,
                                              spacing=spacing, adjust=adjust)
-        data = check_data(self.predict(easting, northing))
+        if projection is None:
+            data = check_data(self.predict(easting, northing))
+        else:
+            data = check_data(self.predict(*projection(easting, northing)))
         coords = {dims[1]: easting[0, :], dims[0]: northing[:, 0]}
         attrs = {'metadata': 'Generated by {}'.format(repr(self))}
         data_vars = {name: (dims, value, attrs)
@@ -286,7 +289,7 @@ class BaseGridder(BaseEstimator):
         return xr.Dataset(data_vars, coords=coords, attrs=attrs)
 
     def scatter(self, region=None, size=300, random_state=0, dims=None,
-                data_names=None):
+                data_names=None, projection=None):
         """
         Interpolate values onto a random scatter of points.
 
@@ -331,17 +334,16 @@ class BaseGridder(BaseEstimator):
         data_names = get_data_names(self, data_names)
         region = get_region(self, region)
         east, north = scatter_points(region, size, random_state)
-        data = check_data(self.predict(east, north))
-        column_names = [dim for dim in dims]
-        column_names.extend(data_names)
-        columns = [north, east]
-        columns.extend(data)
-        table = pd.DataFrame(
-            {name: value for name, value in zip(column_names, columns)},
-            columns=column_names)
-        return table
-
-    def profile(self, point1, point2, size, dims=None, data_names=None):
+        if projection is None:
+            data = check_data(self.predict(east, north))
+        else:
+            data = check_data(self.predict(*projection(east, north)))
+        columns = [(dims[0], north), (dims[1], east)]
+        columns.extend(zip(data_names, data))
+        return pd.DataFrame(dict(columns), columns=[c[0] for c in columns])
+
+    def profile(self, point1, point2, size, dims=None, data_names=None,
+                projection=None):
         """
         Interpolate data along a profile between two points.
 
@@ -388,13 +390,10 @@ class BaseGridder(BaseEstimator):
         data_names = get_data_names(self, data_names)
         east, north, distances = profile_coordinates(
             point1, point2, size, coordinate_system=coordsys)
-        data = check_data(self.predict(east, north))
-        column_names = [dim for dim in dims]
-        column_names.append('distance')
-        column_names.extend(data_names)
-        columns = [north, east, distances]
-        columns.extend(data)
-        table = pd.DataFrame(
-            {name: value for name, value in zip(column_names, columns)},
-            columns=column_names)
-        return table
+        if projection is None:
+            data = check_data(self.predict(east, north))
+        else:
+            data = check_data(self.predict(*projection(east, north)))
+        columns = [(dims[0], north), (dims[1], east), ('distance', distances)]
+        columns.extend(zip(data_names, data))
+        return pd.DataFrame(dict(columns), columns=[c[0] for c in columns])

Option to project coordinates before gridding
The methods in `BaseGridder` should take an optional `projection(lon, lat) -> east, north` argument to project coordinates before passing them to `predict`. This allows Cartesian gridders to create geographic grids without a lot of work. The grid output should still be in the original coordinates. Can take pyproj projections as well with this interface.
diff --git a/verde/tests/test_base.py b/verde/tests/test_base.py
index 98ed528..d39c4b1 100644
--- a/verde/tests/test_base.py
+++ b/verde/tests/test_base.py
@@ -1,4 +1,4 @@
-# pylint: disable=unused-argument
+# pylint: disable=unused-argument,too-many-locals
 """
 Test the base classes and their utility functions.
 """
@@ -8,7 +8,7 @@ import numpy.testing as npt
 
 from ..base import BaseGridder
 from ..base.gridder import get_dims, get_data_names, get_region
-from .. import grid_coordinates
+from .. import grid_coordinates, scatter_points
 
 
 def test_get_dims():
@@ -95,46 +95,89 @@ def test_get_region():
     assert get_region(grd, region=(1, 2, 3, 4)) == (1, 2, 3, 4)
 
 
-def test_basegridder():
-    "Test basic functionality of BaseGridder"
+class PolyGridder(BaseGridder):
+    "A test gridder"
 
-    with pytest.raises(NotImplementedError):
-        BaseGridder().predict(None, None)
+    def __init__(self, degree=1):
+        self.degree = degree
 
-    class TestGridder(BaseGridder):
-        "A test gridder"
+    def fit(self, easting, northing, data):
+        "Fit an easting polynomial"
+        ndata = data.size
+        nparams = self.degree + 1
+        jac = np.zeros((ndata, nparams))
+        for j in range(nparams):
+            jac[:, j] = easting.ravel()**j
+        self.coefs_ = np.linalg.solve(jac.T.dot(jac), jac.T.dot(data.ravel()))
+        return self
 
-        def __init__(self, constant=0):
-            self.constant = constant
+    def predict(self, easting, northing):
+        "Predict the data"
+        return np.sum(cof*easting**deg for deg, cof in enumerate(self.coefs_))
 
-        def fit(self, easting, northing, data):
-            "Get the data mean"
-            self.mean_ = data.mean()
-            return self
 
-        def predict(self, easting, northing):
-            "Predict the data mean"
-            return np.ones_like(easting)*self.mean_ + self.constant
+def test_basegridder():
+    "Test basic functionality of BaseGridder"
 
-    grd = TestGridder()
-    assert repr(grd) == 'TestGridder(constant=0)'
-    grd.constant = 1000
-    assert repr(grd) == 'TestGridder(constant=1000)'
+    with pytest.raises(NotImplementedError):
+        BaseGridder().predict(None, None)
+
+    grd = PolyGridder()
+    assert repr(grd) == 'PolyGridder(degree=1)'
+    grd.degree = 2
+    assert repr(grd) == 'PolyGridder(degree=2)'
 
     region = (0, 10, -10, -5)
     shape = (50, 30)
-    east, north = grid_coordinates(region, shape)
-    data = np.ones_like(east)
-    grd = TestGridder().fit(east, north, data)
+    angular, linear = 2, 100
+    east, north = scatter_points(region, 1000, random_state=0)
+    data = angular*east + linear
+    grd = PolyGridder().fit(east, north, data)
 
     with pytest.raises(ValueError):
-        # A region should be given because it hasn't been assigned by
-        # TestGridder
+        # A region should be given because it hasn't been assigned
         grd.grid()
 
+    east_true, north_true = grid_coordinates(region, shape)
+    data_true = angular*east_true + linear
     grid = grd.grid(region, shape)
-    npt.assert_allclose(grid.scalars.values, data)
-    npt.assert_allclose(grid.easting.values, east[0, :])
-    npt.assert_allclose(grid.northing.values, north[:, 0])
-    npt.assert_allclose(grd.scatter(region, 100).scalars, 1)
-    npt.assert_allclose(grd.profile((0, 100), (20, 10), 100).scalars, 1)
+
+    npt.assert_allclose(grd.coefs_, [linear, angular])
+    npt.assert_allclose(grid.scalars.values, data_true)
+    npt.assert_allclose(grid.easting.values, east_true[0, :])
+    npt.assert_allclose(grid.northing.values, north_true[:, 0])
+    npt.assert_allclose(grd.scatter(region, 1000, random_state=0).scalars,
+                        data)
+    npt.assert_allclose(grd.profile((0, 0), (10, 0), 30).scalars,
+                        angular*east_true[0, :] + linear)
+
+
+def test_basegridder_projection():
+    "Test basic functionality of BaseGridder when passing in a projection"
+
+    region = (0, 10, -10, -5)
+    shape = (50, 30)
+    angular, linear = 2, 100
+    east, north = scatter_points(region, 1000, random_state=0)
+    data = angular*east + linear
+    east_true, north_true = grid_coordinates(region, shape)
+    data_true = angular*east_true + linear
+    grd = PolyGridder().fit(east, north, data)
+
+    # Lets say we want to specify the region for a grid using a coordinate
+    # system that is lon/2, lat/2.
+    def proj(lon, lat):
+        "Project from the new coordinates to the original"
+        return (lon*2, lat*2)
+
+    proj_region = [i/2 for i in region]
+    grid = grd.grid(proj_region, shape, projection=proj)
+    scat = grd.scatter(proj_region, 1000, random_state=0, projection=proj)
+    prof = grd.profile((0, 0), (5, 0), 30, projection=proj)
+
+    npt.assert_allclose(grd.coefs_, [linear, angular])
+    npt.assert_allclose(grid.scalars.values, data_true)
+    npt.assert_allclose(grid.easting.values, east_true[0, :]/2)
+    npt.assert_allclose(grid.northing.values, north_true[:, 0]/2)
+    npt.assert_allclose(scat.scalars, data)
+    npt.assert_allclose(prof.scalars, angular*east_true[0, :] + linear)

environment.yml
pip install -e .[dev]
parse_log_pytest
environment.yml
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio pytest
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster @ file:///home/conda/feedstock_root/build_artifacts/alabaster_1673645646525/work
argon2-cffi @ file:///home/conda/feedstock_root/build_artifacts/argon2-cffi_1633990451307/work
astroid @ file:///home/conda/feedstock_root/build_artifacts/astroid_1631641568157/work
async_generator @ file:///home/conda/feedstock_root/build_artifacts/async_generator_1722652753231/work
attrs @ file:///home/conda/feedstock_root/build_artifacts/attrs_1671632566681/work
Babel @ file:///home/conda/feedstock_root/build_artifacts/babel_1667688356751/work
backcall @ file:///home/conda/feedstock_root/build_artifacts/backcall_1592338393461/work
backports.functools-lru-cache @ file:///home/conda/feedstock_root/build_artifacts/backports.functools_lru_cache_1702571698061/work
bleach @ file:///home/conda/feedstock_root/build_artifacts/bleach_1696630167146/work
brotlipy==0.7.0
Cartopy @ file:///home/conda/feedstock_root/build_artifacts/cartopy_1630680837223/work
certifi==2021.5.30
cffi @ file:///home/conda/feedstock_root/build_artifacts/cffi_1625835287197/work
charset-normalizer @ file:///home/conda/feedstock_root/build_artifacts/charset-normalizer_1661170624537/work
cmarkgfm @ file:///home/conda/feedstock_root/build_artifacts/cmarkgfm_1625147428696/work
colorama @ file:///home/conda/feedstock_root/build_artifacts/colorama_1655412516417/work
coverage @ file:///home/conda/feedstock_root/build_artifacts/coverage_1633450575846/work
cryptography @ file:///home/conda/feedstock_root/build_artifacts/cryptography_1634230300355/work
cycler @ file:///home/conda/feedstock_root/build_artifacts/cycler_1635519461629/work
decorator @ file:///home/conda/feedstock_root/build_artifacts/decorator_1641555617451/work
defusedxml @ file:///home/conda/feedstock_root/build_artifacts/defusedxml_1615232257335/work
docutils @ file:///home/conda/feedstock_root/build_artifacts/docutils_1618676244774/work
entrypoints @ file:///home/conda/feedstock_root/build_artifacts/entrypoints_1643888246732/work
execnet==1.9.0
flake8 @ file:///home/conda/feedstock_root/build_artifacts/flake8_1646781084538/work
idna @ file:///home/conda/feedstock_root/build_artifacts/idna_1726459485162/work
imagesize @ file:///home/conda/feedstock_root/build_artifacts/imagesize_1656939531508/work
importlib-metadata @ file:///home/conda/feedstock_root/build_artifacts/importlib-metadata_1630267465156/work
iniconfig @ file:///home/conda/feedstock_root/build_artifacts/iniconfig_1603384189793/work
ipykernel @ file:///home/conda/feedstock_root/build_artifacts/ipykernel_1620912934572/work/dist/ipykernel-5.5.5-py3-none-any.whl
ipython @ file:///home/conda/feedstock_root/build_artifacts/ipython_1609697613279/work
ipython_genutils @ file:///home/conda/feedstock_root/build_artifacts/ipython_genutils_1716278396992/work
ipywidgets @ file:///home/conda/feedstock_root/build_artifacts/ipywidgets_1679421482533/work
isort @ file:///home/conda/feedstock_root/build_artifacts/isort_1636447814597/work
jedi @ file:///home/conda/feedstock_root/build_artifacts/jedi_1605054537831/work
jeepney @ file:///home/conda/feedstock_root/build_artifacts/jeepney_1627546597665/work
Jinja2 @ file:///home/conda/feedstock_root/build_artifacts/jinja2_1636510082894/work
joblib @ file:///home/conda/feedstock_root/build_artifacts/joblib_1663332044897/work
jsonschema @ file:///home/conda/feedstock_root/build_artifacts/jsonschema_1634752161479/work
jupyter @ file:///home/conda/feedstock_root/build_artifacts/jupyter_1696255489086/work
jupyter-client @ file:///home/conda/feedstock_root/build_artifacts/jupyter_client_1642858610849/work
jupyter-console @ file:///home/conda/feedstock_root/build_artifacts/jupyter_console_1676328545892/work
jupyter-core @ file:///home/conda/feedstock_root/build_artifacts/jupyter_core_1631852698933/work
jupyterlab-pygments @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_pygments_1601375948261/work
jupyterlab-widgets @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_widgets_1655961217661/work
keyring @ file:///home/conda/feedstock_root/build_artifacts/keyring_1631478318457/work
kiwisolver @ file:///home/conda/feedstock_root/build_artifacts/kiwisolver_1610099771815/work
lazy-object-proxy @ file:///home/conda/feedstock_root/build_artifacts/lazy-object-proxy_1616506793265/work
MarkupSafe @ file:///home/conda/feedstock_root/build_artifacts/markupsafe_1621455668064/work
matplotlib @ file:///home/conda/feedstock_root/build_artifacts/matplotlib-suite_1611858699142/work
mccabe==0.6.1
mistune @ file:///home/conda/feedstock_root/build_artifacts/mistune_1673904152039/work
more-itertools @ file:///home/conda/feedstock_root/build_artifacts/more-itertools_1690211628840/work
nbclient @ file:///home/conda/feedstock_root/build_artifacts/nbclient_1637327213451/work
nbconvert @ file:///home/conda/feedstock_root/build_artifacts/nbconvert_1605401832871/work
nbformat @ file:///home/conda/feedstock_root/build_artifacts/nbformat_1617383142101/work
nbsphinx @ file:///home/conda/feedstock_root/build_artifacts/nbsphinx_1741075436613/work
nest_asyncio @ file:///home/conda/feedstock_root/build_artifacts/nest-asyncio_1705850609492/work
notebook @ file:///home/conda/feedstock_root/build_artifacts/notebook_1616419146127/work
numpy @ file:///home/conda/feedstock_root/build_artifacts/numpy_1626681920064/work
numpydoc @ file:///home/conda/feedstock_root/build_artifacts/numpydoc_1648619272706/work
olefile @ file:///home/conda/feedstock_root/build_artifacts/olefile_1602866521163/work
packaging @ file:///home/conda/feedstock_root/build_artifacts/packaging_1637239678211/work
pandas==1.1.5
pandocfilters @ file:///home/conda/feedstock_root/build_artifacts/pandocfilters_1631603243851/work
parso @ file:///home/conda/feedstock_root/build_artifacts/parso_1595548966091/work
pexpect @ file:///home/conda/feedstock_root/build_artifacts/pexpect_1667297516076/work
pickleshare @ file:///home/conda/feedstock_root/build_artifacts/pickleshare_1602536217715/work
Pillow @ file:///home/conda/feedstock_root/build_artifacts/pillow_1630696616009/work
pkginfo @ file:///home/conda/feedstock_root/build_artifacts/pkginfo_1673281726124/work
platformdirs @ file:///home/conda/feedstock_root/build_artifacts/platformdirs_1645298319244/work
pluggy @ file:///home/conda/feedstock_root/build_artifacts/pluggy_1631522669284/work
prometheus-client @ file:///home/conda/feedstock_root/build_artifacts/prometheus_client_1689032443210/work
prompt-toolkit @ file:///home/conda/feedstock_root/build_artifacts/prompt-toolkit_1670414775770/work
ptyprocess @ file:///home/conda/feedstock_root/build_artifacts/ptyprocess_1609419310487/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl
py @ file:///home/conda/feedstock_root/build_artifacts/py_1636301881863/work
pycodestyle @ file:///home/conda/feedstock_root/build_artifacts/pycodestyle_1633982426610/work
pycparser @ file:///home/conda/feedstock_root/build_artifacts/pycparser_1636257122734/work
pyflakes @ file:///home/conda/feedstock_root/build_artifacts/pyflakes_1633634815271/work
Pygments @ file:///home/conda/feedstock_root/build_artifacts/pygments_1672682006896/work
pylint @ file:///home/conda/feedstock_root/build_artifacts/pylint_1631892890219/work
pyOpenSSL @ file:///home/conda/feedstock_root/build_artifacts/pyopenssl_1663846997386/work
pyparsing @ file:///home/conda/feedstock_root/build_artifacts/pyparsing_1724616129934/work
PyQt5==5.12.3
PyQt5_sip==4.19.18
PyQtChart==5.12
PyQtWebEngine==5.12.1
pyrsistent @ file:///home/conda/feedstock_root/build_artifacts/pyrsistent_1610146795286/work
pyshp @ file:///home/conda/feedstock_root/build_artifacts/pyshp_1659002966020/work
PySocks @ file:///home/conda/feedstock_root/build_artifacts/pysocks_1610291458349/work
pytest==6.2.5
pytest-asyncio==0.16.0
pytest-cov @ file:///home/conda/feedstock_root/build_artifacts/pytest-cov_1664412836798/work
pytest-mock==3.6.1
pytest-xdist==3.0.2
python-dateutil @ file:///home/conda/feedstock_root/build_artifacts/python-dateutil_1626286286081/work
pytz @ file:///home/conda/feedstock_root/build_artifacts/pytz_1693930252784/work
pyzmq @ file:///home/conda/feedstock_root/build_artifacts/pyzmq_1631793305981/work
qtconsole @ file:///home/conda/feedstock_root/build_artifacts/qtconsole-base_1640876679830/work
QtPy @ file:///home/conda/feedstock_root/build_artifacts/qtpy_1643828301492/work
readme-renderer @ file:///home/conda/feedstock_root/build_artifacts/readme_renderer_1602693010535/work
requests @ file:///home/conda/feedstock_root/build_artifacts/requests_1656534056640/work
requests-toolbelt @ file:///home/conda/feedstock_root/build_artifacts/requests-toolbelt_1682953341151/work
rfc3986 @ file:///home/conda/feedstock_root/build_artifacts/rfc3986_1641825045899/work
scikit-learn @ file:///home/conda/feedstock_root/build_artifacts/scikit-learn_1630910533947/work
scipy @ file:///home/conda/feedstock_root/build_artifacts/scipy_1629411471490/work
SecretStorage @ file:///home/conda/feedstock_root/build_artifacts/secretstorage_1612911548807/work
Send2Trash @ file:///home/conda/feedstock_root/build_artifacts/send2trash_1682601222253/work
Shapely @ file:///home/conda/feedstock_root/build_artifacts/shapely_1628205367507/work
six @ file:///home/conda/feedstock_root/build_artifacts/six_1620240208055/work
snowballstemmer @ file:///home/conda/feedstock_root/build_artifacts/snowballstemmer_1637143057757/work
Sphinx @ file:///home/conda/feedstock_root/build_artifacts/sphinx_1658872348413/work
sphinx-gallery @ file:///home/conda/feedstock_root/build_artifacts/sphinx-gallery_1700542355088/work
sphinx-rtd-theme @ file:///home/conda/feedstock_root/build_artifacts/sphinx_rtd_theme_1701183475238/work
sphinxcontrib-applehelp @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-applehelp_1674487779667/work
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-htmlhelp_1675256494457/work
sphinxcontrib-jquery @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-jquery_1678808969227/work
sphinxcontrib-jsmath @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-jsmath_1691604704163/work
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-serializinghtml_1649380998999/work
terminado @ file:///home/conda/feedstock_root/build_artifacts/terminado_1631128154882/work
testpath @ file:///home/conda/feedstock_root/build_artifacts/testpath_1645693042223/work
threadpoolctl @ file:///home/conda/feedstock_root/build_artifacts/threadpoolctl_1643647933166/work
toml @ file:///home/conda/feedstock_root/build_artifacts/toml_1604308577558/work
tomli @ file:///home/conda/feedstock_root/build_artifacts/tomli_1635181214134/work
tornado @ file:///home/conda/feedstock_root/build_artifacts/tornado_1610094701020/work
tqdm @ file:///home/conda/feedstock_root/build_artifacts/tqdm_1677887202771/work
traitlets @ file:///home/conda/feedstock_root/build_artifacts/traitlets_1631041982274/work
twine @ file:///home/conda/feedstock_root/build_artifacts/twine_1643895093454/work
typed-ast @ file:///home/conda/feedstock_root/build_artifacts/typed-ast_1618337594445/work
typing_extensions @ file:///home/conda/feedstock_root/build_artifacts/typing_extensions_1644850595256/work
urllib3 @ file:///home/conda/feedstock_root/build_artifacts/urllib3_1678635778344/work
-e git+https://github.com/fatiando/verde.git@4eb0999faa1993dd473d30954aacbab4b6a4feb0#egg=verde
wcwidth @ file:///home/conda/feedstock_root/build_artifacts/wcwidth_1699959196938/work
webencodings @ file:///home/conda/feedstock_root/build_artifacts/webencodings_1694681268211/work
widgetsnbextension @ file:///home/conda/feedstock_root/build_artifacts/widgetsnbextension_1655939017940/work
wrapt @ file:///home/conda/feedstock_root/build_artifacts/wrapt_1610094846427/work
xarray @ file:///home/conda/feedstock_root/build_artifacts/xarray_1621474818012/work
zipp @ file:///home/conda/feedstock_root/build_artifacts/zipp_1633302054558/work

name: verde
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - alabaster=0.7.13=pyhd8ed1ab_0
  - alsa-lib=1.2.3.2=h166bdaf_0
  - argon2-cffi=21.1.0=py36h8f6f2f9_0
  - astroid=2.8.0=py36h5fab9bb_0
  - async_generator=1.10=pyhd8ed1ab_1
  - attrs=22.2.0=pyh71513ae_0
  - babel=2.11.0=pyhd8ed1ab_0
  - backcall=0.2.0=pyh9f0ad1d_0
  - backports=1.0=pyhd8ed1ab_4
  - backports.functools_lru_cache=2.0.0=pyhd8ed1ab_0
  - bleach=6.1.0=pyhd8ed1ab_0
  - brotlipy=0.7.0=py36h8f6f2f9_1001
  - c-ares=1.18.1=h7f98852_0
  - ca-certificates=2025.2.25=h06a4308_0
  - cartopy=0.19.0.post1=py36hbcbf2fa_1
  - certifi=2021.5.30=py36h06a4308_0
  - cffi=1.14.6=py36hc120d54_0
  - charset-normalizer=2.1.1=pyhd8ed1ab_0
  - cmarkgfm=0.6.0=py36h8f6f2f9_0
  - colorama=0.4.5=pyhd8ed1ab_0
  - coverage=6.0=py36h8f6f2f9_1
  - cryptography=35.0.0=py36hb60f036_0
  - cycler=0.11.0=pyhd8ed1ab_0
  - dbus=1.13.6=h48d8840_2
  - decorator=5.1.1=pyhd8ed1ab_0
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - docutils=0.17.1=py36h5fab9bb_0
  - entrypoints=0.4=pyhd8ed1ab_0
  - expat=2.4.8=h27087fc_0
  - flake8=4.0.1=pyhd8ed1ab_2
  - fontconfig=2.14.0=h8e229c2_0
  - freetype=2.10.4=h0708190_1
  - geos=3.9.1=h9c3ff4c_2
  - gettext=0.19.8.1=h0b5b191_1005
  - glib=2.68.4=h9c3ff4c_0
  - glib-tools=2.68.4=h9c3ff4c_0
  - gst-plugins-base=1.18.5=hf529b03_0
  - gstreamer=1.18.5=h76c114f_0
  - icu=68.2=h9c3ff4c_0
  - idna=3.10=pyhd8ed1ab_0
  - imagesize=1.4.1=pyhd8ed1ab_0
  - importlib-metadata=4.8.1=py36h5fab9bb_0
  - importlib_metadata=4.8.1=hd8ed1ab_1
  - iniconfig=1.1.1=pyh9f0ad1d_0
  - ipykernel=5.5.5=py36hcb3619a_0
  - ipython=7.16.1=py36he448a4c_2
  - ipython_genutils=0.2.0=pyhd8ed1ab_1
  - ipywidgets=7.7.4=pyhd8ed1ab_0
  - isort=5.10.1=pyhd8ed1ab_0
  - jbig=2.1=h7f98852_2003
  - jedi=0.17.2=py36h5fab9bb_1
  - jeepney=0.7.1=pyhd8ed1ab_0
  - jinja2=3.0.3=pyhd8ed1ab_0
  - joblib=1.2.0=pyhd8ed1ab_0
  - jpeg=9e=h166bdaf_1
  - jsonschema=4.1.2=pyhd8ed1ab_0
  - jupyter=1.0.0=pyhd8ed1ab_10
  - jupyter_client=7.1.2=pyhd8ed1ab_0
  - jupyter_console=6.5.1=pyhd8ed1ab_0
  - jupyter_core=4.8.1=py36h5fab9bb_0
  - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
  - jupyterlab_widgets=1.1.1=pyhd8ed1ab_0
  - keyring=23.2.1=py36h5fab9bb_0
  - keyutils=1.6.1=h166bdaf_0
  - kiwisolver=1.3.1=py36h605e78d_1
  - krb5=1.19.3=h3790be6_0
  - lazy-object-proxy=1.6.0=py36h8f6f2f9_0
  - lcms2=2.12=hddcbb42_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - lerc=2.2.1=h9c3ff4c_0
  - libblas=3.9.0=16_linux64_openblas
  - libcblas=3.9.0=16_linux64_openblas
  - libclang=11.1.0=default_ha53f305_1
  - libcurl=7.79.1=h2574ce0_1
  - libdeflate=1.7=h7f98852_5
  - libedit=3.1.20191231=he28a2e2_2
  - libev=4.33=h516909a_1
  - libevent=2.1.10=h9b69904_4
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgfortran-ng=13.2.0=h69a702a_0
  - libgfortran5=13.2.0=ha4646dd_0
  - libglib=2.68.4=h3e27bee_0
  - libgomp=11.2.0=h1234567_1
  - libiconv=1.17=h166bdaf_0
  - liblapack=3.9.0=16_linux64_openblas
  - libllvm11=11.1.0=hf817b99_2
  - libnghttp2=1.43.0=h812cca2_1
  - libogg=1.3.4=h7f98852_1
  - libopenblas=0.3.21=h043d6bf_0
  - libopus=1.3.1=h7f98852_1
  - libpng=1.6.37=h21135ba_2
  - libpq=13.3=hd57d9b9_0
  - libsodium=1.0.18=h36c2ea0_1
  - libssh2=1.10.0=ha56f1ee_2
  - libstdcxx-ng=11.2.0=h1234567_1
  - libtiff=4.3.0=hf544144_1
  - libuuid=2.32.1=h7f98852_1000
  - libvorbis=1.3.7=h9c3ff4c_0
  - libwebp-base=1.2.2=h7f98852_1
  - libxcb=1.13=h7f98852_1004
  - libxkbcommon=1.0.3=he3ba5ed_0
  - libxml2=2.9.12=h72842e0_0
  - lz4-c=1.9.3=h9c3ff4c_1
  - markupsafe=2.0.1=py36h8f6f2f9_0
  - matplotlib=3.3.4=py36h5fab9bb_0
  - matplotlib-base=3.3.4=py36hd391965_0
  - mccabe=0.6.1=py_1
  - mistune=0.8.4=pyh1a96a4e_1006
  - more-itertools=10.0.0=pyhd8ed1ab_0
  - mysql-common=8.0.25=ha770c72_2
  - mysql-libs=8.0.25=hfa10184_2
  - nbclient=0.5.9=pyhd8ed1ab_0
  - nbconvert=6.0.7=py36h5fab9bb_3
  - nbformat=5.1.3=pyhd8ed1ab_0
  - nbsphinx=0.9.7=pyhd8ed1ab_0
  - ncurses=6.4=h6a678d5_0
  - nest-asyncio=1.6.0=pyhd8ed1ab_0
  - notebook=6.3.0=py36h5fab9bb_0
  - nspr=4.32=h9c3ff4c_1
  - nss=3.69=hb5efdd6_1
  - numpy=1.19.5=py36hfc0c790_2
  - numpydoc=1.2.1=pyhd8ed1ab_0
  - olefile=0.46=pyh9f0ad1d_1
  - openjpeg=2.4.0=hb52868f_1
  - openssl=1.1.1w=h7f8727e_0
  - packaging=21.3=pyhd8ed1ab_0
  - pandas=1.1.5=py36h284efc9_0
  - pandoc=2.19.2=ha770c72_0
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - parso=0.7.1=pyh9f0ad1d_0
  - pcre=8.45=h9c3ff4c_0
  - pexpect=4.8.0=pyh1a96a4e_2
  - pickleshare=0.7.5=py_1003
  - pillow=8.3.2=py36h676a545_0
  - pip=21.3.1=pyhd8ed1ab_0
  - pkginfo=1.9.6=pyhd8ed1ab_0
  - platformdirs=2.5.1=pyhd8ed1ab_0
  - pluggy=1.0.0=py36h5fab9bb_1
  - proj=7.2.0=h277dcde_2
  - prometheus_client=0.17.1=pyhd8ed1ab_0
  - prompt-toolkit=3.0.36=pyha770c72_0
  - prompt_toolkit=3.0.36=hd8ed1ab_0
  - pthread-stubs=0.4=h36c2ea0_1001
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - py=1.11.0=pyh6c4a22f_0
  - pycodestyle=2.8.0=pyhd8ed1ab_0
  - pycparser=2.21=pyhd8ed1ab_0
  - pyflakes=2.4.0=pyhd8ed1ab_0
  - pygments=2.14.0=pyhd8ed1ab_0
  - pylint=2.11.1=pyhd8ed1ab_0
  - pyopenssl=22.0.0=pyhd8ed1ab_1
  - pyparsing=3.1.4=pyhd8ed1ab_0
  - pyqt=5.12.3=py36h5fab9bb_7
  - pyqt-impl=5.12.3=py36h7ec31b9_7
  - pyqt5-sip=4.19.18=py36hc4f0c31_7
  - pyqtchart=5.12=py36h7ec31b9_7
  - pyqtwebengine=5.12.1=py36h7ec31b9_7
  - pyrsistent=0.17.3=py36h8f6f2f9_2
  - pyshp=2.3.1=pyhd8ed1ab_0
  - pysocks=1.7.1=py36h5fab9bb_3
  - pytest=6.2.5=py36h5fab9bb_0
  - pytest-cov=4.0.0=pyhd8ed1ab_0
  - python=3.6.13=h12debd9_1
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python_abi=3.6=2_cp36m
  - pytz=2023.3.post1=pyhd8ed1ab_0
  - pyzmq=22.3.0=py36h7068817_0
  - qt=5.12.9=hda022c4_4
  - qtconsole-base=5.2.2=pyhd8ed1ab_1
  - qtpy=2.0.1=pyhd8ed1ab_0
  - readline=8.2=h5eee18b_0
  - readme_renderer=27.0=pyh9f0ad1d_0
  - requests=2.28.1=pyhd8ed1ab_0
  - requests-toolbelt=1.0.0=pyhd8ed1ab_0
  - rfc3986=2.0.0=pyhd8ed1ab_0
  - scikit-learn=0.24.2=py36hc89565f_1
  - scipy=1.5.3=py36h81d768a_1
  - secretstorage=3.3.1=py36h5fab9bb_0
  - send2trash=1.8.2=pyh41d4057_0
  - setuptools=58.0.4=py36h06a4308_0
  - shapely=1.7.1=py36hff28ebb_5
  - six=1.16.0=pyh6c4a22f_0
  - snowballstemmer=2.2.0=pyhd8ed1ab_0
  - sphinx=5.1.1=pyh6c4a22f_0
  - sphinx-gallery=0.15.0=pyhd8ed1ab_0
  - sphinx_rtd_theme=2.0.0=pyha770c72_0
  - sphinxcontrib-applehelp=1.0.4=pyhd8ed1ab_0
  - sphinxcontrib-devhelp=1.0.2=py_0
  - sphinxcontrib-htmlhelp=2.0.1=pyhd8ed1ab_0
  - sphinxcontrib-jquery=4.1=pyhd8ed1ab_0
  - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_0
  - sphinxcontrib-qthelp=1.0.3=py_0
  - sphinxcontrib-serializinghtml=1.1.5=pyhd8ed1ab_2
  - sqlite=3.45.3=h5eee18b_0
  - terminado=0.12.1=py36h5fab9bb_0
  - testpath=0.6.0=pyhd8ed1ab_0
  - threadpoolctl=3.1.0=pyh8a188c0_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd8ed1ab_0
  - tomli=1.2.2=pyhd8ed1ab_0
  - tornado=6.1=py36h8f6f2f9_1
  - tqdm=4.65.0=pyhd8ed1ab_0
  - traitlets=4.3.3=pyhd8ed1ab_2
  - twine=3.8.0=pyhd8ed1ab_0
  - typed-ast=1.4.3=py36h8f6f2f9_0
  - typing-extensions=4.1.1=hd8ed1ab_0
  - typing_extensions=4.1.1=pyha770c72_0
  - urllib3=1.26.15=pyhd8ed1ab_0
  - wcwidth=0.2.10=pyhd8ed1ab_0
  - webencodings=0.5.1=pyhd8ed1ab_2
  - wheel=0.37.1=pyhd3eb1b0_0
  - widgetsnbextension=3.6.1=pyha770c72_0
  - wrapt=1.12.1=py36h8f6f2f9_3
  - xarray=0.18.2=pyhd8ed1ab_0
  - xorg-libxau=1.0.9=h7f98852_0
  - xorg-libxdmcp=1.1.3=h7f98852_0
  - xz=5.6.4=h5eee18b_1
  - zeromq=4.3.4=h9c3ff4c_1
  - zipp=3.6.0=pyhd8ed1ab_0
  - zlib=1.2.13=h5eee18b_1
  - zstd=1.5.0=ha95c52a_0
  - pip:
      - execnet==1.9.0
      - pytest-asyncio==0.16.0
      - pytest-mock==3.6.1
      - pytest-xdist==3.0.2
prefix: /opt/conda/envs/verde

verde/tests/test_base.py::test_basegridder_projection
verde/tests/test_base.py::test_basegridder
verde/tests/test_base.py::test_get_dims verde/tests/test_base.py::test_get_dims_fails verde/tests/test_base.py::test_get_data_names verde/tests/test_base.py::test_get_data_names_fails verde/tests/test_base.py::test_get_region
Makefile verde/__init__.py examples/scipygridder.py verde/base/gridder.py
Makefile verde/__init__.py examples/scipygridder.py verde/base/gridder.py