Repository: ec-jrc/pyPoseidon (language: python)

Issue:
Remove star imports

Replace `xr.open_rasterio` with `rioxarray`
```
 DeprecationWarning: open_rasterio is Deprecated in favor of rioxarray. For information about transitioning, see: https://corteva.github.io/rioxarray/stable/getting_started/getting_started.html
```


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/conda_only.yml b/.github/workflows/conda_only.yml
index 0200dba8..8723211d 100644
--- a/.github/workflows/conda_only.yml
+++ b/.github/workflows/conda_only.yml
@@ -66,6 +66,7 @@ jobs:
           which python
           which pip
           pip --version
+          pip cache info
 
       - name: "Install pydap"
         run: "pip install 'https://github.com/pydap/pydap/archive/3f6aa190c59e3bbc6c834377a61579b20275ff69.zip'"
diff --git a/.github/workflows/conda_pip.yml b/.github/workflows/conda_pip.yml
index 47b0cacc..a1681e1e 100644
--- a/.github/workflows/conda_pip.yml
+++ b/.github/workflows/conda_pip.yml
@@ -67,6 +67,7 @@ jobs:
           which python
           which pip
           pip --version
+          pip cache info
 
       - name: "Get pip cache dir"
         id: "pip-cache"
diff --git a/Tutorial/BOUNDARY.ipynb b/Tutorial/BOUNDARY.ipynb
index 831aa491..074aab0d 100644
--- a/Tutorial/BOUNDARY.ipynb
+++ b/Tutorial/BOUNDARY.ipynb
@@ -251,7 +251,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "a1 = pb.get_boundaries(geometry=window, coastlines = iGSHHS)"
+    "a1 = pb.Boundary(geometry=window, coastlines = iGSHHS)"
    ]
   },
   {
@@ -292,7 +292,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "a2 = pb.get_boundaries(geometry='global', coastlines = iGSHHS)"
+    "a2 = pb.Boundary(geometry='global', coastlines = iGSHHS)"
    ]
   },
   {
@@ -340,7 +340,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "a3 = pb.get_boundaries(geometry=boundary)"
+    "a3 = pb.Boundary(geometry=boundary)"
    ]
   },
   {
@@ -380,7 +380,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "a4 = pb.get_boundaries(geometry=window, coastlines=iGSHHS, cbuffer = .01)"
+    "a4 = pb.Boundary(geometry=window, coastlines=iGSHHS, cbuffer = .01)"
    ]
   },
   {
diff --git a/Tutorial/DEM.ipynb b/Tutorial/DEM.ipynb
index d8e03035..74bf0ba2 100644
--- a/Tutorial/DEM.ipynb
+++ b/Tutorial/DEM.ipynb
@@ -141,7 +141,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "dem = pdem.dem(url, **geometry)"
+    "dem = pdem.Dem(url, **geometry)"
    ]
   },
   {
@@ -238,7 +238,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "dem = pdem.dem(**geometry, coastlines = ne_i, dem_source='./test/dem.nc')"
+    "dem = pdem.Dem(**geometry, coastlines = ne_i, dem_source='./test/dem.nc')"
    ]
   },
   {
@@ -354,7 +354,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "dem = pdem.dem(**geometry, coastlines = ne_i, dem_source='./test/dem.nc', grid_x = x, grid_y = y)"
+    "dem = pdem.Dem(**geometry, coastlines = ne_i, dem_source='./test/dem.nc', grid_x = x, grid_y = y)"
    ]
   },
   {
@@ -401,7 +401,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "d = pdem.dem(**geometry, coastlines = ne_i, dem_source='./test/dem.nc', grid_x = xp, grid_y = yp) # interpolate on grid"
+    "d = pdem.Dem(**geometry, coastlines = ne_i, dem_source='./test/dem.nc', grid_x = xp, grid_y = yp) # interpolate on grid"
    ]
   },
   {
diff --git a/Tutorial/HINDCAST.ipynb b/Tutorial/HINDCAST.ipynb
index ae7b2e42..6980bbb3 100644
--- a/Tutorial/HINDCAST.ipynb
+++ b/Tutorial/HINDCAST.ipynb
@@ -366,7 +366,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "d = data.get_output(solver='schism', folders=rpaths)"
+    "d = data.get_output(solver_name='schism', folders=rpaths)"
    ]
   },
   {
diff --git a/Tutorial/METEO.ipynb b/Tutorial/METEO.ipynb
index 4a1a5200..c1454e5d 100644
--- a/Tutorial/METEO.ipynb
+++ b/Tutorial/METEO.ipynb
@@ -208,7 +208,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "meteo = pt.meteo(url, **geometry)"
+    "meteo = pt.Meteo(url, **geometry)"
    ]
   },
   {
@@ -276,7 +276,7 @@
    "outputs": [],
    "source": [
     "#get uvp\n",
-    "meteo = pt.meteo(**dic)"
+    "meteo = pt.Meteo(**dic)"
    ]
   },
   {
@@ -315,7 +315,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "meteo_ = pt.meteo(meteo_source=meteo.Dataset)"
+    "meteo_ = pt.Meteo(meteo_source=meteo.Dataset)"
    ]
   },
   {
@@ -340,7 +340,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "meteo_= pt.meteo()"
+    "meteo_= pt.Meteo()"
    ]
   },
   {
diff --git a/dependencies/python_deps.yml b/dependencies/python_deps.yml
index 643a9f73..07414561 100644
--- a/dependencies/python_deps.yml
+++ b/dependencies/python_deps.yml
@@ -23,6 +23,7 @@ dependencies:
   - "python-gmsh"
   - "rasterio"
   - "requests"
+  - "rioxarray"
   - "scipy"
   - "shapely=1.7.1"
   - "tqdm"
diff --git a/locks/conda-Macos-64-p38-mpich-binary.lock b/locks/conda-Macos-64-p38-mpich-binary.lock
index 38cf373e..e0dd2dcb 100644
--- a/locks/conda-Macos-64-p38-mpich-binary.lock
+++ b/locks/conda-Macos-64-p38-mpich-binary.lock
@@ -34,7 +34,7 @@ https://conda.anaconda.org/conda-forge/osx-64/double-conversion-3.1.7-he49afe7_0
 https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h940c156_0.tar.bz2#f47a426ed1340c966f539c42187e3331
 https://conda.anaconda.org/conda-forge/osx-64/expat-2.4.2-he49afe7_0.tar.bz2#f2676d01827827c3ec42b7c1a0e53232
 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29
-https://conda.anaconda.org/conda-forge/osx-64/geos-3.10.1-he49afe7_1.tar.bz2#345f93697ead5d27d1db30afc613c31c
+https://conda.anaconda.org/conda-forge/osx-64/geos-3.10.2-he49afe7_0.tar.bz2#ba73e08947c2300d6eb338415540854a
 https://conda.anaconda.org/conda-forge/osx-64/gettext-0.19.8.1-hd1a6beb_1008.tar.bz2#28c370fc39becf486601d9e491a5e184
 https://conda.anaconda.org/conda-forge/osx-64/glew-2.1.0-h046ec9c_2.tar.bz2#6b753c8c7e4c46a8eb17b6f1781f958a
 https://conda.anaconda.org/conda-forge/osx-64/gmp-6.2.1-h2e338ed_0.tar.bz2#dedc96914428dae572a39e69ee2a392f
diff --git a/locks/conda-Macos-64-p38-mpich-dev.lock b/locks/conda-Macos-64-p38-mpich-dev.lock
index 412ffb19..350c048d 100644
--- a/locks/conda-Macos-64-p38-mpich-dev.lock
+++ b/locks/conda-Macos-64-p38-mpich-dev.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: osx-64
-# input_hash: f2443dd830e2da1f0c7cee5496cd34ec38d6b98edcd45187a6477166532cacea
+# input_hash: 6334a5e8e344e2acafd0134338395c0c0a9b11fba7cd30c393f480acc613304e
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2#37edc4e6304ca87316e160f5ca0bd1b5
 https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.18.1-h0d85af4_0.tar.bz2#00b3e98a61e6430808fe7a2534681f28
@@ -110,7 +110,6 @@ https://conda.anaconda.org/conda-forge/osx-64/python-3.8.12-h17280f6_2_cpython.t
 https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.2.9-he9a4fb4_0.tar.bz2#2fdef59e3c478c430d628c696328aaa8
 https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33
 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b
-https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d
 https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
 https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
@@ -124,6 +123,7 @@ https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.b
 https://conda.anaconda.org/conda-forge/noarch/decorator-4.4.2-py_0.tar.bz2#d2eabb9cabd212e1ec6a9463bd846243
 https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
 https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2
+https://conda.anaconda.org/conda-forge/noarch/executing-0.8.2-pyhd8ed1ab_0.tar.bz2#dcd884e2cf5bcdccdf78f7db35999d62
 https://conda.anaconda.org/conda-forge/noarch/f90nml-1.3.1-pyhd8ed1ab_0.tar.bz2#b4bda9ec19f8e393103e2c3cb1ed2061
 https://conda.anaconda.org/conda-forge/osx-64/ffmpeg-4.4.1-h79e7b16_0.tar.bz2#40f77682a23f105b3f55ed9983cb914a
 https://conda.anaconda.org/conda-forge/noarch/filelock-3.4.2-pyhd8ed1ab_1.tar.bz2#d3f5797d3f9625c64860c93fc4359e64
@@ -132,7 +132,7 @@ https://conda.anaconda.org/conda-forge/noarch/flit-core-3.6.0-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.13.1-h10f422b_1005.tar.bz2#95d7756fee0926aa2b6d111299c173f7
 https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.bz2#188e095f4dc38887bb48b065734b9e8d
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905
 https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.0.2-pyhd8ed1ab_0.tar.bz2#eaff56fe28d1236076aa3bb13c35b434
@@ -154,6 +154,7 @@ https://conda.anaconda.org/conda-forge/noarch/pathspec-0.9.0-pyhd8ed1ab_0.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/platformdirs-2.3.0-pyhd8ed1ab_0.tar.bz2#7bc119135be2a43e1701432399d8c28a
 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.12.0-pyhd8ed1ab_0.tar.bz2#d7b366cccdf2c1e8ebdddbfff7c2ba00
 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
+https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.1-pyhd8ed1ab_1.tar.bz2#2e7e2ccd3adc16f7babfbf8bc7d88da9
 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054
 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.6-pyhd8ed1ab_0.tar.bz2#3087df8c636c5a00e694605c39ce4982
@@ -174,9 +175,10 @@ https://conda.anaconda.org/conda-forge/noarch/traitlets-5.1.1-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72_0.tar.bz2#1fc03816925d3cb7fdab9ab234e7fea7
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
 https://conda.anaconda.org/conda-forge/osx-64/appnope-0.1.2-py38h50d1736_2.tar.bz2#4dea050b3a423d4944c5ae0fc5a00718
+https://conda.anaconda.org/conda-forge/noarch/asttokens-2.0.5-pyhd8ed1ab_0.tar.bz2#74badce16f060701fee55c39332f5253
 https://conda.anaconda.org/conda-forge/osx-64/cairo-1.16.0-he43a7df_1008.tar.bz2#9a7c5be2c238f69157979bd1987bac82
 https://conda.anaconda.org/conda-forge/osx-64/certifi-2021.10.8-py38h50d1736_1.tar.bz2#c45ff53e0b329fe61b3f0cfdd37fa0fa
 https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.0-py38h1a44b6c_0.tar.bz2#3ec046bfb079a655aeba431cc7371ab7
@@ -192,7 +194,7 @@ https://conda.anaconda.org/conda-forge/osx-64/cytoolz-0.11.2-py38h96a0964_1.tar.
 https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.5.1-py38ha048514_0.tar.bz2#620c77c2403845e86d7f9737147e7546
 https://conda.anaconda.org/conda-forge/osx-64/entrypoints-0.3-py38h32f6830_1002.tar.bz2#9c7780ba3fe9fd2c15ea2830705de3a2
 https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.10.6-mpi_mpich_h8c5dddf_1013.tar.bz2#e6eeb92b3b6f650b7a238e6ef20cad8f
-https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.0-py38h50d1736_0.tar.bz2#40f69cc382c9dd34bb1885705f315c9f
+https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.1-py38h50d1736_0.tar.bz2#80b0e2788e699e278805066f821d1fbf
 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.4.0-pyhd8ed1ab_0.tar.bz2#9fb134dbabe7851a9d71411064b2c30d
 https://conda.anaconda.org/conda-forge/osx-64/jedi-0.18.1-py38h50d1736_0.tar.bz2#a8721aee27f36b346a2c7f1854df51a8
 https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-4.9.1-py38h50d1736_1.tar.bz2#de93889b20a6d255c6773e0fa665a32d
@@ -229,7 +231,7 @@ https://conda.anaconda.org/conda-forge/osx-64/pyzmq-22.3.0-py38hd3b92b6_1.tar.bz
 https://conda.anaconda.org/conda-forge/osx-64/qt-5.12.9-h126340a_4.tar.bz2#3fd8d112f817bc29a2ff8f508b815845
 https://conda.anaconda.org/conda-forge/osx-64/rtree-0.9.7-py38hc59ffc2_3.tar.bz2#eedf5027e60f198392c920503172d309
 https://conda.anaconda.org/conda-forge/osx-64/ruamel_yaml-0.15.80-py38h96a0964_1006.tar.bz2#d4056b19d2acbdffbfd2bbf1f97bec51
-https://conda.anaconda.org/conda-forge/osx-64/setuptools-60.5.0-py38h50d1736_0.tar.bz2#8a77557c37881c1904f6c944b8d04bc6
+https://conda.anaconda.org/conda-forge/osx-64/setuptools-59.8.0-py38h50d1736_0.tar.bz2#ebb275cb5c4d908f3e5e2417adeec391
 https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py38h96a0964_2.tar.bz2#b0d3b8b55486dfd64167129b439e3959
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/osx-64/traits-6.3.2-py38h96a0964_0.tar.bz2#bf824fe73a83dbb80d3533e34ed7fb34
@@ -245,16 +247,16 @@ https://conda.anaconda.org/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2#
 https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py38h96a0964_1003.tar.bz2#3346798a1556f3d196147b33bc8c3651
 https://conda.anaconda.org/conda-forge/osx-64/conda-package-handling-1.7.3-py38h96a0964_1.tar.bz2#ada4c57c0b78247ce86591cecaea5669
 https://conda.anaconda.org/conda-forge/osx-64/cryptography-36.0.1-py38h56c4533_0.tar.bz2#bbafd45c458cb59959444aa130845a16
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.28.5-py38h96a0964_0.tar.bz2#528435f3c55af04500b08bae124d08a4
 https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7d96ac2_7.tar.bz2#0ba9918ee4cdb1a33a4738eeae194d44
 https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.6.0-h4fce3c3_4.tar.bz2#e3b8964148f1f8e307956186e4b51575
 https://conda.anaconda.org/conda-forge/noarch/imageio-ffmpeg-0.4.5-pyhd8ed1ab_0.tar.bz2#36261aceb9f073b789f4d3dbba14c5e6
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.4.0-pyhd8ed1ab_0.tar.bz2#17ec41acce882e5db4efdcc4c01ca7e0
-https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.0-pyhd8ed1ab_0.tar.bz2#c1460cc25b6a86d1b66ab6c3c471b791
+https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.1-pyhd8ed1ab_0.tar.bz2#531f22e91137a4812cb0c864b87fa54e
 https://conda.anaconda.org/conda-forge/osx-64/kealib-1.4.14-h31dd65d_2.tar.bz2#a6748170c0d1444fb46a330d2553ca3e
 https://conda.anaconda.org/conda-forge/osx-64/libdap4-3.20.6-h3e144a0_2.tar.bz2#55e0706347eb18f3616808366236bcaa
 https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.7.4-mpi_mpich_h2865646_7.tar.bz2#bd9d0dc2880ed3e2a01215ddecfd202b
@@ -270,6 +272,7 @@ https://conda.anaconda.org/conda-forge/noarch/pygments-2.11.2-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.1.0-py38h5bbac10_3.tar.bz2#b933e3e49baa3678aa55488f027cb648
 https://conda.anaconda.org/conda-forge/osx-64/pyqt-impl-5.12.3-py38hb240fba_8.tar.bz2#50d5cf40357d543e90f5b3b62692ab09
 https://conda.anaconda.org/conda-forge/osx-64/pytest-6.2.5-py38h50d1736_2.tar.bz2#448a272266546d3870bc021dddf25033
+https://conda.anaconda.org/conda-forge/noarch/stack_data-0.1.4-pyhd8ed1ab_0.tar.bz2#e68dcab1b415c3c44be2a51d7d41e921
 https://conda.anaconda.org/conda-forge/osx-64/terminado-0.12.1-py38h50d1736_1.tar.bz2#0fcebde856ffb367b4a9e7c6e3d3ab3c
 https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.16.0-py38h96a0964_2.tar.bz2#b0de664ae6988e010403c52ea24f9285
 https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
@@ -277,7 +280,7 @@ https://conda.anaconda.org/conda-forge/osx-64/bokeh-2.4.2-py38h50d1736_0.tar.bz2
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
 https://conda.anaconda.org/conda-forge/osx-64/cftime-1.5.1.1-py38hbe852b5_1.tar.bz2#685503db069b5c54458ca61576d12f28
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
-https://conda.anaconda.org/conda-forge/osx-64/distributed-2021.12.0-py38h50d1736_0.tar.bz2#81e5258b28930c1eeecdc0ee4f41e608
+https://conda.anaconda.org/conda-forge/osx-64/distributed-2022.1.0-py38h50d1736_0.tar.bz2#d96154eb5780687611af4796811d3129
 https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.21.0-h136bbf5_0.tar.bz2#c7f0b36735c7d8e897c44e8ff8aaabe6
 https://conda.anaconda.org/conda-forge/noarch/imageio-2.13.1-pyhd8ed1ab_0.tar.bz2#6c99c767bbcbf37b62a4b84a8e2b70b1
 https://conda.anaconda.org/conda-forge/osx-64/itk-5.1.2-py38h50d1736_0.tar.bz2#2528c775b64c32f3b6cea6a5edb7c4be
@@ -301,12 +304,12 @@ https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6
 https://conda.anaconda.org/conda-forge/osx-64/vtk-9.0.1-no_osmesa_py38ha4a10eb_106.tar.bz2#279af8c2d31e494c315924ede781a065
 https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee
 https://conda.anaconda.org/conda-forge/osx-64/cartopy-0.19.0.post1-py38h4be4431_1.tar.bz2#4d0917213e2103f6df4ca69cf7c5682e
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-py_4.tar.bz2#32fa3526c15250ccf353f1ce905f50b3
 https://conda.anaconda.org/conda-forge/osx-64/gdal-3.2.1-py38hcd0f73a_7.tar.bz2#fe33f7f29b5f69639f49c1d66118550a
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.5.1-py38h50d1736_0.tar.bz2#822c7695af0025929dcf198b3938c51a
-https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2#21554dd9bbabff27ae87f715fee4d56c
+https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.10-pyhd8ed1ab_1.tar.bz2#000cfe33d6fa746c5a9d1b29a79342a3
 https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.5.6-nompi_py38h2c97785_102.tar.bz2#008c40a64955952c776d314aad0274e9
 https://conda.anaconda.org/conda-forge/noarch/networkx-2.6.3-pyhd8ed1ab_1.tar.bz2#4028eff5a1d3deed58c98774e7aa9891
 https://conda.anaconda.org/conda-forge/osx-64/occt-7.5.3-h23a7684_0.tar.bz2#3eb632d9b05432caa4438a8d04b57d72
@@ -324,15 +327,16 @@ https://conda.anaconda.org/conda-forge/noarch/xarray-0.20.2-pyhd8ed1ab_0.tar.bz2
 https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.9.1-pyhd8ed1ab_1.tar.bz2#55c037a20ba22e5904348c20c9895268
 https://conda.anaconda.org/conda-forge/osx-64/fiona-1.8.18-py38hf4ff7c0_1.tar.bz2#6e6bfb6571dd62fc8c48f418d56edce2
 https://conda.anaconda.org/conda-forge/osx-64/gmsh-4.8.4-h2770bf5_0.tar.bz2#57d6a0b7ad65f23208537c6c455e6aa1
-https://conda.anaconda.org/conda-forge/osx-64/ipython-7.31.0-py38h50d1736_0.tar.bz2#ceb669da5852f572df965a3c311ddb71
+https://conda.anaconda.org/conda-forge/osx-64/ipython-8.0.0-py38h50d1736_0.tar.bz2#e2c6aeaac0474bfe5f9eb8ccf316495c
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/osx-64/nbconvert-6.4.0-py38h50d1736_0.tar.bz2#21ee30876ddd20dad7094e131ab1d472
 https://conda.anaconda.org/conda-forge/noarch/pyface-7.3.0-pyh44b312d_1.tar.bz2#6deb6e9d1bd311a5144039df94d68c4f
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/osx-64/conda-4.11.0-py38h50d1736_0.tar.bz2#a064fc703de18cb7b75928faa3c7e52f
 https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.1-pyhd8ed1ab_0.tar.bz2#52a7f7cc9076e2c8a25e15e19ad42821
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
-https://conda.anaconda.org/conda-forge/osx-64/ipykernel-6.6.1-py38h5fd9f69_0.tar.bz2#c4007467bcf217e73d5bdc25c2ac35b8
+https://conda.anaconda.org/conda-forge/osx-64/ipykernel-6.7.0-py38h5fd9f69_0.tar.bz2#1d5b64efa892a569ca40f8e90f9c694e
 https://conda.anaconda.org/conda-forge/noarch/moviepy-1.0.1-py_0.tar.bz2#26a0b6c145254ea17a44f3a520fccdb1
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
@@ -340,7 +344,7 @@ https://conda.anaconda.org/conda-forge/noarch/traitsui-7.2.0-pyhd8ed1ab_0.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/apptools-5.1.0-pyh44b312d_0.tar.bz2#67f86126bb65837378ddd31caff9f420
 https://conda.anaconda.org/conda-forge/noarch/colorcet-3.0.0-pyhd8ed1ab_0.tar.bz2#a0e9e38c882d910825389de5371c5429
 https://conda.anaconda.org/conda-forge/noarch/conda-lock-0.13.2-pyhd8ed1ab_0.tar.bz2#4fa525b4257e4938eaeb2269fdf33d1f
-https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.0.4-pyhd8ed1ab_0.tar.bz2#2bf87d7493a87de0c0814b0bd499e040
+https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.0.5-pyhd8ed1ab_0.tar.bz2#74c9c60684e578fb92b27df42846b733
 https://conda.anaconda.org/conda-forge/noarch/geopandas-0.10.2-pyhd8ed1ab_1.tar.bz2#0682614964c1319304cfa554cbce90f0
 https://conda.anaconda.org/conda-forge/noarch/notebook-6.4.7-pyha770c72_0.tar.bz2#8bf6e732d753521a06571d1efe8e58f2
 https://conda.anaconda.org/conda-forge/noarch/panel-0.12.6-pyhd8ed1ab_0.tar.bz2#d035684ee51bef1c2b797c280f7713da
@@ -354,5 +358,5 @@ https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.6.5-pyhd8ed1ab_0.tar.
 https://conda.anaconda.org/conda-forge/osx-64/mayavi-4.7.2-py38haf0748e_4.tar.bz2#ce47ac58051dd83780be222f70ca0440
 https://conda.anaconda.org/conda-forge/noarch/geoviews-1.9.3-pyhd8ed1ab_0.tar.bz2#c8a6a006829f9ec22c8b504a5cc07a47
 https://conda.anaconda.org/conda-forge/noarch/ipydatawidgets-4.2.0-pyhd3deb0d_0.tar.bz2#2fa9972333df26f1cedfb659468f1b1e
-https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.5-pyhd8ed1ab_0.tar.bz2#2de1bcc7c5304b61099347a2d28ca317
+https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.6-pyhd8ed1ab_0.tar.bz2#75f80858af1b0fc01f0f6e1e1c4e460e
 https://conda.anaconda.org/conda-forge/osx-64/itkwidgets-0.32.0-py38h32f6830_0.tar.bz2#8f43fef55268f5558281892859ffa231
diff --git a/locks/conda-Macos-64-p38-mpich-no_viz.lock b/locks/conda-Macos-64-p38-mpich-no_viz.lock
index 8ecf1baf..f7b70019 100644
--- a/locks/conda-Macos-64-p38-mpich-no_viz.lock
+++ b/locks/conda-Macos-64-p38-mpich-no_viz.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: osx-64
-# input_hash: 7dc7a71e81716df94252b95fc22b0a1659daec68028320cc80a529fee3e32bcc
+# input_hash: ff212fe60b252da0e8e2d7c77fd69c6011a98238d023574392572eaa0557398a
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2#37edc4e6304ca87316e160f5ca0bd1b5
 https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.18.1-h0d85af4_0.tar.bz2#00b3e98a61e6430808fe7a2534681f28
@@ -111,7 +111,7 @@ https://conda.anaconda.org/conda-forge/noarch/findlibs-0.0.2-pyhd8ed1ab_0.tar.bz
 https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.13.1-h10f422b_1005.tar.bz2#95d7756fee0926aa2b6d111299c173f7
 https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.bz2#188e095f4dc38887bb48b065734b9e8d
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.12-h577c468_0.tar.bz2#abce77b852b73670e85e104746b0ea1b
 https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-12_osx64_openblas.tar.bz2#3d38a706f06849a4b08f8a3f642bec93
 https://conda.anaconda.org/conda-forge/osx-64/libcurl-7.81.0-hf45b732_0.tar.bz2#d0396298c85013ee3b186cb982f9f0dd
@@ -136,7 +136,7 @@ https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#
 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72_0.tar.bz2#1fc03816925d3cb7fdab9ab234e7fea7
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
 https://conda.anaconda.org/conda-forge/osx-64/cairo-1.16.0-he43a7df_1008.tar.bz2#9a7c5be2c238f69157979bd1987bac82
 https://conda.anaconda.org/conda-forge/osx-64/certifi-2021.10.8-py38h50d1736_1.tar.bz2#c45ff53e0b329fe61b3f0cfdd37fa0fa
@@ -149,7 +149,7 @@ https://conda.anaconda.org/conda-forge/noarch/configobj-5.0.6-py_0.tar.bz2#e46ba
 https://conda.anaconda.org/conda-forge/osx-64/curl-7.81.0-hf45b732_0.tar.bz2#11c453fee87eb4bd10ab92c8f5354a82
 https://conda.anaconda.org/conda-forge/osx-64/cytoolz-0.11.2-py38h96a0964_1.tar.bz2#39345a73296f58f6e4af60bcf1e20a0f
 https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.10.6-mpi_mpich_h8c5dddf_1013.tar.bz2#e6eeb92b3b6f650b7a238e6ef20cad8f
-https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.0-py38h50d1736_0.tar.bz2#40f69cc382c9dd34bb1885705f315c9f
+https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.1-py38h50d1736_0.tar.bz2#80b0e2788e699e278805066f821d1fbf
 https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.3.2-py38h12bbefe_1.tar.bz2#91e9cf68d537e46389637490a180a997
 https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-12_osx64_openblas.tar.bz2#0cb9afc4cfdc6e95aa38328fc1befa05
 https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-12_osx64_openblas.tar.bz2#ca35c8b85ced3a53059c7a001518cbae
@@ -171,7 +171,7 @@ https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0
 https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-2.1.0-pyhd8ed1ab_0.tar.bz2#9b3f9639f96de0242e0d96f7862c1bc8
 https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0-py38h96a0964_3.tar.bz2#7b052800b7fd4159459c3c025710fce1
 https://conda.anaconda.org/conda-forge/osx-64/rtree-0.9.7-py38hc59ffc2_3.tar.bz2#eedf5027e60f198392c920503172d309
-https://conda.anaconda.org/conda-forge/osx-64/setuptools-60.5.0-py38h50d1736_0.tar.bz2#8a77557c37881c1904f6c944b8d04bc6
+https://conda.anaconda.org/conda-forge/osx-64/setuptools-59.8.0-py38h50d1736_0.tar.bz2#ebb275cb5c4d908f3e5e2417adeec391
 https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py38h96a0964_2.tar.bz2#b0d3b8b55486dfd64167129b439e3959
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-14.0.0-py38h96a0964_0.tar.bz2#db0be5335e0d3c57b55052e23d0697d3
@@ -179,11 +179,11 @@ https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be2
 https://conda.anaconda.org/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2#4a2104c7b22c222bd0fe03aaef12862c
 https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py38h96a0964_1003.tar.bz2#3346798a1556f3d196147b33bc8c3651
 https://conda.anaconda.org/conda-forge/osx-64/cryptography-36.0.1-py38h56c4533_0.tar.bz2#bbafd45c458cb59959444aa130845a16
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.28.5-py38h96a0964_0.tar.bz2#528435f3c55af04500b08bae124d08a4
 https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7d96ac2_7.tar.bz2#0ba9918ee4cdb1a33a4738eeae194d44
 https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.6.0-h4fce3c3_4.tar.bz2#e3b8964148f1f8e307956186e4b51575
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/osx-64/kealib-1.4.14-h31dd65d_2.tar.bz2#a6748170c0d1444fb46a330d2553ca3e
@@ -200,7 +200,7 @@ https://conda.anaconda.org/conda-forge/osx-64/bokeh-2.4.2-py38h50d1736_0.tar.bz2
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
 https://conda.anaconda.org/conda-forge/osx-64/cftime-1.5.1.1-py38hbe852b5_1.tar.bz2#685503db069b5c54458ca61576d12f28
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
-https://conda.anaconda.org/conda-forge/osx-64/distributed-2021.12.0-py38h50d1736_0.tar.bz2#81e5258b28930c1eeecdc0ee4f41e608
+https://conda.anaconda.org/conda-forge/osx-64/distributed-2022.1.0-py38h50d1736_0.tar.bz2#d96154eb5780687611af4796811d3129
 https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.21.0-h136bbf5_0.tar.bz2#c7f0b36735c7d8e897c44e8ff8aaabe6
 https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.2.1-h62a8350_7.tar.bz2#b80d7281311eed8244aaf1051fcbb59e
 https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.5.1-py38hc7d2367_0.tar.bz2#bad55ca191ceedaf38838f6714352833
@@ -215,7 +215,7 @@ https://conda.anaconda.org/conda-forge/osx-64/shapely-1.7.1-py38h1830c62_5.tar.b
 https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a
 https://conda.anaconda.org/conda-forge/osx-64/vtk-9.0.1-no_osmesa_py38ha4a10eb_106.tar.bz2#279af8c2d31e494c315924ede781a065
 https://conda.anaconda.org/conda-forge/osx-64/cartopy-0.19.0.post1-py38h4be4431_1.tar.bz2#4d0917213e2103f6df4ca69cf7c5682e
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/osx-64/gdal-3.2.1-py38hcd0f73a_7.tar.bz2#fe33f7f29b5f69639f49c1d66118550a
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.5.1-py38h50d1736_0.tar.bz2#822c7695af0025929dcf198b3938c51a
@@ -234,6 +234,7 @@ https://conda.anaconda.org/conda-forge/osx-64/fiona-1.8.18-py38hf4ff7c0_1.tar.bz
 https://conda.anaconda.org/conda-forge/osx-64/gmsh-4.8.4-h2770bf5_0.tar.bz2#57d6a0b7ad65f23208537c6c455e6aa1
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
diff --git a/locks/conda-Macos-64-p38-mpich-viz.lock b/locks/conda-Macos-64-p38-mpich-viz.lock
index bc3ef185..a8eeff17 100644
--- a/locks/conda-Macos-64-p38-mpich-viz.lock
+++ b/locks/conda-Macos-64-p38-mpich-viz.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: osx-64
-# input_hash: 05cc7fdbf4e413d90f2454e991303570b8a4b9fcad8ba93246e42b95f23f7794
+# input_hash: 25ceb2bf049f87a1c6af30aa87bc820e1b4558ef3225c19bd69d018331718663
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2#37edc4e6304ca87316e160f5ca0bd1b5
 https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.18.1-h0d85af4_0.tar.bz2#00b3e98a61e6430808fe7a2534681f28
@@ -110,7 +110,6 @@ https://conda.anaconda.org/conda-forge/osx-64/python-3.8.12-h17280f6_2_cpython.t
 https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.2.9-he9a4fb4_0.tar.bz2#2fdef59e3c478c430d628c696328aaa8
 https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33
 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b
-https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d
 https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
 https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
@@ -119,8 +118,10 @@ https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#b
 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.0.0-pyhd8ed1ab_0.tar.bz2#3a8fc8b627d5fb6af827e126a10a86c6
 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f
 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb
+https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d
 https://conda.anaconda.org/conda-forge/noarch/decorator-4.4.2-py_0.tar.bz2#d2eabb9cabd212e1ec6a9463bd846243
 https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
+https://conda.anaconda.org/conda-forge/noarch/executing-0.8.2-pyhd8ed1ab_0.tar.bz2#dcd884e2cf5bcdccdf78f7db35999d62
 https://conda.anaconda.org/conda-forge/noarch/f90nml-1.3.1-pyhd8ed1ab_0.tar.bz2#b4bda9ec19f8e393103e2c3cb1ed2061
 https://conda.anaconda.org/conda-forge/osx-64/ffmpeg-4.4.1-h79e7b16_0.tar.bz2#40f77682a23f105b3f55ed9983cb914a
 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.0.2-pyhd8ed1ab_0.tar.bz2#c2a60dd9f1210b8ee2037f7d0ec6251a
@@ -128,7 +129,7 @@ https://conda.anaconda.org/conda-forge/noarch/flit-core-3.6.0-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.13.1-h10f422b_1005.tar.bz2#95d7756fee0926aa2b6d111299c173f7
 https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.bz2#188e095f4dc38887bb48b065734b9e8d
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.0.2-pyhd8ed1ab_0.tar.bz2#eaff56fe28d1236076aa3bb13c35b434
 https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.12-h577c468_0.tar.bz2#abce77b852b73670e85e104746b0ea1b
@@ -145,8 +146,11 @@ https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.t
 https://conda.anaconda.org/conda-forge/noarch/param-1.12.0-pyh6c4a22f_0.tar.bz2#fe68d614336ad99a3bede46e0c6ca26b
 https://conda.anaconda.org/conda-forge/osx-64/parmetis-4.0.3-hb7fa8f8_1005.tar.bz2#93c34a9e24211ed262743444fd187f4d
 https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
+https://conda.anaconda.org/conda-forge/noarch/pathspec-0.9.0-pyhd8ed1ab_0.tar.bz2#f93dc0ccbc0a8472624165f6e256c7d1
+https://conda.anaconda.org/conda-forge/noarch/platformdirs-2.3.0-pyhd8ed1ab_0.tar.bz2#7bc119135be2a43e1701432399d8c28a
 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.12.0-pyhd8ed1ab_0.tar.bz2#d7b366cccdf2c1e8ebdddbfff7c2ba00
 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
+https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.1-pyhd8ed1ab_1.tar.bz2#2e7e2ccd3adc16f7babfbf8bc7d88da9
 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.6-pyhd8ed1ab_0.tar.bz2#3087df8c636c5a00e694605c39ce4982
 https://conda.anaconda.org/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2#2d1867b980785eb44b8122184d8b42a6
@@ -159,14 +163,16 @@ https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_
 https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76
 https://conda.anaconda.org/conda-forge/noarch/testpath-0.5.0-pyhd8ed1ab_0.tar.bz2#53b57d6a468bebc7cef1253b177a5e9e
 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.0.0-pyh8a188c0_0.tar.bz2#bc3c2909c20635e854f5e533c436cbad
+https://conda.anaconda.org/conda-forge/noarch/tomli-1.2.2-pyhd8ed1ab_0.tar.bz2#1c8a2f9ea18c267414e244cee668cd00
 https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e
 https://conda.anaconda.org/conda-forge/noarch/traitlets-5.1.1-pyhd8ed1ab_0.tar.bz2#a1bc9765ef9499760e88f568b3a6622c
 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72_0.tar.bz2#1fc03816925d3cb7fdab9ab234e7fea7
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
 https://conda.anaconda.org/conda-forge/osx-64/appnope-0.1.2-py38h50d1736_2.tar.bz2#4dea050b3a423d4944c5ae0fc5a00718
+https://conda.anaconda.org/conda-forge/noarch/asttokens-2.0.5-pyhd8ed1ab_0.tar.bz2#74badce16f060701fee55c39332f5253
 https://conda.anaconda.org/conda-forge/osx-64/cairo-1.16.0-he43a7df_1008.tar.bz2#9a7c5be2c238f69157979bd1987bac82
 https://conda.anaconda.org/conda-forge/osx-64/certifi-2021.10.8-py38h50d1736_1.tar.bz2#c45ff53e0b329fe61b3f0cfdd37fa0fa
 https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.0-py38h1a44b6c_0.tar.bz2#3ec046bfb079a655aeba431cc7371ab7
@@ -180,7 +186,7 @@ https://conda.anaconda.org/conda-forge/osx-64/cytoolz-0.11.2-py38h96a0964_1.tar.
 https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.5.1-py38ha048514_0.tar.bz2#620c77c2403845e86d7f9737147e7546
 https://conda.anaconda.org/conda-forge/osx-64/entrypoints-0.3-py38h32f6830_1002.tar.bz2#9c7780ba3fe9fd2c15ea2830705de3a2
 https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.10.6-mpi_mpich_h8c5dddf_1013.tar.bz2#e6eeb92b3b6f650b7a238e6ef20cad8f
-https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.0-py38h50d1736_0.tar.bz2#40f69cc382c9dd34bb1885705f315c9f
+https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.1-py38h50d1736_0.tar.bz2#80b0e2788e699e278805066f821d1fbf
 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.4.0-pyhd8ed1ab_0.tar.bz2#9fb134dbabe7851a9d71411064b2c30d
 https://conda.anaconda.org/conda-forge/osx-64/jedi-0.18.1-py38h50d1736_0.tar.bz2#a8721aee27f36b346a2c7f1854df51a8
 https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-4.9.1-py38h50d1736_1.tar.bz2#de93889b20a6d255c6773e0fa665a32d
@@ -195,6 +201,7 @@ https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.3-pyhd8ed1ab
 https://conda.anaconda.org/conda-forge/osx-64/mistune-0.8.4-py38h96a0964_1005.tar.bz2#a14d167114e875843dde8171e2f67dac
 https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.3-py38h12bbefe_0.tar.bz2#6e56cd41a55c2a42a691da8ab5a358ff
 https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-py_0.tar.bz2#1073dc92c8f247d94ac14dd79ca0bbec
+https://conda.anaconda.org/conda-forge/osx-64/mypy_extensions-0.4.3-py38h50d1736_4.tar.bz2#dd755ee24e78645ce3d9e09e71feecc0
 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85
 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651
 https://conda.anaconda.org/conda-forge/osx-64/pexpect-4.8.0-py38h32f6830_1.tar.bz2#07ca6ed2e07c8e8fae33a9d08ae245a4
@@ -213,28 +220,30 @@ https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0-py38h96a0964_3.tar.bz2#
 https://conda.anaconda.org/conda-forge/osx-64/pyzmq-22.3.0-py38hd3b92b6_1.tar.bz2#52ded1178ce8903605cf359c2a6d9533
 https://conda.anaconda.org/conda-forge/osx-64/qt-5.12.9-h126340a_4.tar.bz2#3fd8d112f817bc29a2ff8f508b815845
 https://conda.anaconda.org/conda-forge/osx-64/rtree-0.9.7-py38hc59ffc2_3.tar.bz2#eedf5027e60f198392c920503172d309
-https://conda.anaconda.org/conda-forge/osx-64/setuptools-60.5.0-py38h50d1736_0.tar.bz2#8a77557c37881c1904f6c944b8d04bc6
+https://conda.anaconda.org/conda-forge/osx-64/setuptools-59.8.0-py38h50d1736_0.tar.bz2#ebb275cb5c4d908f3e5e2417adeec391
 https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py38h96a0964_2.tar.bz2#b0d3b8b55486dfd64167129b439e3959
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/osx-64/traits-6.3.2-py38h96a0964_0.tar.bz2#bf824fe73a83dbb80d3533e34ed7fb34
 https://conda.anaconda.org/conda-forge/noarch/traittypes-0.2.1-pyh9f0ad1d_2.tar.bz2#7d32ccb5334a6822c28af3e864550618
+https://conda.anaconda.org/conda-forge/osx-64/typed-ast-1.5.1-py38h96a0964_0.tar.bz2#e9c7b8cb966c7369a5991a96818f480a
 https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-14.0.0-py38h96a0964_0.tar.bz2#db0be5335e0d3c57b55052e23d0697d3
 https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3
 https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py38h96a0964_1.tar.bz2#9026162a4fba2f648b55d5da280abbe6
 https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2#c5b3edc62d6309088f4970b3eaaa65a6
+https://conda.anaconda.org/conda-forge/noarch/black-21.12b0-pyhd8ed1ab_0.tar.bz2#a027de51692086f51b9e17735480bebf
 https://conda.anaconda.org/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2#4a2104c7b22c222bd0fe03aaef12862c
 https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py38h96a0964_1003.tar.bz2#3346798a1556f3d196147b33bc8c3651
 https://conda.anaconda.org/conda-forge/osx-64/cryptography-36.0.1-py38h56c4533_0.tar.bz2#bbafd45c458cb59959444aa130845a16
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.28.5-py38h96a0964_0.tar.bz2#528435f3c55af04500b08bae124d08a4
 https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7d96ac2_7.tar.bz2#0ba9918ee4cdb1a33a4738eeae194d44
 https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.6.0-h4fce3c3_4.tar.bz2#e3b8964148f1f8e307956186e4b51575
 https://conda.anaconda.org/conda-forge/noarch/imageio-ffmpeg-0.4.5-pyhd8ed1ab_0.tar.bz2#36261aceb9f073b789f4d3dbba14c5e6
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.4.0-pyhd8ed1ab_0.tar.bz2#17ec41acce882e5db4efdcc4c01ca7e0
-https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.0-pyhd8ed1ab_0.tar.bz2#c1460cc25b6a86d1b66ab6c3c471b791
+https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.1-pyhd8ed1ab_0.tar.bz2#531f22e91137a4812cb0c864b87fa54e
 https://conda.anaconda.org/conda-forge/osx-64/kealib-1.4.14-h31dd65d_2.tar.bz2#a6748170c0d1444fb46a330d2553ca3e
 https://conda.anaconda.org/conda-forge/osx-64/libdap4-3.20.6-h3e144a0_2.tar.bz2#55e0706347eb18f3616808366236bcaa
 https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.7.4-mpi_mpich_h2865646_7.tar.bz2#bd9d0dc2880ed3e2a01215ddecfd202b
@@ -248,6 +257,7 @@ https://conda.anaconda.org/conda-forge/noarch/proglog-0.1.9-py_0.tar.bz2#44097ce
 https://conda.anaconda.org/conda-forge/noarch/pygments-2.11.2-pyhd8ed1ab_0.tar.bz2#caef60540e2239e27bf62569a5015e3b
 https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.1.0-py38h5bbac10_3.tar.bz2#b933e3e49baa3678aa55488f027cb648
 https://conda.anaconda.org/conda-forge/osx-64/pyqt-impl-5.12.3-py38hb240fba_8.tar.bz2#50d5cf40357d543e90f5b3b62692ab09
+https://conda.anaconda.org/conda-forge/noarch/stack_data-0.1.4-pyhd8ed1ab_0.tar.bz2#e68dcab1b415c3c44be2a51d7d41e921
 https://conda.anaconda.org/conda-forge/osx-64/terminado-0.12.1-py38h50d1736_1.tar.bz2#0fcebde856ffb367b4a9e7c6e3d3ab3c
 https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.16.0-py38h96a0964_2.tar.bz2#b0de664ae6988e010403c52ea24f9285
 https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
@@ -255,7 +265,7 @@ https://conda.anaconda.org/conda-forge/osx-64/bokeh-2.4.2-py38h50d1736_0.tar.bz2
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
 https://conda.anaconda.org/conda-forge/osx-64/cftime-1.5.1.1-py38hbe852b5_1.tar.bz2#685503db069b5c54458ca61576d12f28
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
-https://conda.anaconda.org/conda-forge/osx-64/distributed-2021.12.0-py38h50d1736_0.tar.bz2#81e5258b28930c1eeecdc0ee4f41e608
+https://conda.anaconda.org/conda-forge/osx-64/distributed-2022.1.0-py38h50d1736_0.tar.bz2#d96154eb5780687611af4796811d3129
 https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.21.0-h136bbf5_0.tar.bz2#c7f0b36735c7d8e897c44e8ff8aaabe6
 https://conda.anaconda.org/conda-forge/noarch/imageio-2.13.1-pyhd8ed1ab_0.tar.bz2#6c99c767bbcbf37b62a4b84a8e2b70b1
 https://conda.anaconda.org/conda-forge/osx-64/itk-5.1.2-py38h50d1736_0.tar.bz2#2528c775b64c32f3b6cea6a5edb7c4be
@@ -277,12 +287,12 @@ https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6
 https://conda.anaconda.org/conda-forge/osx-64/vtk-9.0.1-no_osmesa_py38ha4a10eb_106.tar.bz2#279af8c2d31e494c315924ede781a065
 https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee
 https://conda.anaconda.org/conda-forge/osx-64/cartopy-0.19.0.post1-py38h4be4431_1.tar.bz2#4d0917213e2103f6df4ca69cf7c5682e
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-py_4.tar.bz2#32fa3526c15250ccf353f1ce905f50b3
 https://conda.anaconda.org/conda-forge/osx-64/gdal-3.2.1-py38hcd0f73a_7.tar.bz2#fe33f7f29b5f69639f49c1d66118550a
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.5.1-py38h50d1736_0.tar.bz2#822c7695af0025929dcf198b3938c51a
-https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2#21554dd9bbabff27ae87f715fee4d56c
+https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.10-pyhd8ed1ab_1.tar.bz2#000cfe33d6fa746c5a9d1b29a79342a3
 https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.5.6-nompi_py38h2c97785_102.tar.bz2#008c40a64955952c776d314aad0274e9
 https://conda.anaconda.org/conda-forge/noarch/networkx-2.6.3-pyhd8ed1ab_1.tar.bz2#4028eff5a1d3deed58c98774e7aa9891
 https://conda.anaconda.org/conda-forge/osx-64/occt-7.5.3-h23a7684_0.tar.bz2#3eb632d9b05432caa4438a8d04b57d72
@@ -299,13 +309,14 @@ https://conda.anaconda.org/conda-forge/noarch/xarray-0.20.2-pyhd8ed1ab_0.tar.bz2
 https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.9.1-pyhd8ed1ab_1.tar.bz2#55c037a20ba22e5904348c20c9895268
 https://conda.anaconda.org/conda-forge/osx-64/fiona-1.8.18-py38hf4ff7c0_1.tar.bz2#6e6bfb6571dd62fc8c48f418d56edce2
 https://conda.anaconda.org/conda-forge/osx-64/gmsh-4.8.4-h2770bf5_0.tar.bz2#57d6a0b7ad65f23208537c6c455e6aa1
-https://conda.anaconda.org/conda-forge/osx-64/ipython-7.31.0-py38h50d1736_0.tar.bz2#ceb669da5852f572df965a3c311ddb71
+https://conda.anaconda.org/conda-forge/osx-64/ipython-8.0.0-py38h50d1736_0.tar.bz2#e2c6aeaac0474bfe5f9eb8ccf316495c
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/osx-64/nbconvert-6.4.0-py38h50d1736_0.tar.bz2#21ee30876ddd20dad7094e131ab1d472
 https://conda.anaconda.org/conda-forge/noarch/pyface-7.3.0-pyh44b312d_1.tar.bz2#6deb6e9d1bd311a5144039df94d68c4f
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
-https://conda.anaconda.org/conda-forge/osx-64/ipykernel-6.6.1-py38h5fd9f69_0.tar.bz2#c4007467bcf217e73d5bdc25c2ac35b8
+https://conda.anaconda.org/conda-forge/osx-64/ipykernel-6.7.0-py38h5fd9f69_0.tar.bz2#1d5b64efa892a569ca40f8e90f9c694e
 https://conda.anaconda.org/conda-forge/noarch/moviepy-1.0.1-py_0.tar.bz2#26a0b6c145254ea17a44f3a520fccdb1
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
@@ -325,5 +336,5 @@ https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.6.5-pyhd8ed1ab_0.tar.
 https://conda.anaconda.org/conda-forge/osx-64/mayavi-4.7.2-py38haf0748e_4.tar.bz2#ce47ac58051dd83780be222f70ca0440
 https://conda.anaconda.org/conda-forge/noarch/geoviews-1.9.3-pyhd8ed1ab_0.tar.bz2#c8a6a006829f9ec22c8b504a5cc07a47
 https://conda.anaconda.org/conda-forge/noarch/ipydatawidgets-4.2.0-pyhd3deb0d_0.tar.bz2#2fa9972333df26f1cedfb659468f1b1e
-https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.5-pyhd8ed1ab_0.tar.bz2#2de1bcc7c5304b61099347a2d28ca317
+https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.6-pyhd8ed1ab_0.tar.bz2#75f80858af1b0fc01f0f6e1e1c4e460e
 https://conda.anaconda.org/conda-forge/osx-64/itkwidgets-0.32.0-py38h32f6830_0.tar.bz2#8f43fef55268f5558281892859ffa231
diff --git a/locks/conda-Macos-64-p38-openmpi-binary.lock b/locks/conda-Macos-64-p38-openmpi-binary.lock
index 0defa44f..36c442b2 100644
--- a/locks/conda-Macos-64-p38-openmpi-binary.lock
+++ b/locks/conda-Macos-64-p38-openmpi-binary.lock
@@ -34,7 +34,7 @@ https://conda.anaconda.org/conda-forge/osx-64/double-conversion-3.1.7-he49afe7_0
 https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h940c156_0.tar.bz2#f47a426ed1340c966f539c42187e3331
 https://conda.anaconda.org/conda-forge/osx-64/expat-2.4.2-he49afe7_0.tar.bz2#f2676d01827827c3ec42b7c1a0e53232
 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29
-https://conda.anaconda.org/conda-forge/osx-64/geos-3.10.1-he49afe7_1.tar.bz2#345f93697ead5d27d1db30afc613c31c
+https://conda.anaconda.org/conda-forge/osx-64/geos-3.10.2-he49afe7_0.tar.bz2#ba73e08947c2300d6eb338415540854a
 https://conda.anaconda.org/conda-forge/osx-64/gettext-0.19.8.1-hd1a6beb_1008.tar.bz2#28c370fc39becf486601d9e491a5e184
 https://conda.anaconda.org/conda-forge/osx-64/glew-2.1.0-h046ec9c_2.tar.bz2#6b753c8c7e4c46a8eb17b6f1781f958a
 https://conda.anaconda.org/conda-forge/osx-64/gmp-6.2.1-h2e338ed_0.tar.bz2#dedc96914428dae572a39e69ee2a392f
diff --git a/locks/conda-Macos-64-p38-openmpi-dev.lock b/locks/conda-Macos-64-p38-openmpi-dev.lock
index 053247e0..2eacd365 100644
--- a/locks/conda-Macos-64-p38-openmpi-dev.lock
+++ b/locks/conda-Macos-64-p38-openmpi-dev.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: osx-64
-# input_hash: b0f17f3d6c9c22e2bfd32a4bcfad56b4477cf36d8ae647e8f6728a2b5282efc1
+# input_hash: b927999e4c7d89f4243ddd10fa4b001ff0e779cc1e7d836c5b8d8f417bd40fe4
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2#37edc4e6304ca87316e160f5ca0bd1b5
 https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.18.1-h0d85af4_0.tar.bz2#00b3e98a61e6430808fe7a2534681f28
@@ -110,7 +110,6 @@ https://conda.anaconda.org/conda-forge/osx-64/python-3.8.12-h17280f6_2_cpython.t
 https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.2.9-he9a4fb4_0.tar.bz2#2fdef59e3c478c430d628c696328aaa8
 https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33
 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b
-https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d
 https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
 https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
@@ -124,6 +123,7 @@ https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.b
 https://conda.anaconda.org/conda-forge/noarch/decorator-4.4.2-py_0.tar.bz2#d2eabb9cabd212e1ec6a9463bd846243
 https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
 https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2
+https://conda.anaconda.org/conda-forge/noarch/executing-0.8.2-pyhd8ed1ab_0.tar.bz2#dcd884e2cf5bcdccdf78f7db35999d62
 https://conda.anaconda.org/conda-forge/noarch/f90nml-1.3.1-pyhd8ed1ab_0.tar.bz2#b4bda9ec19f8e393103e2c3cb1ed2061
 https://conda.anaconda.org/conda-forge/osx-64/ffmpeg-4.4.1-h79e7b16_0.tar.bz2#40f77682a23f105b3f55ed9983cb914a
 https://conda.anaconda.org/conda-forge/noarch/filelock-3.4.2-pyhd8ed1ab_1.tar.bz2#d3f5797d3f9625c64860c93fc4359e64
@@ -132,7 +132,7 @@ https://conda.anaconda.org/conda-forge/noarch/flit-core-3.6.0-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.13.1-h10f422b_1005.tar.bz2#95d7756fee0926aa2b6d111299c173f7
 https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.bz2#188e095f4dc38887bb48b065734b9e8d
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905
 https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.0.2-pyhd8ed1ab_0.tar.bz2#eaff56fe28d1236076aa3bb13c35b434
@@ -154,6 +154,7 @@ https://conda.anaconda.org/conda-forge/noarch/pathspec-0.9.0-pyhd8ed1ab_0.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/platformdirs-2.3.0-pyhd8ed1ab_0.tar.bz2#7bc119135be2a43e1701432399d8c28a
 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.12.0-pyhd8ed1ab_0.tar.bz2#d7b366cccdf2c1e8ebdddbfff7c2ba00
 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
+https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.1-pyhd8ed1ab_1.tar.bz2#2e7e2ccd3adc16f7babfbf8bc7d88da9
 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054
 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.6-pyhd8ed1ab_0.tar.bz2#3087df8c636c5a00e694605c39ce4982
@@ -174,9 +175,10 @@ https://conda.anaconda.org/conda-forge/noarch/traitlets-5.1.1-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72_0.tar.bz2#1fc03816925d3cb7fdab9ab234e7fea7
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
 https://conda.anaconda.org/conda-forge/osx-64/appnope-0.1.2-py38h50d1736_2.tar.bz2#4dea050b3a423d4944c5ae0fc5a00718
+https://conda.anaconda.org/conda-forge/noarch/asttokens-2.0.5-pyhd8ed1ab_0.tar.bz2#74badce16f060701fee55c39332f5253
 https://conda.anaconda.org/conda-forge/osx-64/cairo-1.16.0-he43a7df_1008.tar.bz2#9a7c5be2c238f69157979bd1987bac82
 https://conda.anaconda.org/conda-forge/osx-64/certifi-2021.10.8-py38h50d1736_1.tar.bz2#c45ff53e0b329fe61b3f0cfdd37fa0fa
 https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.0-py38h1a44b6c_0.tar.bz2#3ec046bfb079a655aeba431cc7371ab7
@@ -192,7 +194,7 @@ https://conda.anaconda.org/conda-forge/osx-64/cytoolz-0.11.2-py38h96a0964_1.tar.
 https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.5.1-py38ha048514_0.tar.bz2#620c77c2403845e86d7f9737147e7546
 https://conda.anaconda.org/conda-forge/osx-64/entrypoints-0.3-py38h32f6830_1002.tar.bz2#9c7780ba3fe9fd2c15ea2830705de3a2
 https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.10.6-mpi_openmpi_hf18bdd3_1014.tar.bz2#9141a806dd53704b395f01a348bbdef8
-https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.0-py38h50d1736_0.tar.bz2#40f69cc382c9dd34bb1885705f315c9f
+https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.1-py38h50d1736_0.tar.bz2#80b0e2788e699e278805066f821d1fbf
 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.4.0-pyhd8ed1ab_0.tar.bz2#9fb134dbabe7851a9d71411064b2c30d
 https://conda.anaconda.org/conda-forge/osx-64/jedi-0.18.1-py38h50d1736_0.tar.bz2#a8721aee27f36b346a2c7f1854df51a8
 https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-4.9.1-py38h50d1736_1.tar.bz2#de93889b20a6d255c6773e0fa665a32d
@@ -229,7 +231,7 @@ https://conda.anaconda.org/conda-forge/osx-64/pyzmq-22.3.0-py38hd3b92b6_1.tar.bz
 https://conda.anaconda.org/conda-forge/osx-64/qt-5.12.9-h126340a_4.tar.bz2#3fd8d112f817bc29a2ff8f508b815845
 https://conda.anaconda.org/conda-forge/osx-64/rtree-0.9.7-py38hc59ffc2_3.tar.bz2#eedf5027e60f198392c920503172d309
 https://conda.anaconda.org/conda-forge/osx-64/ruamel_yaml-0.15.80-py38h96a0964_1006.tar.bz2#d4056b19d2acbdffbfd2bbf1f97bec51
-https://conda.anaconda.org/conda-forge/osx-64/setuptools-60.5.0-py38h50d1736_0.tar.bz2#8a77557c37881c1904f6c944b8d04bc6
+https://conda.anaconda.org/conda-forge/osx-64/setuptools-59.8.0-py38h50d1736_0.tar.bz2#ebb275cb5c4d908f3e5e2417adeec391
 https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py38h96a0964_2.tar.bz2#b0d3b8b55486dfd64167129b439e3959
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/osx-64/traits-6.3.2-py38h96a0964_0.tar.bz2#bf824fe73a83dbb80d3533e34ed7fb34
@@ -245,16 +247,16 @@ https://conda.anaconda.org/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2#
 https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py38h96a0964_1003.tar.bz2#3346798a1556f3d196147b33bc8c3651
 https://conda.anaconda.org/conda-forge/osx-64/conda-package-handling-1.7.3-py38h96a0964_1.tar.bz2#ada4c57c0b78247ce86591cecaea5669
 https://conda.anaconda.org/conda-forge/osx-64/cryptography-36.0.1-py38h56c4533_0.tar.bz2#bbafd45c458cb59959444aa130845a16
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.28.5-py38h96a0964_0.tar.bz2#528435f3c55af04500b08bae124d08a4
 https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7d96ac2_7.tar.bz2#0ba9918ee4cdb1a33a4738eeae194d44
 https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.6.0-h4fce3c3_4.tar.bz2#e3b8964148f1f8e307956186e4b51575
 https://conda.anaconda.org/conda-forge/noarch/imageio-ffmpeg-0.4.5-pyhd8ed1ab_0.tar.bz2#36261aceb9f073b789f4d3dbba14c5e6
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.4.0-pyhd8ed1ab_0.tar.bz2#17ec41acce882e5db4efdcc4c01ca7e0
-https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.0-pyhd8ed1ab_0.tar.bz2#c1460cc25b6a86d1b66ab6c3c471b791
+https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.1-pyhd8ed1ab_0.tar.bz2#531f22e91137a4812cb0c864b87fa54e
 https://conda.anaconda.org/conda-forge/osx-64/kealib-1.4.14-h31dd65d_2.tar.bz2#a6748170c0d1444fb46a330d2553ca3e
 https://conda.anaconda.org/conda-forge/osx-64/libdap4-3.20.6-h3e144a0_2.tar.bz2#55e0706347eb18f3616808366236bcaa
 https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.7.4-mpi_openmpi_h9bf59f8_7.tar.bz2#2531ccbba7690d1d03c8361fac3955de
@@ -270,6 +272,7 @@ https://conda.anaconda.org/conda-forge/noarch/pygments-2.11.2-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.1.0-py38h5bbac10_3.tar.bz2#b933e3e49baa3678aa55488f027cb648
 https://conda.anaconda.org/conda-forge/osx-64/pyqt-impl-5.12.3-py38hb240fba_8.tar.bz2#50d5cf40357d543e90f5b3b62692ab09
 https://conda.anaconda.org/conda-forge/osx-64/pytest-6.2.5-py38h50d1736_2.tar.bz2#448a272266546d3870bc021dddf25033
+https://conda.anaconda.org/conda-forge/noarch/stack_data-0.1.4-pyhd8ed1ab_0.tar.bz2#e68dcab1b415c3c44be2a51d7d41e921
 https://conda.anaconda.org/conda-forge/osx-64/terminado-0.12.1-py38h50d1736_1.tar.bz2#0fcebde856ffb367b4a9e7c6e3d3ab3c
 https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.16.0-py38h96a0964_2.tar.bz2#b0de664ae6988e010403c52ea24f9285
 https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
@@ -277,7 +280,7 @@ https://conda.anaconda.org/conda-forge/osx-64/bokeh-2.4.2-py38h50d1736_0.tar.bz2
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
 https://conda.anaconda.org/conda-forge/osx-64/cftime-1.5.1.1-py38hbe852b5_1.tar.bz2#685503db069b5c54458ca61576d12f28
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
-https://conda.anaconda.org/conda-forge/osx-64/distributed-2021.12.0-py38h50d1736_0.tar.bz2#81e5258b28930c1eeecdc0ee4f41e608
+https://conda.anaconda.org/conda-forge/osx-64/distributed-2022.1.0-py38h50d1736_0.tar.bz2#d96154eb5780687611af4796811d3129
 https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.21.0-h136bbf5_0.tar.bz2#c7f0b36735c7d8e897c44e8ff8aaabe6
 https://conda.anaconda.org/conda-forge/noarch/imageio-2.13.1-pyhd8ed1ab_0.tar.bz2#6c99c767bbcbf37b62a4b84a8e2b70b1
 https://conda.anaconda.org/conda-forge/osx-64/itk-5.1.2-py38h50d1736_0.tar.bz2#2528c775b64c32f3b6cea6a5edb7c4be
@@ -301,12 +304,12 @@ https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6
 https://conda.anaconda.org/conda-forge/osx-64/vtk-9.0.1-no_osmesa_py38ha4a10eb_106.tar.bz2#279af8c2d31e494c315924ede781a065
 https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee
 https://conda.anaconda.org/conda-forge/osx-64/cartopy-0.19.0.post1-py38h4be4431_1.tar.bz2#4d0917213e2103f6df4ca69cf7c5682e
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-py_4.tar.bz2#32fa3526c15250ccf353f1ce905f50b3
 https://conda.anaconda.org/conda-forge/osx-64/gdal-3.2.1-py38hcd0f73a_7.tar.bz2#fe33f7f29b5f69639f49c1d66118550a
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.5.1-py38h50d1736_0.tar.bz2#822c7695af0025929dcf198b3938c51a
-https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2#21554dd9bbabff27ae87f715fee4d56c
+https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.10-pyhd8ed1ab_1.tar.bz2#000cfe33d6fa746c5a9d1b29a79342a3
 https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.5.6-nompi_py38h2c97785_102.tar.bz2#008c40a64955952c776d314aad0274e9
 https://conda.anaconda.org/conda-forge/noarch/networkx-2.6.3-pyhd8ed1ab_1.tar.bz2#4028eff5a1d3deed58c98774e7aa9891
 https://conda.anaconda.org/conda-forge/osx-64/occt-7.5.3-h23a7684_0.tar.bz2#3eb632d9b05432caa4438a8d04b57d72
@@ -324,15 +327,16 @@ https://conda.anaconda.org/conda-forge/noarch/xarray-0.20.2-pyhd8ed1ab_0.tar.bz2
 https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.9.1-pyhd8ed1ab_1.tar.bz2#55c037a20ba22e5904348c20c9895268
 https://conda.anaconda.org/conda-forge/osx-64/fiona-1.8.18-py38hf4ff7c0_1.tar.bz2#6e6bfb6571dd62fc8c48f418d56edce2
 https://conda.anaconda.org/conda-forge/osx-64/gmsh-4.8.4-h2770bf5_0.tar.bz2#57d6a0b7ad65f23208537c6c455e6aa1
-https://conda.anaconda.org/conda-forge/osx-64/ipython-7.31.0-py38h50d1736_0.tar.bz2#ceb669da5852f572df965a3c311ddb71
+https://conda.anaconda.org/conda-forge/osx-64/ipython-8.0.0-py38h50d1736_0.tar.bz2#e2c6aeaac0474bfe5f9eb8ccf316495c
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/osx-64/nbconvert-6.4.0-py38h50d1736_0.tar.bz2#21ee30876ddd20dad7094e131ab1d472
 https://conda.anaconda.org/conda-forge/noarch/pyface-7.3.0-pyh44b312d_1.tar.bz2#6deb6e9d1bd311a5144039df94d68c4f
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/osx-64/conda-4.11.0-py38h50d1736_0.tar.bz2#a064fc703de18cb7b75928faa3c7e52f
 https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.1-pyhd8ed1ab_0.tar.bz2#52a7f7cc9076e2c8a25e15e19ad42821
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
-https://conda.anaconda.org/conda-forge/osx-64/ipykernel-6.6.1-py38h5fd9f69_0.tar.bz2#c4007467bcf217e73d5bdc25c2ac35b8
+https://conda.anaconda.org/conda-forge/osx-64/ipykernel-6.7.0-py38h5fd9f69_0.tar.bz2#1d5b64efa892a569ca40f8e90f9c694e
 https://conda.anaconda.org/conda-forge/noarch/moviepy-1.0.1-py_0.tar.bz2#26a0b6c145254ea17a44f3a520fccdb1
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
@@ -340,7 +344,7 @@ https://conda.anaconda.org/conda-forge/noarch/traitsui-7.2.0-pyhd8ed1ab_0.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/apptools-5.1.0-pyh44b312d_0.tar.bz2#67f86126bb65837378ddd31caff9f420
 https://conda.anaconda.org/conda-forge/noarch/colorcet-3.0.0-pyhd8ed1ab_0.tar.bz2#a0e9e38c882d910825389de5371c5429
 https://conda.anaconda.org/conda-forge/noarch/conda-lock-0.13.2-pyhd8ed1ab_0.tar.bz2#4fa525b4257e4938eaeb2269fdf33d1f
-https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.0.4-pyhd8ed1ab_0.tar.bz2#2bf87d7493a87de0c0814b0bd499e040
+https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.0.5-pyhd8ed1ab_0.tar.bz2#74c9c60684e578fb92b27df42846b733
 https://conda.anaconda.org/conda-forge/noarch/geopandas-0.10.2-pyhd8ed1ab_1.tar.bz2#0682614964c1319304cfa554cbce90f0
 https://conda.anaconda.org/conda-forge/noarch/notebook-6.4.7-pyha770c72_0.tar.bz2#8bf6e732d753521a06571d1efe8e58f2
 https://conda.anaconda.org/conda-forge/noarch/panel-0.12.6-pyhd8ed1ab_0.tar.bz2#d035684ee51bef1c2b797c280f7713da
@@ -354,5 +358,5 @@ https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.6.5-pyhd8ed1ab_0.tar.
 https://conda.anaconda.org/conda-forge/osx-64/mayavi-4.7.2-py38haf0748e_4.tar.bz2#ce47ac58051dd83780be222f70ca0440
 https://conda.anaconda.org/conda-forge/noarch/geoviews-1.9.3-pyhd8ed1ab_0.tar.bz2#c8a6a006829f9ec22c8b504a5cc07a47
 https://conda.anaconda.org/conda-forge/noarch/ipydatawidgets-4.2.0-pyhd3deb0d_0.tar.bz2#2fa9972333df26f1cedfb659468f1b1e
-https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.5-pyhd8ed1ab_0.tar.bz2#2de1bcc7c5304b61099347a2d28ca317
+https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.6-pyhd8ed1ab_0.tar.bz2#75f80858af1b0fc01f0f6e1e1c4e460e
 https://conda.anaconda.org/conda-forge/osx-64/itkwidgets-0.32.0-py38h32f6830_0.tar.bz2#8f43fef55268f5558281892859ffa231
diff --git a/locks/conda-Macos-64-p38-openmpi-no_viz.lock b/locks/conda-Macos-64-p38-openmpi-no_viz.lock
index 11a42153..89deb3d6 100644
--- a/locks/conda-Macos-64-p38-openmpi-no_viz.lock
+++ b/locks/conda-Macos-64-p38-openmpi-no_viz.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: osx-64
-# input_hash: 11856e8d8bd0bcc9f2913d21256af4d82f94d8b5995b1bc30de27390bd8d41cc
+# input_hash: 9ea683caacc63fcb4993cb48ac4cce91635d5a58f7b996b777d6bf8c8544755f
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2#37edc4e6304ca87316e160f5ca0bd1b5
 https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.18.1-h0d85af4_0.tar.bz2#00b3e98a61e6430808fe7a2534681f28
@@ -111,7 +111,7 @@ https://conda.anaconda.org/conda-forge/noarch/findlibs-0.0.2-pyhd8ed1ab_0.tar.bz
 https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.13.1-h10f422b_1005.tar.bz2#95d7756fee0926aa2b6d111299c173f7
 https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.bz2#188e095f4dc38887bb48b065734b9e8d
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.12-h577c468_0.tar.bz2#abce77b852b73670e85e104746b0ea1b
 https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-12_osx64_openblas.tar.bz2#3d38a706f06849a4b08f8a3f642bec93
 https://conda.anaconda.org/conda-forge/osx-64/libcurl-7.81.0-hf45b732_0.tar.bz2#d0396298c85013ee3b186cb982f9f0dd
@@ -136,7 +136,7 @@ https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#
 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72_0.tar.bz2#1fc03816925d3cb7fdab9ab234e7fea7
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
 https://conda.anaconda.org/conda-forge/osx-64/cairo-1.16.0-he43a7df_1008.tar.bz2#9a7c5be2c238f69157979bd1987bac82
 https://conda.anaconda.org/conda-forge/osx-64/certifi-2021.10.8-py38h50d1736_1.tar.bz2#c45ff53e0b329fe61b3f0cfdd37fa0fa
@@ -149,7 +149,7 @@ https://conda.anaconda.org/conda-forge/noarch/configobj-5.0.6-py_0.tar.bz2#e46ba
 https://conda.anaconda.org/conda-forge/osx-64/curl-7.81.0-hf45b732_0.tar.bz2#11c453fee87eb4bd10ab92c8f5354a82
 https://conda.anaconda.org/conda-forge/osx-64/cytoolz-0.11.2-py38h96a0964_1.tar.bz2#39345a73296f58f6e4af60bcf1e20a0f
 https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.10.6-mpi_openmpi_hf18bdd3_1014.tar.bz2#9141a806dd53704b395f01a348bbdef8
-https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.0-py38h50d1736_0.tar.bz2#40f69cc382c9dd34bb1885705f315c9f
+https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.1-py38h50d1736_0.tar.bz2#80b0e2788e699e278805066f821d1fbf
 https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.3.2-py38h12bbefe_1.tar.bz2#91e9cf68d537e46389637490a180a997
 https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-12_osx64_openblas.tar.bz2#0cb9afc4cfdc6e95aa38328fc1befa05
 https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-12_osx64_openblas.tar.bz2#ca35c8b85ced3a53059c7a001518cbae
@@ -171,7 +171,7 @@ https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0
 https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-2.1.0-pyhd8ed1ab_0.tar.bz2#9b3f9639f96de0242e0d96f7862c1bc8
 https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0-py38h96a0964_3.tar.bz2#7b052800b7fd4159459c3c025710fce1
 https://conda.anaconda.org/conda-forge/osx-64/rtree-0.9.7-py38hc59ffc2_3.tar.bz2#eedf5027e60f198392c920503172d309
-https://conda.anaconda.org/conda-forge/osx-64/setuptools-60.5.0-py38h50d1736_0.tar.bz2#8a77557c37881c1904f6c944b8d04bc6
+https://conda.anaconda.org/conda-forge/osx-64/setuptools-59.8.0-py38h50d1736_0.tar.bz2#ebb275cb5c4d908f3e5e2417adeec391
 https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py38h96a0964_2.tar.bz2#b0d3b8b55486dfd64167129b439e3959
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-14.0.0-py38h96a0964_0.tar.bz2#db0be5335e0d3c57b55052e23d0697d3
@@ -179,11 +179,11 @@ https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be2
 https://conda.anaconda.org/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2#4a2104c7b22c222bd0fe03aaef12862c
 https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py38h96a0964_1003.tar.bz2#3346798a1556f3d196147b33bc8c3651
 https://conda.anaconda.org/conda-forge/osx-64/cryptography-36.0.1-py38h56c4533_0.tar.bz2#bbafd45c458cb59959444aa130845a16
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.28.5-py38h96a0964_0.tar.bz2#528435f3c55af04500b08bae124d08a4
 https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7d96ac2_7.tar.bz2#0ba9918ee4cdb1a33a4738eeae194d44
 https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.6.0-h4fce3c3_4.tar.bz2#e3b8964148f1f8e307956186e4b51575
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/osx-64/kealib-1.4.14-h31dd65d_2.tar.bz2#a6748170c0d1444fb46a330d2553ca3e
@@ -200,7 +200,7 @@ https://conda.anaconda.org/conda-forge/osx-64/bokeh-2.4.2-py38h50d1736_0.tar.bz2
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
 https://conda.anaconda.org/conda-forge/osx-64/cftime-1.5.1.1-py38hbe852b5_1.tar.bz2#685503db069b5c54458ca61576d12f28
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
-https://conda.anaconda.org/conda-forge/osx-64/distributed-2021.12.0-py38h50d1736_0.tar.bz2#81e5258b28930c1eeecdc0ee4f41e608
+https://conda.anaconda.org/conda-forge/osx-64/distributed-2022.1.0-py38h50d1736_0.tar.bz2#d96154eb5780687611af4796811d3129
 https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.21.0-h136bbf5_0.tar.bz2#c7f0b36735c7d8e897c44e8ff8aaabe6
 https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.2.1-h62a8350_7.tar.bz2#b80d7281311eed8244aaf1051fcbb59e
 https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.5.1-py38hc7d2367_0.tar.bz2#bad55ca191ceedaf38838f6714352833
@@ -215,7 +215,7 @@ https://conda.anaconda.org/conda-forge/osx-64/shapely-1.7.1-py38h1830c62_5.tar.b
 https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a
 https://conda.anaconda.org/conda-forge/osx-64/vtk-9.0.1-no_osmesa_py38ha4a10eb_106.tar.bz2#279af8c2d31e494c315924ede781a065
 https://conda.anaconda.org/conda-forge/osx-64/cartopy-0.19.0.post1-py38h4be4431_1.tar.bz2#4d0917213e2103f6df4ca69cf7c5682e
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/osx-64/gdal-3.2.1-py38hcd0f73a_7.tar.bz2#fe33f7f29b5f69639f49c1d66118550a
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.5.1-py38h50d1736_0.tar.bz2#822c7695af0025929dcf198b3938c51a
@@ -234,6 +234,7 @@ https://conda.anaconda.org/conda-forge/osx-64/fiona-1.8.18-py38hf4ff7c0_1.tar.bz
 https://conda.anaconda.org/conda-forge/osx-64/gmsh-4.8.4-h2770bf5_0.tar.bz2#57d6a0b7ad65f23208537c6c455e6aa1
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
diff --git a/locks/conda-Macos-64-p38-openmpi-viz.lock b/locks/conda-Macos-64-p38-openmpi-viz.lock
index 028ed436..221dc0a2 100644
--- a/locks/conda-Macos-64-p38-openmpi-viz.lock
+++ b/locks/conda-Macos-64-p38-openmpi-viz.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: osx-64
-# input_hash: 75339c77f5a3ae83d4eab8d6844af213b067d552ef13c8e0c284ef1f0769352d
+# input_hash: 698fb83c7e48123ce58efffe7b515ac8b38285333220ca5d1bae50df112ca50f
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2#37edc4e6304ca87316e160f5ca0bd1b5
 https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.18.1-h0d85af4_0.tar.bz2#00b3e98a61e6430808fe7a2534681f28
@@ -110,7 +110,6 @@ https://conda.anaconda.org/conda-forge/osx-64/python-3.8.12-h17280f6_2_cpython.t
 https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.2.9-he9a4fb4_0.tar.bz2#2fdef59e3c478c430d628c696328aaa8
 https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33
 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b
-https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d
 https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
 https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
@@ -119,8 +118,10 @@ https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#b
 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.0.0-pyhd8ed1ab_0.tar.bz2#3a8fc8b627d5fb6af827e126a10a86c6
 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f
 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb
+https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d
 https://conda.anaconda.org/conda-forge/noarch/decorator-4.4.2-py_0.tar.bz2#d2eabb9cabd212e1ec6a9463bd846243
 https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
+https://conda.anaconda.org/conda-forge/noarch/executing-0.8.2-pyhd8ed1ab_0.tar.bz2#dcd884e2cf5bcdccdf78f7db35999d62
 https://conda.anaconda.org/conda-forge/noarch/f90nml-1.3.1-pyhd8ed1ab_0.tar.bz2#b4bda9ec19f8e393103e2c3cb1ed2061
 https://conda.anaconda.org/conda-forge/osx-64/ffmpeg-4.4.1-h79e7b16_0.tar.bz2#40f77682a23f105b3f55ed9983cb914a
 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.0.2-pyhd8ed1ab_0.tar.bz2#c2a60dd9f1210b8ee2037f7d0ec6251a
@@ -128,7 +129,7 @@ https://conda.anaconda.org/conda-forge/noarch/flit-core-3.6.0-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.13.1-h10f422b_1005.tar.bz2#95d7756fee0926aa2b6d111299c173f7
 https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.bz2#188e095f4dc38887bb48b065734b9e8d
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.0.2-pyhd8ed1ab_0.tar.bz2#eaff56fe28d1236076aa3bb13c35b434
 https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.12-h577c468_0.tar.bz2#abce77b852b73670e85e104746b0ea1b
@@ -145,8 +146,11 @@ https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.t
 https://conda.anaconda.org/conda-forge/noarch/param-1.12.0-pyh6c4a22f_0.tar.bz2#fe68d614336ad99a3bede46e0c6ca26b
 https://conda.anaconda.org/conda-forge/osx-64/parmetis-4.0.3-h7eda126_1005.tar.bz2#85ac202630b1ff6eccb4c738ee786911
 https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
+https://conda.anaconda.org/conda-forge/noarch/pathspec-0.9.0-pyhd8ed1ab_0.tar.bz2#f93dc0ccbc0a8472624165f6e256c7d1
+https://conda.anaconda.org/conda-forge/noarch/platformdirs-2.3.0-pyhd8ed1ab_0.tar.bz2#7bc119135be2a43e1701432399d8c28a
 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.12.0-pyhd8ed1ab_0.tar.bz2#d7b366cccdf2c1e8ebdddbfff7c2ba00
 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
+https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.1-pyhd8ed1ab_1.tar.bz2#2e7e2ccd3adc16f7babfbf8bc7d88da9
 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.6-pyhd8ed1ab_0.tar.bz2#3087df8c636c5a00e694605c39ce4982
 https://conda.anaconda.org/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2#2d1867b980785eb44b8122184d8b42a6
@@ -159,14 +163,16 @@ https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_
 https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76
 https://conda.anaconda.org/conda-forge/noarch/testpath-0.5.0-pyhd8ed1ab_0.tar.bz2#53b57d6a468bebc7cef1253b177a5e9e
 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.0.0-pyh8a188c0_0.tar.bz2#bc3c2909c20635e854f5e533c436cbad
+https://conda.anaconda.org/conda-forge/noarch/tomli-1.2.2-pyhd8ed1ab_0.tar.bz2#1c8a2f9ea18c267414e244cee668cd00
 https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e
 https://conda.anaconda.org/conda-forge/noarch/traitlets-5.1.1-pyhd8ed1ab_0.tar.bz2#a1bc9765ef9499760e88f568b3a6622c
 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72_0.tar.bz2#1fc03816925d3cb7fdab9ab234e7fea7
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
 https://conda.anaconda.org/conda-forge/osx-64/appnope-0.1.2-py38h50d1736_2.tar.bz2#4dea050b3a423d4944c5ae0fc5a00718
+https://conda.anaconda.org/conda-forge/noarch/asttokens-2.0.5-pyhd8ed1ab_0.tar.bz2#74badce16f060701fee55c39332f5253
 https://conda.anaconda.org/conda-forge/osx-64/cairo-1.16.0-he43a7df_1008.tar.bz2#9a7c5be2c238f69157979bd1987bac82
 https://conda.anaconda.org/conda-forge/osx-64/certifi-2021.10.8-py38h50d1736_1.tar.bz2#c45ff53e0b329fe61b3f0cfdd37fa0fa
 https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.0-py38h1a44b6c_0.tar.bz2#3ec046bfb079a655aeba431cc7371ab7
@@ -180,7 +186,7 @@ https://conda.anaconda.org/conda-forge/osx-64/cytoolz-0.11.2-py38h96a0964_1.tar.
 https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.5.1-py38ha048514_0.tar.bz2#620c77c2403845e86d7f9737147e7546
 https://conda.anaconda.org/conda-forge/osx-64/entrypoints-0.3-py38h32f6830_1002.tar.bz2#9c7780ba3fe9fd2c15ea2830705de3a2
 https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.10.6-mpi_openmpi_hf18bdd3_1014.tar.bz2#9141a806dd53704b395f01a348bbdef8
-https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.0-py38h50d1736_0.tar.bz2#40f69cc382c9dd34bb1885705f315c9f
+https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.10.1-py38h50d1736_0.tar.bz2#80b0e2788e699e278805066f821d1fbf
 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.4.0-pyhd8ed1ab_0.tar.bz2#9fb134dbabe7851a9d71411064b2c30d
 https://conda.anaconda.org/conda-forge/osx-64/jedi-0.18.1-py38h50d1736_0.tar.bz2#a8721aee27f36b346a2c7f1854df51a8
 https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-4.9.1-py38h50d1736_1.tar.bz2#de93889b20a6d255c6773e0fa665a32d
@@ -195,6 +201,7 @@ https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.3-pyhd8ed1ab
 https://conda.anaconda.org/conda-forge/osx-64/mistune-0.8.4-py38h96a0964_1005.tar.bz2#a14d167114e875843dde8171e2f67dac
 https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.3-py38h12bbefe_0.tar.bz2#6e56cd41a55c2a42a691da8ab5a358ff
 https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-py_0.tar.bz2#1073dc92c8f247d94ac14dd79ca0bbec
+https://conda.anaconda.org/conda-forge/osx-64/mypy_extensions-0.4.3-py38h50d1736_4.tar.bz2#dd755ee24e78645ce3d9e09e71feecc0
 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85
 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651
 https://conda.anaconda.org/conda-forge/osx-64/pexpect-4.8.0-py38h32f6830_1.tar.bz2#07ca6ed2e07c8e8fae33a9d08ae245a4
@@ -213,28 +220,30 @@ https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0-py38h96a0964_3.tar.bz2#
 https://conda.anaconda.org/conda-forge/osx-64/pyzmq-22.3.0-py38hd3b92b6_1.tar.bz2#52ded1178ce8903605cf359c2a6d9533
 https://conda.anaconda.org/conda-forge/osx-64/qt-5.12.9-h126340a_4.tar.bz2#3fd8d112f817bc29a2ff8f508b815845
 https://conda.anaconda.org/conda-forge/osx-64/rtree-0.9.7-py38hc59ffc2_3.tar.bz2#eedf5027e60f198392c920503172d309
-https://conda.anaconda.org/conda-forge/osx-64/setuptools-60.5.0-py38h50d1736_0.tar.bz2#8a77557c37881c1904f6c944b8d04bc6
+https://conda.anaconda.org/conda-forge/osx-64/setuptools-59.8.0-py38h50d1736_0.tar.bz2#ebb275cb5c4d908f3e5e2417adeec391
 https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py38h96a0964_2.tar.bz2#b0d3b8b55486dfd64167129b439e3959
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/osx-64/traits-6.3.2-py38h96a0964_0.tar.bz2#bf824fe73a83dbb80d3533e34ed7fb34
 https://conda.anaconda.org/conda-forge/noarch/traittypes-0.2.1-pyh9f0ad1d_2.tar.bz2#7d32ccb5334a6822c28af3e864550618
+https://conda.anaconda.org/conda-forge/osx-64/typed-ast-1.5.1-py38h96a0964_0.tar.bz2#e9c7b8cb966c7369a5991a96818f480a
 https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-14.0.0-py38h96a0964_0.tar.bz2#db0be5335e0d3c57b55052e23d0697d3
 https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3
 https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py38h96a0964_1.tar.bz2#9026162a4fba2f648b55d5da280abbe6
 https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2#c5b3edc62d6309088f4970b3eaaa65a6
+https://conda.anaconda.org/conda-forge/noarch/black-21.12b0-pyhd8ed1ab_0.tar.bz2#a027de51692086f51b9e17735480bebf
 https://conda.anaconda.org/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2#4a2104c7b22c222bd0fe03aaef12862c
 https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py38h96a0964_1003.tar.bz2#3346798a1556f3d196147b33bc8c3651
 https://conda.anaconda.org/conda-forge/osx-64/cryptography-36.0.1-py38h56c4533_0.tar.bz2#bbafd45c458cb59959444aa130845a16
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.28.5-py38h96a0964_0.tar.bz2#528435f3c55af04500b08bae124d08a4
 https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7d96ac2_7.tar.bz2#0ba9918ee4cdb1a33a4738eeae194d44
 https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.6.0-h4fce3c3_4.tar.bz2#e3b8964148f1f8e307956186e4b51575
 https://conda.anaconda.org/conda-forge/noarch/imageio-ffmpeg-0.4.5-pyhd8ed1ab_0.tar.bz2#36261aceb9f073b789f4d3dbba14c5e6
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.4.0-pyhd8ed1ab_0.tar.bz2#17ec41acce882e5db4efdcc4c01ca7e0
-https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.0-pyhd8ed1ab_0.tar.bz2#c1460cc25b6a86d1b66ab6c3c471b791
+https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.1-pyhd8ed1ab_0.tar.bz2#531f22e91137a4812cb0c864b87fa54e
 https://conda.anaconda.org/conda-forge/osx-64/kealib-1.4.14-h31dd65d_2.tar.bz2#a6748170c0d1444fb46a330d2553ca3e
 https://conda.anaconda.org/conda-forge/osx-64/libdap4-3.20.6-h3e144a0_2.tar.bz2#55e0706347eb18f3616808366236bcaa
 https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.7.4-mpi_openmpi_h9bf59f8_7.tar.bz2#2531ccbba7690d1d03c8361fac3955de
@@ -248,6 +257,7 @@ https://conda.anaconda.org/conda-forge/noarch/proglog-0.1.9-py_0.tar.bz2#44097ce
 https://conda.anaconda.org/conda-forge/noarch/pygments-2.11.2-pyhd8ed1ab_0.tar.bz2#caef60540e2239e27bf62569a5015e3b
 https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.1.0-py38h5bbac10_3.tar.bz2#b933e3e49baa3678aa55488f027cb648
 https://conda.anaconda.org/conda-forge/osx-64/pyqt-impl-5.12.3-py38hb240fba_8.tar.bz2#50d5cf40357d543e90f5b3b62692ab09
+https://conda.anaconda.org/conda-forge/noarch/stack_data-0.1.4-pyhd8ed1ab_0.tar.bz2#e68dcab1b415c3c44be2a51d7d41e921
 https://conda.anaconda.org/conda-forge/osx-64/terminado-0.12.1-py38h50d1736_1.tar.bz2#0fcebde856ffb367b4a9e7c6e3d3ab3c
 https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.16.0-py38h96a0964_2.tar.bz2#b0de664ae6988e010403c52ea24f9285
 https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
@@ -255,7 +265,7 @@ https://conda.anaconda.org/conda-forge/osx-64/bokeh-2.4.2-py38h50d1736_0.tar.bz2
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
 https://conda.anaconda.org/conda-forge/osx-64/cftime-1.5.1.1-py38hbe852b5_1.tar.bz2#685503db069b5c54458ca61576d12f28
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
-https://conda.anaconda.org/conda-forge/osx-64/distributed-2021.12.0-py38h50d1736_0.tar.bz2#81e5258b28930c1eeecdc0ee4f41e608
+https://conda.anaconda.org/conda-forge/osx-64/distributed-2022.1.0-py38h50d1736_0.tar.bz2#d96154eb5780687611af4796811d3129
 https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.21.0-h136bbf5_0.tar.bz2#c7f0b36735c7d8e897c44e8ff8aaabe6
 https://conda.anaconda.org/conda-forge/noarch/imageio-2.13.1-pyhd8ed1ab_0.tar.bz2#6c99c767bbcbf37b62a4b84a8e2b70b1
 https://conda.anaconda.org/conda-forge/osx-64/itk-5.1.2-py38h50d1736_0.tar.bz2#2528c775b64c32f3b6cea6a5edb7c4be
@@ -277,12 +287,12 @@ https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6
 https://conda.anaconda.org/conda-forge/osx-64/vtk-9.0.1-no_osmesa_py38ha4a10eb_106.tar.bz2#279af8c2d31e494c315924ede781a065
 https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee
 https://conda.anaconda.org/conda-forge/osx-64/cartopy-0.19.0.post1-py38h4be4431_1.tar.bz2#4d0917213e2103f6df4ca69cf7c5682e
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-py_4.tar.bz2#32fa3526c15250ccf353f1ce905f50b3
 https://conda.anaconda.org/conda-forge/osx-64/gdal-3.2.1-py38hcd0f73a_7.tar.bz2#fe33f7f29b5f69639f49c1d66118550a
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.5.1-py38h50d1736_0.tar.bz2#822c7695af0025929dcf198b3938c51a
-https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2#21554dd9bbabff27ae87f715fee4d56c
+https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.10-pyhd8ed1ab_1.tar.bz2#000cfe33d6fa746c5a9d1b29a79342a3
 https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.5.6-nompi_py38h2c97785_102.tar.bz2#008c40a64955952c776d314aad0274e9
 https://conda.anaconda.org/conda-forge/noarch/networkx-2.6.3-pyhd8ed1ab_1.tar.bz2#4028eff5a1d3deed58c98774e7aa9891
 https://conda.anaconda.org/conda-forge/osx-64/occt-7.5.3-h23a7684_0.tar.bz2#3eb632d9b05432caa4438a8d04b57d72
@@ -299,13 +309,14 @@ https://conda.anaconda.org/conda-forge/noarch/xarray-0.20.2-pyhd8ed1ab_0.tar.bz2
 https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.9.1-pyhd8ed1ab_1.tar.bz2#55c037a20ba22e5904348c20c9895268
 https://conda.anaconda.org/conda-forge/osx-64/fiona-1.8.18-py38hf4ff7c0_1.tar.bz2#6e6bfb6571dd62fc8c48f418d56edce2
 https://conda.anaconda.org/conda-forge/osx-64/gmsh-4.8.4-h2770bf5_0.tar.bz2#57d6a0b7ad65f23208537c6c455e6aa1
-https://conda.anaconda.org/conda-forge/osx-64/ipython-7.31.0-py38h50d1736_0.tar.bz2#ceb669da5852f572df965a3c311ddb71
+https://conda.anaconda.org/conda-forge/osx-64/ipython-8.0.0-py38h50d1736_0.tar.bz2#e2c6aeaac0474bfe5f9eb8ccf316495c
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/osx-64/nbconvert-6.4.0-py38h50d1736_0.tar.bz2#21ee30876ddd20dad7094e131ab1d472
 https://conda.anaconda.org/conda-forge/noarch/pyface-7.3.0-pyh44b312d_1.tar.bz2#6deb6e9d1bd311a5144039df94d68c4f
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
-https://conda.anaconda.org/conda-forge/osx-64/ipykernel-6.6.1-py38h5fd9f69_0.tar.bz2#c4007467bcf217e73d5bdc25c2ac35b8
+https://conda.anaconda.org/conda-forge/osx-64/ipykernel-6.7.0-py38h5fd9f69_0.tar.bz2#1d5b64efa892a569ca40f8e90f9c694e
 https://conda.anaconda.org/conda-forge/noarch/moviepy-1.0.1-py_0.tar.bz2#26a0b6c145254ea17a44f3a520fccdb1
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
@@ -325,5 +336,5 @@ https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.6.5-pyhd8ed1ab_0.tar.
 https://conda.anaconda.org/conda-forge/osx-64/mayavi-4.7.2-py38haf0748e_4.tar.bz2#ce47ac58051dd83780be222f70ca0440
 https://conda.anaconda.org/conda-forge/noarch/geoviews-1.9.3-pyhd8ed1ab_0.tar.bz2#c8a6a006829f9ec22c8b504a5cc07a47
 https://conda.anaconda.org/conda-forge/noarch/ipydatawidgets-4.2.0-pyhd3deb0d_0.tar.bz2#2fa9972333df26f1cedfb659468f1b1e
-https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.5-pyhd8ed1ab_0.tar.bz2#2de1bcc7c5304b61099347a2d28ca317
+https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.6-pyhd8ed1ab_0.tar.bz2#75f80858af1b0fc01f0f6e1e1c4e460e
 https://conda.anaconda.org/conda-forge/osx-64/itkwidgets-0.32.0-py38h32f6830_0.tar.bz2#8f43fef55268f5558281892859ffa231
diff --git a/locks/conda-Macos-64-p39-mpich-binary.lock b/locks/conda-Macos-64-p39-mpich-binary.lock
index 62a35a74..a263a09a 100644
--- a/locks/conda-Macos-64-p39-mpich-binary.lock
+++ b/locks/conda-Macos-64-p39-mpich-binary.lock
@@ -35,7 +35,7 @@ https://conda.anaconda.org/conda-forge/osx-64/double-conversion-3.1.7-he49afe7_0
 https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h940c156_0.tar.bz2#f47a426ed1340c966f539c42187e3331
 https://conda.anaconda.org/conda-forge/osx-64/expat-2.4.2-he49afe7_0.tar.bz2#f2676d01827827c3ec42b7c1a0e53232
 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29
-https://conda.anaconda.org/conda-forge/osx-64/geos-3.10.1-he49afe7_1.tar.bz2#345f93697ead5d27d1db30afc613c31c
+https://conda.anaconda.org/conda-forge/osx-64/geos-3.10.2-he49afe7_0.tar.bz2#ba73e08947c2300d6eb338415540854a
 https://conda.anaconda.org/conda-forge/osx-64/gettext-0.19.8.1-hd1a6beb_1008.tar.bz2#28c370fc39becf486601d9e491a5e184
 https://conda.anaconda.org/conda-forge/osx-64/glew-2.1.0-h046ec9c_2.tar.bz2#6b753c8c7e4c46a8eb17b6f1781f958a
 https://conda.anaconda.org/conda-forge/osx-64/gmp-6.2.1-h2e338ed_0.tar.bz2#dedc96914428dae572a39e69ee2a392f
diff --git a/locks/conda-Macos-64-p39-openmpi-binary.lock b/locks/conda-Macos-64-p39-openmpi-binary.lock
index 393b39ea..af6fc61f 100644
--- a/locks/conda-Macos-64-p39-openmpi-binary.lock
+++ b/locks/conda-Macos-64-p39-openmpi-binary.lock
@@ -35,7 +35,7 @@ https://conda.anaconda.org/conda-forge/osx-64/double-conversion-3.1.7-he49afe7_0
 https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h940c156_0.tar.bz2#f47a426ed1340c966f539c42187e3331
 https://conda.anaconda.org/conda-forge/osx-64/expat-2.4.2-he49afe7_0.tar.bz2#f2676d01827827c3ec42b7c1a0e53232
 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29
-https://conda.anaconda.org/conda-forge/osx-64/geos-3.10.1-he49afe7_1.tar.bz2#345f93697ead5d27d1db30afc613c31c
+https://conda.anaconda.org/conda-forge/osx-64/geos-3.10.2-he49afe7_0.tar.bz2#ba73e08947c2300d6eb338415540854a
 https://conda.anaconda.org/conda-forge/osx-64/gettext-0.19.8.1-hd1a6beb_1008.tar.bz2#28c370fc39becf486601d9e491a5e184
 https://conda.anaconda.org/conda-forge/osx-64/glew-2.1.0-h046ec9c_2.tar.bz2#6b753c8c7e4c46a8eb17b6f1781f958a
 https://conda.anaconda.org/conda-forge/osx-64/gmp-6.2.1-h2e338ed_0.tar.bz2#dedc96914428dae572a39e69ee2a392f
diff --git a/locks/conda-ubuntu-64-p38-mpich-binary.lock b/locks/conda-ubuntu-64-p38-mpich-binary.lock
index a68e1e64..09635889 100644
--- a/locks/conda-ubuntu-64-p38-mpich-binary.lock
+++ b/locks/conda-ubuntu-64-p38-mpich-binary.lock
@@ -25,7 +25,7 @@ https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.18.1-h7f98852_0.tar.bz2
 https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.1.7-h9c3ff4c_0.tar.bz2#019a56e1a79ed2362d6a61c16f903f59
 https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h4bd325d_0.tar.bz2#61af675be1ebd2ab75ebc70b8687b84d
 https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.2-h9c3ff4c_0.tar.bz2#0fb039650fa638f258fdc9e9ef125f52
-https://conda.anaconda.org/conda-forge/linux-64/geos-3.10.1-h9c3ff4c_1.tar.bz2#17a5f413039ce1e105fab5df9c668eb5
+https://conda.anaconda.org/conda-forge/linux-64/geos-3.10.2-h9c3ff4c_0.tar.bz2#fe9a66a351bfa7a84c3108304c7bcba5
 https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2#b94cf2db16066b242ebd26db2facbd56
 https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa
 https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf
diff --git a/locks/conda-ubuntu-64-p38-mpich-dev.lock b/locks/conda-ubuntu-64-p38-mpich-dev.lock
index cc78a969..cf39047d 100644
--- a/locks/conda-ubuntu-64-p38-mpich-dev.lock
+++ b/locks/conda-ubuntu-64-p38-mpich-dev.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: linux-64
-# input_hash: dd273e00c9cdb2afa11bd532dba7d70c99c912e18a3f0c2a32a057606f0799f3
+# input_hash: 9fd46b537ec2cbff99f13137ec291edb7c5c71901d7163c163e851191ae3c699
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26
@@ -144,7 +144,6 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.2.1-h7f98852_2.tar.bz2#60d6eec5273f1c9af096c10c268912e3
 https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33
 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b
-https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d
 https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
 https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
@@ -158,6 +157,7 @@ https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.b
 https://conda.anaconda.org/conda-forge/noarch/decorator-4.4.2-py_0.tar.bz2#d2eabb9cabd212e1ec6a9463bd846243
 https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
 https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2
+https://conda.anaconda.org/conda-forge/noarch/executing-0.8.2-pyhd8ed1ab_0.tar.bz2#dcd884e2cf5bcdccdf78f7db35999d62
 https://conda.anaconda.org/conda-forge/noarch/f90nml-1.3.1-pyhd8ed1ab_0.tar.bz2#b4bda9ec19f8e393103e2c3cb1ed2061
 https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-4.4.1-h6987444_0.tar.bz2#0439dda1c3494c6dd9c06ed002aa7a6c
 https://conda.anaconda.org/conda-forge/noarch/filelock-3.4.2-pyhd8ed1ab_1.tar.bz2#d3f5797d3f9625c64860c93fc4359e64
@@ -168,7 +168,7 @@ https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/linux-64/glew-2.1.0-h9c3ff4c_2.tar.bz2#fb05eb5c47590b247658243d27fc32f1
 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.5-hf529b03_3.tar.bz2#524a9f1718bac53a6cf4906bcc51d044
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905
 https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.0.2-pyhd8ed1ab_0.tar.bz2#eaff56fe28d1236076aa3bb13c35b434
@@ -188,6 +188,7 @@ https://conda.anaconda.org/conda-forge/noarch/pathspec-0.9.0-pyhd8ed1ab_0.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/platformdirs-2.3.0-pyhd8ed1ab_0.tar.bz2#7bc119135be2a43e1701432399d8c28a
 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.12.0-pyhd8ed1ab_0.tar.bz2#d7b366cccdf2c1e8ebdddbfff7c2ba00
 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
+https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.1-pyhd8ed1ab_1.tar.bz2#2e7e2ccd3adc16f7babfbf8bc7d88da9
 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054
 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.6-pyhd8ed1ab_0.tar.bz2#3087df8c636c5a00e694605c39ce4982
@@ -209,8 +210,9 @@ https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2#3cdb89236358326adfce12be820a8af3
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
+https://conda.anaconda.org/conda-forge/noarch/asttokens-2.0.5-pyhd8ed1ab_0.tar.bz2#74badce16f060701fee55c39332f5253
 https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f
 https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py38h578d9bd_1.tar.bz2#52a6cee65a5d10ed1c3f0af24fb48dd3
 https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py38h3931269_0.tar.bz2#9c491a90ae11d08ca97326a0ed876f3a
@@ -226,7 +228,7 @@ https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py38h497a2fe_1.ta
 https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.5.1-py38h709712a_0.tar.bz2#e4562edba9cf178746097668eaac5530
 https://conda.anaconda.org/conda-forge/linux-64/entrypoints-0.3-py38h32f6830_1002.tar.bz2#b76ac7f9e86b4169c3b3003dedd05e87
 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-mpi_mpich_h996c276_1014.tar.bz2#6af2e2e4dfb0ef36c35042cd69a1599d
-https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.0-py38h578d9bd_0.tar.bz2#a2da03ada2e899ae657adf00e2b332b4
+https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.1-py38h578d9bd_0.tar.bz2#26da12e39b1b93e82fb865e967d0cbe0
 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.4.0-pyhd8ed1ab_0.tar.bz2#9fb134dbabe7851a9d71411064b2c30d
 https://conda.anaconda.org/conda-forge/linux-64/jedi-0.18.1-py38h578d9bd_0.tar.bz2#84ca00ec7d71269b633546dc83e0b088
 https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-4.9.1-py38h578d9bd_1.tar.bz2#61eac1660d6bb75978662a457efe948b
@@ -262,7 +264,7 @@ https://conda.anaconda.org/conda-forge/linux-64/pyzmq-22.3.0-py38h2035c66_1.tar.
 https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2#afebab1f5049d66baaaec67d9ce893f0
 https://conda.anaconda.org/conda-forge/linux-64/rtree-0.9.7-py38h02d302b_3.tar.bz2#ce628142e8aa3732bf08ee2bab4dcc89
 https://conda.anaconda.org/conda-forge/linux-64/ruamel_yaml-0.15.80-py38h497a2fe_1006.tar.bz2#0fa769ad0e02eac70eed789064f524dd
-https://conda.anaconda.org/conda-forge/linux-64/setuptools-60.5.0-py38h578d9bd_0.tar.bz2#9807c89f3ce846015dbad3c1d04348a5
+https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.8.0-py38h578d9bd_0.tar.bz2#5c6cd89b15e0059af9dd07cc60a6afbd
 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h497a2fe_2.tar.bz2#63b3b55c98b4239134e0be080f448944
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/linux-64/traits-6.3.2-py38h497a2fe_0.tar.bz2#1e083f3716b67ec9a9b0810083cd82bf
@@ -279,19 +281,19 @@ https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h497a2fe_1003
 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.5.1.1-py38h6c62de6_1.tar.bz2#d4a47fd2bbc8292a322d462734b0ada5
 https://conda.anaconda.org/conda-forge/linux-64/conda-package-handling-1.7.3-py38h497a2fe_1.tar.bz2#58cfec665a31b0a5a339c0115c7d6d9e
 https://conda.anaconda.org/conda-forge/linux-64/cryptography-36.0.1-py38h3e25421_0.tar.bz2#acc14d0d71dbf74f6a15f2456951b6cf
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.28.5-py38h497a2fe_0.tar.bz2#f611d0be8205d5b0566f9c97e7d66ae3
 https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h88c329d_7.tar.bz2#35c46b4f62cf4cec0fe195df1ebedd27
 https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.6.0-h2b14fbe_4.tar.bz2#95731212a74717b0368f9805513f6da7
 https://conda.anaconda.org/conda-forge/noarch/imageio-2.13.1-pyhd8ed1ab_0.tar.bz2#6c99c767bbcbf37b62a4b84a8e2b70b1
 https://conda.anaconda.org/conda-forge/noarch/imageio-ffmpeg-0.4.5-pyhd8ed1ab_0.tar.bz2#36261aceb9f073b789f4d3dbba14c5e6
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/linux-64/itk-5.1.2-py38h578d9bd_0.tar.bz2#640b155e52b39fa7f3ae391662218baf
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.4.0-pyhd8ed1ab_0.tar.bz2#17ec41acce882e5db4efdcc4c01ca7e0
-https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.0-pyhd8ed1ab_0.tar.bz2#c1460cc25b6a86d1b66ab6c3c471b791
+https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.1-pyhd8ed1ab_0.tar.bz2#531f22e91137a4812cb0c864b87fa54e
 https://conda.anaconda.org/conda-forge/linux-64/kealib-1.4.14-hcc255d8_2.tar.bz2#ae7e21f861c37500627f7122df804c26
 https://conda.anaconda.org/conda-forge/linux-64/libdap4-3.20.6-hd7c4107_2.tar.bz2#c265ae57e3acdc891f3e2b93cf6784f5
 https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.7.4-mpi_mpich_hdef422e_7.tar.bz2#7e1544ceea2c644e23140f2bb0b4c48e
@@ -313,12 +315,13 @@ https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py38h578d9bd_2.tar.
 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.7.3-py38h56a6a73_0.tar.bz2#2d318049369bb52d2687b0ac2be82751
 https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py38hb7fe4a8_5.tar.bz2#84d4f1c56cdc670e0531baea26dfd16b
 https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a
+https://conda.anaconda.org/conda-forge/noarch/stack_data-0.1.4-pyhd8ed1ab_0.tar.bz2#e68dcab1b415c3c44be2a51d7d41e921
 https://conda.anaconda.org/conda-forge/linux-64/terminado-0.12.1-py38h578d9bd_1.tar.bz2#7895939107a904267a9e5f9678c9b27f
 https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.16.0-py38h497a2fe_2.tar.bz2#8f058c034eb334da71b583933e7581fa
 https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
 https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.4.2-py38h578d9bd_0.tar.bz2#f1a2945767ea115e46809a98c8e66a09
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
-https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.12.0-py38h578d9bd_0.tar.bz2#fbafb689c1ddf3698f19ca6d2455396e
+https://conda.anaconda.org/conda-forge/linux-64/distributed-2022.1.0-py38h578d9bd_0.tar.bz2#7dccad3a685696bcd21093b31c41c053
 https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.21.0-ha0e6eb6_0.tar.bz2#b4468d515e661efb68ab575ca5ca9558
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.1.2-pyh9f0ad1d_0.tar.bz2#2cbd910890bb328e8959246a1e16fac7
@@ -338,10 +341,10 @@ https://conda.anaconda.org/conda-forge/linux-64/vtk-9.0.1-no_osmesa_py38hc2cec6c
 https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee
 https://conda.anaconda.org/conda-forge/noarch/xarray-0.20.2-pyhd8ed1ab_0.tar.bz2#2d3031a02083029eaec5177054d365c9
 https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0.post1-py38hc9c980b_1.tar.bz2#777b33d2e0678182b2a5d2e32dc27248
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-py_4.tar.bz2#32fa3526c15250ccf353f1ce905f50b3
 https://conda.anaconda.org/conda-forge/linux-64/gdal-3.2.1-py38hc0b2d6b_7.tar.bz2#b346f09a3161328c5a73ad12d637820f
-https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2#21554dd9bbabff27ae87f715fee4d56c
+https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.10-pyhd8ed1ab_1.tar.bz2#000cfe33d6fa746c5a9d1b29a79342a3
 https://conda.anaconda.org/conda-forge/noarch/networkx-2.6.3-pyhd8ed1ab_1.tar.bz2#4028eff5a1d3deed58c98774e7aa9891
 https://conda.anaconda.org/conda-forge/linux-64/occt-7.5.3-h7391655_0.tar.bz2#9056e0872da3962ba984e75f35b646cd
 https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.24-pyha770c72_0.tar.bz2#edaf527a6d394e2b965aff228c2e552f
@@ -355,16 +358,17 @@ https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.8-pyhd8ed1ab_1.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.9.1-pyhd8ed1ab_1.tar.bz2#55c037a20ba22e5904348c20c9895268
 https://conda.anaconda.org/conda-forge/linux-64/fiona-1.8.18-py38h58f84aa_1.tar.bz2#47bd73be08703428b4233a568569ee8c
 https://conda.anaconda.org/conda-forge/linux-64/gmsh-4.8.4-h2ad51fa_0.tar.bz2#270d9da9db89c9cf13fc39ace56e6e14
-https://conda.anaconda.org/conda-forge/linux-64/ipython-7.31.0-py38h578d9bd_0.tar.bz2#536057f3863fa7fd9b962e4d5dffa81b
+https://conda.anaconda.org/conda-forge/linux-64/ipython-8.0.0-py38h578d9bd_0.tar.bz2#431ef59ad346f3cd4e7cbff6b1ad87f9
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.1-py38h578d9bd_0.tar.bz2#0d78be9cf1c400ba8e3077cf060492f1
 https://conda.anaconda.org/conda-forge/linux-64/nbconvert-6.4.0-py38h578d9bd_0.tar.bz2#375a8c8f52696c90d9e49b1f313764e0
 https://conda.anaconda.org/conda-forge/noarch/pyface-7.3.0-pyh44b312d_1.tar.bz2#6deb6e9d1bd311a5144039df94d68c4f
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/linux-64/conda-4.11.0-py38h578d9bd_0.tar.bz2#fa91a8365f0b39995fcfabf7e945ff02
 https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.1-pyhd8ed1ab_0.tar.bz2#52a7f7cc9076e2c8a25e15e19ad42821
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
-https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.6.1-py38he5a9106_0.tar.bz2#baa9acab093a22095487dba83713081b
+https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.7.0-py38he5a9106_0.tar.bz2#4ef8df702308288d7abe1358395988c6
 https://conda.anaconda.org/conda-forge/noarch/moviepy-1.0.1-py_0.tar.bz2#26a0b6c145254ea17a44f3a520fccdb1
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
@@ -372,7 +376,7 @@ https://conda.anaconda.org/conda-forge/noarch/traitsui-7.2.0-pyhd8ed1ab_0.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/apptools-5.1.0-pyh44b312d_0.tar.bz2#67f86126bb65837378ddd31caff9f420
 https://conda.anaconda.org/conda-forge/noarch/colorcet-3.0.0-pyhd8ed1ab_0.tar.bz2#a0e9e38c882d910825389de5371c5429
 https://conda.anaconda.org/conda-forge/noarch/conda-lock-0.13.2-pyhd8ed1ab_0.tar.bz2#4fa525b4257e4938eaeb2269fdf33d1f
-https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.0.4-pyhd8ed1ab_0.tar.bz2#2bf87d7493a87de0c0814b0bd499e040
+https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.0.5-pyhd8ed1ab_0.tar.bz2#74c9c60684e578fb92b27df42846b733
 https://conda.anaconda.org/conda-forge/noarch/geopandas-0.10.2-pyhd8ed1ab_1.tar.bz2#0682614964c1319304cfa554cbce90f0
 https://conda.anaconda.org/conda-forge/noarch/notebook-6.4.7-pyha770c72_0.tar.bz2#8bf6e732d753521a06571d1efe8e58f2
 https://conda.anaconda.org/conda-forge/noarch/panel-0.12.6-pyhd8ed1ab_0.tar.bz2#d035684ee51bef1c2b797c280f7713da
@@ -386,5 +390,5 @@ https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.6.5-pyhd8ed1ab_0.tar.
 https://conda.anaconda.org/conda-forge/linux-64/mayavi-4.7.2-py38h32b5f5e_4.tar.bz2#ffa239c21fd0a1fae1c503821e7a6ee8
 https://conda.anaconda.org/conda-forge/noarch/geoviews-1.9.3-pyhd8ed1ab_0.tar.bz2#c8a6a006829f9ec22c8b504a5cc07a47
 https://conda.anaconda.org/conda-forge/noarch/ipydatawidgets-4.2.0-pyhd3deb0d_0.tar.bz2#2fa9972333df26f1cedfb659468f1b1e
-https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.5-pyhd8ed1ab_0.tar.bz2#2de1bcc7c5304b61099347a2d28ca317
+https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.6-pyhd8ed1ab_0.tar.bz2#75f80858af1b0fc01f0f6e1e1c4e460e
 https://conda.anaconda.org/conda-forge/linux-64/itkwidgets-0.32.0-py38h32f6830_0.tar.bz2#70faaea5c377d8e5cc12a79bfec1462e
diff --git a/locks/conda-ubuntu-64-p38-mpich-no_viz.lock b/locks/conda-ubuntu-64-p38-mpich-no_viz.lock
index 54d1de03..dcc52958 100644
--- a/locks/conda-ubuntu-64-p38-mpich-no_viz.lock
+++ b/locks/conda-ubuntu-64-p38-mpich-no_viz.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: linux-64
-# input_hash: 77c5b6167c69f91c6791054448dc5c13c7e581111ff548aaffe41a7a5483be95
+# input_hash: a0ce603462eed36d8921908f198678110cca0df140a075ecdcde14ce2f59ba06
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26
@@ -154,7 +154,7 @@ https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/linux-64/glew-2.1.0-h9c3ff4c_2.tar.bz2#fb05eb5c47590b247658243d27fc32f1
 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.5-hf529b03_3.tar.bz2#524a9f1718bac53a6cf4906bcc51d044
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f
 https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.81.0-h2574ce0_0.tar.bz2#1f8655741d0269ca6756f131522da1e8
 https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h238a007_1014.tar.bz2#abd8e196ad04781818acef26cc451d66
@@ -178,7 +178,7 @@ https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2#3cdb89236358326adfce12be820a8af3
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
 https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f
 https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py38h578d9bd_1.tar.bz2#52a6cee65a5d10ed1c3f0af24fb48dd3
@@ -191,7 +191,7 @@ https://conda.anaconda.org/conda-forge/noarch/configobj-5.0.6-py_0.tar.bz2#e46ba
 https://conda.anaconda.org/conda-forge/linux-64/curl-7.81.0-h2574ce0_0.tar.bz2#3a95d393b490f82aa406f1892fad84d9
 https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py38h497a2fe_1.tar.bz2#297a4d01b5c58b4ee47c326b2a3ed6ce
 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-mpi_mpich_h996c276_1014.tar.bz2#6af2e2e4dfb0ef36c35042cd69a1599d
-https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.0-py38h578d9bd_0.tar.bz2#a2da03ada2e899ae657adf00e2b332b4
+https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.1-py38h578d9bd_0.tar.bz2#26da12e39b1b93e82fb865e967d0cbe0
 https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.2-py38h1fd1430_1.tar.bz2#085365abfe53d5d13bb68b1dda0b439e
 https://conda.anaconda.org/conda-forge/linux-64/libraw-0.20.2-h10796ff_1.tar.bz2#29b53db51008dedb27cd123b9a3bdd8f
 https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.36.0-py38h4630a5e_0.tar.bz2#a805cb9a530a6524f7f832cce981fa0e
@@ -214,7 +214,7 @@ https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-2.1.0-pyhd8ed1ab_0.tar
 https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py38h497a2fe_3.tar.bz2#131de7d638aa59fb8afbce59f1a8aa98
 https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2#afebab1f5049d66baaaec67d9ce893f0
 https://conda.anaconda.org/conda-forge/linux-64/rtree-0.9.7-py38h02d302b_3.tar.bz2#ce628142e8aa3732bf08ee2bab4dcc89
-https://conda.anaconda.org/conda-forge/linux-64/setuptools-60.5.0-py38h578d9bd_0.tar.bz2#9807c89f3ce846015dbad3c1d04348a5
+https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.8.0-py38h578d9bd_0.tar.bz2#5c6cd89b15e0059af9dd07cc60a6afbd
 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h497a2fe_2.tar.bz2#63b3b55c98b4239134e0be080f448944
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py38h497a2fe_0.tar.bz2#8da7787169411910df2a62dc8ef533e0
@@ -223,12 +223,12 @@ https://conda.anaconda.org/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2#
 https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h497a2fe_1003.tar.bz2#9189b42c42b9c87b2b2068cbe31901a8
 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.5.1.1-py38h6c62de6_1.tar.bz2#d4a47fd2bbc8292a322d462734b0ada5
 https://conda.anaconda.org/conda-forge/linux-64/cryptography-36.0.1-py38h3e25421_0.tar.bz2#acc14d0d71dbf74f6a15f2456951b6cf
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.28.5-py38h497a2fe_0.tar.bz2#f611d0be8205d5b0566f9c97e7d66ae3
 https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h88c329d_7.tar.bz2#35c46b4f62cf4cec0fe195df1ebedd27
 https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.6.0-h2b14fbe_4.tar.bz2#95731212a74717b0368f9805513f6da7
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/linux-64/kealib-1.4.14-hcc255d8_2.tar.bz2#ae7e21f861c37500627f7122df804c26
@@ -250,7 +250,7 @@ https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py38hb7fe4a8_5.tar
 https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a
 https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.4.2-py38h578d9bd_0.tar.bz2#f1a2945767ea115e46809a98c8e66a09
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
-https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.12.0-py38h578d9bd_0.tar.bz2#fbafb689c1ddf3698f19ca6d2455396e
+https://conda.anaconda.org/conda-forge/linux-64/distributed-2022.1.0-py38h578d9bd_0.tar.bz2#7dccad3a685696bcd21093b31c41c053
 https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.21.0-ha0e6eb6_0.tar.bz2#b4468d515e661efb68ab575ca5ca9558
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.2.1-h38ff51b_7.tar.bz2#8c7d74656d2b87874f1bfc631ca97d46
@@ -265,7 +265,7 @@ https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.0.2-py38h1561384_
 https://conda.anaconda.org/conda-forge/linux-64/vtk-9.0.1-no_osmesa_py38hc2cec6c_106.tar.bz2#7e59612d3bf0e852c4422078b9f7b46e
 https://conda.anaconda.org/conda-forge/noarch/xarray-0.20.2-pyhd8ed1ab_0.tar.bz2#2d3031a02083029eaec5177054d365c9
 https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0.post1-py38hc9c980b_1.tar.bz2#777b33d2e0678182b2a5d2e32dc27248
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/linux-64/gdal-3.2.1-py38hc0b2d6b_7.tar.bz2#b346f09a3161328c5a73ad12d637820f
 https://conda.anaconda.org/conda-forge/noarch/networkx-2.6.3-pyhd8ed1ab_1.tar.bz2#4028eff5a1d3deed58c98774e7aa9891
 https://conda.anaconda.org/conda-forge/linux-64/occt-7.5.3-h7391655_0.tar.bz2#9056e0872da3962ba984e75f35b646cd
@@ -280,6 +280,7 @@ https://conda.anaconda.org/conda-forge/linux-64/gmsh-4.8.4-h2ad51fa_0.tar.bz2#27
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.1-py38h578d9bd_0.tar.bz2#0d78be9cf1c400ba8e3077cf060492f1
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
diff --git a/locks/conda-ubuntu-64-p38-mpich-viz.lock b/locks/conda-ubuntu-64-p38-mpich-viz.lock
index f33864d5..1e681c1f 100644
--- a/locks/conda-ubuntu-64-p38-mpich-viz.lock
+++ b/locks/conda-ubuntu-64-p38-mpich-viz.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: linux-64
-# input_hash: f4f54bb89254260ec2afd2631ec75e601e20abc03b28ba966eceb41a77fe570e
+# input_hash: 956adc76c7151fe5bea8747dcdf608cb1d31118fee5324cd6644b4fcd5eb191c
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26
@@ -144,7 +144,6 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.2.1-h7f98852_2.tar.bz2#60d6eec5273f1c9af096c10c268912e3
 https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33
 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b
-https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d
 https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
 https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
@@ -153,8 +152,10 @@ https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#b
 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.0.0-pyhd8ed1ab_0.tar.bz2#3a8fc8b627d5fb6af827e126a10a86c6
 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f
 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb
+https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d
 https://conda.anaconda.org/conda-forge/noarch/decorator-4.4.2-py_0.tar.bz2#d2eabb9cabd212e1ec6a9463bd846243
 https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
+https://conda.anaconda.org/conda-forge/noarch/executing-0.8.2-pyhd8ed1ab_0.tar.bz2#dcd884e2cf5bcdccdf78f7db35999d62
 https://conda.anaconda.org/conda-forge/noarch/f90nml-1.3.1-pyhd8ed1ab_0.tar.bz2#b4bda9ec19f8e393103e2c3cb1ed2061
 https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-4.4.1-h6987444_0.tar.bz2#0439dda1c3494c6dd9c06ed002aa7a6c
 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.0.2-pyhd8ed1ab_0.tar.bz2#c2a60dd9f1210b8ee2037f7d0ec6251a
@@ -164,7 +165,7 @@ https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/linux-64/glew-2.1.0-h9c3ff4c_2.tar.bz2#fb05eb5c47590b247658243d27fc32f1
 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.5-hf529b03_3.tar.bz2#524a9f1718bac53a6cf4906bcc51d044
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.0.2-pyhd8ed1ab_0.tar.bz2#eaff56fe28d1236076aa3bb13c35b434
 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f
@@ -179,8 +180,11 @@ https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
 https://conda.anaconda.org/conda-forge/noarch/param-1.12.0-pyh6c4a22f_0.tar.bz2#fe68d614336ad99a3bede46e0c6ca26b
 https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
+https://conda.anaconda.org/conda-forge/noarch/pathspec-0.9.0-pyhd8ed1ab_0.tar.bz2#f93dc0ccbc0a8472624165f6e256c7d1
+https://conda.anaconda.org/conda-forge/noarch/platformdirs-2.3.0-pyhd8ed1ab_0.tar.bz2#7bc119135be2a43e1701432399d8c28a
 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.12.0-pyhd8ed1ab_0.tar.bz2#d7b366cccdf2c1e8ebdddbfff7c2ba00
 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
+https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.1-pyhd8ed1ab_1.tar.bz2#2e7e2ccd3adc16f7babfbf8bc7d88da9
 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.6-pyhd8ed1ab_0.tar.bz2#3087df8c636c5a00e694605c39ce4982
 https://conda.anaconda.org/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2#2d1867b980785eb44b8122184d8b42a6
@@ -193,14 +197,16 @@ https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_
 https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76
 https://conda.anaconda.org/conda-forge/noarch/testpath-0.5.0-pyhd8ed1ab_0.tar.bz2#53b57d6a468bebc7cef1253b177a5e9e
 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.0.0-pyh8a188c0_0.tar.bz2#bc3c2909c20635e854f5e533c436cbad
+https://conda.anaconda.org/conda-forge/noarch/tomli-1.2.2-pyhd8ed1ab_0.tar.bz2#1c8a2f9ea18c267414e244cee668cd00
 https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e
 https://conda.anaconda.org/conda-forge/noarch/traitlets-5.1.1-pyhd8ed1ab_0.tar.bz2#a1bc9765ef9499760e88f568b3a6622c
 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72_0.tar.bz2#1fc03816925d3cb7fdab9ab234e7fea7
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2#3cdb89236358326adfce12be820a8af3
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
+https://conda.anaconda.org/conda-forge/noarch/asttokens-2.0.5-pyhd8ed1ab_0.tar.bz2#74badce16f060701fee55c39332f5253
 https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f
 https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py38h578d9bd_1.tar.bz2#52a6cee65a5d10ed1c3f0af24fb48dd3
 https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py38h3931269_0.tar.bz2#9c491a90ae11d08ca97326a0ed876f3a
@@ -214,7 +220,7 @@ https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py38h497a2fe_1.ta
 https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.5.1-py38h709712a_0.tar.bz2#e4562edba9cf178746097668eaac5530
 https://conda.anaconda.org/conda-forge/linux-64/entrypoints-0.3-py38h32f6830_1002.tar.bz2#b76ac7f9e86b4169c3b3003dedd05e87
 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-mpi_mpich_h996c276_1014.tar.bz2#6af2e2e4dfb0ef36c35042cd69a1599d
-https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.0-py38h578d9bd_0.tar.bz2#a2da03ada2e899ae657adf00e2b332b4
+https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.1-py38h578d9bd_0.tar.bz2#26da12e39b1b93e82fb865e967d0cbe0
 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.4.0-pyhd8ed1ab_0.tar.bz2#9fb134dbabe7851a9d71411064b2c30d
 https://conda.anaconda.org/conda-forge/linux-64/jedi-0.18.1-py38h578d9bd_0.tar.bz2#84ca00ec7d71269b633546dc83e0b088
 https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-4.9.1-py38h578d9bd_1.tar.bz2#61eac1660d6bb75978662a457efe948b
@@ -227,6 +233,7 @@ https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.3-pyhd8ed1ab
 https://conda.anaconda.org/conda-forge/linux-64/mistune-0.8.4-py38h497a2fe_1005.tar.bz2#e842470b42e2640e90a3a2e32729bc92
 https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.3-py38h1fd1430_0.tar.bz2#4fb0b4dbc35d06a49d005af728537b57
 https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-py_0.tar.bz2#1073dc92c8f247d94ac14dd79ca0bbec
+https://conda.anaconda.org/conda-forge/linux-64/mypy_extensions-0.4.3-py38h578d9bd_4.tar.bz2#8800523c45d8782e76791d1963f2255a
 https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.0-py38h6ae9a64_0.tar.bz2#0731ced21afb9adab62eb7aaf7abaf1e
 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85
 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651
@@ -246,32 +253,34 @@ https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py38h497a2fe_3.tar.bz
 https://conda.anaconda.org/conda-forge/linux-64/pyzmq-22.3.0-py38h2035c66_1.tar.bz2#3938fa672dbd1762f9134b2026aebadc
 https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2#afebab1f5049d66baaaec67d9ce893f0
 https://conda.anaconda.org/conda-forge/linux-64/rtree-0.9.7-py38h02d302b_3.tar.bz2#ce628142e8aa3732bf08ee2bab4dcc89
-https://conda.anaconda.org/conda-forge/linux-64/setuptools-60.5.0-py38h578d9bd_0.tar.bz2#9807c89f3ce846015dbad3c1d04348a5
+https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.8.0-py38h578d9bd_0.tar.bz2#5c6cd89b15e0059af9dd07cc60a6afbd
 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h497a2fe_2.tar.bz2#63b3b55c98b4239134e0be080f448944
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/linux-64/traits-6.3.2-py38h497a2fe_0.tar.bz2#1e083f3716b67ec9a9b0810083cd82bf
 https://conda.anaconda.org/conda-forge/noarch/traittypes-0.2.1-pyh9f0ad1d_2.tar.bz2#7d32ccb5334a6822c28af3e864550618
+https://conda.anaconda.org/conda-forge/linux-64/typed-ast-1.5.1-py38h497a2fe_0.tar.bz2#71400ad097c4b9683b61d4fa0cf89222
 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py38h497a2fe_0.tar.bz2#8da7787169411910df2a62dc8ef533e0
 https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3
 https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py38h497a2fe_1.tar.bz2#0f28a4d17fcad4332e6eb17d7ce2a2f3
 https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2#c5b3edc62d6309088f4970b3eaaa65a6
+https://conda.anaconda.org/conda-forge/noarch/black-21.12b0-pyhd8ed1ab_0.tar.bz2#a027de51692086f51b9e17735480bebf
 https://conda.anaconda.org/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2#4a2104c7b22c222bd0fe03aaef12862c
 https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h497a2fe_1003.tar.bz2#9189b42c42b9c87b2b2068cbe31901a8
 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.5.1.1-py38h6c62de6_1.tar.bz2#d4a47fd2bbc8292a322d462734b0ada5
 https://conda.anaconda.org/conda-forge/linux-64/cryptography-36.0.1-py38h3e25421_0.tar.bz2#acc14d0d71dbf74f6a15f2456951b6cf
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.28.5-py38h497a2fe_0.tar.bz2#f611d0be8205d5b0566f9c97e7d66ae3
 https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h88c329d_7.tar.bz2#35c46b4f62cf4cec0fe195df1ebedd27
 https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.6.0-h2b14fbe_4.tar.bz2#95731212a74717b0368f9805513f6da7
 https://conda.anaconda.org/conda-forge/noarch/imageio-2.13.1-pyhd8ed1ab_0.tar.bz2#6c99c767bbcbf37b62a4b84a8e2b70b1
 https://conda.anaconda.org/conda-forge/noarch/imageio-ffmpeg-0.4.5-pyhd8ed1ab_0.tar.bz2#36261aceb9f073b789f4d3dbba14c5e6
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/linux-64/itk-5.1.2-py38h578d9bd_0.tar.bz2#640b155e52b39fa7f3ae391662218baf
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.4.0-pyhd8ed1ab_0.tar.bz2#17ec41acce882e5db4efdcc4c01ca7e0
-https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.0-pyhd8ed1ab_0.tar.bz2#c1460cc25b6a86d1b66ab6c3c471b791
+https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.1-pyhd8ed1ab_0.tar.bz2#531f22e91137a4812cb0c864b87fa54e
 https://conda.anaconda.org/conda-forge/linux-64/kealib-1.4.14-hcc255d8_2.tar.bz2#ae7e21f861c37500627f7122df804c26
 https://conda.anaconda.org/conda-forge/linux-64/libdap4-3.20.6-hd7c4107_2.tar.bz2#c265ae57e3acdc891f3e2b93cf6784f5
 https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.7.4-mpi_mpich_hdef422e_7.tar.bz2#7e1544ceea2c644e23140f2bb0b4c48e
@@ -291,12 +300,13 @@ https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py38h0ffb2e6_8.
 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.7.3-py38h56a6a73_0.tar.bz2#2d318049369bb52d2687b0ac2be82751
 https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py38hb7fe4a8_5.tar.bz2#84d4f1c56cdc670e0531baea26dfd16b
 https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a
+https://conda.anaconda.org/conda-forge/noarch/stack_data-0.1.4-pyhd8ed1ab_0.tar.bz2#e68dcab1b415c3c44be2a51d7d41e921
 https://conda.anaconda.org/conda-forge/linux-64/terminado-0.12.1-py38h578d9bd_1.tar.bz2#7895939107a904267a9e5f9678c9b27f
 https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.16.0-py38h497a2fe_2.tar.bz2#8f058c034eb334da71b583933e7581fa
 https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
 https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.4.2-py38h578d9bd_0.tar.bz2#f1a2945767ea115e46809a98c8e66a09
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
-https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.12.0-py38h578d9bd_0.tar.bz2#fbafb689c1ddf3698f19ca6d2455396e
+https://conda.anaconda.org/conda-forge/linux-64/distributed-2022.1.0-py38h578d9bd_0.tar.bz2#7dccad3a685696bcd21093b31c41c053
 https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.21.0-ha0e6eb6_0.tar.bz2#b4468d515e661efb68ab575ca5ca9558
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.1.2-pyh9f0ad1d_0.tar.bz2#2cbd910890bb328e8959246a1e16fac7
@@ -314,10 +324,10 @@ https://conda.anaconda.org/conda-forge/linux-64/vtk-9.0.1-no_osmesa_py38hc2cec6c
 https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee
 https://conda.anaconda.org/conda-forge/noarch/xarray-0.20.2-pyhd8ed1ab_0.tar.bz2#2d3031a02083029eaec5177054d365c9
 https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0.post1-py38hc9c980b_1.tar.bz2#777b33d2e0678182b2a5d2e32dc27248
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-py_4.tar.bz2#32fa3526c15250ccf353f1ce905f50b3
 https://conda.anaconda.org/conda-forge/linux-64/gdal-3.2.1-py38hc0b2d6b_7.tar.bz2#b346f09a3161328c5a73ad12d637820f
-https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2#21554dd9bbabff27ae87f715fee4d56c
+https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.10-pyhd8ed1ab_1.tar.bz2#000cfe33d6fa746c5a9d1b29a79342a3
 https://conda.anaconda.org/conda-forge/noarch/networkx-2.6.3-pyhd8ed1ab_1.tar.bz2#4028eff5a1d3deed58c98774e7aa9891
 https://conda.anaconda.org/conda-forge/linux-64/occt-7.5.3-h7391655_0.tar.bz2#9056e0872da3962ba984e75f35b646cd
 https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.24-pyha770c72_0.tar.bz2#edaf527a6d394e2b965aff228c2e552f
@@ -330,14 +340,15 @@ https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.8-pyhd8ed1ab_1.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.9.1-pyhd8ed1ab_1.tar.bz2#55c037a20ba22e5904348c20c9895268
 https://conda.anaconda.org/conda-forge/linux-64/fiona-1.8.18-py38h58f84aa_1.tar.bz2#47bd73be08703428b4233a568569ee8c
 https://conda.anaconda.org/conda-forge/linux-64/gmsh-4.8.4-h2ad51fa_0.tar.bz2#270d9da9db89c9cf13fc39ace56e6e14
-https://conda.anaconda.org/conda-forge/linux-64/ipython-7.31.0-py38h578d9bd_0.tar.bz2#536057f3863fa7fd9b962e4d5dffa81b
+https://conda.anaconda.org/conda-forge/linux-64/ipython-8.0.0-py38h578d9bd_0.tar.bz2#431ef59ad346f3cd4e7cbff6b1ad87f9
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.1-py38h578d9bd_0.tar.bz2#0d78be9cf1c400ba8e3077cf060492f1
 https://conda.anaconda.org/conda-forge/linux-64/nbconvert-6.4.0-py38h578d9bd_0.tar.bz2#375a8c8f52696c90d9e49b1f313764e0
 https://conda.anaconda.org/conda-forge/noarch/pyface-7.3.0-pyh44b312d_1.tar.bz2#6deb6e9d1bd311a5144039df94d68c4f
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
-https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.6.1-py38he5a9106_0.tar.bz2#baa9acab093a22095487dba83713081b
+https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.7.0-py38he5a9106_0.tar.bz2#4ef8df702308288d7abe1358395988c6
 https://conda.anaconda.org/conda-forge/noarch/moviepy-1.0.1-py_0.tar.bz2#26a0b6c145254ea17a44f3a520fccdb1
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
@@ -357,5 +368,5 @@ https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.6.5-pyhd8ed1ab_0.tar.
 https://conda.anaconda.org/conda-forge/linux-64/mayavi-4.7.2-py38h32b5f5e_4.tar.bz2#ffa239c21fd0a1fae1c503821e7a6ee8
 https://conda.anaconda.org/conda-forge/noarch/geoviews-1.9.3-pyhd8ed1ab_0.tar.bz2#c8a6a006829f9ec22c8b504a5cc07a47
 https://conda.anaconda.org/conda-forge/noarch/ipydatawidgets-4.2.0-pyhd3deb0d_0.tar.bz2#2fa9972333df26f1cedfb659468f1b1e
-https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.5-pyhd8ed1ab_0.tar.bz2#2de1bcc7c5304b61099347a2d28ca317
+https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.6-pyhd8ed1ab_0.tar.bz2#75f80858af1b0fc01f0f6e1e1c4e460e
 https://conda.anaconda.org/conda-forge/linux-64/itkwidgets-0.32.0-py38h32f6830_0.tar.bz2#70faaea5c377d8e5cc12a79bfec1462e
diff --git a/locks/conda-ubuntu-64-p38-openmpi-binary.lock b/locks/conda-ubuntu-64-p38-openmpi-binary.lock
index 99ab098c..feed4b4c 100644
--- a/locks/conda-ubuntu-64-p38-openmpi-binary.lock
+++ b/locks/conda-ubuntu-64-p38-openmpi-binary.lock
@@ -25,7 +25,7 @@ https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.18.1-h7f98852_0.tar.bz2
 https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.1.7-h9c3ff4c_0.tar.bz2#019a56e1a79ed2362d6a61c16f903f59
 https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h4bd325d_0.tar.bz2#61af675be1ebd2ab75ebc70b8687b84d
 https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.2-h9c3ff4c_0.tar.bz2#0fb039650fa638f258fdc9e9ef125f52
-https://conda.anaconda.org/conda-forge/linux-64/geos-3.10.1-h9c3ff4c_1.tar.bz2#17a5f413039ce1e105fab5df9c668eb5
+https://conda.anaconda.org/conda-forge/linux-64/geos-3.10.2-h9c3ff4c_0.tar.bz2#fe9a66a351bfa7a84c3108304c7bcba5
 https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2#b94cf2db16066b242ebd26db2facbd56
 https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa
 https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf
diff --git a/locks/conda-ubuntu-64-p38-openmpi-dev.lock b/locks/conda-ubuntu-64-p38-openmpi-dev.lock
index 8e59de7a..14f79d2d 100644
--- a/locks/conda-ubuntu-64-p38-openmpi-dev.lock
+++ b/locks/conda-ubuntu-64-p38-openmpi-dev.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: linux-64
-# input_hash: 1c6186daebd3833228d1183fc436a37eb800cd5879ce56a0014375779c98ffd8
+# input_hash: 3845087d1661faaf4067aeda1d4b7163faa4c014e446a8be2d19554fd2763163
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26
@@ -144,7 +144,6 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.2.1-h7f98852_2.tar.bz2#60d6eec5273f1c9af096c10c268912e3
 https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33
 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b
-https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d
 https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
 https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
@@ -158,6 +157,7 @@ https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.b
 https://conda.anaconda.org/conda-forge/noarch/decorator-4.4.2-py_0.tar.bz2#d2eabb9cabd212e1ec6a9463bd846243
 https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
 https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2
+https://conda.anaconda.org/conda-forge/noarch/executing-0.8.2-pyhd8ed1ab_0.tar.bz2#dcd884e2cf5bcdccdf78f7db35999d62
 https://conda.anaconda.org/conda-forge/noarch/f90nml-1.3.1-pyhd8ed1ab_0.tar.bz2#b4bda9ec19f8e393103e2c3cb1ed2061
 https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-4.4.1-h6987444_0.tar.bz2#0439dda1c3494c6dd9c06ed002aa7a6c
 https://conda.anaconda.org/conda-forge/noarch/filelock-3.4.2-pyhd8ed1ab_1.tar.bz2#d3f5797d3f9625c64860c93fc4359e64
@@ -168,7 +168,7 @@ https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/linux-64/glew-2.1.0-h9c3ff4c_2.tar.bz2#fb05eb5c47590b247658243d27fc32f1
 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.5-hf529b03_3.tar.bz2#524a9f1718bac53a6cf4906bcc51d044
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905
 https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.0.2-pyhd8ed1ab_0.tar.bz2#eaff56fe28d1236076aa3bb13c35b434
@@ -188,6 +188,7 @@ https://conda.anaconda.org/conda-forge/noarch/pathspec-0.9.0-pyhd8ed1ab_0.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/platformdirs-2.3.0-pyhd8ed1ab_0.tar.bz2#7bc119135be2a43e1701432399d8c28a
 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.12.0-pyhd8ed1ab_0.tar.bz2#d7b366cccdf2c1e8ebdddbfff7c2ba00
 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
+https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.1-pyhd8ed1ab_1.tar.bz2#2e7e2ccd3adc16f7babfbf8bc7d88da9
 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054
 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.6-pyhd8ed1ab_0.tar.bz2#3087df8c636c5a00e694605c39ce4982
@@ -209,8 +210,9 @@ https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2#3cdb89236358326adfce12be820a8af3
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
+https://conda.anaconda.org/conda-forge/noarch/asttokens-2.0.5-pyhd8ed1ab_0.tar.bz2#74badce16f060701fee55c39332f5253
 https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f
 https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py38h578d9bd_1.tar.bz2#52a6cee65a5d10ed1c3f0af24fb48dd3
 https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py38h3931269_0.tar.bz2#9c491a90ae11d08ca97326a0ed876f3a
@@ -226,7 +228,7 @@ https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py38h497a2fe_1.ta
 https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.5.1-py38h709712a_0.tar.bz2#e4562edba9cf178746097668eaac5530
 https://conda.anaconda.org/conda-forge/linux-64/entrypoints-0.3-py38h32f6830_1002.tar.bz2#b76ac7f9e86b4169c3b3003dedd05e87
 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-mpi_openmpi_hd9270da_1014.tar.bz2#25cea8eb6593a8c29b1700f876b94f42
-https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.0-py38h578d9bd_0.tar.bz2#a2da03ada2e899ae657adf00e2b332b4
+https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.1-py38h578d9bd_0.tar.bz2#26da12e39b1b93e82fb865e967d0cbe0
 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.4.0-pyhd8ed1ab_0.tar.bz2#9fb134dbabe7851a9d71411064b2c30d
 https://conda.anaconda.org/conda-forge/linux-64/jedi-0.18.1-py38h578d9bd_0.tar.bz2#84ca00ec7d71269b633546dc83e0b088
 https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-4.9.1-py38h578d9bd_1.tar.bz2#61eac1660d6bb75978662a457efe948b
@@ -262,7 +264,7 @@ https://conda.anaconda.org/conda-forge/linux-64/pyzmq-22.3.0-py38h2035c66_1.tar.
 https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2#afebab1f5049d66baaaec67d9ce893f0
 https://conda.anaconda.org/conda-forge/linux-64/rtree-0.9.7-py38h02d302b_3.tar.bz2#ce628142e8aa3732bf08ee2bab4dcc89
 https://conda.anaconda.org/conda-forge/linux-64/ruamel_yaml-0.15.80-py38h497a2fe_1006.tar.bz2#0fa769ad0e02eac70eed789064f524dd
-https://conda.anaconda.org/conda-forge/linux-64/setuptools-60.5.0-py38h578d9bd_0.tar.bz2#9807c89f3ce846015dbad3c1d04348a5
+https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.8.0-py38h578d9bd_0.tar.bz2#5c6cd89b15e0059af9dd07cc60a6afbd
 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h497a2fe_2.tar.bz2#63b3b55c98b4239134e0be080f448944
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/linux-64/traits-6.3.2-py38h497a2fe_0.tar.bz2#1e083f3716b67ec9a9b0810083cd82bf
@@ -279,19 +281,19 @@ https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h497a2fe_1003
 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.5.1.1-py38h6c62de6_1.tar.bz2#d4a47fd2bbc8292a322d462734b0ada5
 https://conda.anaconda.org/conda-forge/linux-64/conda-package-handling-1.7.3-py38h497a2fe_1.tar.bz2#58cfec665a31b0a5a339c0115c7d6d9e
 https://conda.anaconda.org/conda-forge/linux-64/cryptography-36.0.1-py38h3e25421_0.tar.bz2#acc14d0d71dbf74f6a15f2456951b6cf
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.28.5-py38h497a2fe_0.tar.bz2#f611d0be8205d5b0566f9c97e7d66ae3
 https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h88c329d_7.tar.bz2#35c46b4f62cf4cec0fe195df1ebedd27
 https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.6.0-h2b14fbe_4.tar.bz2#95731212a74717b0368f9805513f6da7
 https://conda.anaconda.org/conda-forge/noarch/imageio-2.13.1-pyhd8ed1ab_0.tar.bz2#6c99c767bbcbf37b62a4b84a8e2b70b1
 https://conda.anaconda.org/conda-forge/noarch/imageio-ffmpeg-0.4.5-pyhd8ed1ab_0.tar.bz2#36261aceb9f073b789f4d3dbba14c5e6
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/linux-64/itk-5.1.2-py38h578d9bd_0.tar.bz2#640b155e52b39fa7f3ae391662218baf
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.4.0-pyhd8ed1ab_0.tar.bz2#17ec41acce882e5db4efdcc4c01ca7e0
-https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.0-pyhd8ed1ab_0.tar.bz2#c1460cc25b6a86d1b66ab6c3c471b791
+https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.1-pyhd8ed1ab_0.tar.bz2#531f22e91137a4812cb0c864b87fa54e
 https://conda.anaconda.org/conda-forge/linux-64/kealib-1.4.14-hcc255d8_2.tar.bz2#ae7e21f861c37500627f7122df804c26
 https://conda.anaconda.org/conda-forge/linux-64/libdap4-3.20.6-hd7c4107_2.tar.bz2#c265ae57e3acdc891f3e2b93cf6784f5
 https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.7.4-mpi_openmpi_hfaf6618_7.tar.bz2#ea1cdab31a75c9e35f7f483d5fb9ca14
@@ -313,12 +315,13 @@ https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py38h578d9bd_2.tar.
 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.7.3-py38h56a6a73_0.tar.bz2#2d318049369bb52d2687b0ac2be82751
 https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py38hb7fe4a8_5.tar.bz2#84d4f1c56cdc670e0531baea26dfd16b
 https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a
+https://conda.anaconda.org/conda-forge/noarch/stack_data-0.1.4-pyhd8ed1ab_0.tar.bz2#e68dcab1b415c3c44be2a51d7d41e921
 https://conda.anaconda.org/conda-forge/linux-64/terminado-0.12.1-py38h578d9bd_1.tar.bz2#7895939107a904267a9e5f9678c9b27f
 https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.16.0-py38h497a2fe_2.tar.bz2#8f058c034eb334da71b583933e7581fa
 https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
 https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.4.2-py38h578d9bd_0.tar.bz2#f1a2945767ea115e46809a98c8e66a09
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
-https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.12.0-py38h578d9bd_0.tar.bz2#fbafb689c1ddf3698f19ca6d2455396e
+https://conda.anaconda.org/conda-forge/linux-64/distributed-2022.1.0-py38h578d9bd_0.tar.bz2#7dccad3a685696bcd21093b31c41c053
 https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.21.0-ha0e6eb6_0.tar.bz2#b4468d515e661efb68ab575ca5ca9558
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.1.2-pyh9f0ad1d_0.tar.bz2#2cbd910890bb328e8959246a1e16fac7
@@ -338,10 +341,10 @@ https://conda.anaconda.org/conda-forge/linux-64/vtk-9.0.1-no_osmesa_py38hc2cec6c
 https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee
 https://conda.anaconda.org/conda-forge/noarch/xarray-0.20.2-pyhd8ed1ab_0.tar.bz2#2d3031a02083029eaec5177054d365c9
 https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0.post1-py38hc9c980b_1.tar.bz2#777b33d2e0678182b2a5d2e32dc27248
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-py_4.tar.bz2#32fa3526c15250ccf353f1ce905f50b3
 https://conda.anaconda.org/conda-forge/linux-64/gdal-3.2.1-py38hc0b2d6b_7.tar.bz2#b346f09a3161328c5a73ad12d637820f
-https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2#21554dd9bbabff27ae87f715fee4d56c
+https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.10-pyhd8ed1ab_1.tar.bz2#000cfe33d6fa746c5a9d1b29a79342a3
 https://conda.anaconda.org/conda-forge/noarch/networkx-2.6.3-pyhd8ed1ab_1.tar.bz2#4028eff5a1d3deed58c98774e7aa9891
 https://conda.anaconda.org/conda-forge/linux-64/occt-7.5.3-h7391655_0.tar.bz2#9056e0872da3962ba984e75f35b646cd
 https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.24-pyha770c72_0.tar.bz2#edaf527a6d394e2b965aff228c2e552f
@@ -355,16 +358,17 @@ https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.8-pyhd8ed1ab_1.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.9.1-pyhd8ed1ab_1.tar.bz2#55c037a20ba22e5904348c20c9895268
 https://conda.anaconda.org/conda-forge/linux-64/fiona-1.8.18-py38h58f84aa_1.tar.bz2#47bd73be08703428b4233a568569ee8c
 https://conda.anaconda.org/conda-forge/linux-64/gmsh-4.8.4-h2ad51fa_0.tar.bz2#270d9da9db89c9cf13fc39ace56e6e14
-https://conda.anaconda.org/conda-forge/linux-64/ipython-7.31.0-py38h578d9bd_0.tar.bz2#536057f3863fa7fd9b962e4d5dffa81b
+https://conda.anaconda.org/conda-forge/linux-64/ipython-8.0.0-py38h578d9bd_0.tar.bz2#431ef59ad346f3cd4e7cbff6b1ad87f9
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.1-py38h578d9bd_0.tar.bz2#0d78be9cf1c400ba8e3077cf060492f1
 https://conda.anaconda.org/conda-forge/linux-64/nbconvert-6.4.0-py38h578d9bd_0.tar.bz2#375a8c8f52696c90d9e49b1f313764e0
 https://conda.anaconda.org/conda-forge/noarch/pyface-7.3.0-pyh44b312d_1.tar.bz2#6deb6e9d1bd311a5144039df94d68c4f
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/linux-64/conda-4.11.0-py38h578d9bd_0.tar.bz2#fa91a8365f0b39995fcfabf7e945ff02
 https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.1-pyhd8ed1ab_0.tar.bz2#52a7f7cc9076e2c8a25e15e19ad42821
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
-https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.6.1-py38he5a9106_0.tar.bz2#baa9acab093a22095487dba83713081b
+https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.7.0-py38he5a9106_0.tar.bz2#4ef8df702308288d7abe1358395988c6
 https://conda.anaconda.org/conda-forge/noarch/moviepy-1.0.1-py_0.tar.bz2#26a0b6c145254ea17a44f3a520fccdb1
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
@@ -372,7 +376,7 @@ https://conda.anaconda.org/conda-forge/noarch/traitsui-7.2.0-pyhd8ed1ab_0.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/apptools-5.1.0-pyh44b312d_0.tar.bz2#67f86126bb65837378ddd31caff9f420
 https://conda.anaconda.org/conda-forge/noarch/colorcet-3.0.0-pyhd8ed1ab_0.tar.bz2#a0e9e38c882d910825389de5371c5429
 https://conda.anaconda.org/conda-forge/noarch/conda-lock-0.13.2-pyhd8ed1ab_0.tar.bz2#4fa525b4257e4938eaeb2269fdf33d1f
-https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.0.4-pyhd8ed1ab_0.tar.bz2#2bf87d7493a87de0c0814b0bd499e040
+https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.0.5-pyhd8ed1ab_0.tar.bz2#74c9c60684e578fb92b27df42846b733
 https://conda.anaconda.org/conda-forge/noarch/geopandas-0.10.2-pyhd8ed1ab_1.tar.bz2#0682614964c1319304cfa554cbce90f0
 https://conda.anaconda.org/conda-forge/noarch/notebook-6.4.7-pyha770c72_0.tar.bz2#8bf6e732d753521a06571d1efe8e58f2
 https://conda.anaconda.org/conda-forge/noarch/panel-0.12.6-pyhd8ed1ab_0.tar.bz2#d035684ee51bef1c2b797c280f7713da
@@ -386,5 +390,5 @@ https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.6.5-pyhd8ed1ab_0.tar.
 https://conda.anaconda.org/conda-forge/linux-64/mayavi-4.7.2-py38h32b5f5e_4.tar.bz2#ffa239c21fd0a1fae1c503821e7a6ee8
 https://conda.anaconda.org/conda-forge/noarch/geoviews-1.9.3-pyhd8ed1ab_0.tar.bz2#c8a6a006829f9ec22c8b504a5cc07a47
 https://conda.anaconda.org/conda-forge/noarch/ipydatawidgets-4.2.0-pyhd3deb0d_0.tar.bz2#2fa9972333df26f1cedfb659468f1b1e
-https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.5-pyhd8ed1ab_0.tar.bz2#2de1bcc7c5304b61099347a2d28ca317
+https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.6-pyhd8ed1ab_0.tar.bz2#75f80858af1b0fc01f0f6e1e1c4e460e
 https://conda.anaconda.org/conda-forge/linux-64/itkwidgets-0.32.0-py38h32f6830_0.tar.bz2#70faaea5c377d8e5cc12a79bfec1462e
diff --git a/locks/conda-ubuntu-64-p38-openmpi-no_viz.lock b/locks/conda-ubuntu-64-p38-openmpi-no_viz.lock
index 94462eae..b04ee3d0 100644
--- a/locks/conda-ubuntu-64-p38-openmpi-no_viz.lock
+++ b/locks/conda-ubuntu-64-p38-openmpi-no_viz.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: linux-64
-# input_hash: 6558a98ea415bf8ec14d12c0a6ddb00d477743b776c451f708c7656787ef6503
+# input_hash: 5da9ef8efec4252453bdf4c8306c660382732a18be9cc584ae596cf3e3b308db
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26
@@ -154,7 +154,7 @@ https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/linux-64/glew-2.1.0-h9c3ff4c_2.tar.bz2#fb05eb5c47590b247658243d27fc32f1
 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.5-hf529b03_3.tar.bz2#524a9f1718bac53a6cf4906bcc51d044
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f
 https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.81.0-h2574ce0_0.tar.bz2#1f8655741d0269ca6756f131522da1e8
 https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h238a007_1014.tar.bz2#abd8e196ad04781818acef26cc451d66
@@ -178,7 +178,7 @@ https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2#3cdb89236358326adfce12be820a8af3
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
 https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f
 https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py38h578d9bd_1.tar.bz2#52a6cee65a5d10ed1c3f0af24fb48dd3
@@ -191,7 +191,7 @@ https://conda.anaconda.org/conda-forge/noarch/configobj-5.0.6-py_0.tar.bz2#e46ba
 https://conda.anaconda.org/conda-forge/linux-64/curl-7.81.0-h2574ce0_0.tar.bz2#3a95d393b490f82aa406f1892fad84d9
 https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py38h497a2fe_1.tar.bz2#297a4d01b5c58b4ee47c326b2a3ed6ce
 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-mpi_openmpi_hd9270da_1014.tar.bz2#25cea8eb6593a8c29b1700f876b94f42
-https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.0-py38h578d9bd_0.tar.bz2#a2da03ada2e899ae657adf00e2b332b4
+https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.1-py38h578d9bd_0.tar.bz2#26da12e39b1b93e82fb865e967d0cbe0
 https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.2-py38h1fd1430_1.tar.bz2#085365abfe53d5d13bb68b1dda0b439e
 https://conda.anaconda.org/conda-forge/linux-64/libraw-0.20.2-h10796ff_1.tar.bz2#29b53db51008dedb27cd123b9a3bdd8f
 https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.36.0-py38h4630a5e_0.tar.bz2#a805cb9a530a6524f7f832cce981fa0e
@@ -214,7 +214,7 @@ https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-2.1.0-pyhd8ed1ab_0.tar
 https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py38h497a2fe_3.tar.bz2#131de7d638aa59fb8afbce59f1a8aa98
 https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2#afebab1f5049d66baaaec67d9ce893f0
 https://conda.anaconda.org/conda-forge/linux-64/rtree-0.9.7-py38h02d302b_3.tar.bz2#ce628142e8aa3732bf08ee2bab4dcc89
-https://conda.anaconda.org/conda-forge/linux-64/setuptools-60.5.0-py38h578d9bd_0.tar.bz2#9807c89f3ce846015dbad3c1d04348a5
+https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.8.0-py38h578d9bd_0.tar.bz2#5c6cd89b15e0059af9dd07cc60a6afbd
 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h497a2fe_2.tar.bz2#63b3b55c98b4239134e0be080f448944
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py38h497a2fe_0.tar.bz2#8da7787169411910df2a62dc8ef533e0
@@ -223,12 +223,12 @@ https://conda.anaconda.org/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2#
 https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h497a2fe_1003.tar.bz2#9189b42c42b9c87b2b2068cbe31901a8
 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.5.1.1-py38h6c62de6_1.tar.bz2#d4a47fd2bbc8292a322d462734b0ada5
 https://conda.anaconda.org/conda-forge/linux-64/cryptography-36.0.1-py38h3e25421_0.tar.bz2#acc14d0d71dbf74f6a15f2456951b6cf
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.28.5-py38h497a2fe_0.tar.bz2#f611d0be8205d5b0566f9c97e7d66ae3
 https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h88c329d_7.tar.bz2#35c46b4f62cf4cec0fe195df1ebedd27
 https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.6.0-h2b14fbe_4.tar.bz2#95731212a74717b0368f9805513f6da7
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/linux-64/kealib-1.4.14-hcc255d8_2.tar.bz2#ae7e21f861c37500627f7122df804c26
@@ -250,7 +250,7 @@ https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py38hb7fe4a8_5.tar
 https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a
 https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.4.2-py38h578d9bd_0.tar.bz2#f1a2945767ea115e46809a98c8e66a09
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
-https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.12.0-py38h578d9bd_0.tar.bz2#fbafb689c1ddf3698f19ca6d2455396e
+https://conda.anaconda.org/conda-forge/linux-64/distributed-2022.1.0-py38h578d9bd_0.tar.bz2#7dccad3a685696bcd21093b31c41c053
 https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.21.0-ha0e6eb6_0.tar.bz2#b4468d515e661efb68ab575ca5ca9558
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.2.1-h38ff51b_7.tar.bz2#8c7d74656d2b87874f1bfc631ca97d46
@@ -265,7 +265,7 @@ https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.0.2-py38h1561384_
 https://conda.anaconda.org/conda-forge/linux-64/vtk-9.0.1-no_osmesa_py38hc2cec6c_106.tar.bz2#7e59612d3bf0e852c4422078b9f7b46e
 https://conda.anaconda.org/conda-forge/noarch/xarray-0.20.2-pyhd8ed1ab_0.tar.bz2#2d3031a02083029eaec5177054d365c9
 https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0.post1-py38hc9c980b_1.tar.bz2#777b33d2e0678182b2a5d2e32dc27248
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/linux-64/gdal-3.2.1-py38hc0b2d6b_7.tar.bz2#b346f09a3161328c5a73ad12d637820f
 https://conda.anaconda.org/conda-forge/noarch/networkx-2.6.3-pyhd8ed1ab_1.tar.bz2#4028eff5a1d3deed58c98774e7aa9891
 https://conda.anaconda.org/conda-forge/linux-64/occt-7.5.3-h7391655_0.tar.bz2#9056e0872da3962ba984e75f35b646cd
@@ -280,6 +280,7 @@ https://conda.anaconda.org/conda-forge/linux-64/gmsh-4.8.4-h2ad51fa_0.tar.bz2#27
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.1-py38h578d9bd_0.tar.bz2#0d78be9cf1c400ba8e3077cf060492f1
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
diff --git a/locks/conda-ubuntu-64-p38-openmpi-viz.lock b/locks/conda-ubuntu-64-p38-openmpi-viz.lock
index 954d9836..c3091c8f 100644
--- a/locks/conda-ubuntu-64-p38-openmpi-viz.lock
+++ b/locks/conda-ubuntu-64-p38-openmpi-viz.lock
@@ -1,6 +1,6 @@
 # Generated by conda-lock.
 # platform: linux-64
-# input_hash: 65e15480f164a3cb72d5ff991d073c0839ec40e6a7237f5e9f1c19467055902a
+# input_hash: c3f849ff280237a6a8e0c6bdd5efddfeb2397ab7493cf2f77588c1a25511927a
 @EXPLICIT
 https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26
@@ -144,7 +144,6 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.2.1-h7f98852_2.tar.bz2#60d6eec5273f1c9af096c10c268912e3
 https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33
 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b
-https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d
 https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
 https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
@@ -153,8 +152,10 @@ https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#b
 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.0.0-pyhd8ed1ab_0.tar.bz2#3a8fc8b627d5fb6af827e126a10a86c6
 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f
 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb
+https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d
 https://conda.anaconda.org/conda-forge/noarch/decorator-4.4.2-py_0.tar.bz2#d2eabb9cabd212e1ec6a9463bd846243
 https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
+https://conda.anaconda.org/conda-forge/noarch/executing-0.8.2-pyhd8ed1ab_0.tar.bz2#dcd884e2cf5bcdccdf78f7db35999d62
 https://conda.anaconda.org/conda-forge/noarch/f90nml-1.3.1-pyhd8ed1ab_0.tar.bz2#b4bda9ec19f8e393103e2c3cb1ed2061
 https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-4.4.1-h6987444_0.tar.bz2#0439dda1c3494c6dd9c06ed002aa7a6c
 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.0.2-pyhd8ed1ab_0.tar.bz2#c2a60dd9f1210b8ee2037f7d0ec6251a
@@ -164,7 +165,7 @@ https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/linux-64/glew-2.1.0-h9c3ff4c_2.tar.bz2#fb05eb5c47590b247658243d27fc32f1
 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.5-hf529b03_3.tar.bz2#524a9f1718bac53a6cf4906bcc51d044
 https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95
-https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0
+https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
 https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.0.2-pyhd8ed1ab_0.tar.bz2#eaff56fe28d1236076aa3bb13c35b434
 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f
@@ -179,8 +180,11 @@ https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
 https://conda.anaconda.org/conda-forge/noarch/param-1.12.0-pyh6c4a22f_0.tar.bz2#fe68d614336ad99a3bede46e0c6ca26b
 https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
+https://conda.anaconda.org/conda-forge/noarch/pathspec-0.9.0-pyhd8ed1ab_0.tar.bz2#f93dc0ccbc0a8472624165f6e256c7d1
+https://conda.anaconda.org/conda-forge/noarch/platformdirs-2.3.0-pyhd8ed1ab_0.tar.bz2#7bc119135be2a43e1701432399d8c28a
 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.12.0-pyhd8ed1ab_0.tar.bz2#d7b366cccdf2c1e8ebdddbfff7c2ba00
 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
+https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.1-pyhd8ed1ab_1.tar.bz2#2e7e2ccd3adc16f7babfbf8bc7d88da9
 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.6-pyhd8ed1ab_0.tar.bz2#3087df8c636c5a00e694605c39ce4982
 https://conda.anaconda.org/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2#2d1867b980785eb44b8122184d8b42a6
@@ -193,14 +197,16 @@ https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_
 https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76
 https://conda.anaconda.org/conda-forge/noarch/testpath-0.5.0-pyhd8ed1ab_0.tar.bz2#53b57d6a468bebc7cef1253b177a5e9e
 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.0.0-pyh8a188c0_0.tar.bz2#bc3c2909c20635e854f5e533c436cbad
+https://conda.anaconda.org/conda-forge/noarch/tomli-1.2.2-pyhd8ed1ab_0.tar.bz2#1c8a2f9ea18c267414e244cee668cd00
 https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e
 https://conda.anaconda.org/conda-forge/noarch/traitlets-5.1.1-pyhd8ed1ab_0.tar.bz2#a1bc9765ef9499760e88f568b3a6622c
 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72_0.tar.bz2#1fc03816925d3cb7fdab9ab234e7fea7
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2#3cdb89236358326adfce12be820a8af3
-https://conda.anaconda.org/conda-forge/noarch/xyzservices-2021.11.0-pyhd8ed1ab_1.tar.bz2#878f8cf0d35d85483a11fdcb4e164eca
+https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.1.0-pyhd8ed1ab_0.tar.bz2#d2abe963cc50857cb9542d91165da42d
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.7.0-pyhd8ed1ab_0.tar.bz2#947f7f41958eabc0f6e886557512bb76
+https://conda.anaconda.org/conda-forge/noarch/asttokens-2.0.5-pyhd8ed1ab_0.tar.bz2#74badce16f060701fee55c39332f5253
 https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f
 https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py38h578d9bd_1.tar.bz2#52a6cee65a5d10ed1c3f0af24fb48dd3
 https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py38h3931269_0.tar.bz2#9c491a90ae11d08ca97326a0ed876f3a
@@ -214,7 +220,7 @@ https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py38h497a2fe_1.ta
 https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.5.1-py38h709712a_0.tar.bz2#e4562edba9cf178746097668eaac5530
 https://conda.anaconda.org/conda-forge/linux-64/entrypoints-0.3-py38h32f6830_1002.tar.bz2#b76ac7f9e86b4169c3b3003dedd05e87
 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-mpi_openmpi_hd9270da_1014.tar.bz2#25cea8eb6593a8c29b1700f876b94f42
-https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.0-py38h578d9bd_0.tar.bz2#a2da03ada2e899ae657adf00e2b332b4
+https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.10.1-py38h578d9bd_0.tar.bz2#26da12e39b1b93e82fb865e967d0cbe0
 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.4.0-pyhd8ed1ab_0.tar.bz2#9fb134dbabe7851a9d71411064b2c30d
 https://conda.anaconda.org/conda-forge/linux-64/jedi-0.18.1-py38h578d9bd_0.tar.bz2#84ca00ec7d71269b633546dc83e0b088
 https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-4.9.1-py38h578d9bd_1.tar.bz2#61eac1660d6bb75978662a457efe948b
@@ -227,6 +233,7 @@ https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.3-pyhd8ed1ab
 https://conda.anaconda.org/conda-forge/linux-64/mistune-0.8.4-py38h497a2fe_1005.tar.bz2#e842470b42e2640e90a3a2e32729bc92
 https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.3-py38h1fd1430_0.tar.bz2#4fb0b4dbc35d06a49d005af728537b57
 https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-py_0.tar.bz2#1073dc92c8f247d94ac14dd79ca0bbec
+https://conda.anaconda.org/conda-forge/linux-64/mypy_extensions-0.4.3-py38h578d9bd_4.tar.bz2#8800523c45d8782e76791d1963f2255a
 https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.0-py38h6ae9a64_0.tar.bz2#0731ced21afb9adab62eb7aaf7abaf1e
 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85
 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651
@@ -246,32 +253,34 @@ https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py38h497a2fe_3.tar.bz
 https://conda.anaconda.org/conda-forge/linux-64/pyzmq-22.3.0-py38h2035c66_1.tar.bz2#3938fa672dbd1762f9134b2026aebadc
 https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2#afebab1f5049d66baaaec67d9ce893f0
 https://conda.anaconda.org/conda-forge/linux-64/rtree-0.9.7-py38h02d302b_3.tar.bz2#ce628142e8aa3732bf08ee2bab4dcc89
-https://conda.anaconda.org/conda-forge/linux-64/setuptools-60.5.0-py38h578d9bd_0.tar.bz2#9807c89f3ce846015dbad3c1d04348a5
+https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.8.0-py38h578d9bd_0.tar.bz2#5c6cd89b15e0059af9dd07cc60a6afbd
 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h497a2fe_2.tar.bz2#63b3b55c98b4239134e0be080f448944
 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.3-pyhd8ed1ab_0.tar.bz2#24ed42db084efd6e615babec03c2b460
 https://conda.anaconda.org/conda-forge/linux-64/traits-6.3.2-py38h497a2fe_0.tar.bz2#1e083f3716b67ec9a9b0810083cd82bf
 https://conda.anaconda.org/conda-forge/noarch/traittypes-0.2.1-pyh9f0ad1d_2.tar.bz2#7d32ccb5334a6822c28af3e864550618
+https://conda.anaconda.org/conda-forge/linux-64/typed-ast-1.5.1-py38h497a2fe_0.tar.bz2#71400ad097c4b9683b61d4fa0cf89222
 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py38h497a2fe_0.tar.bz2#8da7787169411910df2a62dc8ef533e0
 https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3
 https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py38h497a2fe_1.tar.bz2#0f28a4d17fcad4332e6eb17d7ce2a2f3
 https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2#c5b3edc62d6309088f4970b3eaaa65a6
+https://conda.anaconda.org/conda-forge/noarch/black-21.12b0-pyhd8ed1ab_0.tar.bz2#a027de51692086f51b9e17735480bebf
 https://conda.anaconda.org/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2#4a2104c7b22c222bd0fe03aaef12862c
 https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h497a2fe_1003.tar.bz2#9189b42c42b9c87b2b2068cbe31901a8
 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.5.1.1-py38h6c62de6_1.tar.bz2#d4a47fd2bbc8292a322d462734b0ada5
 https://conda.anaconda.org/conda-forge/linux-64/cryptography-36.0.1-py38h3e25421_0.tar.bz2#acc14d0d71dbf74f6a15f2456951b6cf
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.1.0-pyhd8ed1ab_0.tar.bz2#e7d934ff2c617f0bfc62ab77c160f093
 https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5
 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.28.5-py38h497a2fe_0.tar.bz2#f611d0be8205d5b0566f9c97e7d66ae3
 https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h88c329d_7.tar.bz2#35c46b4f62cf4cec0fe195df1ebedd27
 https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.6.0-h2b14fbe_4.tar.bz2#95731212a74717b0368f9805513f6da7
 https://conda.anaconda.org/conda-forge/noarch/imageio-2.13.1-pyhd8ed1ab_0.tar.bz2#6c99c767bbcbf37b62a4b84a8e2b70b1
 https://conda.anaconda.org/conda-forge/noarch/imageio-ffmpeg-0.4.5-pyhd8ed1ab_0.tar.bz2#36261aceb9f073b789f4d3dbba14c5e6
-https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.0-hd8ed1ab_0.tar.bz2#1de4b4503b2803c1b0fcba6bb91ab274
+https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.10.1-hd8ed1ab_0.tar.bz2#8b697395da07034264bd83481ea7b3b8
 https://conda.anaconda.org/conda-forge/linux-64/itk-5.1.2-py38h578d9bd_0.tar.bz2#640b155e52b39fa7f3ae391662218baf
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2
 https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.4.0-pyhd8ed1ab_0.tar.bz2#17ec41acce882e5db4efdcc4c01ca7e0
-https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.0-pyhd8ed1ab_0.tar.bz2#c1460cc25b6a86d1b66ab6c3c471b791
+https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.1-pyhd8ed1ab_0.tar.bz2#531f22e91137a4812cb0c864b87fa54e
 https://conda.anaconda.org/conda-forge/linux-64/kealib-1.4.14-hcc255d8_2.tar.bz2#ae7e21f861c37500627f7122df804c26
 https://conda.anaconda.org/conda-forge/linux-64/libdap4-3.20.6-hd7c4107_2.tar.bz2#c265ae57e3acdc891f3e2b93cf6784f5
 https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.7.4-mpi_openmpi_hfaf6618_7.tar.bz2#ea1cdab31a75c9e35f7f483d5fb9ca14
@@ -291,12 +300,13 @@ https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py38h0ffb2e6_8.
 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.7.3-py38h56a6a73_0.tar.bz2#2d318049369bb52d2687b0ac2be82751
 https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py38hb7fe4a8_5.tar.bz2#84d4f1c56cdc670e0531baea26dfd16b
 https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a
+https://conda.anaconda.org/conda-forge/noarch/stack_data-0.1.4-pyhd8ed1ab_0.tar.bz2#e68dcab1b415c3c44be2a51d7d41e921
 https://conda.anaconda.org/conda-forge/linux-64/terminado-0.12.1-py38h578d9bd_1.tar.bz2#7895939107a904267a9e5f9678c9b27f
 https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.16.0-py38h497a2fe_2.tar.bz2#8f058c034eb334da71b583933e7581fa
 https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
 https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.4.2-py38h578d9bd_0.tar.bz2#f1a2945767ea115e46809a98c8e66a09
 https://conda.anaconda.org/conda-forge/noarch/branca-0.4.2-pyhd8ed1ab_0.tar.bz2#836c975d3ae4f21c3cd047c10b15a7cf
-https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.12.0-py38h578d9bd_0.tar.bz2#fbafb689c1ddf3698f19ca6d2455396e
+https://conda.anaconda.org/conda-forge/linux-64/distributed-2022.1.0-py38h578d9bd_0.tar.bz2#7dccad3a685696bcd21093b31c41c053
 https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.21.0-ha0e6eb6_0.tar.bz2#b4468d515e661efb68ab575ca5ca9558
 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.10.2-pyha770c72_1.tar.bz2#10584badfcd9fa04e6fc9a4d5dad1513
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.1.2-pyh9f0ad1d_0.tar.bz2#2cbd910890bb328e8959246a1e16fac7
@@ -314,10 +324,10 @@ https://conda.anaconda.org/conda-forge/linux-64/vtk-9.0.1-no_osmesa_py38hc2cec6c
 https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee
 https://conda.anaconda.org/conda-forge/noarch/xarray-0.20.2-pyhd8ed1ab_0.tar.bz2#2d3031a02083029eaec5177054d365c9
 https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0.post1-py38hc9c980b_1.tar.bz2#777b33d2e0678182b2a5d2e32dc27248
-https://conda.anaconda.org/conda-forge/noarch/dask-2021.12.0-pyhd8ed1ab_0.tar.bz2#87242166e63fd1da7222d45ef138620b
+https://conda.anaconda.org/conda-forge/noarch/dask-2022.1.0-pyhd8ed1ab_0.tar.bz2#e132dd5e091741b6c8a6b858ee87c322
 https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-py_4.tar.bz2#32fa3526c15250ccf353f1ce905f50b3
 https://conda.anaconda.org/conda-forge/linux-64/gdal-3.2.1-py38hc0b2d6b_7.tar.bz2#b346f09a3161328c5a73ad12d637820f
-https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2#21554dd9bbabff27ae87f715fee4d56c
+https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.10-pyhd8ed1ab_1.tar.bz2#000cfe33d6fa746c5a9d1b29a79342a3
 https://conda.anaconda.org/conda-forge/noarch/networkx-2.6.3-pyhd8ed1ab_1.tar.bz2#4028eff5a1d3deed58c98774e7aa9891
 https://conda.anaconda.org/conda-forge/linux-64/occt-7.5.3-h7391655_0.tar.bz2#9056e0872da3962ba984e75f35b646cd
 https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.24-pyha770c72_0.tar.bz2#edaf527a6d394e2b965aff228c2e552f
@@ -330,14 +340,15 @@ https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.8-pyhd8ed1ab_1.tar.bz
 https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.9.1-pyhd8ed1ab_1.tar.bz2#55c037a20ba22e5904348c20c9895268
 https://conda.anaconda.org/conda-forge/linux-64/fiona-1.8.18-py38h58f84aa_1.tar.bz2#47bd73be08703428b4233a568569ee8c
 https://conda.anaconda.org/conda-forge/linux-64/gmsh-4.8.4-h2ad51fa_0.tar.bz2#270d9da9db89c9cf13fc39ace56e6e14
-https://conda.anaconda.org/conda-forge/linux-64/ipython-7.31.0-py38h578d9bd_0.tar.bz2#536057f3863fa7fd9b962e4d5dffa81b
+https://conda.anaconda.org/conda-forge/linux-64/ipython-8.0.0-py38h578d9bd_0.tar.bz2#431ef59ad346f3cd4e7cbff6b1ad87f9
 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1
 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.1-py38h578d9bd_0.tar.bz2#0d78be9cf1c400ba8e3077cf060492f1
 https://conda.anaconda.org/conda-forge/linux-64/nbconvert-6.4.0-py38h578d9bd_0.tar.bz2#375a8c8f52696c90d9e49b1f313764e0
 https://conda.anaconda.org/conda-forge/noarch/pyface-7.3.0-pyh44b312d_1.tar.bz2#6deb6e9d1bd311a5144039df94d68c4f
 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
+https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.9.1-pyhd8ed1ab_0.tar.bz2#130d1ac8b3860faebf3b19908c3d7937
 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058
-https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.6.1-py38he5a9106_0.tar.bz2#baa9acab093a22095487dba83713081b
+https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.7.0-py38he5a9106_0.tar.bz2#4ef8df702308288d7abe1358395988c6
 https://conda.anaconda.org/conda-forge/noarch/moviepy-1.0.1-py_0.tar.bz2#26a0b6c145254ea17a44f3a520fccdb1
 https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326
 https://conda.anaconda.org/conda-forge/noarch/python-gmsh-4.8.4-hd8ed1ab_0.tar.bz2#e7870e333f32c1e4a891c82d75235bb3
@@ -357,5 +368,5 @@ https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.6.5-pyhd8ed1ab_0.tar.
 https://conda.anaconda.org/conda-forge/linux-64/mayavi-4.7.2-py38h32b5f5e_4.tar.bz2#ffa239c21fd0a1fae1c503821e7a6ee8
 https://conda.anaconda.org/conda-forge/noarch/geoviews-1.9.3-pyhd8ed1ab_0.tar.bz2#c8a6a006829f9ec22c8b504a5cc07a47
 https://conda.anaconda.org/conda-forge/noarch/ipydatawidgets-4.2.0-pyhd3deb0d_0.tar.bz2#2fa9972333df26f1cedfb659468f1b1e
-https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.5-pyhd8ed1ab_0.tar.bz2#2de1bcc7c5304b61099347a2d28ca317
+https://conda.anaconda.org/conda-forge/noarch/ipympl-0.8.6-pyhd8ed1ab_0.tar.bz2#75f80858af1b0fc01f0f6e1e1c4e460e
 https://conda.anaconda.org/conda-forge/linux-64/itkwidgets-0.32.0-py38h32f6830_0.tar.bz2#70faaea5c377d8e5cc12a79bfec1462e
diff --git a/locks/conda-ubuntu-64-p39-mpich-binary.lock b/locks/conda-ubuntu-64-p39-mpich-binary.lock
index a902c866..50a29997 100644
--- a/locks/conda-ubuntu-64-p39-mpich-binary.lock
+++ b/locks/conda-ubuntu-64-p39-mpich-binary.lock
@@ -26,7 +26,7 @@ https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.18.1-h7f98852_0.tar.bz2
 https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.1.7-h9c3ff4c_0.tar.bz2#019a56e1a79ed2362d6a61c16f903f59
 https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h4bd325d_0.tar.bz2#61af675be1ebd2ab75ebc70b8687b84d
 https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.2-h9c3ff4c_0.tar.bz2#0fb039650fa638f258fdc9e9ef125f52
-https://conda.anaconda.org/conda-forge/linux-64/geos-3.10.1-h9c3ff4c_1.tar.bz2#17a5f413039ce1e105fab5df9c668eb5
+https://conda.anaconda.org/conda-forge/linux-64/geos-3.10.2-h9c3ff4c_0.tar.bz2#fe9a66a351bfa7a84c3108304c7bcba5
 https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2#b94cf2db16066b242ebd26db2facbd56
 https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa
 https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf
diff --git a/locks/conda-ubuntu-64-p39-openmpi-binary.lock b/locks/conda-ubuntu-64-p39-openmpi-binary.lock
index 627eaa40..64449a9c 100644
--- a/locks/conda-ubuntu-64-p39-openmpi-binary.lock
+++ b/locks/conda-ubuntu-64-p39-openmpi-binary.lock
@@ -26,7 +26,7 @@ https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.18.1-h7f98852_0.tar.bz2
 https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.1.7-h9c3ff4c_0.tar.bz2#019a56e1a79ed2362d6a61c16f903f59
 https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h4bd325d_0.tar.bz2#61af675be1ebd2ab75ebc70b8687b84d
 https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.2-h9c3ff4c_0.tar.bz2#0fb039650fa638f258fdc9e9ef125f52
-https://conda.anaconda.org/conda-forge/linux-64/geos-3.10.1-h9c3ff4c_1.tar.bz2#17a5f413039ce1e105fab5df9c668eb5
+https://conda.anaconda.org/conda-forge/linux-64/geos-3.10.2-h9c3ff4c_0.tar.bz2#fe9a66a351bfa7a84c3108304c7bcba5
 https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2#b94cf2db16066b242ebd26db2facbd56
 https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa
 https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf
diff --git a/locks/requirements-full.txt b/locks/requirements-full.txt
index 9d196154..7340b965 100644
--- a/locks/requirements-full.txt
+++ b/locks/requirements-full.txt
@@ -1,48 +1,50 @@
 affine==2.3.0; python_version >= "3.6"
 appdirs==1.4.4; python_version >= "3.6"
-appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.7" and sys_platform == "darwin"
+appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.7" or sys_platform == "darwin" and python_version >= "3.8"
 argon2-cffi-bindings==21.2.0; python_version >= "3.6"
 argon2-cffi==21.3.0; python_version >= "3.6"
+asttokens==2.0.5; python_version >= "3.8"
 astunparse==1.6.3; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" and python_version < "3.9"
-atomicwrites==1.4.0; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") or sys_platform == "win32" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") and python_full_version >= "3.4.0"
-attrs==21.4.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-backcall==0.2.0; python_version >= "3.7"
+atomicwrites==1.4.0; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.4.0"
+attrs==21.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
+backcall==0.2.0; python_version >= "3.8"
 beautifulsoup4==4.10.0; python_full_version > "3.0.0"
 black==21.12b0; python_full_version >= "3.6.2"
 bleach==4.1.0; python_version >= "3.7"
-bokeh==2.4.2; python_version >= "3.7"
+bokeh==2.4.2; python_version >= "3.7" or python_version >= "3.7"
 branca==0.4.2; python_version >= "3.5"
 bump2version==1.0.1; python_version >= "3.5"
 cartopy==0.19.0.post1; python_version >= "3.5"
-certifi==2021.10.8; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
-cffi==1.15.0; platform_python_implementation == "PyPy" and python_version >= "3.7" and python_full_version >= "3.6.1" and implementation_name == "pypy"
+certifi==2021.10.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" or python_version >= "3.6"
+cffi==1.15.0; platform_python_implementation == "PyPy" and python_version >= "3.6" or python_version >= "3.6" or python_full_version >= "3.6.1" and python_version >= "3.7" and implementation_name == "pypy"
 cfgrib==0.9.9.1; python_version >= "3.6"
 cftime==1.5.1.1
-charset-normalizer==2.0.10; python_full_version >= "3.6.0" and python_version >= "3.6"
+charset-normalizer==2.0.10; python_full_version >= "3.6.0" and python_version >= "3"
 click-default-group==1.2.2; python_version >= "3.6"
-click-plugins==1.1.1; python_version >= "3.7"
-click==8.0.3; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.6.2" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7")
-cligj==0.7.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7"
-cloudpickle==2.0.0; python_version >= "3.7"
-colorama==0.4.4; python_full_version >= "3.6.2" and sys_platform == "win32" and platform_system == "Windows" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") and python_version < "4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") or sys_platform == "win32" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") and python_full_version >= "3.5.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.5.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows" and python_version >= "3.7")
-colorcet==3.0.0; python_version >= "3.7"
-colorlog==4.8.0
+click-plugins==1.1.1; python_version >= "3.6"
+click==8.0.3; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.6" or python_version >= "3.7" or python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.6" or python_full_version >= "3.6.2" and python_version >= "3.8"
+cligj==0.7.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.6" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7"
+cloudpickle==2.0.0; python_version >= "3.7" or python_version >= "3.7"
+colorama==0.4.4; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.5.0" or python_version >= "2.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows" or python_version >= "3.6" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.6" and python_full_version >= "3.5.0" or python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.5.0"
+colorcet==3.0.0; python_version >= "2.7"
+colorlog==6.6.0; python_version >= "3.6"
 conda-lock==0.13.2; python_version >= "3.6"
 configobj==5.0.6; python_version >= "3.7"
-coverage==6.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
+coverage==6.2; python_version >= "3.6"
 cycler==0.11.0; python_version >= "3.7"
-dask==2021.12.0; python_version >= "3.7"
+dask==2022.1.0; python_version >= "3.7"
 datashader==0.12.1; python_version >= "2.7"
 datashape==0.5.2; python_version >= "2.7"
 debugpy==1.5.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-decorator==4.4.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" and python_version >= "3.7"
+decorator==4.4.2; python_version >= "2.6" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" or python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" and python_version >= "3.8"
 defusedxml==0.7.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-distributed==2021.12.0; python_version >= "3.7"
+distributed==2022.1.0; python_version >= "3.7"
 docopt==0.6.2
 eccodes==1.4.0; python_version >= "3.6"
 ensureconda==1.4.1; python_version >= "3.6"
-entrypoints==0.3; python_full_version >= "3.6.1" and python_version >= "3.7"
+entrypoints==0.3; python_full_version >= "3.6.1" and python_version >= "3.7" or python_version >= "3.7"
 execnet==1.9.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
+executing==0.8.2; python_version >= "3.8"
 f90nml==1.3.1
 filelock==3.4.2; python_version >= "3.7"
 findlibs==0.0.2; python_version >= "3.6"
@@ -51,43 +53,43 @@ fonttools==4.28.5; python_version >= "3.7"
 fsspec==2022.1.0; python_version >= "3.7"
 geopandas==0.10.2; python_version >= "3.7"
 geoviews==1.9.3; python_version >= "3.7"
-ghp-import==2.0.2; python_version >= "3.6" and python_version < "4.0"
+ghp-import==2.0.2; python_version >= "3.6"
 gmsh==4.9.3
 heapdict==1.0.1; python_version >= "3.7"
 holoviews==1.14.7; python_version >= "2.7"
 hvplot==0.7.3; python_version >= "2.7"
-idna==3.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
+idna==3.3; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.5"
 imageio-ffmpeg==0.4.5; python_version >= "3.4"
 imageio==2.13.5; python_version >= "3.5"
-importlib-metadata==4.10.0; python_version >= "3.7" and python_version < "3.10"
+importlib-metadata==4.10.1; python_version < "3.10" and python_version >= "3.7" or python_version >= "3.7"
 importlib-resources==5.4.0; python_version < "3.9" and python_version >= "3.7"
-iniconfig==1.1.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
+iniconfig==1.1.1; python_version >= "3.6"
 ipydatawidgets==4.2.0
 ipykernel==6.7.0; python_version >= "3.7"
-ipympl==0.8.5
-ipython-genutils==0.2.0; python_version >= "3.6"
-ipython==7.31.0; python_version >= "3.7"
+ipympl==0.8.6
+ipython-genutils==0.2.0
+ipython==8.0.0; python_version >= "3.8"
 ipywidgets==7.6.5
 itk-core==5.2.1.post1
 itk-filtering==5.2.1.post1
 itk-meshtopolydata==0.7.1
 itk-numerics==5.2.1.post1
 itkwidgets==0.32.1
-jedi==0.18.1; python_version >= "3.7"
-jinja2==3.0.3; python_version >= "3.7" and python_version < "4.0"
+jedi==0.18.1; python_version >= "3.8"
+jinja2==3.0.3; python_version >= "3.7" or python_version >= "3.6" or python_version >= "3.6" and python_version < "4.0"
 jsonschema==4.4.0; python_version >= "3.7"
-jupyter-client==7.1.0; python_full_version >= "3.6.1" and python_version >= "3.7"
-jupyter-core==4.9.1; python_full_version >= "3.6.1" and python_version >= "3.7"
+jupyter-client==7.1.1; python_full_version >= "3.6.1" and python_version >= "3.7" or python_full_version >= "3.6.1" and python_version >= "3.6" or python_full_version >= "3.7.0" and python_version >= "3.7"
+jupyter-core==4.9.1; python_full_version >= "3.6.1" and python_version >= "3.7" or python_version >= "3.6"
 jupyterlab-pygments==0.1.2; python_version >= "3.7"
 jupyterlab-widgets==1.0.2; python_version >= "3.6"
 kiwisolver==1.3.2; python_version >= "3.7"
 llvmlite==0.36.0; python_version >= "3.6" and python_version < "3.10"
 locket==0.2.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-markdown==3.3.6; python_version >= "3.7" and python_version < "4.0"
-markupsafe==2.0.1; python_version >= "3.7" and python_version < "4.0"
+markdown==3.3.6; python_version >= "3.6" and python_version < "4.0" or python_version >= "3.6"
+markupsafe==2.0.1; python_version >= "3.6" and python_version < "4.0" or python_version >= "3.6"
 matplotlib-inline==0.1.3; python_version >= "3.7"
 matplotlib==3.5.1; python_version >= "3.7"
-mergedeep==1.3.4; python_version >= "3.6" and python_version < "4.0"
+mergedeep==1.3.4; python_version >= "3.6"
 mistune==0.8.4; python_version >= "3.7"
 mkdocs-autorefs==0.2.1; python_version >= "3.6" and python_version < "4.0"
 mkdocs-material-extensions==1.0.3; python_version >= "3.6"
@@ -98,88 +100,93 @@ moviepy==1.0.3
 msgpack==1.0.3; python_version >= "3.7"
 multipledispatch==0.6.0; python_version >= "2.7"
 munch==2.5.0; python_version >= "3.7"
-mypy-extensions==0.4.3; python_full_version >= "3.6.2"
-nbclient==0.5.9; python_full_version >= "3.6.1" and python_version >= "3.7"
+mypy-extensions==0.4.3; python_full_version >= "3.6.2" and python_version >= "3.8" or python_full_version >= "3.6.2"
+nbclient==0.5.10; python_full_version >= "3.7.0" and python_version >= "3.7"
 nbconvert==6.4.0; python_version >= "3.7"
-nbformat==5.1.3; python_full_version >= "3.6.1" and python_version >= "3.7"
-nest-asyncio==1.5.4; python_full_version >= "3.6.1" and python_version >= "3.7"
+nbformat==5.1.3; python_full_version >= "3.7.0" and python_version >= "3.7" or python_version >= "3.5"
+nest-asyncio==1.5.4; python_full_version >= "3.6.1" and python_version >= "3.7" or python_version >= "3.6" or python_full_version >= "3.7.0" and python_version >= "3.7"
 netcdf4==1.5.8
 notebook==6.4.7; python_version >= "3.6"
 numba==0.53.1; python_version >= "3.6" and python_version < "3.10"
-numpy==1.22.0; python_version >= "3.8"
-packaging==21.3; python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6")
+numpy==1.22.1; python_version >= "3.8"
+packaging==21.3; python_version >= "3.7" or python_version >= "3.6"
 pandas==1.3.5; python_full_version >= "3.7.1"
 pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
 panel==0.12.6; python_version >= "3.7"
-param==1.12.0; python_version >= "3.7"
-parso==0.8.3; python_version >= "3.7"
+param==1.12.0; python_version >= "2.7"
+parso==0.8.3; python_version >= "3.8"
 partd==1.2.0; python_version >= "3.7"
-pathspec==0.9.0; python_full_version >= "3.6.2"
-pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.7"
-pickleshare==0.7.5; python_version >= "3.7"
-pillow==9.0.0; python_version >= "3.7"
-platformdirs==2.4.1; python_version >= "3.7" and python_full_version >= "3.6.2"
-pluggy==1.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
+pathspec==0.9.0; python_full_version >= "3.6.2" and python_version >= "3.8" or python_full_version >= "3.6.2"
+pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.8"
+pickleshare==0.7.5; python_version >= "3.8"
+pillow==9.0.0; python_version >= "3.7" or python_version >= "3.7"
+platformdirs==2.4.1; python_version >= "3.7" and python_full_version >= "3.6.2" or python_full_version >= "3.6.2" and python_version >= "3.8"
+pluggy==1.0.0; python_version >= "3.6"
 proglog==0.1.9
 prometheus-client==0.12.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-prompt-toolkit==3.0.24; python_full_version >= "3.6.2" and python_version >= "3.7"
+prompt-toolkit==3.0.24; python_full_version >= "3.6.2" and python_version >= "3.8"
 psutil==5.9.0; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.7" and os_name != "nt"
-py==1.11.0; python_full_version >= "3.6.1" and python_version >= "3.7" and implementation_name == "pypy"
-pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" and platform_python_implementation == "PyPy" or platform_python_implementation == "PyPy" and python_version >= "3.6" and python_full_version >= "3.4.0"
-pyct==0.4.8; python_version >= "3.7"
+ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.8" or os_name != "nt" and python_version >= "3.6"
+pure-eval==0.2.1; python_version >= "3.8"
+py==1.11.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" or python_full_version >= "3.6.1" and python_version >= "3.7" and implementation_name == "pypy"
+pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
+pyct==0.4.8; python_version >= "2.7"
 pydantic==1.9.0; python_full_version >= "3.6.1" and python_version >= "3.6"
 pydap @ https://github.com/pydap/pydap/archive/3f6aa190c59e3bbc6c834377a61579b20275ff69.zip
 pygeos==0.12.0; python_version >= "3.6"
-pygments==2.11.2; python_version >= "3.7"
+pygments==2.11.2; python_version >= "3.5"
 pykdtree==1.3.4; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
 pymdown-extensions==8.2; python_version >= "3.6"
-pyparsing==3.0.6; python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6")
+pyparsing==3.0.6; python_version >= "3.6"
 pyproj==3.3.0; python_version >= "3.8"
 pyresample==1.22.3; python_version >= "3.7"
-pyrsistent==0.18.0; python_version >= "3.7"
-pyshp==2.1.3; python_version >= "3.7"
-pytest-cov==2.12.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
+pyrsistent==0.18.1; python_version >= "3.7"
+pyshp==2.1.3; python_version >= "3.5"
+pytest-cov==3.0.0; python_version >= "3.6"
 pytest-forked==1.4.0; python_version >= "3.6"
 pytest-xdist==2.5.0; python_version >= "3.6"
 pytest==6.2.5; python_version >= "3.6"
-python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.3.0") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "2.7") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7")
+python-dateutil==2.8.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7" or python_version >= "3.7" and python_full_version >= "3.7.1" or python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6" or python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "2.7" or python_full_version >= "3.6.1" and python_version >= "3.7"
 pytkdocs==0.11.1; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" and python_version < "4.0"
 pytz==2021.3; python_version >= "3.7" and python_full_version >= "3.7.1"
 pyviz-comms==2.1.0; python_version >= "3.7"
 pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_full_version >= "3.6.1" and python_version >= "3.7"
 pywinpty==1.1.6; os_name == "nt" and python_version >= "3.6"
-pyyaml-env-tag==0.1; python_version >= "3.6" and python_version < "4.0"
-pyyaml==6.0; python_version >= "3.7" and python_version < "4.0"
-pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.7"
+pyyaml-env-tag==0.1; python_version >= "3.6"
+pyyaml==6.0; python_version >= "3.7" or python_version >= "3.6"
+pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.7" or python_version >= "3.6"
 rasterio==1.2.10; python_version >= "3.6"
 requests==2.27.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
+rioxarray==0.9.1; python_version >= "3.7"
 scipy==1.7.3; python_version >= "3.7" and python_version < "3.11"
 send2trash==1.8.0; python_version >= "3.6"
 setuptools-scm==6.3.2; python_version >= "3.7"
+setuptools==60.5.0; python_version >= "3.7"
 shapely==1.7.1
-six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and python_full_version < "4.0.0" and python_version < "3.9" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "2.7")
+six==1.16.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7" or python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" and python_version < "3.9" or python_full_version >= "3.3.0" and python_version >= "2.7" or python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8"
 snuggs==1.4.7; python_version >= "3.6"
 sortedcontainers==2.4.0; python_version >= "3.7"
 soupsieve==2.3.1; python_version >= "3.6" and python_full_version > "3.0.0"
+stack-data==0.1.4; python_version >= "3.8"
 tblib==1.7.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version >= "3.5.0"
 terminado==0.12.1; python_version >= "3.6"
 testpath==0.5.0; python_version >= "3.7"
-toml==0.10.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
-tomli==1.2.3; python_version >= "3.7" and python_full_version >= "3.6.2"
-toolz==0.11.2; python_version >= "3.7"
-tornado==6.1; python_version >= "3.8" and python_full_version >= "3.6.1"
+toml==0.10.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6"
+tomli==1.2.3; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.7" or python_version >= "3.6" or python_full_version >= "3.6.2" and python_version >= "3.8"
+toolz==0.11.2; python_version >= "3.7" or python_version >= "3.5"
+tornado==6.1; python_version >= "3.7" or python_version >= "3.6" or python_version >= "3.8" or python_full_version >= "3.6.1" and python_version >= "3.7"
 tqdm==4.62.3; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-traitlets==5.1.1; python_full_version >= "3.6.1" and python_version >= "3.7"
+traitlets==5.1.1; python_full_version >= "3.6.1" and python_version >= "3.7" or python_version >= "3.7" or python_full_version >= "3.7.0" and python_version >= "3.7"
 traittypes==0.2.1
-typing-extensions==4.0.1; python_version >= "3.7" and python_full_version >= "3.6.2"
-urllib3==1.26.8; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.6"
-watchdog==2.1.6; python_version >= "3.6" and python_version < "4.0"
-wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.7"
+typing-extensions==4.0.1; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.7" or python_full_version >= "3.6.1" and python_version >= "3.6" or python_full_version >= "3.6.2" and python_version >= "3.8"
+urllib3==1.26.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4"
+watchdog==2.1.6; python_version >= "3.6"
+wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.8"
 webencodings==0.5.1; python_version >= "3.7"
 webob==1.8.7; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0"
+wheel==0.37.1; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" and python_version < "3.9"
 widgetsnbextension==3.5.2
 xarray==0.20.2; python_version >= "3.7"
 zict==2.0.0; python_version >= "3.7"
-zipp==3.7.0; python_version >= "3.7" and python_version < "3.9"
+zipp==3.7.0; python_version < "3.9" and python_version >= "3.7" or python_version >= "3.7"
 zstandard==0.16.0; python_version >= "3.6"
diff --git a/locks/requirements-viz.txt b/locks/requirements-viz.txt
index 75a8de3c..2f8de080 100644
--- a/locks/requirements-viz.txt
+++ b/locks/requirements-viz.txt
@@ -1,38 +1,41 @@
 affine==2.3.0; python_version >= "3.6"
-appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.7" and sys_platform == "darwin"
+appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.7" or sys_platform == "darwin" and python_version >= "3.8"
 argon2-cffi-bindings==21.2.0; python_version >= "3.6"
 argon2-cffi==21.3.0; python_version >= "3.6"
-attrs==21.4.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-backcall==0.2.0; python_version >= "3.7"
+asttokens==2.0.5; python_version >= "3.8"
+attrs==21.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
+backcall==0.2.0; python_version >= "3.8"
 beautifulsoup4==4.10.0; python_full_version > "3.0.0"
+black==21.12b0; python_full_version >= "3.6.2"
 bleach==4.1.0; python_version >= "3.7"
-bokeh==2.4.2; python_version >= "3.7"
+bokeh==2.4.2; python_version >= "3.7" or python_version >= "3.7"
 branca==0.4.2; python_version >= "3.5"
 cartopy==0.19.0.post1; python_version >= "3.5"
-certifi==2021.10.8; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
-cffi==1.15.0; platform_python_implementation == "PyPy" and python_version >= "3.7" and python_full_version >= "3.6.1" and implementation_name == "pypy"
+certifi==2021.10.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" or python_version >= "3.6"
+cffi==1.15.0; platform_python_implementation == "PyPy" and python_version >= "3.6" or python_version >= "3.6" or python_full_version >= "3.6.1" and python_version >= "3.7" and implementation_name == "pypy"
 cfgrib==0.9.9.1; python_version >= "3.6"
 cftime==1.5.1.1
 charset-normalizer==2.0.10; python_full_version >= "3.6.0" and python_version >= "3"
-click-plugins==1.1.1; python_version >= "3.7"
-click==8.0.3; python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7")
-cligj==0.7.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7"
-cloudpickle==2.0.0; python_version >= "3.7"
-colorama==0.4.4; python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" and platform_system == "Windows" or python_full_version >= "3.5.0" and sys_platform == "win32" and platform_system == "Windows" and python_version >= "3.7"
-colorcet==3.0.0; python_version >= "3.7"
-colorlog==4.8.0
+click-plugins==1.1.1; python_version >= "3.6"
+click==8.0.3; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.6" or python_version >= "3.7" or python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.6" or python_full_version >= "3.6.2" and python_version >= "3.8"
+cligj==0.7.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.6" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7"
+cloudpickle==2.0.0; python_version >= "3.7" or python_version >= "3.7"
+colorama==0.4.4; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.5.0" or python_version >= "2.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows" or python_version >= "3.6" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.6" and python_full_version >= "3.5.0" or python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.5.0"
+colorcet==3.0.0; python_version >= "2.7"
+colorlog==6.6.0; python_version >= "3.6"
 configobj==5.0.6; python_version >= "3.7"
 cycler==0.11.0; python_version >= "3.7"
-dask==2021.12.0; python_version >= "3.7"
+dask==2022.1.0; python_version >= "3.7"
 datashader==0.12.1; python_version >= "2.7"
 datashape==0.5.2; python_version >= "2.7"
 debugpy==1.5.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-decorator==4.4.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" and python_version >= "3.7"
+decorator==4.4.2; python_version >= "2.6" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" or python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" and python_version >= "3.8"
 defusedxml==0.7.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-distributed==2021.12.0; python_version >= "3.7"
+distributed==2022.1.0; python_version >= "3.7"
 docopt==0.6.2
 eccodes==1.4.0; python_version >= "3.6"
-entrypoints==0.3; python_full_version >= "3.6.1" and python_version >= "3.7"
+entrypoints==0.3; python_full_version >= "3.6.1" and python_version >= "3.7" or python_version >= "3.7"
+executing==0.8.2; python_version >= "3.8"
 f90nml==1.3.1
 findlibs==0.0.2; python_version >= "3.6"
 fiona==1.8.20; python_version >= "3.7"
@@ -47,31 +50,31 @@ hvplot==0.7.3; python_version >= "2.7"
 idna==3.3; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.5"
 imageio-ffmpeg==0.4.5; python_version >= "3.4"
 imageio==2.13.5; python_version >= "3.5"
-importlib-metadata==4.10.0; python_version < "3.10" and python_version >= "3.7"
+importlib-metadata==4.10.1; python_version < "3.10" and python_version >= "3.7"
 importlib-resources==5.4.0; python_version < "3.9" and python_version >= "3.7"
 ipydatawidgets==4.2.0
 ipykernel==6.7.0; python_version >= "3.7"
-ipympl==0.8.5
-ipython-genutils==0.2.0; python_version >= "3.6"
-ipython==7.31.0; python_version >= "3.7"
+ipympl==0.8.6
+ipython-genutils==0.2.0
+ipython==8.0.0; python_version >= "3.8"
 ipywidgets==7.6.5
 itk-core==5.2.1.post1
 itk-filtering==5.2.1.post1
 itk-meshtopolydata==0.7.1
 itk-numerics==5.2.1.post1
 itkwidgets==0.32.1
-jedi==0.18.1; python_version >= "3.7"
-jinja2==3.0.3; python_version >= "3.7"
+jedi==0.18.1; python_version >= "3.8"
+jinja2==3.0.3; python_version >= "3.7" or python_version >= "3.6"
 jsonschema==4.4.0; python_version >= "3.7"
-jupyter-client==7.1.0; python_full_version >= "3.6.1" and python_version >= "3.7"
-jupyter-core==4.9.1; python_full_version >= "3.6.1" and python_version >= "3.7"
+jupyter-client==7.1.1; python_full_version >= "3.6.1" and python_version >= "3.7" or python_full_version >= "3.6.1" and python_version >= "3.6" or python_full_version >= "3.7.0" and python_version >= "3.7"
+jupyter-core==4.9.1; python_full_version >= "3.6.1" and python_version >= "3.7" or python_version >= "3.6"
 jupyterlab-pygments==0.1.2; python_version >= "3.7"
 jupyterlab-widgets==1.0.2; python_version >= "3.6"
 kiwisolver==1.3.2; python_version >= "3.7"
 llvmlite==0.36.0; python_version >= "3.6" and python_version < "3.10"
 locket==0.2.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
 markdown==3.3.6; python_version >= "3.7"
-markupsafe==2.0.1; python_version >= "3.7"
+markupsafe==2.0.1; python_version >= "3.6"
 matplotlib-inline==0.1.3; python_version >= "3.7"
 matplotlib==3.5.1; python_version >= "3.7"
 mistune==0.8.4; python_version >= "3.7"
@@ -79,74 +82,81 @@ moviepy==1.0.3
 msgpack==1.0.3; python_version >= "3.7"
 multipledispatch==0.6.0; python_version >= "2.7"
 munch==2.5.0; python_version >= "3.7"
-nbclient==0.5.9; python_full_version >= "3.6.1" and python_version >= "3.7"
+mypy-extensions==0.4.3; python_full_version >= "3.6.2" and python_version >= "3.8" or python_full_version >= "3.6.2"
+nbclient==0.5.10; python_full_version >= "3.7.0" and python_version >= "3.7"
 nbconvert==6.4.0; python_version >= "3.7"
-nbformat==5.1.3; python_full_version >= "3.6.1" and python_version >= "3.7"
-nest-asyncio==1.5.4; python_full_version >= "3.6.1" and python_version >= "3.7"
+nbformat==5.1.3; python_full_version >= "3.7.0" and python_version >= "3.7" or python_version >= "3.5"
+nest-asyncio==1.5.4; python_full_version >= "3.6.1" and python_version >= "3.7" or python_version >= "3.6" or python_full_version >= "3.7.0" and python_version >= "3.7"
 netcdf4==1.5.8
 notebook==6.4.7; python_version >= "3.6"
 numba==0.53.1; python_version >= "3.6" and python_version < "3.10"
-numpy==1.22.0; python_version >= "3.8"
-packaging==21.3; python_version >= "3.7"
+numpy==1.22.1; python_version >= "3.8"
+packaging==21.3; python_version >= "3.7" or python_version >= "3.7"
 pandas==1.3.5; python_full_version >= "3.7.1"
 pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
 panel==0.12.6; python_version >= "3.7"
-param==1.12.0; python_version >= "3.7"
-parso==0.8.3; python_version >= "3.7"
+param==1.12.0; python_version >= "2.7"
+parso==0.8.3; python_version >= "3.8"
 partd==1.2.0; python_version >= "3.7"
-pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.7"
-pickleshare==0.7.5; python_version >= "3.7"
-pillow==9.0.0; python_version >= "3.7"
+pathspec==0.9.0; python_full_version >= "3.6.2" and python_version >= "3.8" or python_full_version >= "3.6.2"
+pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.8"
+pickleshare==0.7.5; python_version >= "3.8"
+pillow==9.0.0; python_version >= "3.7" or python_version >= "3.7"
+platformdirs==2.4.1; python_version >= "3.7" and python_full_version >= "3.6.2" or python_full_version >= "3.6.2" and python_version >= "3.8"
 proglog==0.1.9
 prometheus-client==0.12.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-prompt-toolkit==3.0.24; python_full_version >= "3.6.2" and python_version >= "3.7"
+prompt-toolkit==3.0.24; python_full_version >= "3.6.2" and python_version >= "3.8"
 psutil==5.9.0; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.7" and os_name != "nt"
+ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.8" or os_name != "nt" and python_version >= "3.6"
+pure-eval==0.2.1; python_version >= "3.8"
 py==1.11.0; python_full_version >= "3.6.1" and python_version >= "3.7" and implementation_name == "pypy"
-pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" and platform_python_implementation == "PyPy" or platform_python_implementation == "PyPy" and python_version >= "3.6" and python_full_version >= "3.4.0"
-pyct==0.4.8; python_version >= "3.7"
+pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
+pyct==0.4.8; python_version >= "2.7"
 pydap @ https://github.com/pydap/pydap/archive/3f6aa190c59e3bbc6c834377a61579b20275ff69.zip
 pygeos==0.12.0; python_version >= "3.6"
 pygments==2.11.2; python_version >= "3.7"
 pykdtree==1.3.4; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-pyparsing==3.0.6; python_version >= "3.7"
+pyparsing==3.0.6; python_version >= "3.6"
 pyproj==3.3.0; python_version >= "3.8"
 pyresample==1.22.3; python_version >= "3.7"
-pyrsistent==0.18.0; python_version >= "3.7"
-pyshp==2.1.3; python_version >= "3.7"
-python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "2.7") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7")
+pyrsistent==0.18.1; python_version >= "3.7"
+pyshp==2.1.3; python_version >= "3.5"
+python-dateutil==2.8.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7" or python_version >= "3.7" and python_full_version >= "3.7.1" or python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "2.7" or python_full_version >= "3.6.1" and python_version >= "3.7"
 pytz==2021.3; python_version >= "3.7" and python_full_version >= "3.7.1"
 pyviz-comms==2.1.0; python_version >= "3.7"
 pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_full_version >= "3.6.1" and python_version >= "3.7"
 pywinpty==1.1.6; os_name == "nt" and python_version >= "3.6"
-pyyaml==6.0; python_version >= "3.7"
-pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.7"
+pyyaml==6.0; python_version >= "3.7" or python_version >= "3.7"
+pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.7" or python_version >= "3.6"
 rasterio==1.2.10; python_version >= "3.6"
 requests==2.27.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
+rioxarray==0.9.1; python_version >= "3.7"
 scipy==1.7.3; python_version >= "3.7" and python_version < "3.11"
 send2trash==1.8.0; python_version >= "3.6"
 setuptools-scm==6.3.2; python_version >= "3.7"
+setuptools==60.5.0; python_version >= "3.7"
 shapely==1.7.1
-six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "2.7")
+six==1.16.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7" or python_full_version >= "3.3.0" and python_version >= "2.7" or python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8"
 snuggs==1.4.7; python_version >= "3.6"
 sortedcontainers==2.4.0; python_version >= "3.7"
 soupsieve==2.3.1; python_version >= "3.6" and python_full_version > "3.0.0"
+stack-data==0.1.4; python_version >= "3.8"
 tblib==1.7.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version >= "3.5.0"
 terminado==0.12.1; python_version >= "3.6"
 testpath==0.5.0; python_version >= "3.7"
-tomli==1.2.3; python_version >= "3.7"
-toolz==0.11.2; python_version >= "3.7"
-tornado==6.1; python_version >= "3.8" and python_full_version >= "3.6.1"
+tomli==1.2.3; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.7" or python_full_version >= "3.6.2" and python_version >= "3.8"
+toolz==0.11.2; python_version >= "3.7" or python_version >= "3.5"
+tornado==6.1; python_version >= "3.7" or python_version >= "3.6" or python_version >= "3.8" or python_full_version >= "3.6.1" and python_version >= "3.7"
 tqdm==4.62.3; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-traitlets==5.1.1; python_full_version >= "3.6.1" and python_version >= "3.7"
+traitlets==5.1.1; python_full_version >= "3.6.1" and python_version >= "3.7" or python_version >= "3.7" or python_full_version >= "3.7.0" and python_version >= "3.7"
 traittypes==0.2.1
-typing-extensions==4.0.1; python_version >= "3.7"
+typing-extensions==4.0.1; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.7" or python_full_version >= "3.6.2" and python_version >= "3.8"
 urllib3==1.26.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4"
-wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.7"
+wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.8"
 webencodings==0.5.1; python_version >= "3.7"
 webob==1.8.7; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0"
 widgetsnbextension==3.5.2
 xarray==0.20.2; python_version >= "3.7"
 zict==2.0.0; python_version >= "3.7"
-zipp==3.7.0; python_version < "3.9" and python_version >= "3.7"
+zipp==3.7.0; python_version < "3.10" and python_version >= "3.7" or python_version < "3.9" and python_version >= "3.7"
 zstandard==0.16.0; python_version >= "3.6"
diff --git a/locks/requirements.txt b/locks/requirements.txt
index 99cd5334..b77d1966 100644
--- a/locks/requirements.txt
+++ b/locks/requirements.txt
@@ -1,100 +1,83 @@
 affine==2.3.0; python_version >= "3.6"
-appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.7" and sys_platform == "darwin"
-attrs==21.4.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-backcall==0.2.0; python_version >= "3.7"
+attrs==21.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
 beautifulsoup4==4.10.0; python_full_version > "3.0.0"
+black==21.12b0; python_full_version >= "3.6.2"
 bokeh==2.4.2; python_version >= "3.7"
 branca==0.4.2; python_version >= "3.5"
 cartopy==0.19.0.post1; python_version >= "3.5"
-certifi==2021.10.8; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
-cffi==1.15.0; python_full_version >= "3.6.1" and python_version >= "3.7" and implementation_name == "pypy"
+certifi==2021.10.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" or python_version >= "3.6"
+cffi==1.15.0; python_version >= "3.6"
 cfgrib==0.9.9.1; python_version >= "3.6"
 cftime==1.5.1.1
 charset-normalizer==2.0.10; python_full_version >= "3.6.0" and python_version >= "3"
-click-plugins==1.1.1; python_version >= "3.7"
-click==8.0.3; python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7")
-cligj==0.7.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7"
-cloudpickle==2.0.0; python_version >= "3.7"
-colorama==0.4.4; python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" and platform_system == "Windows" or python_full_version >= "3.5.0" and sys_platform == "win32" and platform_system == "Windows" and python_version >= "3.7"
-colorlog==4.8.0
+click-plugins==1.1.1; python_version >= "3.6"
+click==8.0.3; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.6" or python_version >= "3.7" or python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.6"
+cligj==0.7.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.6" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7"
+cloudpickle==2.0.0; python_version >= "3.7" or python_version >= "3.7"
+colorama==0.4.4; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.5.0" or python_version >= "2.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows" or python_version >= "3.6" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.6" and python_full_version >= "3.5.0"
+colorlog==6.6.0; python_version >= "3.6"
 configobj==5.0.6; python_version >= "3.7"
 cycler==0.11.0; python_version >= "3.7"
-dask==2021.12.0; python_version >= "3.7"
-debugpy==1.5.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-decorator==4.4.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" and python_version >= "3.7"
-distributed==2021.12.0; python_version >= "3.7"
+dask==2022.1.0; python_version >= "3.7"
+distributed==2022.1.0; python_version >= "3.7"
 docopt==0.6.2
 eccodes==1.4.0; python_version >= "3.6"
-entrypoints==0.3; python_full_version >= "3.6.1" and python_version >= "3.7"
 f90nml==1.3.1
 findlibs==0.0.2; python_version >= "3.6"
 fiona==1.8.20; python_version >= "3.7"
 fonttools==4.28.5; python_version >= "3.7"
-fsspec==2022.1.0; python_version >= "3.7"
+fsspec==2022.1.0; python_version >= "3.7" or python_version >= "3.7"
 geopandas==0.10.2; python_version >= "3.7"
 gmsh==4.9.3
 heapdict==1.0.1; python_version >= "3.7"
 idna==3.3; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.5"
-ipykernel==6.7.0; python_version >= "3.7"
-ipython==7.31.0; python_version >= "3.7"
-jedi==0.18.1; python_version >= "3.7"
-jinja2==3.0.3; python_version >= "3.7"
-jupyter-client==7.1.0; python_full_version >= "3.6.1" and python_version >= "3.7"
-jupyter-core==4.9.1; python_full_version >= "3.6.1" and python_version >= "3.7"
+jinja2==3.0.3; python_version >= "3.7" or python_version >= "3.6"
 kiwisolver==1.3.2; python_version >= "3.7"
 llvmlite==0.36.0; python_version >= "3.6" and python_version < "3.10"
 locket==0.2.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-markupsafe==2.0.1; python_version >= "3.7"
-matplotlib-inline==0.1.3; python_version >= "3.7"
+markupsafe==2.0.1; python_version >= "3.6"
 matplotlib==3.5.1; python_version >= "3.7"
 msgpack==1.0.3; python_version >= "3.7"
 munch==2.5.0; python_version >= "3.7"
-nest-asyncio==1.5.4; python_full_version >= "3.6.1" and python_version >= "3.7"
+mypy-extensions==0.4.3; python_full_version >= "3.6.2"
 netcdf4==1.5.8
-numpy==1.22.0; python_version >= "3.8"
-packaging==21.3; python_version >= "3.7"
+numpy==1.22.1; python_version >= "3.8"
+packaging==21.3; python_version >= "3.7" or python_version >= "3.7"
 pandas==1.3.5; python_full_version >= "3.7.1"
-parso==0.8.3; python_version >= "3.7"
-partd==1.2.0; python_version >= "3.7"
-pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.7"
-pickleshare==0.7.5; python_version >= "3.7"
-pillow==9.0.0; python_version >= "3.7"
-prompt-toolkit==3.0.24; python_full_version >= "3.6.2" and python_version >= "3.7"
+partd==1.2.0; python_version >= "3.7" or python_version >= "3.7"
+pathspec==0.9.0; python_full_version >= "3.6.2"
+pillow==9.0.0; python_version >= "3.7" or python_version >= "3.7"
+platformdirs==2.4.1; python_version >= "3.7" and python_full_version >= "3.6.2"
 psutil==5.9.0; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.7"
-py==1.11.0; python_full_version >= "3.6.1" and python_version >= "3.7" and implementation_name == "pypy"
 pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
 pydap @ https://github.com/pydap/pydap/archive/3f6aa190c59e3bbc6c834377a61579b20275ff69.zip
 pygeos==0.12.0; python_version >= "3.6"
-pygments==2.11.2; python_version >= "3.7"
 pykdtree==1.3.4; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-pyparsing==3.0.6; python_version >= "3.7"
+pyparsing==3.0.6; python_version >= "3.6"
 pyproj==3.3.0; python_version >= "3.8"
 pyresample==1.22.3; python_version >= "3.7"
 pyshp==2.1.3; python_version >= "3.5"
-python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7"
+python-dateutil==2.8.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7" or python_version >= "3.7" and python_full_version >= "3.7.1"
 pytz==2021.3; python_version >= "3.7" and python_full_version >= "3.7.1"
-pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_full_version >= "3.6.1" and python_version >= "3.7"
-pyyaml==6.0; python_version >= "3.7"
-pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.7"
+pyyaml==6.0; python_version >= "3.7" or python_version >= "3.7"
 rasterio==1.2.10; python_version >= "3.6"
 requests==2.27.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
+rioxarray==0.9.1; python_version >= "3.7"
 scipy==1.7.3; python_version >= "3.7" and python_version < "3.11"
 setuptools-scm==6.3.2; python_version >= "3.7"
+setuptools==60.5.0; python_version >= "3.7"
 shapely==1.7.1
-six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7")
+six==1.16.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7"
 snuggs==1.4.7; python_version >= "3.6"
 sortedcontainers==2.4.0; python_version >= "3.7"
 soupsieve==2.3.1; python_version >= "3.6" and python_full_version > "3.0.0"
 tblib==1.7.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version >= "3.5.0"
-tomli==1.2.3; python_version >= "3.7"
-toolz==0.11.2; python_version >= "3.7"
-tornado==6.1; python_version >= "3.8" and python_full_version >= "3.6.1"
+tomli==1.2.3; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.7"
+toolz==0.11.2; python_version >= "3.7" or python_version >= "3.7"
+tornado==6.1; python_version >= "3.7" or python_version >= "3.8"
 tqdm==4.62.3; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-traitlets==5.1.1; python_full_version >= "3.6.1" and python_version >= "3.7"
-typing-extensions==4.0.1; python_version >= "3.7"
+typing-extensions==4.0.1; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.7"
 urllib3==1.26.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4"
-wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.7"
 webob==1.8.7; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0"
 xarray==0.20.2; python_version >= "3.7"
 zict==2.0.0; python_version >= "3.7"
diff --git a/poetry.lock b/poetry.lock
index 41a37ccc..66cbd5d6 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -22,7 +22,7 @@ name = "appnope"
 version = "0.1.2"
 description = "Disable App Nap on macOS >= 10.9"
 category = "main"
-optional = false
+optional = true
 python-versions = "*"
 
 [[package]]
@@ -56,6 +56,20 @@ cffi = ">=1.0.1"
 dev = ["pytest", "cogapp", "pre-commit", "wheel"]
 tests = ["pytest"]
 
+[[package]]
+name = "asttokens"
+version = "2.0.5"
+description = "Annotate AST trees with source code positions"
+category = "main"
+optional = true
+python-versions = "*"
+
+[package.dependencies]
+six = "*"
+
+[package.extras]
+test = ["astroid", "pytest"]
+
 [[package]]
 name = "astunparse"
 version = "1.6.3"
@@ -66,6 +80,7 @@ python-versions = "*"
 
 [package.dependencies]
 six = ">=1.6.1,<2.0"
+wheel = ">=0.23.0,<1.0"
 
 [[package]]
 name = "atomicwrites"
@@ -94,7 +109,7 @@ name = "backcall"
 version = "0.2.0"
 description = "Specifications for callback functions passed in to an API"
 category = "main"
-optional = false
+optional = true
 python-versions = "*"
 
 [[package]]
@@ -116,7 +131,7 @@ lxml = ["lxml"]
 name = "black"
 version = "21.12b0"
 description = "The uncompromising code formatter."
-category = "dev"
+category = "main"
 optional = false
 python-versions = ">=3.6.2"
 
@@ -350,15 +365,18 @@ tests_extra = ["flake8", "nbsmoke (>=0.2.6)", "pytest (>=2.8.5)", "pytest-cov",
 
 [[package]]
 name = "colorlog"
-version = "4.8.0"
-description = "Log formatting with colors!"
+version = "6.6.0"
+description = "Add colours to the output of Python's logging module."
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 
 [package.dependencies]
 colorama = {version = "*", markers = "sys_platform == \"win32\""}
 
+[package.extras]
+development = ["black", "flake8", "mypy", "pytest", "types-colorama"]
+
 [[package]]
 name = "conda-lock"
 version = "0.13.2"
@@ -396,6 +414,9 @@ category = "main"
 optional = true
 python-versions = ">=3.6"
 
+[package.dependencies]
+tomli = {version = "*", optional = true, markers = "extra == \"toml\""}
+
 [package.extras]
 toml = ["tomli"]
 
@@ -409,7 +430,7 @@ python-versions = ">=3.6"
 
 [[package]]
 name = "dask"
-version = "2021.12.0"
+version = "2022.1.0"
 description = "Parallel PyData with Task Scheduling"
 category = "main"
 optional = false
@@ -418,22 +439,22 @@ python-versions = ">=3.7"
 [package.dependencies]
 bokeh = {version = ">=2.1.1", optional = true, markers = "extra == \"complete\""}
 cloudpickle = ">=1.1.1"
-distributed = {version = "2021.12.0", optional = true, markers = "extra == \"complete\""}
+distributed = {version = "2022.01.0", optional = true, markers = "extra == \"complete\""}
 fsspec = ">=0.6.0"
 jinja2 = {version = "*", optional = true, markers = "extra == \"complete\""}
 numpy = {version = ">=1.18", optional = true, markers = "extra == \"complete\""}
 packaging = ">=20.0"
 pandas = {version = ">=1.0", optional = true, markers = "extra == \"complete\""}
 partd = ">=0.3.10"
-pyyaml = "*"
+pyyaml = ">=5.3.1"
 toolz = ">=0.8.2"
 
 [package.extras]
 array = ["numpy (>=1.18)"]
-complete = ["bokeh (>=2.1.1)", "distributed (==2021.12.0)", "jinja2", "numpy (>=1.18)", "pandas (>=1.0)"]
+complete = ["bokeh (>=2.1.1)", "distributed (==2022.01.0)", "jinja2", "numpy (>=1.18)", "pandas (>=1.0)"]
 dataframe = ["numpy (>=1.18)", "pandas (>=1.0)"]
 diagnostics = ["bokeh (>=2.1.1)", "jinja2"]
-distributed = ["distributed (==2021.12.0)"]
+distributed = ["distributed (==2022.01.0)"]
 test = ["pytest", "pytest-rerunfailures", "pytest-xdist", "pre-commit"]
 
 [[package]]
@@ -484,7 +505,7 @@ name = "debugpy"
 version = "1.5.1"
 description = "An implementation of the Debug Adapter Protocol for Python"
 category = "main"
-optional = false
+optional = true
 python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
 
 [[package]]
@@ -492,7 +513,7 @@ name = "decorator"
 version = "4.4.2"
 description = "Decorators for Humans"
 category = "main"
-optional = false
+optional = true
 python-versions = ">=2.6, !=3.0.*, !=3.1.*"
 
 [[package]]
@@ -505,7 +526,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 
 [[package]]
 name = "distributed"
-version = "2021.12.0"
+version = "2022.1.0"
 description = "Distributed scheduler for Dask"
 category = "main"
 optional = true
@@ -514,11 +535,13 @@ python-versions = ">=3.7"
 [package.dependencies]
 click = ">=6.6"
 cloudpickle = ">=1.5.0"
-dask = "2021.12.0"
+dask = "2022.01.0"
 jinja2 = "*"
 msgpack = ">=0.6.0"
+packaging = ">=20.0"
 psutil = ">=5.0"
 pyyaml = "*"
+setuptools = "*"
 sortedcontainers = "<2.0.0 || >2.0.0,<2.0.1 || >2.0.1"
 tblib = ">=1.6.0"
 toolz = ">=0.8.2"
@@ -566,7 +589,7 @@ name = "entrypoints"
 version = "0.3"
 description = "Discover and load entry points from installed packages."
 category = "main"
-optional = false
+optional = true
 python-versions = ">=2.7"
 
 [[package]]
@@ -580,6 +603,14 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 [package.extras]
 testing = ["pre-commit"]
 
+[[package]]
+name = "executing"
+version = "0.8.2"
+description = "Get the currently executing AST node of a frame, and other information"
+category = "main"
+optional = true
+python-versions = "*"
+
 [[package]]
 name = "f90nml"
 version = "1.3.1"
@@ -626,6 +657,7 @@ click = ">=4.0"
 click-plugins = ">=1.0"
 cligj = ">=0.5"
 munch = "*"
+setuptools = "*"
 six = ">=1.7"
 
 [package.extras]
@@ -844,7 +876,7 @@ python-versions = ">=3.4"
 
 [[package]]
 name = "importlib-metadata"
-version = "4.10.0"
+version = "4.10.1"
 description = "Read metadata from Python packages"
 category = "main"
 optional = true
@@ -904,7 +936,7 @@ name = "ipykernel"
 version = "6.7.0"
 description = "IPython Kernel for Jupyter"
 category = "main"
-optional = false
+optional = true
 python-versions = ">=3.7"
 
 [package.dependencies]
@@ -922,14 +954,14 @@ test = ["pytest (!=5.3.4)", "pytest-cov", "flaky", "ipyparallel"]
 
 [[package]]
 name = "ipympl"
-version = "0.8.5"
+version = "0.8.6"
 description = "Matplotlib Jupyter Extension"
 category = "main"
 optional = true
 python-versions = "*"
 
 [package.dependencies]
-ipython = "<8"
+ipython = "<9"
 ipython-genutils = "*"
 ipywidgets = ">=7.6.0,<8"
 matplotlib = ">=2.0.0,<4"
@@ -939,15 +971,16 @@ traitlets = "<6"
 
 [[package]]
 name = "ipython"
-version = "7.31.0"
+version = "8.0.0"
 description = "IPython: Productive Interactive Computing"
 category = "main"
-optional = false
-python-versions = ">=3.7"
+optional = true
+python-versions = ">=3.8"
 
 [package.dependencies]
 appnope = {version = "*", markers = "sys_platform == \"darwin\""}
 backcall = "*"
+black = "*"
 colorama = {version = "*", markers = "sys_platform == \"win32\""}
 decorator = "*"
 jedi = ">=0.16"
@@ -956,10 +989,12 @@ pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
 pickleshare = "*"
 prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0"
 pygments = "*"
-traitlets = ">=4.2"
+setuptools = ">=18.5"
+stack-data = "*"
+traitlets = ">=5"
 
 [package.extras]
-all = ["Sphinx (>=1.3)", "ipykernel", "ipyparallel", "ipywidgets", "nbconvert", "nbformat", "nose (>=0.10.1)", "notebook", "numpy (>=1.17)", "pygments", "qtconsole", "requests", "testpath"]
+all = ["Sphinx (>=1.3)", "curio", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.19)", "pandas", "pygments", "pytest", "pytest-asyncio", "qtconsole", "testpath", "trio"]
 doc = ["Sphinx (>=1.3)"]
 kernel = ["ipykernel"]
 nbconvert = ["nbconvert"]
@@ -967,7 +1002,8 @@ nbformat = ["nbformat"]
 notebook = ["notebook", "ipywidgets"]
 parallel = ["ipyparallel"]
 qtconsole = ["qtconsole"]
-test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.17)"]
+test = ["pytest", "pytest-asyncio", "testpath", "pygments"]
+test_extra = ["pytest", "testpath", "curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.19)", "pandas", "pygments", "trio"]
 
 [[package]]
 name = "ipython-genutils"
@@ -1068,7 +1104,7 @@ name = "jedi"
 version = "0.18.1"
 description = "An autocompletion tool for Python that can be used for text editors."
 category = "main"
-optional = false
+optional = true
 python-versions = ">=3.6"
 
 [package.dependencies]
@@ -1111,10 +1147,10 @@ format_nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-
 
 [[package]]
 name = "jupyter-client"
-version = "7.1.0"
+version = "7.1.1"
 description = "Jupyter protocol implementation and client libraries"
 category = "main"
-optional = false
+optional = true
 python-versions = ">=3.6.1"
 
 [package.dependencies]
@@ -1135,7 +1171,7 @@ name = "jupyter-core"
 version = "4.9.1"
 description = "Jupyter core package. A base package on which Jupyter projects rely."
 category = "main"
-optional = false
+optional = true
 python-versions = ">=3.6"
 
 [package.dependencies]
@@ -1231,7 +1267,7 @@ name = "matplotlib-inline"
 version = "0.1.3"
 description = "Inline Matplotlib backend for Jupyter"
 category = "main"
-optional = false
+optional = true
 python-versions = ">=3.5"
 
 [package.dependencies]
@@ -1391,17 +1427,17 @@ yaml = ["PyYAML (>=5.1.0)"]
 name = "mypy-extensions"
 version = "0.4.3"
 description = "Experimental type system extensions for programs checked with the mypy typechecker."
-category = "dev"
-optional = false
+category = "main"
+optional = true
 python-versions = "*"
 
 [[package]]
 name = "nbclient"
-version = "0.5.9"
+version = "0.5.10"
 description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
 category = "main"
 optional = true
-python-versions = ">=3.6.1"
+python-versions = ">=3.7.0"
 
 [package.dependencies]
 jupyter-client = ">=6.1.5"
@@ -1410,9 +1446,8 @@ nest-asyncio = "*"
 traitlets = ">=4.2"
 
 [package.extras]
-dev = ["codecov", "coverage", "ipython", "ipykernel", "ipywidgets", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "tox", "xmltodict", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "black"]
 sphinx = ["Sphinx (>=1.7)", "sphinx-book-theme", "mock", "moto", "myst-parser"]
-test = ["codecov", "coverage", "ipython", "ipykernel", "ipywidgets", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "tox", "xmltodict", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "black"]
+test = ["ipython", "ipykernel", "ipywidgets (<8.0.0)", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "xmltodict", "black", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)"]
 
 [[package]]
 name = "nbconvert"
@@ -1467,7 +1502,7 @@ name = "nest-asyncio"
 version = "1.5.4"
 description = "Patch asyncio to allow nested event loops"
 category = "main"
-optional = false
+optional = true
 python-versions = ">=3.5"
 
 [[package]]
@@ -1523,10 +1558,11 @@ python-versions = ">=3.6,<3.10"
 [package.dependencies]
 llvmlite = ">=0.36.0rc1,<0.37"
 numpy = ">=1.15"
+setuptools = "*"
 
 [[package]]
 name = "numpy"
-version = "1.22.0"
+version = "1.22.1"
 description = "NumPy is the fundamental package for array computing with Python."
 category = "main"
 optional = false
@@ -1615,7 +1651,7 @@ name = "parso"
 version = "0.8.3"
 description = "A Python Parser"
 category = "main"
-optional = false
+optional = true
 python-versions = ">=3.6"
 
 [package.extras]
@@ -1641,8 +1677,8 @@ complete = ["numpy (>=1.9.0)", "pandas (>=0.19.0)", "pyzmq", "blosc"]
 name = "pathspec"
 version = "0.9.0"
 description = "Utility library for gitignore style pattern matching of file paths."
-category = "dev"
-optional = false
+category = "main"
+optional = true
 python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
 
 [[package]]
@@ -1650,7 +1686,7 @@ name = "pexpect"
 version = "4.8.0"
 description = "Pexpect allows easy control of interactive console applications."
 category = "main"
-optional = false
+optional = true
 python-versions = "*"
 
 [package.dependencies]
@@ -1661,7 +1697,7 @@ name = "pickleshare"
 version = "0.7.5"
 description = "Tiny 'shelve'-like database with concurrency support"
 category = "main"
-optional = false
+optional = true
 python-versions = "*"
 
 [[package]]
@@ -1676,8 +1712,8 @@ python-versions = ">=3.7"
 name = "platformdirs"
 version = "2.4.1"
 description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
-category = "dev"
-optional = false
+category = "main"
+optional = true
 python-versions = ">=3.7"
 
 [package.extras]
@@ -1723,7 +1759,7 @@ name = "prompt-toolkit"
 version = "3.0.24"
 description = "Library for building powerful interactive command lines in Python"
 category = "main"
-optional = false
+optional = true
 python-versions = ">=3.6.2"
 
 [package.dependencies]
@@ -1745,15 +1781,26 @@ name = "ptyprocess"
 version = "0.7.0"
 description = "Run a subprocess in a pseudo terminal"
 category = "main"
-optional = false
+optional = true
 python-versions = "*"
 
+[[package]]
+name = "pure-eval"
+version = "0.2.1"
+description = "Safely evaluate AST nodes without side effects"
+category = "main"
+optional = true
+python-versions = "*"
+
+[package.extras]
+tests = ["pytest"]
+
 [[package]]
 name = "py"
 version = "1.11.0"
 description = "library with cross-python path, ini-parsing, io, code, log facilities"
 category = "main"
-optional = false
+optional = true
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 
 [[package]]
@@ -1847,7 +1894,7 @@ name = "pygments"
 version = "2.11.2"
 description = "Pygments is a syntax highlighting package written in Python."
 category = "main"
-optional = false
+optional = true
 python-versions = ">=3.5"
 
 [[package]]
@@ -1908,6 +1955,7 @@ numpy = ">=1.10.0"
 pykdtree = ">=1.3.1"
 pyproj = ">=2.2"
 pyyaml = "*"
+setuptools = ">=3.2"
 
 [package.extras]
 cf = ["xarray"]
@@ -1921,11 +1969,11 @@ xarray_bilinear = ["xarray", "dask", "zarr"]
 
 [[package]]
 name = "pyrsistent"
-version = "0.18.0"
+version = "0.18.1"
 description = "Persistent/Functional/Immutable data structures"
 category = "main"
 optional = true
-python-versions = ">=3.6"
+python-versions = ">=3.7"
 
 [[package]]
 name = "pyshp"
@@ -1958,16 +2006,15 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm
 
 [[package]]
 name = "pytest-cov"
-version = "2.12.1"
+version = "3.0.0"
 description = "Pytest plugin for measuring coverage."
 category = "main"
 optional = true
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=3.6"
 
 [package.dependencies]
-coverage = ">=5.2.1"
+coverage = {version = ">=5.2.1", extras = ["toml"]}
 pytest = ">=4.6"
-toml = "*"
 
 [package.extras]
 testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"]
@@ -2056,7 +2103,7 @@ name = "pywin32"
 version = "303"
 description = "Python for Window Extensions"
 category = "main"
-optional = false
+optional = true
 python-versions = "*"
 
 [[package]]
@@ -2091,7 +2138,7 @@ name = "pyzmq"
 version = "22.3.0"
 description = "Python bindings for 0MQ"
 category = "main"
-optional = false
+optional = true
 python-versions = ">=3.6"
 
 [package.dependencies]
@@ -2114,6 +2161,7 @@ click = ">=4.0"
 click-plugins = "*"
 cligj = ">=0.5"
 numpy = "*"
+setuptools = "*"
 snuggs = ">=1.4.1"
 
 [package.extras]
@@ -2142,6 +2190,26 @@ urllib3 = ">=1.21.1,<1.27"
 socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
 use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"]
 
+[[package]]
+name = "rioxarray"
+version = "0.9.1"
+description = "rasterio xarray extension."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[package.dependencies]
+packaging = "*"
+pyproj = ">=2.2"
+rasterio = "*"
+xarray = ">=0.17"
+
+[package.extras]
+all = ["scipy", "sphinx-click (==1.1.0)", "nbsphinx", "sphinx-rtd-theme", "pytest (>=3.6)", "pytest-cov", "pytest-timeout", "dask", "netcdf4", "sphinx-click (==1.1.0)", "nbsphinx", "sphinx-rtd-theme", "black", "flake8", "pylint", "isort", "pre-commit"]
+dev = ["pytest (>=3.6)", "pytest-cov", "pytest-timeout", "dask", "netcdf4", "sphinx-click (==1.1.0)", "nbsphinx", "sphinx-rtd-theme", "black", "flake8", "pylint", "isort", "pre-commit"]
+doc = ["sphinx-click (==1.1.0)", "nbsphinx", "sphinx-rtd-theme"]
+interp = ["scipy"]
+
 [[package]]
 name = "scipy"
 version = "1.7.3"
@@ -2166,6 +2234,19 @@ nativelib = ["pyobjc-framework-cocoa", "pywin32"]
 objc = ["pyobjc-framework-cocoa"]
 win32 = ["pywin32"]
 
+[[package]]
+name = "setuptools"
+version = "60.5.0"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinxcontrib-towncrier", "furo"]
+testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-perf", "mock", "flake8-2020", "virtualenv (>=13.0.0)", "wheel", "paver", "pip (>=19.1)", "jaraco.envs (>=2.2)", "pytest-xdist", "sphinx (>=4.3.2)", "jaraco.path (>=3.2.0)", "build", "filelock (>=3.4.0)", "pytest-black (>=0.3.7)", "pytest-mypy"]
+testing-integration = ["pytest", "pytest-xdist", "pytest-enabler", "virtualenv (>=13.0.0)", "tomli", "wheel", "jaraco.path (>=3.2.0)", "jaraco.envs (>=2.2)", "build", "filelock (>=3.4.0)"]
+
 [[package]]
 name = "setuptools-scm"
 version = "6.3.2"
@@ -2176,6 +2257,7 @@ python-versions = ">=3.6"
 
 [package.dependencies]
 packaging = ">=20.0"
+setuptools = "*"
 tomli = ">=1.0.0"
 
 [package.extras]
@@ -2233,6 +2315,22 @@ category = "main"
 optional = false
 python-versions = ">=3.6"
 
+[[package]]
+name = "stack-data"
+version = "0.1.4"
+description = "Extract data from python stack frames and tracebacks for informative displays"
+category = "main"
+optional = true
+python-versions = "*"
+
+[package.dependencies]
+asttokens = "*"
+executing = "*"
+pure-eval = "*"
+
+[package.extras]
+tests = ["pytest", "typeguard", "pygments", "littleutils"]
+
 [[package]]
 name = "tblib"
 version = "1.7.0"
@@ -2297,7 +2395,7 @@ name = "tornado"
 version = "6.1"
 description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
 category = "main"
-optional = false
+optional = true
 python-versions = ">= 3.5"
 
 [[package]]
@@ -2321,7 +2419,7 @@ name = "traitlets"
 version = "5.1.1"
 description = "Traitlets Python configuration system"
 category = "main"
-optional = false
+optional = true
 python-versions = ">=3.7"
 
 [package.extras]
@@ -2378,7 +2476,7 @@ name = "wcwidth"
 version = "0.2.5"
 description = "Measures the displayed width of unicode strings in a terminal"
 category = "main"
-optional = false
+optional = true
 python-versions = "*"
 
 [[package]]
@@ -2401,6 +2499,17 @@ python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*"
 docs = ["Sphinx (>=1.7.5)", "pylons-sphinx-themes"]
 testing = ["pytest (>=3.1.0)", "coverage", "pytest-cov", "pytest-xdist"]
 
+[[package]]
+name = "wheel"
+version = "0.37.1"
+description = "A built-package format for Python"
+category = "main"
+optional = true
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+
+[package.extras]
+test = ["pytest (>=3.0.0)", "pytest-cov"]
+
 [[package]]
 name = "widgetsnbextension"
 version = "3.5.2"
@@ -2477,7 +2586,7 @@ viz = ["ipykernel", "holoviews", "geoviews", "datashader", "hvplot", "moviepy",
 [metadata]
 lock-version = "1.1"
 python-versions = ">=3.8, <3.10"
-content-hash = "64487ada3e6fc5ad1cedd0d30ef5b6da6bef62e222d121b9d0fbdadd1a72f420"
+content-hash = "dceb0abf0e329bb65e8379172cf4254c8af03c657e0aeab093dc8427e48edf73"
 
 [metadata.files]
 affine = [
@@ -2519,6 +2628,10 @@ argon2-cffi-bindings = [
     {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
     {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
 ]
+asttokens = [
+    {file = "asttokens-2.0.5-py2.py3-none-any.whl", hash = "sha256:0844691e88552595a6f4a4281a9f7f79b8dd45ca4ccea82e5e05b4bbdb76705c"},
+    {file = "asttokens-2.0.5.tar.gz", hash = "sha256:9a54c114f02c7a9480d56550932546a3f1fe71d8a02f1bc7ccd0ee3ee35cf4d5"},
+]
 astunparse = [
     {file = "astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8"},
     {file = "astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872"},
@@ -2681,8 +2794,8 @@ colorcet = [
     {file = "colorcet-3.0.0.tar.gz", hash = "sha256:21c522346a7aa81a603729f2996c22ac3f7822f4c8c303c59761e27d2dfcf3db"},
 ]
 colorlog = [
-    {file = "colorlog-4.8.0-py2.py3-none-any.whl", hash = "sha256:3dd15cb27e8119a24c1a7b5c93f9f3b455855e0f73993b1c25921b2f646f1dcd"},
-    {file = "colorlog-4.8.0.tar.gz", hash = "sha256:59b53160c60902c405cdec28d38356e09d40686659048893e026ecbd589516b1"},
+    {file = "colorlog-6.6.0-py2.py3-none-any.whl", hash = "sha256:351c51e866c86c3217f08e4b067a7974a678be78f07f85fc2d55b8babde6d94e"},
+    {file = "colorlog-6.6.0.tar.gz", hash = "sha256:344f73204009e4c83c5b6beb00b3c45dc70fcdae3c80db919e0a4171d006fde8"},
 ]
 conda-lock = [
     {file = "conda_lock-0.13.2-py3-none-any.whl", hash = "sha256:73cf9472b5148c66fd2de4111061859d9a931396c2b6e1edfd5c5f5e768c9db0"},
@@ -2745,8 +2858,8 @@ cycler = [
     {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"},
 ]
 dask = [
-    {file = "dask-2021.12.0-py3-none-any.whl", hash = "sha256:47041fe1874e64c395e7be772173999e50b5c61a577084158083b9ef4b4175b2"},
-    {file = "dask-2021.12.0.tar.gz", hash = "sha256:90614c9d162713e4849532c86f2854e8d53468521285413403b6c496344c0109"},
+    {file = "dask-2022.1.0-py3-none-any.whl", hash = "sha256:36e3765ef7800451deff87b3fe90cbc8a4963e65b3fd4e2a73c112c243f88608"},
+    {file = "dask-2022.1.0.tar.gz", hash = "sha256:aee6eb6517f13dc00a3cc7ed9e13c728baa5850b8a35a2b93793d593a23ecbb8"},
 ]
 datashader = [
     {file = "datashader-0.12.1-py2.py3-none-any.whl", hash = "sha256:a19e89ddf44a817c8136db8fd4727d08ca38022248b9b3648038438ab58a7b1b"},
@@ -2787,8 +2900,8 @@ defusedxml = [
     {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
 ]
 distributed = [
-    {file = "distributed-2021.12.0-py3-none-any.whl", hash = "sha256:ea8cdb56ecbf1f999c4e28a5c848ce231cb90d6919e42c13e89ceb0d86366d41"},
-    {file = "distributed-2021.12.0.tar.gz", hash = "sha256:c6119a2cf1fb2d8ac60337915bb9a790af6530afcb5d7a809a3308323b874714"},
+    {file = "distributed-2022.1.0-py3-none-any.whl", hash = "sha256:de1dd357cdaf1aa986898584593aa7d84574005f84dd3e30b6ae10c27f82c95d"},
+    {file = "distributed-2022.1.0.tar.gz", hash = "sha256:71caba36b831ae4d4baacd44c702936198f236cae7d422edb50fe36ef5a68156"},
 ]
 docopt = [
     {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"},
@@ -2808,6 +2921,10 @@ execnet = [
     {file = "execnet-1.9.0-py2.py3-none-any.whl", hash = "sha256:a295f7cc774947aac58dde7fdc85f4aa00c42adf5d8f5468fc630c1acf30a142"},
     {file = "execnet-1.9.0.tar.gz", hash = "sha256:8f694f3ba9cc92cab508b152dcfe322153975c29bda272e2fd7f3f00f36e47c5"},
 ]
+executing = [
+    {file = "executing-0.8.2-py2.py3-none-any.whl", hash = "sha256:32fc6077b103bd19e6494a72682d66d5763cf20a106d5aa7c5ccbea4e47b0df7"},
+    {file = "executing-0.8.2.tar.gz", hash = "sha256:c23bf42e9a7b9b212f185b1b2c3c91feb895963378887bb10e64a2e612ec0023"},
+]
 f90nml = [
     {file = "f90nml-1.3.1.tar.gz", hash = "sha256:145c1f2c55bad628d225af22fc9bf06347eb0d33e7bae8a05869a68274b8fb2d"},
 ]
@@ -2883,8 +3000,8 @@ imageio-ffmpeg = [
     {file = "imageio_ffmpeg-0.4.5-py3-none-win_amd64.whl", hash = "sha256:d2ba8339eecc02fa73a6b85c34654c49a7c78d732a1ac76478d11224e6cfa902"},
 ]
 importlib-metadata = [
-    {file = "importlib_metadata-4.10.0-py3-none-any.whl", hash = "sha256:b7cf7d3fef75f1e4c80a96ca660efbd51473d7e8f39b5ab9210febc7809012a4"},
-    {file = "importlib_metadata-4.10.0.tar.gz", hash = "sha256:92a8b58ce734b2a4494878e0ecf7d79ccd7a128b5fc6014c401e0b61f006f0f6"},
+    {file = "importlib_metadata-4.10.1-py3-none-any.whl", hash = "sha256:899e2a40a8c4a1aec681feef45733de8a6c58f3f6a0dbed2eb6574b4387a77b6"},
+    {file = "importlib_metadata-4.10.1.tar.gz", hash = "sha256:951f0d8a5b7260e9db5e41d429285b5f451e928479f19d80818878527d36e95e"},
 ]
 importlib-resources = [
     {file = "importlib_resources-5.4.0-py3-none-any.whl", hash = "sha256:33a95faed5fc19b4bc16b29a6eeae248a3fe69dd55d4d229d2b480e23eeaad45"},
@@ -2903,12 +3020,12 @@ ipykernel = [
     {file = "ipykernel-6.7.0.tar.gz", hash = "sha256:d82b904fdc2fd8c7b1fbe0fa481c68a11b4cd4c8ef07e6517da1f10cc3114d24"},
 ]
 ipympl = [
-    {file = "ipympl-0.8.5-py2.py3-none-any.whl", hash = "sha256:120a084d84e6a6a00fc39c73e10345dcd9855efb3fa6e774f3e72057a866715c"},
-    {file = "ipympl-0.8.5.tar.gz", hash = "sha256:bebc6b8b7177d6e9fbc02235060e3fe0ee758f3b00ec5b9c8398f8ede1c4c369"},
+    {file = "ipympl-0.8.6-py2.py3-none-any.whl", hash = "sha256:3d1504cb80aa0701e2c9da6d1c3c23c998233dbca93061255c7d62a4e7468200"},
+    {file = "ipympl-0.8.6.tar.gz", hash = "sha256:d0f4f613aaa4134be0be1e4eefa99182b063701ee47f9b91a6efe19bdc4119c5"},
 ]
 ipython = [
-    {file = "ipython-7.31.0-py3-none-any.whl", hash = "sha256:4c4234cdcc6b8f87c5b5c7af9899aa696ac5cfcf0e9f6d0688018bbee5c73bce"},
-    {file = "ipython-7.31.0.tar.gz", hash = "sha256:346c74db7312c41fa566d3be45d2e759a528dcc2994fe48aac1a03a70cd668a3"},
+    {file = "ipython-8.0.0-py3-none-any.whl", hash = "sha256:5b58cf977635abad74d76be49dbb2e97fddd825fb8503083d55496aa1160b854"},
+    {file = "ipython-8.0.0.tar.gz", hash = "sha256:004a0d05aeecd32adec4841b6e2586d5ca35785b1477db4d8333a39333e0ce98"},
 ]
 ipython-genutils = [
     {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"},
@@ -3006,8 +3123,8 @@ jsonschema = [
     {file = "jsonschema-4.4.0.tar.gz", hash = "sha256:636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83"},
 ]
 jupyter-client = [
-    {file = "jupyter_client-7.1.0-py3-none-any.whl", hash = "sha256:64d93752d8cbfba0c1030c3335c3f0d9797cd1efac012652a14aac1653db11a3"},
-    {file = "jupyter_client-7.1.0.tar.gz", hash = "sha256:a5f995a73cffb314ed262713ae6dfce53c6b8216cea9f332071b8ff44a6e1654"},
+    {file = "jupyter_client-7.1.1-py3-none-any.whl", hash = "sha256:f0c576cce235c727e30b0a0da88c2755d0947d0070fa1bc45f195079ffd64e66"},
+    {file = "jupyter_client-7.1.1.tar.gz", hash = "sha256:540ca35e57e83c5ece81abd9b781a57cba39a37c60a2a30c8c1b2f6663544343"},
 ]
 jupyter-core = [
     {file = "jupyter_core-4.9.1-py3-none-any.whl", hash = "sha256:1c091f3bbefd6f2a8782f2c1db662ca8478ac240e962ae2c66f0b87c818154ea"},
@@ -3104,9 +3221,6 @@ markupsafe = [
     {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"},
     {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"},
     {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"},
     {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"},
     {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"},
     {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
@@ -3118,9 +3232,6 @@ markupsafe = [
     {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"},
     {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"},
     {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"},
     {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"},
     {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"},
     {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"},
@@ -3132,9 +3243,6 @@ markupsafe = [
     {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"},
     {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"},
     {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"},
     {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"},
     {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"},
     {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"},
@@ -3147,9 +3255,6 @@ markupsafe = [
     {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"},
     {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"},
     {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"},
     {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"},
     {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"},
     {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"},
@@ -3162,9 +3267,6 @@ markupsafe = [
     {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"},
     {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"},
     {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"},
     {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
     {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
     {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
@@ -3291,8 +3393,8 @@ mypy-extensions = [
     {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
 ]
 nbclient = [
-    {file = "nbclient-0.5.9-py3-none-any.whl", hash = "sha256:8a307be4129cce5f70eb83a57c3edbe45656623c31de54e38bb6fdfbadc428b3"},
-    {file = "nbclient-0.5.9.tar.gz", hash = "sha256:99e46ddafacd0b861293bf246fed8540a184adfa3aa7d641f89031ec070701e0"},
+    {file = "nbclient-0.5.10-py3-none-any.whl", hash = "sha256:5b582e21c8b464e6676a9d60acc6871d7fbc3b080f74bef265a9f90411b31f6f"},
+    {file = "nbclient-0.5.10.tar.gz", hash = "sha256:b5fdea88d6fa52ca38de6c2361401cfe7aaa7cd24c74effc5e489cec04d79088"},
 ]
 nbconvert = [
     {file = "nbconvert-6.4.0-py3-none-any.whl", hash = "sha256:f5ec6a1fad9e3aa2bee7c6a1c4ad3e0fafaa7ff64f29ba56d9da7e1669f8521c"},
@@ -3364,28 +3466,28 @@ numba = [
     {file = "numba-0.53.1.tar.gz", hash = "sha256:9cd4e5216acdc66c4e9dab2dfd22ddb5bef151185c070d4a3cd8e78638aff5b0"},
 ]
 numpy = [
-    {file = "numpy-1.22.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d22662b4b10112c545c91a0741f2436f8ca979ab3d69d03d19322aa970f9695"},
-    {file = "numpy-1.22.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:11a1f3816ea82eed4178102c56281782690ab5993251fdfd75039aad4d20385f"},
-    {file = "numpy-1.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5dc65644f75a4c2970f21394ad8bea1a844104f0fe01f278631be1c7eae27226"},
-    {file = "numpy-1.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c16cec1c8cf2728f1d539bd55aaa9d6bb48a7de2f41eb944697293ef65a559"},
-    {file = "numpy-1.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97e82c39d9856fe7d4f9b86d8a1e66eff99cf3a8b7ba48202f659703d27c46f"},
-    {file = "numpy-1.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:e41e8951749c4b5c9a2dc5fdbc1a4eec6ab2a140fdae9b460b0f557eed870f4d"},
-    {file = "numpy-1.22.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bece0a4a49e60e472a6d1f70ac6cdea00f9ab80ff01132f96bd970cdd8a9e5a9"},
-    {file = "numpy-1.22.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:818b9be7900e8dc23e013a92779135623476f44a0de58b40c32a15368c01d471"},
-    {file = "numpy-1.22.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:47ee7a839f5885bc0c63a74aabb91f6f40d7d7b639253768c4199b37aede7982"},
-    {file = "numpy-1.22.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a024181d7aef0004d76fb3bce2a4c9f2e67a609a9e2a6ff2571d30e9976aa383"},
-    {file = "numpy-1.22.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f71d57cc8645f14816ae249407d309be250ad8de93ef61d9709b45a0ddf4050c"},
-    {file = "numpy-1.22.0-cp38-cp38-win32.whl", hash = "sha256:283d9de87c0133ef98f93dfc09fad3fb382f2a15580de75c02b5bb36a5a159a5"},
-    {file = "numpy-1.22.0-cp38-cp38-win_amd64.whl", hash = "sha256:2762331de395739c91f1abb88041f94a080cb1143aeec791b3b223976228af3f"},
-    {file = "numpy-1.22.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:76ba7c40e80f9dc815c5e896330700fd6e20814e69da9c1267d65a4d051080f1"},
-    {file = "numpy-1.22.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0cfe07133fd00b27edee5e6385e333e9eeb010607e8a46e1cd673f05f8596595"},
-    {file = "numpy-1.22.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6ed0d073a9c54ac40c41a9c2d53fcc3d4d4ed607670b9e7b0de1ba13b4cbfe6f"},
-    {file = "numpy-1.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41388e32e40b41dd56eb37fcaa7488b2b47b0adf77c66154d6b89622c110dfe9"},
-    {file = "numpy-1.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b55b953a1bdb465f4dc181758570d321db4ac23005f90ffd2b434cc6609a63dd"},
-    {file = "numpy-1.22.0-cp39-cp39-win32.whl", hash = "sha256:5a311ee4d983c487a0ab546708edbdd759393a3dc9cd30305170149fedd23c88"},
-    {file = "numpy-1.22.0-cp39-cp39-win_amd64.whl", hash = "sha256:a97a954a8c2f046d3817c2bce16e3c7e9a9c2afffaf0400f5c16df5172a67c9c"},
-    {file = "numpy-1.22.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb02929b0d6bfab4c48a79bd805bd7419114606947ec8284476167415171f55b"},
-    {file = "numpy-1.22.0.zip", hash = "sha256:a955e4128ac36797aaffd49ab44ec74a71c11d6938df83b1285492d277db5397"},
+    {file = "numpy-1.22.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d62d6b0870b53799204515145935608cdeb4cebb95a26800b6750e48884cc5b"},
+    {file = "numpy-1.22.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:831f2df87bd3afdfc77829bc94bd997a7c212663889d56518359c827d7113b1f"},
+    {file = "numpy-1.22.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8d1563060e77096367952fb44fca595f2b2f477156de389ce7c0ade3aef29e21"},
+    {file = "numpy-1.22.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69958735d5e01f7b38226a6c6e7187d72b7e4d42b6b496aca5860b611ca0c193"},
+    {file = "numpy-1.22.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45a7dfbf9ed8d68fd39763940591db7637cf8817c5bce1a44f7b56c97cbe211e"},
+    {file = "numpy-1.22.1-cp310-cp310-win_amd64.whl", hash = "sha256:7e957ca8112c689b728037cea9c9567c27cf912741fabda9efc2c7d33d29dfa1"},
+    {file = "numpy-1.22.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:800dfeaffb2219d49377da1371d710d7952c9533b57f3d51b15e61c4269a1b5b"},
+    {file = "numpy-1.22.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:65f5e257987601fdfc63f1d02fca4d1c44a2b85b802f03bd6abc2b0b14648dd2"},
+    {file = "numpy-1.22.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:632e062569b0fe05654b15ef0e91a53c0a95d08ffe698b66f6ba0f927ad267c2"},
+    {file = "numpy-1.22.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d245a2bf79188d3f361137608c3cd12ed79076badd743dc660750a9f3074f7c"},
+    {file = "numpy-1.22.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b4018a19d2ad9606ce9089f3d52206a41b23de5dfe8dc947d2ec49ce45d015"},
+    {file = "numpy-1.22.1-cp38-cp38-win32.whl", hash = "sha256:f8ad59e6e341f38266f1549c7c2ec70ea0e3d1effb62a44e5c3dba41c55f0187"},
+    {file = "numpy-1.22.1-cp38-cp38-win_amd64.whl", hash = "sha256:60f19c61b589d44fbbab8ff126640ae712e163299c2dd422bfe4edc7ec51aa9b"},
+    {file = "numpy-1.22.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2db01d9838a497ba2aa9a87515aeaf458f42351d72d4e7f3b8ddbd1eba9479f2"},
+    {file = "numpy-1.22.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bcd19dab43b852b03868796f533b5f5561e6c0e3048415e675bec8d2e9d286c1"},
+    {file = "numpy-1.22.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:78bfbdf809fc236490e7e65715bbd98377b122f329457fffde206299e163e7f3"},
+    {file = "numpy-1.22.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c51124df17f012c3b757380782ae46eee85213a3215e51477e559739f57d9bf6"},
+    {file = "numpy-1.22.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88d54b7b516f0ca38a69590557814de2dd638d7d4ed04864826acaac5ebb8f01"},
+    {file = "numpy-1.22.1-cp39-cp39-win32.whl", hash = "sha256:b5ec9a5eaf391761c61fd873363ef3560a3614e9b4ead17347e4deda4358bca4"},
+    {file = "numpy-1.22.1-cp39-cp39-win_amd64.whl", hash = "sha256:4ac4d7c9f8ea2a79d721ebfcce81705fc3cd61a10b731354f1049eb8c99521e8"},
+    {file = "numpy-1.22.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e60ef82c358ded965fdd3132b5738eade055f48067ac8a5a8ac75acc00cad31f"},
+    {file = "numpy-1.22.1.zip", hash = "sha256:e348ccf5bc5235fc405ab19d53bec215bb373300e5523c7b476cc0da8a5e9973"},
 ]
 packaging = [
     {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
@@ -3541,6 +3643,10 @@ ptyprocess = [
     {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
     {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
 ]
+pure-eval = [
+    {file = "pure_eval-0.2.1-py3-none-any.whl", hash = "sha256:94eeb505a88721bec7bb21a4ac49758b8b1a01530da1a70d4ffc1d9937689d71"},
+    {file = "pure_eval-0.2.1.tar.gz", hash = "sha256:0f04483b16c9429532d2c0ddc96e2b3bb6b2dc37a2bfb0e986248dbfd0b78873"},
+]
 py = [
     {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
     {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
@@ -3702,27 +3808,27 @@ pyresample = [
     {file = "pyresample-1.22.3.tar.gz", hash = "sha256:fb36eaa65abd3e21e26d4ac203f298456c3a18bd6285677ff46da5c816e5106c"},
 ]
 pyrsistent = [
-    {file = "pyrsistent-0.18.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f4c8cabb46ff8e5d61f56a037974228e978f26bfefce4f61a4b1ac0ba7a2ab72"},
-    {file = "pyrsistent-0.18.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:da6e5e818d18459fa46fac0a4a4e543507fe1110e808101277c5a2b5bab0cd2d"},
-    {file = "pyrsistent-0.18.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5e4395bbf841693eaebaa5bb5c8f5cdbb1d139e07c975c682ec4e4f8126e03d2"},
-    {file = "pyrsistent-0.18.0-cp36-cp36m-win32.whl", hash = "sha256:527be2bfa8dc80f6f8ddd65242ba476a6c4fb4e3aedbf281dfbac1b1ed4165b1"},
-    {file = "pyrsistent-0.18.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2aaf19dc8ce517a8653746d98e962ef480ff34b6bc563fc067be6401ffb457c7"},
-    {file = "pyrsistent-0.18.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58a70d93fb79dc585b21f9d72487b929a6fe58da0754fa4cb9f279bb92369396"},
-    {file = "pyrsistent-0.18.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4916c10896721e472ee12c95cdc2891ce5890898d2f9907b1b4ae0f53588b710"},
-    {file = "pyrsistent-0.18.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:73ff61b1411e3fb0ba144b8f08d6749749775fe89688093e1efef9839d2dcc35"},
-    {file = "pyrsistent-0.18.0-cp37-cp37m-win32.whl", hash = "sha256:b29b869cf58412ca5738d23691e96d8aff535e17390128a1a52717c9a109da4f"},
-    {file = "pyrsistent-0.18.0-cp37-cp37m-win_amd64.whl", hash = "sha256:097b96f129dd36a8c9e33594e7ebb151b1515eb52cceb08474c10a5479e799f2"},
-    {file = "pyrsistent-0.18.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:772e94c2c6864f2cd2ffbe58bb3bdefbe2a32afa0acb1a77e472aac831f83427"},
-    {file = "pyrsistent-0.18.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c1a9ff320fa699337e05edcaae79ef8c2880b52720bc031b219e5b5008ebbdef"},
-    {file = "pyrsistent-0.18.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:cd3caef37a415fd0dae6148a1b6957a8c5f275a62cca02e18474608cb263640c"},
-    {file = "pyrsistent-0.18.0-cp38-cp38-win32.whl", hash = "sha256:e79d94ca58fcafef6395f6352383fa1a76922268fa02caa2272fff501c2fdc78"},
-    {file = "pyrsistent-0.18.0-cp38-cp38-win_amd64.whl", hash = "sha256:a0c772d791c38bbc77be659af29bb14c38ced151433592e326361610250c605b"},
-    {file = "pyrsistent-0.18.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d5ec194c9c573aafaceebf05fc400656722793dac57f254cd4741f3c27ae57b4"},
-    {file = "pyrsistent-0.18.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:6b5eed00e597b5b5773b4ca30bd48a5774ef1e96f2a45d105db5b4ebb4bca680"},
-    {file = "pyrsistent-0.18.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:48578680353f41dca1ca3dc48629fb77dfc745128b56fc01096b2530c13fd426"},
-    {file = "pyrsistent-0.18.0-cp39-cp39-win32.whl", hash = "sha256:f3ef98d7b76da5eb19c37fda834d50262ff9167c65658d1d8f974d2e4d90676b"},
-    {file = "pyrsistent-0.18.0-cp39-cp39-win_amd64.whl", hash = "sha256:404e1f1d254d314d55adb8d87f4f465c8693d6f902f67eb6ef5b4526dc58e6ea"},
-    {file = "pyrsistent-0.18.0.tar.gz", hash = "sha256:773c781216f8c2900b42a7b638d5b517bb134ae1acbebe4d1e8f1f41ea60eb4b"},
+    {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"},
+    {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"},
+    {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e"},
+    {file = "pyrsistent-0.18.1-cp310-cp310-win32.whl", hash = "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6"},
+    {file = "pyrsistent-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec"},
+    {file = "pyrsistent-0.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b"},
+    {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc"},
+    {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22"},
+    {file = "pyrsistent-0.18.1-cp37-cp37m-win32.whl", hash = "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8"},
+    {file = "pyrsistent-0.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286"},
+    {file = "pyrsistent-0.18.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"},
+    {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec"},
+    {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c"},
+    {file = "pyrsistent-0.18.1-cp38-cp38-win32.whl", hash = "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca"},
+    {file = "pyrsistent-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a"},
+    {file = "pyrsistent-0.18.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5"},
+    {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045"},
+    {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c"},
+    {file = "pyrsistent-0.18.1-cp39-cp39-win32.whl", hash = "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc"},
+    {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"},
+    {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"},
 ]
 pyshp = [
     {file = "pyshp-2.1.3.tar.gz", hash = "sha256:e32b4a6832a3b97986df442df63b4c4a7dcc846b326c903189530a5cc6df0260"},
@@ -3732,8 +3838,8 @@ pytest = [
     {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
 ]
 pytest-cov = [
-    {file = "pytest-cov-2.12.1.tar.gz", hash = "sha256:261ceeb8c227b726249b376b8526b600f38667ee314f910353fa318caa01f4d7"},
-    {file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"},
+    {file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"},
+    {file = "pytest_cov-3.0.0-py3-none-any.whl", hash = "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6"},
 ]
 pytest-forked = [
     {file = "pytest-forked-1.4.0.tar.gz", hash = "sha256:8b67587c8f98cbbadfdd804539ed5455b6ed03802203485dd2f53c1422d7440e"},
@@ -3826,32 +3932,24 @@ pyzmq = [
     {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f89468059ebc519a7acde1ee50b779019535db8dcf9b8c162ef669257fef7a93"},
     {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea12133df25e3a6918718fbb9a510c6ee5d3fdd5a346320421aac3882f4feeea"},
     {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c532fd68b93998aab92356be280deec5de8f8fe59cd28763d2cc8a58747b7f"},
-    {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f907c7359ce8bf7f7e63c82f75ad0223384105f5126f313400b7e8004d9b33c3"},
-    {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:902319cfe23366595d3fa769b5b751e6ee6750a0a64c5d9f757d624b2ac3519e"},
     {file = "pyzmq-22.3.0-cp310-cp310-win32.whl", hash = "sha256:67db33bea0a29d03e6eeec55a8190e033318cee3cbc732ba8fd939617cbf762d"},
     {file = "pyzmq-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:7661fc1d5cb73481cf710a1418a4e1e301ed7d5d924f91c67ba84b2a1b89defd"},
     {file = "pyzmq-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79244b9e97948eaf38695f4b8e6fc63b14b78cc37f403c6642ba555517ac1268"},
     {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab888624ed68930442a3f3b0b921ad7439c51ba122dbc8c386e6487a658e4a4e"},
     {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18cd854b423fce44951c3a4d3e686bac8f1243d954f579e120a1714096637cc0"},
     {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:de8df0684398bd74ad160afdc2a118ca28384ac6f5e234eb0508858d8d2d9364"},
-    {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:62bcade20813796c426409a3e7423862d50ff0639f5a2a95be4b85b09a618666"},
-    {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ea5a79e808baef98c48c884effce05c31a0698c1057de8fc1c688891043c1ce1"},
     {file = "pyzmq-22.3.0-cp36-cp36m-win32.whl", hash = "sha256:3c1895c95be92600233e476fe283f042e71cf8f0b938aabf21b7aafa62a8dac9"},
     {file = "pyzmq-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:851977788b9caa8ed011f5f643d3ee8653af02c5fc723fa350db5125abf2be7b"},
     {file = "pyzmq-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b4ebed0977f92320f6686c96e9e8dd29eed199eb8d066936bac991afc37cbb70"},
     {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42abddebe2c6a35180ca549fadc7228d23c1e1f76167c5ebc8a936b5804ea2df"},
     {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1e41b32d6f7f9c26bc731a8b529ff592f31fc8b6ef2be9fa74abd05c8a342d7"},
     {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:be4e0f229cf3a71f9ecd633566bd6f80d9fa6afaaff5489492be63fe459ef98c"},
-    {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:08c4e315a76ef26eb833511ebf3fa87d182152adf43dedee8d79f998a2162a0b"},
-    {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:badb868fff14cfd0e200eaa845887b1011146a7d26d579aaa7f966c203736b92"},
     {file = "pyzmq-22.3.0-cp37-cp37m-win32.whl", hash = "sha256:7c58f598d9fcc52772b89a92d72bf8829c12d09746a6d2c724c5b30076c1f11d"},
     {file = "pyzmq-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2b97502c16a5ec611cd52410bdfaab264997c627a46b0f98d3f666227fd1ea2d"},
     {file = "pyzmq-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d728b08448e5ac3e4d886b165385a262883c34b84a7fe1166277fe675e1c197a"},
     {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:480b9931bfb08bf8b094edd4836271d4d6b44150da051547d8c7113bf947a8b0"},
     {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7dc09198e4073e6015d9a8ea093fc348d4e59de49382476940c3dd9ae156fba8"},
     {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ca6cd58f62a2751728016d40082008d3b3412a7f28ddfb4a2f0d3c130f69e74"},
-    {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:468bd59a588e276961a918a3060948ae68f6ff5a7fa10bb2f9160c18fe341067"},
-    {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c88fa7410e9fc471e0858638f403739ee869924dd8e4ae26748496466e27ac59"},
     {file = "pyzmq-22.3.0-cp38-cp38-win32.whl", hash = "sha256:c0f84360dcca3481e8674393bdf931f9f10470988f87311b19d23cda869bb6b7"},
     {file = "pyzmq-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f762442bab706fd874064ca218b33a1d8e40d4938e96c24dafd9b12e28017f45"},
     {file = "pyzmq-22.3.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:954e73c9cd4d6ae319f1c936ad159072b6d356a92dcbbabfd6e6204b9a79d356"},
@@ -3859,8 +3957,6 @@ pyzmq = [
     {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:acebba1a23fb9d72b42471c3771b6f2f18dcd46df77482612054bd45c07dfa36"},
     {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cf98fd7a6c8aaa08dbc699ffae33fd71175696d78028281bc7b832b26f00ca57"},
     {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d072f7dfbdb184f0786d63bda26e8a0882041b1e393fbe98940395f7fab4c5e2"},
-    {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:53f4fd13976789ffafedd4d46f954c7bb01146121812b72b4ddca286034df966"},
-    {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1b5d457acbadcf8b27561deeaa386b0217f47626b29672fa7bd31deb6e91e1b"},
     {file = "pyzmq-22.3.0-cp39-cp39-win32.whl", hash = "sha256:e6a02cf7271ee94674a44f4e62aa061d2d049001c844657740e156596298b70b"},
     {file = "pyzmq-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d3dcb5548ead4f1123851a5ced467791f6986d68c656bc63bfff1bf9e36671e2"},
     {file = "pyzmq-22.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3a4c9886d61d386b2b493377d980f502186cd71d501fffdba52bd2a0880cef4f"},
@@ -3884,6 +3980,9 @@ requests = [
     {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"},
     {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"},
 ]
+rioxarray = [
+    {file = "rioxarray-0.9.1.tar.gz", hash = "sha256:303e39c30918899ceeb601db628273a55796268e9e4e8b78b836080586c350e7"},
+]
 scipy = [
     {file = "scipy-1.7.3-1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:c9e04d7e9b03a8a6ac2045f7c5ef741be86727d8f49c45db45f244bdd2bcff17"},
     {file = "scipy-1.7.3-1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b0e0aeb061a1d7dcd2ed59ea57ee56c9b23dd60100825f98238c06ee5cc4467e"},
@@ -3919,6 +4018,10 @@ send2trash = [
     {file = "Send2Trash-1.8.0-py3-none-any.whl", hash = "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08"},
     {file = "Send2Trash-1.8.0.tar.gz", hash = "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d"},
 ]
+setuptools = [
+    {file = "setuptools-60.5.0-py3-none-any.whl", hash = "sha256:68eb94073fc486091447fcb0501efd6560a0e5a1839ba249e5ff3c4c93f05f90"},
+    {file = "setuptools-60.5.0.tar.gz", hash = "sha256:2404879cda71495fc4d5cbc445ed52fdaddf352b36e40be8dcc63147cb4edabe"},
+]
 setuptools-scm = [
     {file = "setuptools_scm-6.3.2-py3-none-any.whl", hash = "sha256:4c64444b1d49c4063ae60bfe1680f611c8b13833d556fd1d6050c0023162a119"},
     {file = "setuptools_scm-6.3.2.tar.gz", hash = "sha256:a49aa8081eeb3514eb9728fa5040f2eaa962d6c6f4ec9c32f6c1fba88f88a0f2"},
@@ -3964,6 +4067,10 @@ soupsieve = [
     {file = "soupsieve-2.3.1-py3-none-any.whl", hash = "sha256:1a3cca2617c6b38c0343ed661b1fa5de5637f257d4fe22bd9f1338010a1efefb"},
     {file = "soupsieve-2.3.1.tar.gz", hash = "sha256:b8d49b1cd4f037c7082a9683dfa1801aa2597fb11c3a1155b7a5b94829b4f1f9"},
 ]
+stack-data = [
+    {file = "stack_data-0.1.4-py3-none-any.whl", hash = "sha256:02cc0683cbc445ae4ca8c4e3a0e58cb1df59f252efb0aa016b34804a707cf9bc"},
+    {file = "stack_data-0.1.4.tar.gz", hash = "sha256:7769ed2482ce0030e00175dd1bf4ef1e873603b6ab61cd3da443b410e64e9477"},
+]
 tblib = [
     {file = "tblib-1.7.0-py2.py3-none-any.whl", hash = "sha256:289fa7359e580950e7d9743eab36b0691f0310fce64dee7d9c31065b8f723e23"},
     {file = "tblib-1.7.0.tar.gz", hash = "sha256:059bd77306ea7b419d4f76016aef6d7027cc8a0785579b5aad198803435f882c"},
@@ -4088,6 +4195,10 @@ webob = [
     {file = "WebOb-1.8.7-py2.py3-none-any.whl", hash = "sha256:73aae30359291c14fa3b956f8b5ca31960e420c28c1bec002547fb04928cf89b"},
     {file = "WebOb-1.8.7.tar.gz", hash = "sha256:b64ef5141be559cfade448f044fa45c2260351edcb6a8ef6b7e00c7dcef0c323"},
 ]
+wheel = [
+    {file = "wheel-0.37.1-py2.py3-none-any.whl", hash = "sha256:4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a"},
+    {file = "wheel-0.37.1.tar.gz", hash = "sha256:e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4"},
+]
 widgetsnbextension = [
     {file = "widgetsnbextension-3.5.2-py2.py3-none-any.whl", hash = "sha256:763a9fdc836d141fa080005a886d63f66f73d56dba1fb5961afc239c77708569"},
     {file = "widgetsnbextension-3.5.2.tar.gz", hash = "sha256:e0731a60ba540cd19bbbefe771a9076dcd2dde90713a8f87f27f53f2d1db7727"},
diff --git a/pyposeidon/__init__.py b/pyposeidon/__init__.py
index e38f55b4..651e5c6c 100644
--- a/pyposeidon/__init__.py
+++ b/pyposeidon/__init__.py
@@ -3,23 +3,5 @@
 __author__ = "George Breyiannis (breyiannis@gmail.com)"
 __license__ = "EUPL-1.2"
 __version__ = "0.5.2"
-
-__all__ = [
-    "model",
-    "meteo",
-    "dem",
-    "grid",
-    "utils",
-    "tide" "TEST_DIR",
-]
-
-import pathlib
-
-from .model import *
 from .d3d import d3d
-from .schism import schism
-
-# specify package paths
-ROOT_DIR = pathlib.Path(__file__).resolve().parent
-TEST_DIR = ROOT_DIR / "tests"
-DATA_DIR = TEST_DIR / "data"
+from .schism import Schism
diff --git a/pyposeidon/bnd.py b/pyposeidon/bnd.py
index c5ac0c78..0a794a80 100644
--- a/pyposeidon/bnd.py
+++ b/pyposeidon/bnd.py
@@ -1,6 +1,5 @@
 """Get boundaries"""
 import numpy as np
-from pyposeidon.tide import *
 
 
 def grouper(iterable):
@@ -17,12 +16,12 @@ def grouper(iterable):
         yield group
 
 
-class bound:
+class Bound:
     def __init__(self, **kwargs):
         btype = kwargs.get("btype", None)
 
 
-class box(bound):
+class Box(Bound):
     def __init__(self, **kwargs):
 
         lons = kwargs.get("lons", None)
diff --git a/pyposeidon/boundary.py b/pyposeidon/boundary.py
index 27f44d43..b5b944a2 100644
--- a/pyposeidon/boundary.py
+++ b/pyposeidon/boundary.py
@@ -13,7 +13,7 @@
 import sys
 import matplotlib.pyplot as plt
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
 def simplify(geo):
@@ -38,7 +38,7 @@ def simplify(geo):
     return geo
 
 
-class get_boundaries:
+class Boundary:
     def __init__(self, **kwargs):
         """
         Set model boundaries
@@ -134,7 +134,7 @@ def __init__(self, **kwargs):
             if dsource is None:
                 logger.error("dem_source is required")
 
-            dem = pdem.dem(geometry=self.geometry, dem_source=dsource)
+            dem = pdem.Dem(geometry=self.geometry, dem_source=dsource)
             dem_ = dem.Dataset
 
             self.coasts = get_dem_contours(blevels, dem_)
diff --git a/pyposeidon/d3d.py b/pyposeidon/d3d.py
index b6e5d7d0..aafa82f4 100644
--- a/pyposeidon/d3d.py
+++ b/pyposeidon/d3d.py
@@ -28,31 +28,29 @@
 import pyposeidon.mesh as pmesh
 import pyposeidon.meteo as pmeteo
 import pyposeidon.dem as pdem
+from pyposeidon.paths import DATA_PATH
 from pyposeidon.utils.get_value import get_value
 from pyposeidon.utils.converter import myconverter
 from pyposeidon.utils import data
 import logging
 
-logger = logging.getLogger("pyposeidon")
+from .bnd import Box
+
+logger = logging.getLogger(__name__)
 
 import multiprocessing
 
 NCORES = max(1, multiprocessing.cpu_count() - 1)
 
-# retrieve the module path
-DATA_PATH = os.path.dirname(pyposeidon.__file__) + "/misc/"
-
-# add conda path to PATH
-cpath = pyposeidon.__path__[0].split("/lib/")[0]
-os.environ["PATH"] += os.pathsep + cpath + "/bin"
-
-
 # strings to be used
 le = ["A", "B"]
 
 nm = ["Z", "A"]
 
 
+D3D_NAME = "d3d"
+
+
 class d3d:
     def __init__(self, **kwargs):
 
@@ -107,7 +105,7 @@ def __init__(self, **kwargs):
         self.atm = kwargs.get("atm", True)
         self.ofilename = kwargs.get("ofilename", None)
 
-        self.solver = self.__class__.__name__
+        self.solver_name = D3D_NAME
 
         try:
             self.epath = os.environ["D3D"]
@@ -437,7 +435,7 @@ def bath(self, **kwargs):
                         "lat_max": self.lat_max,
                     }
                 )
-                self.dem = pdem.dem(**kwargs)
+                self.dem = pdem.Dem(**kwargs)
             else:
                 logger.info("reading local dem file ..\n")
                 dem_source = z["rpath"] + self.tag + ".dep"
@@ -452,7 +450,7 @@ def bath(self, **kwargs):
                     "lat_max": self.lat_max,
                 }
             )
-            self.dem = pdem.dem(**kwargs)
+            self.dem = pdem.Dem(**kwargs)
 
     @staticmethod
     def to_dep(dr, dry_mask=True, **kwargs):
@@ -520,7 +518,7 @@ def bc(self, **kwargs):
 
             z.update(kwargs)
 
-            self.bound = box(**z)
+            self.bound = Box(**z)
 
         except:
             logger.info("boundary files not set..\n")
@@ -839,7 +837,7 @@ def save(self, **kwargs):
         dem = self.__dict__.get("dem", None)
         if isinstance(dem, str):
             dic.update({"dem": dem})
-        elif isinstance(dem, pdem.dem):
+        elif isinstance(dem, pdem.Dem):
             dic.update({"dem": dem.Dataset.elevation.attrs})
 
         meteo = self.__dict__.get("meteo", None)
diff --git a/pyposeidon/dem.py b/pyposeidon/dem.py
index eda985fd..9ed8c860 100644
--- a/pyposeidon/dem.py
+++ b/pyposeidon/dem.py
@@ -25,13 +25,13 @@
 
 NCORES = max(1, multiprocessing.cpu_count() - 1)
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 LONGITUDE_NAMES = {"longitude", "lon", "x", "Lon", "LONGITUDE", "LON", "X"}
 LATITUDE_NAMES = {"latitude", "lat", "y", "Lat", "LATITUDE", "LAT", "Y"}
 
 
-class dem:
+class Dem:
     def __init__(self, dem_source=None, **kwargs):
 
         # integrate geometry attribute.
@@ -259,10 +259,6 @@ def dem_on_mesh(dataset, **kwargs):
     return xr.merge([dataset, idem])
 
 
-def to_output(dataset=None, solver=None, **kwargs):
-
-    model = importlib.import_module("pyposeidon.model")  # load pyposeidon model class
-
-    s = getattr(model, solver)  # get solver class
-
-    s.to_dep(dataset, **kwargs)
+def to_output(dataset, solver_name, **kwargs):
+    solver_class = tools.get_solver(solver_name=solver_name)
+    solver_class.to_dep(dataset, **kwargs)
diff --git a/pyposeidon/mesh.py b/pyposeidon/mesh.py
index 0111c6e2..34f0736a 100644
--- a/pyposeidon/mesh.py
+++ b/pyposeidon/mesh.py
@@ -13,20 +13,19 @@
 import xarray as xr
 import pandas as pd
 import sys
-from pyposeidon import mjigsaw
-from pyposeidon import mgmsh
 import logging
 import f90nml
 import os
 import subprocess
-from pyposeidon.utils.verify import *
-import pyposeidon.boundary as pb
 
+from . import mjigsaw
+from . import mgmsh
 from . import tools
+from .boundary import Boundary
+from .utils.verify import verify
+from .paths import DATA_PATH
 
-logger = logging.getLogger("pyposeidon")
-
-DATA_PATH = os.path.dirname(pyposeidon.__file__) + "/misc/"
+logger = logging.getLogger(__name__)
 
 
 def set(type=None, **kwargs):
@@ -180,7 +179,7 @@ def __init__(self, **kwargs):
         elif mesh_generator == "gmsh":
 
             if boundary is None:
-                self.boundary = pb.get_boundaries(**kwargs)
+                self.boundary = Boundary(**kwargs)
             else:
                 self.boundary = boundary
 
@@ -193,7 +192,7 @@ def __init__(self, **kwargs):
         elif mesh_generator == "jigsaw":
 
             if boundary is None:
-                self.boundary = pb.get_boundaries(**kwargs)
+                self.boundary = Boundary(**kwargs)
             else:
                 self.boundary = boundary
 
diff --git a/pyposeidon/meteo.py b/pyposeidon/meteo.py
index 5bd81bf9..7e93738e 100644
--- a/pyposeidon/meteo.py
+++ b/pyposeidon/meteo.py
@@ -20,15 +20,15 @@
 import dask
 import xarray as xr
 import pandas as pd
-import importlib
 from pyposeidon.utils.get_value import get_value
 from pyposeidon import tools
 import logging
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
+from . import tools
 
 
-class meteo:
+class Meteo:
     def __init__(self, meteo_source=None, **kwargs):
 
         """Read meteo data from variable sources.
@@ -57,11 +57,8 @@ def __init__(self, meteo_source=None, **kwargs):
         meteo_func = dispatch_meteo_source(meteo_source)
         self.Dataset = meteo_func(meteo_source=meteo_source, **kwargs)
 
-    def to_output(self, solver=None, **kwargs):
-
-        model = importlib.import_module("pyposeidon.model")  # load pyposeidon model class
-
-        s = getattr(model, solver)  # get solver class
+    def to_output(self, solver_name, **kwargs):
+        solver = tools.get_solver(solver_name)
         var_list = kwargs.pop("vars", ["msl", "u10", "v10"])
 
         m_index = get_value(self, kwargs, "m_index", 1)
@@ -71,9 +68,9 @@ def to_output(self, solver=None, **kwargs):
             times, datasets = zip(*self.Dataset.groupby("time.{}".format(split_by)))
             mpaths = ["sflux/sflux_air_{}.{:04d}.nc".format(m_index, t + 1) for t in np.arange(len(times))]
             for das, mpath in list(zip(datasets, mpaths)):
-                s.to_force(das, vars=var_list, filename=mpath, **kwargs)
+                solver.to_force(das, vars=var_list, filename=mpath, **kwargs)
         else:
-            s.to_force(self.Dataset, vars=var_list, **kwargs)
+            solver.to_force(self.Dataset, vars=var_list, **kwargs)
 
 
 def passthrough(meteo_source, **kwargs):
diff --git a/pyposeidon/mgmsh.py b/pyposeidon/mgmsh.py
index 3c2c8df9..9f93f1f6 100644
--- a/pyposeidon/mgmsh.py
+++ b/pyposeidon/mgmsh.py
@@ -40,7 +40,7 @@
 
 import logging
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
 def read_gmsh(mesh, **kwargs):
@@ -230,7 +230,7 @@ def get(contours, **kwargs):
             gglobal = kwargs.get("gglobal", False)
             if gglobal:
 
-                dem = pdem.dem(**kwargs)
+                dem = pdem.Dem(**kwargs)
 
                 nds, lms = make_bgmesh_global(contours, fpos, dem.Dataset, **kwargs)
                 dh = to_global_pos(nds, lms, fpos, **kwargs)
@@ -691,7 +691,7 @@ def make_bgmesh(df, fpos, **kwargs):
 
     if not isinstance(dem, xr.Dataset):
         logger.info("Read DEM")
-        dem = pdem.dem(lon_min=lon_min, lon_max=lon_max, lat_min=lat_min, lat_max=lat_max, **kwargs_)
+        dem = pdem.Dem(lon_min=lon_min, lon_max=lon_max, lat_min=lat_min, lat_max=lat_max, **kwargs_)
         dem = dem.Dataset
 
     res_min = kwargs.get("resolution_min", 0.01)
diff --git a/pyposeidon/mjigsaw.py b/pyposeidon/mjigsaw.py
index c9876035..d916b3f5 100644
--- a/pyposeidon/mjigsaw.py
+++ b/pyposeidon/mjigsaw.py
@@ -18,20 +18,18 @@
 from tqdm import tqdm
 import sys
 
+import pyposeidon.dem as pdem
 from pyposeidon.utils.stereo import to_lat_lon, to_stereo
 from pyposeidon.utils.global_bgmesh import make_bgmesh_global
-from pyposeidon.utils.sort import *
-import pyposeidon.dem as pdem
-from pyposeidon.utils.hfun import *
-from pyposeidon.utils.spline import *
-from pyposeidon.utils.tag import *
-import logging
-
-logger = logging.getLogger("pyposeidon")
+from pyposeidon.utils.sort import clockwiseangle_and_distance
+from pyposeidon.utils.hfun import get_hfun
+from pyposeidon.utils.hfun import to_global_hfun
+from pyposeidon.utils.hfun import to_hfun_mesh
+from pyposeidon.utils.hfun import to_hfun_grid
 
+import logging
 
-DATA_PATH = os.path.dirname(pyposeidon.__file__) + "/misc/"
-TEST_DATA_PATH = os.path.dirname(pyposeidon.__file__) + "/tests/data/"
+logger = logging.getLogger(__name__)
 
 
 def to_geo(df, path=".", tag="jigsaw"):
@@ -190,7 +188,7 @@ def make_bgmesh(contours, **kwargs):
 
     if not isinstance(dem, xr.Dataset):
         logger.info("Read DEM")
-        dem = pdem.dem(lon_min=lon_min, lon_max=lon_max, lat_min=lat_min, lat_max=lat_max, **kwargs_)
+        dem = pdem.Dem(lon_min=lon_min, lon_max=lon_max, lat_min=lat_min, lat_max=lat_max, **kwargs_)
         dem = dem.Dataset
 
     res_min = kwargs_.pop("resolution_min", 0.01)
diff --git a/pyposeidon/model.py b/pyposeidon/model.py
index 63277706..6e72bef4 100644
--- a/pyposeidon/model.py
+++ b/pyposeidon/model.py
@@ -25,13 +25,10 @@
 import xarray as xr
 
 # local modules
-from .d3d import *
-from .schism import *
-from pyposeidon.bnd import *
+from . import tools
 import pyposeidon
 import pyposeidon.mesh as pmesh
 import pyposeidon.meteo as pmeteo
-import pyposeidon.dem as pdem
 from pyposeidon.utils.get_value import get_value
 import logging
 import logging.config
@@ -72,38 +69,34 @@
 
 logging.config.dictConfig(LOGGING)
 
-# retrieve the module path
-DATA_PATH = os.path.dirname(pyposeidon.__file__) + "/misc/"
-
 # strings to be used
 le = ["A", "B"]
 
 nm = ["Z", "A"]
 
 
-def set(solver=None, atm=True, tide=False, **kwargs):
+def set(solver_name, atm=True, tide=False, **kwargs):
     """
     Construct a hydrodynamic model based on different solvers.
 
-    :param solver: Type of model, e.g. 'd3d' or 'schism'
+    :param solver_name: Name of solver engine, e.g. 'd3d' or 'schism'
     :param kwargs: additional arguments to pass along
-    :type solver: String
+    :type solver: str
     :type kwargs: dict
-    :return: A model
+    :return: A Solver instance
     :rtype: composite object
 
 
     Example:
 
-    model = pyposeidon.set(solver='d3d)
+    model = pyposeidon.set(solver_name='d3d')
+    model = pyposeidon.set(solver_name='schism')
 
     """
 
-    kwargs.update({"atm": atm, "tide": tide})
-    if solver == "d3d":
-        return d3d(**kwargs)
-    elif solver == "schism":
-        return schism(**kwargs)
+    solver_class = tools.get_solver(solver_name=solver_name)
+    instance = solver_class(atm=atm, tide=tide, **kwargs)
+    return instance
 
 
 def read(filename, **kwargs):
diff --git a/pyposeidon/paths.py b/pyposeidon/paths.py
new file mode 100644
index 00000000..0d3fedda
--- /dev/null
+++ b/pyposeidon/paths.py
@@ -0,0 +1,4 @@
+import os
+
+ROOT_PATH = os.path.dirname(__file__)
+DATA_PATH = ROOT_PATH + "/misc/"
diff --git a/pyposeidon/schism.py b/pyposeidon/schism.py
index 57878bfe..6387f36b 100644
--- a/pyposeidon/schism.py
+++ b/pyposeidon/schism.py
@@ -33,6 +33,7 @@
 import pyposeidon.mesh as pmesh
 import pyposeidon.meteo as pmeteo
 import pyposeidon.dem as pdem
+from pyposeidon.paths import DATA_PATH
 from pyposeidon.utils.get_value import get_value
 from pyposeidon.utils.converter import myconverter
 from pyposeidon.utils.vals import obs
@@ -44,19 +45,13 @@
 
 from . import tools
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
-# retrieve the module path
-DATA_PATH = os.path.dirname(pyposeidon.__file__) + "/misc/"
-TEST_DATA_PATH = os.path.dirname(pyposeidon.__file__) + "/tests/data/"
+SCHISM_NAME = "schism"
 
-# add conda path to PATH
-cpath = pyposeidon.__path__[0].split("/lib/")[0]
-os.environ["PATH"] += os.pathsep + cpath + "/bin"
 
-
-class schism:
+class Schism:
     def __init__(self, **kwargs):
         """
         Create a Schism solver
@@ -164,7 +159,7 @@ def __init__(self, **kwargs):
         except:
             self.epath = kwargs.get("epath", None)
 
-        self.solver = self.__class__.__name__
+        self.solver_name = SCHISM_NAME
 
         for attr, value in kwargs.items():
             if not hasattr(self, attr):
@@ -247,11 +242,11 @@ def force(self, **kwargs):
         # check if files exist
         if flag:
             if ("meteo" in flag) | ("all" in flag):
-                self.meteo = pmeteo.meteo(**z)
+                self.meteo = pmeteo.Meteo(**z)
             else:
                 logger.info("skipping meteo ..\n")
         else:
-            self.meteo = pmeteo.meteo(**z)
+            self.meteo = pmeteo.Meteo(**z)
 
         if hasattr(self, "meteo"):
             # add 1 hour for Schism issue with end time
@@ -398,7 +393,7 @@ def create(self, **kwargs):
             kwargs = self.__dict__.copy()
 
         # DEM
-        self.dem = pdem.dem(**kwargs)
+        self.dem = pdem.Dem(**kwargs)
         kwargs.update({"dem_source": self.dem.Dataset})
 
         # Grid
@@ -677,13 +672,13 @@ def save(self, **kwargs):
         dem = self.__dict__.get("dem", None)
         if isinstance(dem, str):
             dic.update({"dem": dem})
-        elif isinstance(dem, pdem.dem):
+        elif isinstance(dem, pdem.Dem):
             dic.update({"dem_attrs": dem.Dataset.elevation.attrs})
 
         meteo = self.__dict__.get("meteo", None)
         if isinstance(meteo, str):
             dic.update({"meteo": meteo})
-        elif isinstance(meteo, pmeteo.meteo):
+        elif isinstance(meteo, pmeteo.Meteo):
             try:
                 dic.update({"meteo": [meteo.Dataset.attrs]})
             except:
@@ -799,7 +794,7 @@ def read_folder(self, rfolder, **kwargs):
                     pm.append(msource)
                 if len(pm) == 1:
                     pm = pm[0]
-                self.meteo = pmeteo.meteo(meteo_source=pm)
+                self.meteo = pmeteo.Meteo(meteo_source=pm)
 
             except:
                 pm = []
@@ -824,7 +819,7 @@ def read_folder(self, rfolder, **kwargs):
                 if len(pm) == 1:
                     pm = pm[0]
 
-                self.meteo = pmeteo.meteo(meteo_source=pm)
+                self.meteo = pmeteo.Meteo(meteo_source=pm)
 
         else:
             logger.warning("No meteo loaded")
diff --git a/pyposeidon/tide/__init__.py b/pyposeidon/tide/__init__.py
index 39939025..f22c6c06 100644
--- a/pyposeidon/tide/__init__.py
+++ b/pyposeidon/tide/__init__.py
@@ -6,4 +6,4 @@
 __all__ = ["tpx07"]
 
 
-from .tide import *
+from .tide import tpx07
diff --git a/pyposeidon/tools.py b/pyposeidon/tools.py
index 7ec578c5..2c599540 100644
--- a/pyposeidon/tools.py
+++ b/pyposeidon/tools.py
@@ -10,6 +10,7 @@
 import xarray as xr
 import pandas as pd
 import numpy as np
+import rioxarray
 
 logger = logging.getLogger(__name__)
 
@@ -28,6 +29,22 @@
 """.strip()
 
 
+def get_solver(solver_name: str):
+    # Panos: We do the imports here, because there is some sort of cyclical imports issue
+    # and no time to properly solve it
+    if solver_name == "schism":
+        from .schism import Schism
+
+        solver = Schism
+    elif solver_name == "d3d":
+        from .d3d import d3d
+
+        solver = d3d
+    else:
+        raise ValueError(f"Unknown solver_name: {solver_name}")
+    return solver
+
+
 # From: https://stackoverflow.com/a/30463972/592289
 def make_executable(path):
     mode = os.stat(path).st_mode
@@ -95,14 +112,12 @@ def create_mpirun_script(
 def open_dataset(source: os.PathLike, **kwargs) -> xr.Dataset:
     """
     A wrapper around `xr.open_dataset` that supports multiple engines
-
-    This function is needed because `xr.open_dataset()` is not yet supporting e.g. rasterio
     """
     logger.info("extracting dem from %s\n", source)
     if isinstance(source, pathlib.Path):
         source = source.as_posix()
     if source.lower().endswith("tif"):  # GeoTiff
-        data_array = xr.open_rasterio(source, parse_coordinates=True, **kwargs)
+        data_array = rioxarray.open_rasterio(source, parse_coordinates=True, **kwargs)
         dataset = data_array.to_dataset(name="elevation").squeeze().reset_coords(drop=True)
     else:
         if source.lower().startswith("http"):  # URL
diff --git a/pyposeidon/utils/cast.py b/pyposeidon/utils/cast.py
index d0171723..61e13429 100644
--- a/pyposeidon/utils/cast.py
+++ b/pyposeidon/utils/cast.py
@@ -27,17 +27,20 @@
 import subprocess
 import logging
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
-def set(solver=None, **kwargs):
-    if solver == "d3d":
-        return dcast(**kwargs)
-    elif solver == "schism":
-        return scast(**kwargs)
+def set(solver_name: str, **kwargs):
+    if solver_name == "d3d":
+        instance = D3DCast(**kwargs)
+    elif solver_name == "schism":
+        instance = SchismCast(**kwargs)
+    else:
+        raise ValueError(f"Don't know how to handle solver: {solver_name}")
+    return instance
 
 
-class dcast:
+class D3DCast:
     def __init__(self, **kwargs):
 
         for attr, value in kwargs.items():
@@ -207,7 +210,7 @@ def run(self, **kwargs):
         os.chdir(pwd)
 
 
-class scast:
+class SchismCast:
     def __init__(self, **kwargs):
 
         for attr, value in kwargs.items():
diff --git a/pyposeidon/utils/data.py b/pyposeidon/utils/data.py
index 817075e1..34f02362 100644
--- a/pyposeidon/utils/data.py
+++ b/pyposeidon/utils/data.py
@@ -9,9 +9,10 @@
 # See the Licence for the specific language governing permissions and limitations under the Licence.
 
 import numpy as np
+import pandas as pd
 import os
 from pyposeidon.utils.vals import obs
-from pyposeidon.mesh import *
+from pyposeidon.mesh import r2d
 import pyposeidon.model as pm
 from pyposeidon.tools import flat_list
 from pyposeidon.utils.get_value import get_value
@@ -21,22 +22,23 @@
 import sys
 import logging
 
-logger = logging.getLogger("pyposeidon")
+from .. import tools
 
+logger = logging.getLogger(__name__)
 
-def get_output(**kwargs):
 
-    solver = kwargs.get("solver", None)
-    if solver == "d3d":
-        return d3d(**kwargs)
-    elif solver == "schism":
-        return schism(**kwargs)
+def get_output(solver_name: str, **kwargs):
+    if solver_name == "schism":
+        solver_class = SchismResults
+    elif solver_name == "d3d":
+        solver_class = D3DResults
     else:
-        logger.error("solver is not defined, exiting \n")
-        sys.exit(1)
+        raise ValueError(f"Unknown solver_name: {solver_name}")
+    instance = solver_class(**kwargs)
+    return instance
 
 
-class d3d:
+class D3DResults:
     def __init__(self, **kwargs):
 
         rpath = kwargs.get("rpath", "./d3d/")
@@ -149,7 +151,7 @@ def frames(self, var, **kwargs):
             return quiver(xh, yh, v0, v1, self.Dataset.time.values, **kwargs)
 
 
-class schism:
+class SchismResults:
     def __init__(self, **kwargs):
 
         rpath = kwargs.get("rpath", "./schism/")
diff --git a/pyposeidon/utils/features.py b/pyposeidon/utils/features.py
index 2fcdcdf9..b287170d 100644
--- a/pyposeidon/utils/features.py
+++ b/pyposeidon/utils/features.py
@@ -9,7 +9,7 @@
 import json
 import logging
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
 def create_geojson_features(gf, time):
diff --git a/pyposeidon/utils/fix.py b/pyposeidon/utils/fix.py
index d807cbd0..bf8d04c5 100644
--- a/pyposeidon/utils/fix.py
+++ b/pyposeidon/utils/fix.py
@@ -23,7 +23,7 @@
 # logging setup
 import logging
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
 def fix(dem, coastline, **kwargs):
diff --git a/pyposeidon/utils/global_bgmesh.py b/pyposeidon/utils/global_bgmesh.py
index 24adef76..7a6f33c6 100644
--- a/pyposeidon/utils/global_bgmesh.py
+++ b/pyposeidon/utils/global_bgmesh.py
@@ -19,7 +19,7 @@
 import pyposeidon.mesh as pmesh
 import logging
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
 def make_bgmesh_global(dfb, fpos, dem, **kwargs):
@@ -83,7 +83,7 @@ def make_bgmesh_global(dfb, fpos, dem, **kwargs):
 
     logger.info("Create interim global scale mesh")
 
-    b = pb.get_boundaries(geometry=dfb)
+    b = pb.Boundary(geometry=dfb)
     mesh = pmesh.set(
         type="tri2d",
         boundary=b,
diff --git a/pyposeidon/utils/hfun.py b/pyposeidon/utils/hfun.py
index 404b691e..0e80007e 100644
--- a/pyposeidon/utils/hfun.py
+++ b/pyposeidon/utils/hfun.py
@@ -3,7 +3,7 @@
 import shapely
 import numpy as np
 import xarray as xr
-from .limgrad import *
+from .limgrad import limgrad2
 import matplotlib
 from pyposeidon.utils.stereo import to_lat_lon, to_stereo
 from pyposeidon.utils.topology import MakeTriangleFaces, MakeTriangleFaces_periodic
diff --git a/pyposeidon/utils/nest.py b/pyposeidon/utils/nest.py
index 7142ba49..9f533fb4 100644
--- a/pyposeidon/utils/nest.py
+++ b/pyposeidon/utils/nest.py
@@ -6,8 +6,6 @@
 import logging
 import glob
 import pickle
-from pyposeidon.model import *
-from pyposeidon.util import *
 
 
 class nest:
diff --git a/pyposeidon/utils/post.py b/pyposeidon/utils/post.py
index cc565a86..f0e1d2ed 100644
--- a/pyposeidon/utils/post.py
+++ b/pyposeidon/utils/post.py
@@ -10,7 +10,7 @@
 
 import logging
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
 def to_thalassa(folders, freq=None, **kwargs):
diff --git a/pyposeidon/utils/postgrid.py b/pyposeidon/utils/postgrid.py
index 242d8d65..45099ae4 100755
--- a/pyposeidon/utils/postgrid.py
+++ b/pyposeidon/utils/postgrid.py
@@ -3,10 +3,6 @@
 
 import os
 
-import pyposeidon
-
-cpath = pyposeidon.__path__[0].split("/lib/")[0]  # get the current kernel path
-os.environ["PATH"] += os.pathsep + cpath + "/bin"  # add to PATH
 import numpy as np
 import pandas as pd
 import geopandas as gp
@@ -14,9 +10,6 @@
 import xarray as xr
 from tqdm import tqdm
 import shapely
-import pyposeidon.grid as pg
-
-os.environ["PROJ_LIB"] = os.pathsep + cpath + "/share/proj"
 
 
 def nreduce(dnodes, delems, grid, elems, tag="tag"):
diff --git a/pyposeidon/utils/seam.py b/pyposeidon/utils/seam.py
index beaaca11..3545924b 100644
--- a/pyposeidon/utils/seam.py
+++ b/pyposeidon/utils/seam.py
@@ -8,7 +8,7 @@
 from shapely.ops import triangulate
 import logging
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
 def get_seam(x, y, z, tri3, **kwargs):
diff --git a/pyposeidon/utils/statistics.py b/pyposeidon/utils/statistics.py
index 4d626668..09b49984 100755
--- a/pyposeidon/utils/statistics.py
+++ b/pyposeidon/utils/statistics.py
@@ -5,7 +5,7 @@
 import warnings
 import logging
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
 def get_stats(sim_, obs_):
diff --git a/pyposeidon/utils/tag.py b/pyposeidon/utils/tag.py
index ce5b4568..a874da2b 100644
--- a/pyposeidon/utils/tag.py
+++ b/pyposeidon/utils/tag.py
@@ -5,7 +5,7 @@
 import shapely
 import sys
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
 def tag_(**kwargs):
diff --git a/pyposeidon/utils/vals.py b/pyposeidon/utils/vals.py
index 6e226ceb..f1ee50b7 100644
--- a/pyposeidon/utils/vals.py
+++ b/pyposeidon/utils/vals.py
@@ -14,15 +14,14 @@
 import numpy as np
 import pandas as pd
 import pyposeidon
-from pyposeidon.utils.norm import normalize_column_names
 import os
 import sys
 import logging
 
-logger = logging.getLogger("pyposeidon")
-
+from pyposeidon.utils.norm import normalize_column_names
+from pyposeidon.paths import DATA_PATH
 
-DATA_PATH = os.path.dirname(pyposeidon.__file__) + "/misc/"
+logger = logging.getLogger(__name__)
 
 
 class obs:
diff --git a/pyposeidon/utils/verify.py b/pyposeidon/utils/verify.py
index 77fbf475..d4a70b00 100755
--- a/pyposeidon/utils/verify.py
+++ b/pyposeidon/utils/verify.py
@@ -3,10 +3,6 @@
 
 import os
 
-import pyposeidon
-
-cpath = pyposeidon.__path__[0].split("/lib/")[0]  # get the current kernel path
-os.environ["PATH"] += os.pathsep + cpath + "/bin"  # add to PATH
 import numpy as np
 import pandas as pd
 import geopandas as gp
@@ -15,10 +11,9 @@
 from tqdm import tqdm
 import shapely
 
-os.environ["PROJ_LIB"] = os.pathsep + cpath + "/share/proj"
 import logging
 
-logger = logging.getLogger("pyposeidon")
+logger = logging.getLogger(__name__)
 
 
 def verify(g, shp, thorough=False):
diff --git a/pyproject.toml b/pyproject.toml
index 8b5a21b3..4a164b49 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -36,8 +36,8 @@ python = ">=3.8, <3.10"
 branca = "^0.4"
 Cartopy = "<0.20"
 cfgrib = "^0.9"
-colorlog = "^4.7"
-dask = "^2021.2"
+colorlog = "^6.6"
+dask = "^2022.1"
 f90nml = "^1.2"
 geopandas = "^0.10"
 gmsh = "^4.8"
@@ -63,7 +63,7 @@ mkdocstrings = { version = "^0.15", optional = true }
 mkdocs = { version = "^1.1", optional = true }
 pymdown-extensions = { version = "^8.1", optional = true }
 # Testing
-pytest-cov = { version = "^2.11", optional = true }
+pytest-cov = { version = "^3.0", optional = true }
 pytest = { version = "^6.2", optional = true }
 pytest-xdist = { version = "^2.2", optional = true }
 # viz
@@ -74,6 +74,7 @@ hvplot = { version = "^0.7.0", optional = true }
 ipykernel = { version = "^6.7", optional = true }
 itkwidgets = { version = "^0.32.1", optional = true }
 moviepy = { version = "1.0.3", optional = true }
+rioxarray = "^0.9.1"
 
 [tool.poetry.dev-dependencies]
 black = "21.12b0"


Test patch:
diff --git a/locks/requirements-testing.txt b/locks/requirements-testing.txt
index fd20f3b9..ea6bba7b 100644
--- a/locks/requirements-testing.txt
+++ b/locks/requirements-testing.txt
@@ -1,110 +1,94 @@
 affine==2.3.0; python_version >= "3.6"
-appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.7" and sys_platform == "darwin"
-atomicwrites==1.4.0; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") or sys_platform == "win32" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") and python_full_version >= "3.4.0"
-attrs==21.4.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-backcall==0.2.0; python_version >= "3.7"
+atomicwrites==1.4.0; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.4.0"
+attrs==21.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
 beautifulsoup4==4.10.0; python_full_version > "3.0.0"
+black==21.12b0; python_full_version >= "3.6.2"
 bokeh==2.4.2; python_version >= "3.7"
 branca==0.4.2; python_version >= "3.5"
 cartopy==0.19.0.post1; python_version >= "3.5"
-certifi==2021.10.8; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
-cffi==1.15.0; python_full_version >= "3.6.1" and python_version >= "3.7" and implementation_name == "pypy"
+certifi==2021.10.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" or python_version >= "3.6"
+cffi==1.15.0; python_version >= "3.6"
 cfgrib==0.9.9.1; python_version >= "3.6"
 cftime==1.5.1.1
 charset-normalizer==2.0.10; python_full_version >= "3.6.0" and python_version >= "3"
-click-plugins==1.1.1; python_version >= "3.7"
-click==8.0.3; python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7")
-cligj==0.7.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7"
-cloudpickle==2.0.0; python_version >= "3.7"
-colorama==0.4.4; python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" and platform_system == "Windows" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") or python_full_version >= "3.5.0" and sys_platform == "win32" and platform_system == "Windows" and python_version >= "3.7" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6")
-colorlog==4.8.0
+click-plugins==1.1.1; python_version >= "3.6"
+click==8.0.3; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.6" or python_version >= "3.7" or python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.6"
+cligj==0.7.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.6" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version < "4" and python_version >= "3.7"
+cloudpickle==2.0.0; python_version >= "3.7" or python_version >= "3.7"
+colorama==0.4.4; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.5.0" or python_version >= "2.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows" or python_version >= "3.6" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.6" and python_full_version >= "3.5.0"
+colorlog==6.6.0; python_version >= "3.6"
 configobj==5.0.6; python_version >= "3.7"
-coverage==6.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
+coverage==6.2; python_version >= "3.6"
 cycler==0.11.0; python_version >= "3.7"
-dask==2021.12.0; python_version >= "3.7"
-debugpy==1.5.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-decorator==4.4.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" and python_version >= "3.7"
-distributed==2021.12.0; python_version >= "3.7"
+dask==2022.1.0; python_version >= "3.7"
+distributed==2022.1.0; python_version >= "3.7"
 docopt==0.6.2
 eccodes==1.4.0; python_version >= "3.6"
-entrypoints==0.3; python_full_version >= "3.6.1" and python_version >= "3.7"
 execnet==1.9.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
 f90nml==1.3.1
 findlibs==0.0.2; python_version >= "3.6"
 fiona==1.8.20; python_version >= "3.7"
 fonttools==4.28.5; python_version >= "3.7"
-fsspec==2022.1.0; python_version >= "3.7"
+fsspec==2022.1.0; python_version >= "3.7" or python_version >= "3.7"
 geopandas==0.10.2; python_version >= "3.7"
 gmsh==4.9.3
 heapdict==1.0.1; python_version >= "3.7"
 idna==3.3; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.5"
-iniconfig==1.1.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
-ipykernel==6.7.0; python_version >= "3.7"
-ipython==7.31.0; python_version >= "3.7"
-jedi==0.18.1; python_version >= "3.7"
-jinja2==3.0.3; python_version >= "3.7"
-jupyter-client==7.1.0; python_full_version >= "3.6.1" and python_version >= "3.7"
-jupyter-core==4.9.1; python_full_version >= "3.6.1" and python_version >= "3.7"
+iniconfig==1.1.1; python_version >= "3.6"
+jinja2==3.0.3; python_version >= "3.7" or python_version >= "3.6"
 kiwisolver==1.3.2; python_version >= "3.7"
 llvmlite==0.36.0; python_version >= "3.6" and python_version < "3.10"
 locket==0.2.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-markupsafe==2.0.1; python_version >= "3.7"
-matplotlib-inline==0.1.3; python_version >= "3.7"
+markupsafe==2.0.1; python_version >= "3.6"
 matplotlib==3.5.1; python_version >= "3.7"
 msgpack==1.0.3; python_version >= "3.7"
 munch==2.5.0; python_version >= "3.7"
-nest-asyncio==1.5.4; python_full_version >= "3.6.1" and python_version >= "3.7"
+mypy-extensions==0.4.3; python_full_version >= "3.6.2"
 netcdf4==1.5.8
-numpy==1.22.0; python_version >= "3.8"
-packaging==21.3; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
+numpy==1.22.1; python_version >= "3.8"
+packaging==21.3; python_version >= "3.7" or python_version >= "3.6"
 pandas==1.3.5; python_full_version >= "3.7.1"
-parso==0.8.3; python_version >= "3.7"
-partd==1.2.0; python_version >= "3.7"
-pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.7"
-pickleshare==0.7.5; python_version >= "3.7"
-pillow==9.0.0; python_version >= "3.7"
-pluggy==1.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
-prompt-toolkit==3.0.24; python_full_version >= "3.6.2" and python_version >= "3.7"
+partd==1.2.0; python_version >= "3.7" or python_version >= "3.7"
+pathspec==0.9.0; python_full_version >= "3.6.2"
+pillow==9.0.0; python_version >= "3.7" or python_version >= "3.7"
+platformdirs==2.4.1; python_version >= "3.7" and python_full_version >= "3.6.2"
+pluggy==1.0.0; python_version >= "3.6"
 psutil==5.9.0; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.7"
-py==1.11.0; python_full_version >= "3.6.1" and python_version >= "3.7" and implementation_name == "pypy"
+py==1.11.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
 pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
 pydap @ https://github.com/pydap/pydap/archive/3f6aa190c59e3bbc6c834377a61579b20275ff69.zip
 pygeos==0.12.0; python_version >= "3.6"
-pygments==2.11.2; python_version >= "3.7"
 pykdtree==1.3.4; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-pyparsing==3.0.6; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
+pyparsing==3.0.6; python_version >= "3.6"
 pyproj==3.3.0; python_version >= "3.8"
 pyresample==1.22.3; python_version >= "3.7"
 pyshp==2.1.3; python_version >= "3.5"
-pytest-cov==2.12.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
+pytest-cov==3.0.0; python_version >= "3.6"
 pytest-forked==1.4.0; python_version >= "3.6"
 pytest-xdist==2.5.0; python_version >= "3.6"
 pytest==6.2.5; python_version >= "3.6"
-python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7"
+python-dateutil==2.8.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7" or python_version >= "3.7" and python_full_version >= "3.7.1"
 pytz==2021.3; python_version >= "3.7" and python_full_version >= "3.7.1"
-pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_full_version >= "3.6.1" and python_version >= "3.7"
-pyyaml==6.0; python_version >= "3.7"
-pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.7"
+pyyaml==6.0; python_version >= "3.7" or python_version >= "3.7"
 rasterio==1.2.10; python_version >= "3.6"
 requests==2.27.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
+rioxarray==0.9.1; python_version >= "3.7"
 scipy==1.7.3; python_version >= "3.7" and python_version < "3.11"
 setuptools-scm==6.3.2; python_version >= "3.7"
+setuptools==60.5.0; python_version >= "3.7"
 shapely==1.7.1
-six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7")
+six==1.16.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" or python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7"
 snuggs==1.4.7; python_version >= "3.6"
 sortedcontainers==2.4.0; python_version >= "3.7"
 soupsieve==2.3.1; python_version >= "3.6" and python_full_version > "3.0.0"
 tblib==1.7.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version >= "3.5.0"
-toml==0.10.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
-tomli==1.2.3; python_version >= "3.7"
-toolz==0.11.2; python_version >= "3.7"
-tornado==6.1; python_version >= "3.8" and python_full_version >= "3.6.1"
+toml==0.10.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6"
+tomli==1.2.3; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.7" or python_version >= "3.6"
+toolz==0.11.2; python_version >= "3.7" or python_version >= "3.7"
+tornado==6.1; python_version >= "3.7" or python_version >= "3.8"
 tqdm==4.62.3; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-traitlets==5.1.1; python_full_version >= "3.6.1" and python_version >= "3.7"
-typing-extensions==4.0.1; python_version >= "3.7"
+typing-extensions==4.0.1; python_version >= "3.6" and python_full_version >= "3.6.2" or python_version >= "3.7"
 urllib3==1.26.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4"
-wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.7"
 webob==1.8.7; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0"
 xarray==0.20.2; python_version >= "3.7"
 zict==2.0.0; python_version >= "3.7"
diff --git a/tests/test_boundary.py b/tests/test_boundary.py
index 0c987422..b4c64def 100644
--- a/tests/test_boundary.py
+++ b/tests/test_boundary.py
@@ -39,7 +39,7 @@
 @WINDOWS
 def test_window(tmpdir, window, input):
 
-    df = pb.get_boundaries(geometry=window, coastlines=input, rpath=str(tmpdir) + "/")
+    df = pb.Boundary(geometry=window, coastlines=input, rpath=str(tmpdir) + "/")
 
     assert isinstance(df.contours, gp.GeoDataFrame)
 
@@ -47,7 +47,7 @@ def test_window(tmpdir, window, input):
 @INPUTS
 def test_global(tmpdir, input):
 
-    df = pb.get_boundaries(geometry="global", coastlines=input, rpath=str(tmpdir) + "/")
+    df = pb.Boundary(geometry="global", coastlines=input, rpath=str(tmpdir) + "/")
 
     assert isinstance(df.contours, gp.GeoDataFrame)
 
@@ -56,7 +56,7 @@ def test_global(tmpdir, input):
 @WINDOWS
 def test_buffer(tmpdir, window, input):
 
-    df = pb.get_boundaries(geometry=window, coastlines=input, cbuffer=0.01, rpath=str(tmpdir) + "/")
+    df = pb.Boundary(geometry=window, coastlines=input, cbuffer=0.01, rpath=str(tmpdir) + "/")
 
     assert isinstance(df.contours, gp.GeoDataFrame)
 
@@ -65,7 +65,7 @@ def test_buffer(tmpdir, window, input):
 @WINDOWS
 @DEM_SOURCES
 def test_isodem(tmpdir, window, input, dem_source):
-    df = pb.get_boundaries(geometry=window, dem_source=dem_source, blevels=[-100], rpath=str(tmpdir) + "/")
+    df = pb.Boundary(geometry=window, dem_source=dem_source, blevels=[-100], rpath=str(tmpdir) + "/")
     assert isinstance(df.contours, gp.GeoDataFrame)
 
 
@@ -74,13 +74,13 @@ def test_isodem_with_url(tmpdir):
     input = nland
     window = {"lon_min": 176.5, "lon_max": 177.0, "lat_min": 16.0, "lat_max": 16.5}
     dem_source = "https://coastwatch.pfeg.noaa.gov/erddap/griddap/srtm30plus"
-    df = pb.get_boundaries(geometry=window, dem_source=dem_source, blevels=[-100], rpath=str(tmpdir) + "/")
+    df = pb.Boundary(geometry=window, dem_source=dem_source, blevels=[-100], rpath=str(tmpdir) + "/")
     assert isinstance(df.contours, gp.GeoDataFrame)
 
 
 @CUSTOM
 def test_custom(tmpdir, boundary):
 
-    df = pb.get_boundaries(geometry=boundary, rpath=str(tmpdir) + "/")
+    df = pb.Boundary(geometry=boundary, rpath=str(tmpdir) + "/")
 
     assert isinstance(df.contours, gp.GeoDataFrame)
diff --git a/tests/test_dem.py b/tests/test_dem.py
index ba049f74..50199520 100644
--- a/tests/test_dem.py
+++ b/tests/test_dem.py
@@ -38,14 +38,14 @@
 @DEM_SOURCES
 @WINDOWS
 def test_dem(dem_source, kwargs, expected):
-    df = pdem.dem(dem_source=dem_source, **kwargs)
+    df = pdem.Dem(dem_source=dem_source, **kwargs)
     assert np.isnan(df.Dataset.elevation.values).sum() == 0
 
 
 @DEM_SOURCES
 @WINDOWS
 def test_dem_shape(dem_source, kwargs, expected):
-    df = pdem.dem(dem_source=dem_source, **kwargs)
+    df = pdem.Dem(dem_source=dem_source, **kwargs)
     assert df.Dataset.elevation.shape == expected
 
 
@@ -53,5 +53,5 @@ def test_dem_shape(dem_source, kwargs, expected):
 def test_dem_source_is_url():
     dem_source = "https://coastwatch.pfeg.noaa.gov/erddap/griddap/srtm30plus"
     kwargs = {"lon_min": 176.5, "lon_max": 177.0, "lat_min": 16.0, "lat_max": 16.5}
-    df = pdem.dem(dem_source=dem_source, **kwargs)
+    df = pdem.Dem(dem_source=dem_source, **kwargs)
     assert np.isnan(df.Dataset.elevation.values).sum() == 0
diff --git a/tests/test_dem_fix.py b/tests/test_dem_fix.py
index beb01ae4..d1f20ae7 100644
--- a/tests/test_dem_fix.py
+++ b/tests/test_dem_fix.py
@@ -37,7 +37,7 @@ def natural_earth():
 @WINDOWS
 def test_dem_adjust(natural_earth, dem_source, window):
     # Just elevation
-    df = pdem.dem(**window, dem_source=dem_source)  # get dem
+    df = pdem.Dem(**window, dem_source=dem_source)  # get dem
     df.adjust(natural_earth)
     assert np.isnan(df.Dataset.adjusted.values).sum() == 0
 
@@ -56,7 +56,7 @@ def test_schism_mesh(tmpdir, natural_earth, dem_source, window):
     )
     xg = mesh.Dataset.SCHISM_hgrid_node_x.values
     yg = mesh.Dataset.SCHISM_hgrid_node_y.values
-    dem = pdem.dem(**window, dem_source=dem_source, adjust_dem=False)  # get dem
+    dem = pdem.Dem(**window, dem_source=dem_source, adjust_dem=False)  # get dem
     dem.Dataset = pdem.dem_on_mesh(dem.Dataset, grid_x=xg, grid_y=yg)  # get dem on mesh
     dem.adjust(natural_earth)
     assert np.isnan(dem.Dataset.fval.values).sum() == 0
@@ -70,7 +70,7 @@ def test_d3d_mesh(tmpdir, natural_earth, dem_source, window):
     mesh = pmesh.set(type="r2d", geometry=window, resolution=0.1, rpath=str(tmpdir) + "/")
     gr = mesh.Dataset
     xp, yp = gr.lons.values, gr.lats.values
-    dem = pdem.dem(**window, dem_source=dem_source, adjust_dem=False)  # get dem
+    dem = pdem.Dem(**window, dem_source=dem_source, adjust_dem=False)  # get dem
     dem.Dataset = pdem.dem_on_mesh(dem.Dataset, grid_x=xp, grid_y=yp)  # get dem on mesh
     dem.adjust(natural_earth)
     assert np.isnan(dem.Dataset.fval.values).sum() == 0
diff --git a/tests/test_dem_io.py b/tests/test_dem_io.py
index f29ee506..511d7f76 100644
--- a/tests/test_dem_io.py
+++ b/tests/test_dem_io.py
@@ -30,7 +30,9 @@
 }
 
 
-def schism(tmpdir, dem_source, kwargs):
+@DEM_SOURCES
+@pytest.mark.parametrize("kwargs", [window1])
+def test_schism(tmpdir, dem_source, kwargs):
 
     mesh = pmesh.set(type="tri2d", mesh_file=(DATA_DIR / "hgrid.gr3").as_posix())
 
@@ -41,7 +43,7 @@ def schism(tmpdir, dem_source, kwargs):
     kwargs.update({"grid_x": xp, "grid_y": yp})
 
     # get dem
-    df = pdem.dem(dem_source=dem_source, **kwargs)
+    df = pdem.Dem(dem_source=dem_source, **kwargs)
 
     # get dem on mesh
     df.Dataset = pdem.dem_on_mesh(df.Dataset, **kwargs)
@@ -56,10 +58,12 @@ def schism(tmpdir, dem_source, kwargs):
     mesh_ = pmesh.set(type="tri2d", mesh_file=filename_)
 
     # compare
-    return mesh.Dataset.equals(mesh_.Dataset)
+    assert mesh.Dataset.equals(mesh_.Dataset) is True
 
 
-def d3d(tmpdir, dem_source, kwargs):
+@DEM_SOURCES
+@pytest.mark.parametrize("kwargs", [window1])
+def test_d3d(tmpdir, dem_source, kwargs):
 
     ## lat,lon grid
     resolution = 0.1
@@ -70,27 +74,20 @@ def d3d(tmpdir, dem_source, kwargs):
     kwargs.update({"grid_x": xp, "grid_y": yp})
 
     # get dem
-    df = pdem.dem(dem_source=dem_source, **kwargs)
+    df = pdem.Dem(dem_source=dem_source, **kwargs)
     # get dem on mesh
     df.Dataset = pdem.dem_on_mesh(df.Dataset, **kwargs)
 
     rpath = str(tmpdir) + "/"
     # output
-    pdem.to_output(df.Dataset, solver="d3d", rpath=rpath)
+    pdem.to_output(df.Dataset, solver_name="d3d", rpath=rpath)
 
     # read again dem
-    m = pmodel.set(solver="d3d")
+    m = pmodel.set(solver_name="d3d")
     rd = m.from_dep(rpath + "d3d.dep")
 
     # compare
     c1 = -rd.where(rd != -999)
     c2 = df.Dataset.ival.where(df.Dataset.ival < 0)
 
-    return c1.fillna(0).equals(c2.fillna(0))
-
-
-@DEM_SOURCES
-@pytest.mark.parametrize("kwargs", [window1])
-@pytest.mark.parametrize("solver", [schism, d3d])
-def test_answer(tmpdir, dem_source, kwargs, solver):
-    assert solver(tmpdir, dem_source, kwargs) == True
+    assert c1.fillna(0).equals(c2.fillna(0)) is True
diff --git a/tests/test_grid_global.py b/tests/test_grid_global.py
index 33f65b1a..f147043c 100644
--- a/tests/test_grid_global.py
+++ b/tests/test_grid_global.py
@@ -12,11 +12,14 @@
 COAST_FILE = (DATA_DIR / "ocean.zip").as_posix()
 
 
-@pytest.mark.slow
 @pytest.mark.parametrize("ggor", ["jigsaw", "gmsh"])
 @pytest.mark.parametrize("bgmesh", [None, DEM_FILE])
 @pytest.mark.parametrize("bindings", [True, False])
-def test_io(tmpdir, ggor, bgmesh, bindings):
+def test_io(pytestconfig, tmpdir, ggor, bgmesh, bindings):
+    # Skip the test unless --runslow has been passed
+    if bgmesh is not None:
+        if not pytestconfig.getoption("--runslow"):
+            pytest.skip("slow test")
 
     mesh = pmesh.set(
         type="tri2d",
@@ -52,11 +55,13 @@ def test_io(tmpdir, ggor, bgmesh, bindings):
     assert all([c == True for c in [check1, check2]])
 
 
-@pytest.mark.slow
 @pytest.mark.parametrize("ggor", ["jigsaw", "gmsh"])
 @pytest.mark.parametrize("bgmesh", [None, DEM_FILE])
 @pytest.mark.parametrize("bindings", [True, False])
-def test_val(tmpdir, ggor, bgmesh, bindings):
+def test_validate(pytestconfig, tmpdir, ggor, bgmesh, bindings):
+    if bgmesh is not None:
+        if not pytestconfig.getoption("--runslow"):
+            pytest.skip("slow test")
 
     mesh = pmesh.set(
         type="tri2d",
diff --git a/tests/test_meteo.py b/tests/test_meteo.py
index 97422173..f226f71f 100644
--- a/tests/test_meteo.py
+++ b/tests/test_meteo.py
@@ -65,14 +65,14 @@ def test_meteo_dispatch_netcdf(expected_func, meteo_source):
     ],
 )
 def test_meteo_returns_dataset(meteo_source):
-    meteo = pmeteo.meteo(meteo_source)
-    assert isinstance(meteo, pmeteo.meteo)
+    meteo = pmeteo.Meteo(meteo_source)
+    assert isinstance(meteo, pmeteo.Meteo)
     assert isinstance(meteo.Dataset, xr.Dataset)
 
 
 def test_meteo_passthrough():
-    original_meteo = pmeteo.meteo(DATASET)
-    new_meteo = pmeteo.meteo(meteo_source=original_meteo.Dataset)
+    original_meteo = pmeteo.Meteo(DATASET)
+    new_meteo = pmeteo.Meteo(meteo_source=original_meteo.Dataset)
     assert new_meteo.Dataset.equals(original_meteo.Dataset)
 
 
@@ -90,15 +90,15 @@ def test_meteo_url():
     url = "https://nomads.ncep.noaa.gov/dods/gfs_0p25_1hr/gfs{}/gfs_0p25_1hr_{:0>2d}z".format(
         cdate.strftime("%Y%m%d"), r[h]
     )
-    meteo = pmeteo.meteo(meteo_source=url, **geometry)
+    meteo = pmeteo.Meteo(meteo_source=url, **geometry)
     assert isinstance(meteo.Dataset, xr.Dataset)
 
 
 def test_meteo_empty():
-    meteo = pmeteo.meteo(meteo_source=None)
+    meteo = pmeteo.Meteo(meteo_source=None)
     assert meteo.Dataset == None
 
 
 def test_meteo_defaults():
-    meteo = pmeteo.meteo()
+    meteo = pmeteo.Meteo()
     assert meteo.Dataset == None
diff --git a/tests/test_meteo_combine.py b/tests/test_meteo_combine.py
index 0c9c303c..a6c4045e 100644
--- a/tests/test_meteo_combine.py
+++ b/tests/test_meteo_combine.py
@@ -16,8 +16,8 @@ def meteo_paths() -> List[pathlib.Path]:
 
 
 @pytest.fixture(scope="session")
-def meteo_datasets(meteo_paths) -> List[pm.meteo]:
-    return [pm.meteo(meteo_source=path.as_posix()).Dataset for path in meteo_paths]
+def meteo_datasets(meteo_paths) -> List[pm.Meteo]:
+    return [pm.Meteo(meteo_source=path.as_posix()).Dataset for path in meteo_paths]
 
 
 def test_merge_strategy_last(meteo_paths, meteo_datasets):
@@ -31,7 +31,7 @@ def test_merge_strategy_last(meteo_paths, meteo_datasets):
         ],
         dim="time",
     )
-    merged = pm.meteo(
+    merged = pm.Meteo(
         meteo_source=meteo_paths,
         meteo_combine_by="nested",
         meteo_merge="last",
@@ -53,7 +53,7 @@ def test_merge_strategy_first(meteo_paths, meteo_datasets):
         ],
         dim="time",
     )
-    merged = pm.meteo(
+    merged = pm.Meteo(
         meteo_source=meteo_paths,
         meteo_combine_by="nested",
         meteo_merge="first",
diff --git a/tests/test_meteo_grib.py b/tests/test_meteo_grib.py
index 2c1a18af..85410b9a 100644
--- a/tests/test_meteo_grib.py
+++ b/tests/test_meteo_grib.py
@@ -9,15 +9,16 @@
 from . import DATA_DIR
 
 
-def schism(tmpdir, name):
-    filename = (DATA_DIR / name).as_posix()
+@pytest.mark.parametrize("input_name", ["erai.grib", "era5.grib", "uvp_2018100112.grib"])
+def test_schism(tmpdir, input_name):
+    filename = (DATA_DIR / input_name).as_posix()
     # read meteo file
-    df = pmeteo.meteo(meteo_source=filename)
+    df = pmeteo.Meteo(meteo_source=filename)
     df.Dataset = df.Dataset.sortby("latitude", ascending=True)
 
     rpath = str(tmpdir) + "/"
     # output to uvp files
-    df.to_output(solver="schism", rpath=rpath)
+    df.to_output(solver_name="schism", rpath=rpath)
 
     # read again meteo
     path = rpath + "/sflux/"
@@ -35,17 +36,18 @@ def schism(tmpdir, name):
     assert np.array_equal(df.Dataset.v10.values, dr.vwind.values)
 
 
-def d3d(tmpdir, name):
-    filename = (DATA_DIR / name).as_posix()
+@pytest.mark.parametrize("input_name", ["erai.grib", "era5.grib", "uvp_2018100112.grib"])
+def test_d3d(tmpdir, input_name):
+    filename = (DATA_DIR / input_name).as_posix()
     # read meteo file
-    df = pmeteo.meteo(meteo_source=filename)
+    df = pmeteo.Meteo(meteo_source=filename)
 
     rpath = str(tmpdir) + "/"
     # output to uvp files
-    df.to_output(solver="d3d", rpath=rpath)
+    df.to_output(solver_name="d3d", rpath=rpath)
 
     # read again meteo
-    m = pmodel.set(solver="d3d")
+    m = pmodel.set(solver_name="d3d")
 
     p = m.from_force(rpath + "p.amp", "msl")
     u = m.from_force(rpath + "u.amu", "u10")
@@ -60,9 +62,3 @@ def d3d(tmpdir, name):
     assert np.abs(df.Dataset.msl.values - dr.msl.values).max() < 1e-3
     assert np.abs(df.Dataset.u10.values - dr.u10.values).max() < 1e-3
     assert np.abs(df.Dataset.v10.values - dr.v10.values).max() < 1e-3
-
-
-@pytest.mark.parametrize("filename", ["erai.grib", "era5.grib", "uvp_2018100112.grib"])
-@pytest.mark.parametrize("solver", [schism, d3d])
-def test_meteo_grib(tmpdir, filename, solver):
-    solver(tmpdir, filename)
diff --git a/tests/test_meteo_slice.py b/tests/test_meteo_slice.py
index f26641ea..cb3a0fc9 100644
--- a/tests/test_meteo_slice.py
+++ b/tests/test_meteo_slice.py
@@ -16,9 +16,9 @@
 @pytest.mark.parametrize("name", [filename])
 def test_meteo(tmpdir, name):
     rpath = str(tmpdir) + "/"
-    d = pmeteo.meteo(filename)
-    d.to_output(solver="schism", rpath=rpath, meteo_split_by="day")
-    d.to_output(solver="schism", rpath=rpath, filename="all.nc")
+    d = pmeteo.Meteo(filename)
+    d.to_output(solver_name="schism", rpath=rpath, meteo_split_by="day")
+    d.to_output(solver_name="schism", rpath=rpath, filename="all.nc")
 
     # read schism meteo files
     files = glob.glob(rpath + "sflux/*.nc")
diff --git a/tests/test_schism.py b/tests/test_schism.py
index c92fdc3f..de22bbe2 100644
--- a/tests/test_schism.py
+++ b/tests/test_schism.py
@@ -11,7 +11,7 @@
 
 # define in a dictionary the properties of the model..
 case1 = {
-    "solver": "schism",
+    "solver_name": "schism",
     "mesh_file": MESH_FILE,
     "manning": 0.12,
     "windrot": 0.00001,
@@ -33,7 +33,7 @@
 }
 
 case2 = {
-    "solver": "schism",
+    "solver_name": "schism",
     "mesh_file": MESH_FILE,
     "manning": 0.12,
     "windrot": 0.00001,
@@ -56,7 +56,7 @@
 
 
 case3 = {
-    "solver": "schism",
+    "solver_name": "schism",
     "mesh_file": MESH_FILE,
     "manning": 0.12,
     "windrot": 0.00001,
diff --git a/tests/test_schism_cast.py b/tests/test_schism_cast.py
index 8d9ffc26..3601bb19 100644
--- a/tests/test_schism_cast.py
+++ b/tests/test_schism_cast.py
@@ -25,8 +25,8 @@
 
 
 # define in a dictionary the properties of the model..
-case = {
-    "solver": "schism",
+test_case = {
+    "solver_name": "schism",
     "mesh_file": MESH_FILE,
     "manning": 0.12,
     "windrot": 0.00001,
@@ -52,7 +52,7 @@
 
 # define in a dictionary the properties of the model..
 check = {
-    "solver": "schism",
+    "solver_name": "schism",
     "mesh_file": MESH_FILE,
     "manning": 0.12,
     "windrot": 0.00001,
@@ -80,9 +80,9 @@
 def schism(tmpdir):
     # initialize a model
     rpath = str(tmpdir) + "/schism/"
-    case.update({"rpath": rpath + "20181001.00/"})  # use tmpdir for running the model
+    test_case.update({"rpath": rpath + "20181001.00/"})  # use tmpdir for running the model
 
-    b = pyposeidon.model.set(**case)
+    b = pyposeidon.model.set(**test_case)
 
     b.execute()
 
@@ -108,7 +108,7 @@ def schism(tmpdir):
     # set cast
     for l in range(len(rpaths) - 1):
         h = cast.set(
-            solver="schism",
+            solver_name="schism",
             model=b,
             ppath=rpaths[l],
             cpath=rpaths[l + 1],
@@ -126,9 +126,9 @@ def schism(tmpdir):
     c.execute()
 
     # COMPARE
-    output = data.get_output(folders=rpaths, solver="schism")
+    output = data.get_output(folders=rpaths, solver_name="schism")
 
-    total = data.get_output(folders=[rpath + "check/"], solver="schism")
+    total = data.get_output(folders=[rpath + "check/"], solver_name="schism")
 
     rb = []
     for var in total.Dataset.data_vars:
diff --git a/tests/test_schism_reforecast.py b/tests/test_schism_reforecast.py
index d1a23ae0..3ca85bda 100644
--- a/tests/test_schism_reforecast.py
+++ b/tests/test_schism_reforecast.py
@@ -28,7 +28,7 @@
 
 # define in a dictionary the properties of the model..
 case = {
-    "solver": "schism",
+    "solver_name": "schism",
     "mesh_file": MESH_FILE,
     "manning": 0.12,
     "windrot": 0.00001,
@@ -55,7 +55,7 @@
 
 # define in a dictionary the properties of the model..
 check = {
-    "solver": "schism",
+    "solver_name": "schism",
     "mesh_file": MESH_FILE,
     "manning": 0.12,
     "windrot": 0.00001,
@@ -107,7 +107,7 @@ def schism(tmpdir):
     # set cast
     for l in range(len(rpaths) - 1):
         h = cast.set(
-            solver="schism",
+            solver_name="schism",
             model=b,
             ppath=rpaths[l],
             cpath=rpaths[l + 1],
@@ -121,10 +121,10 @@ def schism(tmpdir):
 
     # Combine meteo appropriately
 
-    m1 = pm.meteo(meteo_source=METEO_FILES_2[0])
-    m2 = pm.meteo(meteo_source=METEO_FILES_2[1])
-    m3 = pm.meteo(meteo_source=METEO_FILES_2[2])
-    m4 = pm.meteo(meteo_source=METEO_FILES_2[3])
+    m1 = pm.Meteo(meteo_source=METEO_FILES_2[0])
+    m2 = pm.Meteo(meteo_source=METEO_FILES_2[1])
+    m3 = pm.Meteo(meteo_source=METEO_FILES_2[2])
+    m4 = pm.Meteo(meteo_source=METEO_FILES_2[3])
 
     # extract correct chunk
 
@@ -143,9 +143,9 @@ def schism(tmpdir):
     c.execute()
 
     # COMPARE
-    output = data.get_output(folders=rpaths, solver="schism")
+    output = data.get_output(folders=rpaths, solver_name="schism")
 
-    total = data.get_output(folders=[rpath + "check/"], solver="schism")
+    total = data.get_output(folders=[rpath + "check/"], solver_name="schism")
 
     r = output.Dataset.isel(time=slice(0, 36))
 
diff --git a/tests/test_schism_total.py b/tests/test_schism_total.py
index bfb73a5c..de419a8e 100644
--- a/tests/test_schism_total.py
+++ b/tests/test_schism_total.py
@@ -30,7 +30,7 @@
 def test_schism(tmpdir, window):
     # initialize a model
     dic = {
-        "solver": "schism",
+        "solver_name": "schism",
         "geometry": window,
         "coastlines": GSHHS,
         "manning": 0.12,