Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nb 4 do not work with Python 3.10 (ValueError: popmean.shape[axis] must equal 1.) #65

Closed
tlvu opened this issue May 26, 2023 · 8 comments · Fixed by Ouranosinc/PAVICS-e2e-workflow-tests#121
Assignees
Labels
bug Something isn't working

Comments

@tlvu
Copy link
Collaborator

tlvu commented May 26, 2023

Error below only happen with 3.10, not 3.9.

09:04:23  _ PAVICS-landing-fix-nb-for-new-jupyter-env/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-4Ensembles.ipynb::Cell 2 _
09:04:23  Notebook cell execution failed
09:04:23  Cell 2: Cell execution caused an exception
09:04:23  
09:04:23  Input:
09:04:23  fut = ds_ens.sel(time=slice("2071", "2100")).chunk(dict(realization=-1))
09:04:23  ref = ds_ens.sel(time=slice("1981", "2010")).chunk(dict(realization=-1))
09:04:23  
09:04:23  chng_f, pos_f = xens.change_significance(
09:04:23      fut.sel(time=fut["time.season"] == "JJA"),
09:04:23      ref.sel(time=ref["time.season"] == "JJA"),
09:04:23      test="ttest",
09:04:23  )
09:04:23  plt.figure(
09:04:23      figsize=(15, 6),
09:04:23  )
09:04:23  
09:04:23  plt.subplot(1, 2, 1)
09:04:23  chng_f.tx_days_above.plot(cmap="RdBu_r", vmin=0, vmax=1)
09:04:23  
09:04:23  plt.title(chng_f.description.split(".")[0])
09:04:23  
09:04:23  plt.subplot(1, 2, 2)
09:04:23  pos_f.tx_days_above.plot(cmap="RdBu_r", vmin=0, vmax=1)
09:04:23  plt.title(pos_f.description.split(".")[0])
09:04:23  
09:04:23  display()
09:04:23  
09:04:23  Traceback:
09:04:23  
09:04:23  ---------------------------------------------------------------------------
09:04:23  ValueError                                Traceback (most recent call last)
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/scipy/stats/_stats_py.py:6265, in ttest_1samp(a, popmean, axis, nan_policy, alternative)
09:04:23     6264 try:
09:04:23  -> 6265     popmean = np.squeeze(popmean, axis=axis)
09:04:23     6266 except ValueError as e:
09:04:23  
09:04:23  File <__array_function__ internals>:200, in squeeze(*args, **kwargs)
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/numpy/core/fromnumeric.py:1571, in squeeze(a, axis)
09:04:23     1570 else:
09:04:23  -> 1571     return squeeze(axis=axis)
09:04:23  
09:04:23  ValueError: cannot select an axis to squeeze out which has size not equal to one
09:04:23  
09:04:23  The above exception was the direct cause of the following exception:
09:04:23  
09:04:23  ValueError                                Traceback (most recent call last)
09:04:23  Cell In[3], line 14
09:04:23        9 plt.figure(
09:04:23       10     figsize=(15, 6),
09:04:23       11 )
09:04:23       13 plt.subplot(1, 2, 1)
09:04:23  ---> 14 chng_f.tx_days_above.plot(cmap="RdBu_r", vmin=0, vmax=1)
09:04:23       16 plt.title(chng_f.description.split(".")[0])
09:04:23       18 plt.subplot(1, 2, 2)
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/xarray/plot/plot.py:547, in _PlotMethods.__call__(self, **kwargs)
09:04:23      546 def __call__(self, **kwargs):
09:04:23  --> 547     return plot(self._da, **kwargs)
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/xarray/plot/plot.py:261, in plot(darray, row, col, col_wrap, ax, hue, rtol, subplot_kws, **kwargs)
09:04:23      209 def plot(
09:04:23      210     darray,
09:04:23      211     row=None,
09:04:23     (...)
09:04:23      218     **kwargs,
09:04:23      219 ):
09:04:23      220     """
09:04:23      221     Default plot of DataArray using :py:mod:`matplotlib:matplotlib.pyplot`.
09:04:23      222 
09:04:23     (...)
09:04:23      259     xarray.DataArray.squeeze
09:04:23      260     """
09:04:23  --> 261     darray = darray.squeeze().compute()
09:04:23      263     plot_dims = set(darray.dims)
09:04:23      264     plot_dims.discard(row)
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/xarray/core/dataarray.py:1088, in DataArray.compute(self, **kwargs)
09:04:23     1069 """Manually trigger loading of this array's data from disk or a
09:04:23     1070 remote source into memory and return a new array. The original is
09:04:23     1071 left unaltered.
09:04:23     (...)
09:04:23     1085 dask.compute
09:04:23     1086 """
09:04:23     1087 new = self.copy(deep=False)
09:04:23  -> 1088 return new.load(**kwargs)
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/xarray/core/dataarray.py:1062, in DataArray.load(self, **kwargs)
09:04:23     1044 def load(self: T_DataArray, **kwargs) -> T_DataArray:
09:04:23     1045     """Manually trigger loading of this array's data from disk or a
09:04:23     1046     remote source into memory and return this array.
09:04:23     1047 
09:04:23     (...)
09:04:23     1060     dask.compute
09:04:23     1061     """
09:04:23  -> 1062     ds = self._to_temp_dataset().load(**kwargs)
09:04:23     1063     new = self._from_temp_dataset(ds)
09:04:23     1064     self._variable = new._variable
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/xarray/core/dataset.py:735, in Dataset.load(self, **kwargs)
09:04:23      732 import dask.array as da
09:04:23      734 # evaluate all the dask arrays simultaneously
09:04:23  --> 735 evaluated_data = da.compute(*lazy_data.values(), **kwargs)
09:04:23      737 for k, data in zip(lazy_data, evaluated_data):
09:04:23      738     self.variables[k].data = data
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/dask/base.py:599, in compute(traverse, optimize_graph, scheduler, get, *args, **kwargs)
09:04:23      596     keys.append(x.__dask_keys__())
09:04:23      597     postcomputes.append(x.__dask_postcompute__())
09:04:23  --> 599 results = schedule(dsk, keys, **kwargs)
09:04:23      600 return repack([f(r, *a) for r, (f, a) in zip(results, postcomputes)])
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/dask/threaded.py:89, in get(dsk, keys, cache, num_workers, pool, **kwargs)
09:04:23       86     elif isinstance(pool, multiprocessing.pool.Pool):
09:04:23       87         pool = MultiprocessingPoolExecutor(pool)
09:04:23  ---> 89 results = get_async(
09:04:23       90     pool.submit,
09:04:23       91     pool._max_workers,
09:04:23       92     dsk,
09:04:23       93     keys,
09:04:23       94     cache=cache,
09:04:23       95     get_id=_thread_get_id,
09:04:23       96     pack_exception=pack_exception,
09:04:23       97     **kwargs,
09:04:23       98 )
09:04:23      100 # Cleanup pools associated to dead threads
09:04:23      101 with pools_lock:
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/dask/local.py:511, in get_async(submit, num_workers, dsk, result, cache, get_id, rerun_exceptions_locally, pack_exception, raise_exception, callbacks, dumps, loads, chunksize, **kwargs)
09:04:23      509         _execute_task(task, data)  # Re-execute locally
09:04:23      510     else:
09:04:23  --> 511         raise_exception(exc, tb)
09:04:23      512 res, worker_id = loads(res_info)
09:04:23      513 state["cache"][key] = res
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/dask/local.py:319, in reraise(exc, tb)
09:04:23      317 if exc.__traceback__ is not tb:
09:04:23      318     raise exc.with_traceback(tb)
09:04:23  --> 319 raise exc
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/dask/local.py:224, in execute_task(key, task_info, dumps, loads, get_id, pack_exception)
09:04:23      222 try:
09:04:23      223     task, data = loads(task_info)
09:04:23  --> 224     result = _execute_task(task, data)
09:04:23      225     id = get_id()
09:04:23      226     result = dumps((result, id))
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/dask/core.py:119, in _execute_task(arg, cache, dsk)
09:04:23      115     func, args = arg[0], arg[1:]
09:04:23      116     # Note: Don't assign the subtask results to a variable. numpy detects
09:04:23      117     # temporaries by their reference count and can execute certain
09:04:23      118     # operations in-place.
09:04:23  --> 119     return func(*(_execute_task(a, cache) for a in args))
09:04:23      120 elif not ishashable(arg):
09:04:23      121     return arg
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/dask/optimization.py:990, in SubgraphCallable.__call__(self, *args)
09:04:23      988 if not len(args) == len(self.inkeys):
09:04:23      989     raise ValueError("Expected %d args, got %d" % (len(self.inkeys), len(args)))
09:04:23  --> 990 return core.get(self.dsk, self.outkey, dict(zip(self.inkeys, args)))
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/dask/core.py:149, in get(dsk, out, cache)
09:04:23      147 for key in toposort(dsk):
09:04:23      148     task = dsk[key]
09:04:23  --> 149     result = _execute_task(task, cache)
09:04:23      150     cache[key] = result
09:04:23      151 result = _execute_task(out, cache)
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/dask/core.py:119, in _execute_task(arg, cache, dsk)
09:04:23      115     func, args = arg[0], arg[1:]
09:04:23      116     # Note: Don't assign the subtask results to a variable. numpy detects
09:04:23      117     # temporaries by their reference count and can execute certain
09:04:23      118     # operations in-place.
09:04:23  --> 119     return func(*(_execute_task(a, cache) for a in args))
09:04:23      120 elif not ishashable(arg):
09:04:23      121     return arg
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/numpy/lib/function_base.py:2329, in vectorize.__call__(self, *args, **kwargs)
09:04:23     2326     vargs = [args[_i] for _i in inds]
09:04:23     2327     vargs.extend([kwargs[_n] for _n in names])
09:04:23  -> 2329 return self._vectorize_call(func=func, args=vargs)
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/numpy/lib/function_base.py:2403, in vectorize._vectorize_call(self, func, args)
09:04:23     2401 """Vectorized call to `func` over positional `args`."""
09:04:23     2402 if self.signature is not None:
09:04:23  -> 2403     res = self._vectorize_call_with_signature(func, args)
09:04:23     2404 elif not args:
09:04:23     2405     res = func()
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/numpy/lib/function_base.py:2443, in vectorize._vectorize_call_with_signature(self, func, args)
09:04:23     2440 nout = len(output_core_dims)
09:04:23     2442 for index in np.ndindex(*broadcast_shape):
09:04:23  -> 2443     results = func(*(arg[index] for arg in args))
09:04:23     2445     n_results = len(results) if isinstance(results, tuple) else 1
09:04:23     2447     if nout != n_results:
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/xclim/ensembles/_robustness.py:208, in change_significance.<locals>._ttest_func(f, r)
09:04:23      206 def _ttest_func(f, r):
09:04:23      207     # scipy>=1.9: popmean.axis[-1] must equal 1 for both fut and ref
09:04:23  --> 208     return spstats.ttest_1samp(
09:04:23      209         f, r[..., np.newaxis], axis=-1, nan_policy="omit"
09:04:23      210     )[1]
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/scipy/stats/_axis_nan_policy.py:502, in _axis_nan_policy_factory.<locals>.axis_nan_policy_decorator.<locals>.axis_nan_policy_wrapper(***failed resolving arguments***)
09:04:23      500 if sentinel:
09:04:23      501     samples = _remove_sentinel(samples, paired, sentinel)
09:04:23  --> 502 res = hypotest_fun_out(*samples, **kwds)
09:04:23      503 res = result_to_tuple(res)
09:04:23      504 res = _add_reduced_axes(res, reduced_axes, keepdims)
09:04:23  
09:04:23  File /opt/conda/envs/birdy/lib/python3.10/site-packages/scipy/stats/_stats_py.py:6267, in ttest_1samp(a, popmean, axis, nan_policy, alternative)
09:04:23     6265     popmean = np.squeeze(popmean, axis=axis)
09:04:23     6266 except ValueError as e:
09:04:23  -> 6267     raise ValueError("`popmean.shape[axis]` must equal 1.") from e
09:04:23     6268 d = mean - popmean
09:04:23     6269 v = _var(a, axis, ddof=1)
09:04:23  
09:04:23  ValueError: `popmean.shape[axis]` must equal 1.
@tlvu tlvu changed the title Nb 4 do not work with Python 3.10 Nb 4 do not work with Python 3.10 (ValueError: popmean.shape[axis] must equal 1.) May 26, 2023
@Zeitsperre
Copy link
Collaborator

Zeitsperre commented May 26, 2023

@aulemahal

Is it possible that the fix for that was introduced here: Ouranosinc/xclim@56d6ef7 is not working properly?

We even test to ensure that warnings are being properly raised! (Ouranosinc/xclim@60e9a70)

This fix was introduced in the latest xclim (v0.43.0) so the only explanation I can offer is xclim is not at the newest version in this environment.

@Zeitsperre
Copy link
Collaborator

Potential cause found!

The changes in scipy were completed here: scipy/scipy#16835 and were implemented in scipy>=1.10.1 (not 1.9.0).

@tlvu What version of scipy is running in the environment?

@tlvu
Copy link
Collaborator Author

tlvu commented May 26, 2023

Potential cause found!

The changes in scipy were completed here: scipy/scipy#16835 and were implemented in scipy>=1.10.1 (not 1.9.0).

@tlvu What version of scipy is running in the environment?

py310 not working : xclim=0.43.0=py310hff52083_1 + scipy=1.10.1=py310ha4c1d20_3

py39 working: xclim=0.43.0=py39hf3d152e_1 + scipy=1.9.1=py39h8ba3f38_0

@tlogan2000 tlogan2000 added the bug Something isn't working label May 26, 2023
@tlogan2000 tlogan2000 assigned aulemahal and unassigned aulemahal May 26, 2023
@huard
Copy link
Collaborator

huard commented May 26, 2023

I don't have a full understanding of whats going on, but the popmean` error appears when the array is empty, which happens when the time series is entirely filled with NaNs that are compressed by the test algorithm. In short, the ocean domain will fail because the data are all nans.

Not sure why this didn't fail before.

One workaround is to compute the test only on land.

fut = ds_ens.sel(time=slice("2071", "2100")).chunk(dict(realization=-1))
ref = ds_ens.sel(time=slice("1981", "2010")).chunk(dict(realization=-1))

f = fut.sel(time=fut["time.season"] == "JJA").tx_days_above
r = ref.sel(time=ref["time.season"] == "JJA").tx_days_above

import xarray as xr
tmp = xr.Dataset(dict(ref=r, fut=f))

# Find coordinates that are all NaNs
mask = (f.isnull().all(dim="time") + f.isnull().all(dim="time")).isel(realization=0).compute()

# Compute significance only on valid coordinates
valid = tmp.groupby(mask)[False]
chng_f, pos_f = xens.change_significance(valid.fut, valid.ref, test="ttest")

# Unstack results
chng_f = chng_f.unstack()
pos_f = pos_f.unstack()

Now for a reason I don't understand, with the Alpha env on Jupyter the results are all NaNs or inf, so there might be something else going on.

@huard
Copy link
Collaborator

huard commented May 26, 2023

PR for fix in xclim: Ouranosinc/xclim#1380

@huard
Copy link
Collaborator

huard commented May 26, 2023

No changes will be needed to the NB if we merge the xclim PR and release a new xclim version before we update scipy to 1.10 in the jupyter env.

@Zeitsperre
Copy link
Collaborator

Just to confirm, we will not be releasing a new xclim at 17h20 on a Friday, right?

tlvu added a commit to Ouranosinc/PAVICS-e2e-workflow-tests that referenced this issue Jun 1, 2023
… and latest of everything else (#115)

## Changes
- Jenkins: add RavenPy repo
- Re-organize tutorial notebooks on PAVICS: dropped `esgf-compute-api`
examples and group all Raven notebooks (RavenWPS and RavenPy) into one
folder `raven`.
- Jupyter env changes:
  - Update to python `3.9`, from `3.8`
- Adds `esgf-pyclient` for esgf-dap.ipynb
(https://github.com/Ouranosinc/pavics-sdi/pull/269)
- Adds `xncml` for gen_catalog refactoring
(https://github.com/Ouranosinc/pavics-vdb/pull/46)
- Adds Globus Personnal Connect to be able to transfer big files in and
out of the Jupyter env
- Fixes annoying harmless error `ERROR 1: PROJ:
proj_create_from_database: Open of /opt/conda/envs/birdy/share/proj
failed`
- Existing `intake-esm` pin:
https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/issues/109
  - Shrink image by almost 2G
  - Relevant changes (alphabetical order):
```diff
<   - birdy=0.8.1=pyh6c4a22f_1
>   - birdy=0.8.4=pyh1a96a4e_0

<   - cf_xarray=0.7.5=pyhd8ed1ab_0
>   - cf_xarray=0.8.0=pyhd8ed1ab_0

<   - clisops=0.9.3=pyh1a96a4e_0
>   - clisops=0.9.6=pyh1a96a4e_0

<   - dask=2022.11.1=pyhd8ed1ab_0
>   - dask=2023.5.1=pyhd8ed1ab_0

<   - esmf=8.2.0=mpi_mpich_h5a1934d_102
<   - esmpy=8.2.0=mpi_mpich_py38h9147699_101
>   - esmf=8.4.0=mpi_mpich_hc592774_104
>   - esmpy=8.4.0=mpi_mpich_py39h3088dd8_102

<   - fiona=1.8.22=py38h85a5e0f_5
>   - fiona=1.9.1=py39hbc5ff6d_0

<   - flox=0.6.4=pyhd8ed1ab_0
>   - flox=0.7.2=pyhd8ed1ab_0

<   - gdal=3.6.0=py38h58634bd_13
>   - gdal=3.6.2=py39hc6cd174_6

<   - owslib=0.27.2=pyhd8ed1ab_1
>   - owslib=0.28.1=pyhd8ed1ab_0

# new
>   - pyogrio=0.5.1=py39hbc5ff6d_0

<   - python=3.8.16=he550d4f_1_cpython
>   - python=3.9.16=h2782a2a_0_cpython

<   - raven-hydro=3.0.4.322=ha46ed4c_2
<   - ravenpy=0.9.0=pyha21a80b_0
>   - raven-hydro=0.2.1=py39h8e2dbb5_1
>   - ravenpy=0.12.0=py39hf3d152e_2

<   - rioxarray=0.13.1=pyhd8ed1ab_0
>   - rioxarray=0.14.1=pyhd8ed1ab_0

<   - roocs-utils=0.6.3=pyh1a96a4e_0
>   - roocs-utils=0.6.4=pyh1a96a4e_0

# new
>   - seaborn=0.12.2=hd8ed1ab_0

<   - xarray=2022.10.0=pyhd8ed1ab_0
>   - xarray=2023.1.0=pyhd8ed1ab_0

<   - xclim=0.39.0=pyhd8ed1ab_0
>   - xclim=0.43.0=py39hf3d152e_1

<   - xesmf=0.6.3=pyhd8ed1ab_1
>   - xesmf=0.7.1=pyhd8ed1ab_0

# new 
>  - hsclient==0.3.3

```

## Test

- Deployed as "beta" image in production for bokeh visualization
performance regression testing.
- Manual test notebook
https://github.com/Ouranosinc/PAVICS-landing/blob/master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb
for bokeh visualization performance and it looks fine.
- Jenkins build, all passed:

[job-PAVICS-e2e-workflow-tests-new-docker-build-198-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621190/job-PAVICS-e2e-workflow-tests-new-docker-build-198-consoleText.txt)

[ravenpy-job-PAVICS-e2e-workflow-tests-new-docker-build-200-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621191/ravenpy-job-PAVICS-e2e-workflow-tests-new-docker-build-200-consoleText.txt)




## Related Issue / Discussion

- Matching notebook fixes:
  - Pavics-sdi: https://github.com/Ouranosinc/pavics-sdi/pull/281
  - Finch: https://github.com/bird-house/finch/pull/275
  - PAVICS-landing: https://github.com/Ouranosinc/PAVICS-landing/pull/64
  - RavenPy: https://github.com/CSHS-CWRA/RavenPy/pull/287

- Deployment to PAVICS:
https://github.com/bird-house/birdhouse-deploy/pull/332

- Jenkins-config changes for new RavenPy notebooks:
https://github.com/Ouranosinc/jenkins-config/pull/15

- Other issues found while working on this one
  - https://github.com/Ouranosinc/PAVICS-landing/issues/66
  - https://github.com/Ouranosinc/PAVICS-landing/issues/65

## Additional Information

Full diff conda env export:

[221130-update230403-230530-1-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621128/221130-update230403-230530-1-conda-env-export.diff.txt)
```diff
9,11c9,12
<   - affine=2.3.1=pyhd8ed1ab_0
<   - aiobotocore=2.4.0=pyhd8ed1ab_0
<   - aiohttp=3.8.3=py38h0a891b7_1
---
>   - affine=2.4.0=pyhd8ed1ab_0
>   - aiobotocore=2.5.0=pyhd8ed1ab_0
>   - aiofiles=22.1.0=pyhd8ed1ab_0
>   - aiohttp=3.8.4=py39h72bdee0_0
14c15,16
<   - alembic=1.8.1=pyhd8ed1ab_0
---
>   - aiosqlite=0.19.0=pyhd8ed1ab_0
>   - alembic=1.11.1=pyhd8ed1ab_0
16,18c18,20
<   - altair=4.2.0=pyhd8ed1ab_1
<   - ansi2html=1.8.0=py38h578d9bd_1
<   - anyio=3.6.2=pyhd8ed1ab_0
---
>   - altair=5.0.1=pyhd8ed1ab_0
>   - ansi2html=1.8.0=py39hf3d152e_1
>   - anyio=3.6.1=pyhd8ed1ab_1
22,23c24
<   - argon2-cffi-bindings=21.2.0=py38h0a891b7_3
<   - arrow-cpp=11.0.0=ha770c72_9_cpu
---
>   - argon2-cffi-bindings=21.2.0=py39hb9d737c_3
26c27
<   - asttokens=2.2.0=pyhd8ed1ab_0
---
>   - asttokens=2.2.1=pyhd8ed1ab_0
30,44c31,45
<   - attrs=22.1.0=pyh71513ae_1
<   - aws-c-auth=0.6.26=hf365957_1
<   - aws-c-cal=0.5.21=h48707d8_2
<   - aws-c-common=0.8.14=h0b41bf4_0
<   - aws-c-compression=0.2.16=h03acc5a_5
<   - aws-c-event-stream=0.2.20=h00877a2_4
<   - aws-c-http=0.7.6=hf342b9f_0
<   - aws-c-io=0.13.19=h5b20300_3
<   - aws-c-mqtt=0.8.6=hc4349f7_12
<   - aws-c-s3=0.2.7=h909e904_1
<   - aws-c-sdkutils=0.1.8=h03acc5a_0
<   - aws-checksums=0.1.14=h03acc5a_5
<   - aws-crt-cpp=0.19.8=hf7fbfca_12
<   - aws-sdk-cpp=1.10.57=h17c43bd_8
<   - babel=2.11.0=pyhd8ed1ab_0
---
>   - attrs=23.1.0=pyh71513ae_1
>   - aws-c-auth=0.6.27=he072965_1
>   - aws-c-cal=0.5.26=hf677bf3_1
>   - aws-c-common=0.8.19=hd590300_0
>   - aws-c-compression=0.2.16=hbad4bc6_7
>   - aws-c-event-stream=0.2.20=hb4b372c_7
>   - aws-c-http=0.7.7=h2632f9a_4
>   - aws-c-io=0.13.21=h9fef7b8_5
>   - aws-c-mqtt=0.8.11=h2282364_1
>   - aws-c-s3=0.3.0=hcb5a9b2_2
>   - aws-c-sdkutils=0.1.9=hbad4bc6_2
>   - aws-checksums=0.1.14=hbad4bc6_7
>   - aws-crt-cpp=0.20.2=he0fdcb3_0
>   - aws-sdk-cpp=1.10.57=h059227d_13
>   - babel=2.12.1=pyhd8ed1ab_1
48d48
<   - backports.zoneinfo=0.2.1=py38h0a891b7_7
50,51c50,51
<   - bcrypt=3.2.2=py38h0a891b7_1
<   - beautifulsoup4=4.11.1=pyha770c72_0
---
>   - bcrypt=3.2.2=py39hb9d737c_1
>   - beautifulsoup4=4.12.2=pyha770c72_0
53,56c53,56
<   - birdy=0.8.1=pyh6c4a22f_1
<   - bleach=5.0.1=pyhd8ed1ab_0
<   - blinker=1.5=pyhd8ed1ab_0
<   - blosc=1.21.3=hafa529b_0
---
>   - birdy=0.8.4=pyh1a96a4e_0
>   - bleach=6.0.0=pyhd8ed1ab_0
>   - blinker=1.6.2=pyhd8ed1ab_0
>   - blosc=1.21.4=h0f2a231_0
58,62c58,62
<   - boltons=21.0.0=pyhd8ed1ab_0
<   - boost-cpp=1.78.0=h75c5d50_1
<   - boto3=1.24.59=pyhd8ed1ab_0
<   - botocore=1.27.59=pyhd8ed1ab_0
<   - bottleneck=1.3.5=py38h26c90d9_1
---
>   - boltons=23.0.0=pyhd8ed1ab_0
>   - boost-cpp=1.78.0=h5adbc97_2
>   - boto3=1.26.76=pyhd8ed1ab_0
>   - botocore=1.29.76=pyhd8ed1ab_0
>   - bottleneck=1.3.7=py39h389d5f1_0
66,67c66
<   - brotli-python=1.0.9=py38hfa26641_8
<   - brotlipy=0.7.0=py38h0a891b7_1005
---
>   - brotlipy=0.7.0=py39hb9d737c_1005
70,72c69,71
<   - c-ares=1.18.1=h7f98852_0
<   - c-blosc2=2.5.0=h7a311fb_0
<   - ca-certificates=2022.12.7=ha878542_0
---
>   - c-ares=1.19.1=hd590300_0
>   - c-blosc2=2.9.2=hb4ffafa_0
>   - ca-certificates=2023.5.7=hbcca054_0
75c74
<   - cachetools=5.2.0=pyhd8ed1ab_0
---
>   - cachetools=5.3.0=pyhd8ed1ab_0
77c76
<   - cartopy=0.21.0=py38hf6c3373_3
---
>   - cartopy=0.21.1=py39h6e7ad6e_0
80,82c79,81
<   - cdms2=3.1.5=py38hc1ef740_14
<   - cdtime=3.1.4=py38hc54c017_7
<   - certifi=2022.12.7=pyhd8ed1ab_0
---
>   - cdms2=3.1.5=py39h36de48d_15
>   - cdtime=3.1.4=py39he83c29a_7
>   - certifi=2023.5.7=pyhd8ed1ab_0
84,86c83,85
<   - cf_xarray=0.7.5=pyhd8ed1ab_0
<   - cffi=1.15.1=py38h4a40e3a_2
<   - cfgrib=0.9.10.3=pyhd8ed1ab_0
---
>   - cf_xarray=0.8.0=pyhd8ed1ab_0
>   - cffi=1.15.1=py39he91dace_3
>   - cfgrib=0.9.10.4=pyhd8ed1ab_0
89,90c88,89
<   - cftime=1.6.2=py38h26c90d9_1
<   - charls=2.3.4=h9c3ff4c_0
---
>   - cftime=1.6.2=py39h2ae25f5_1
>   - charls=2.4.2=h59595ed_0
96,97c95,96
<   - clisops=0.9.3=pyh1a96a4e_0
<   - cloudpickle=2.2.0=pyhd8ed1ab_0
---
>   - clisops=0.9.6=pyh1a96a4e_0
>   - cloudpickle=2.2.1=pyhd8ed1ab_0
100,105c99,104
<   - commonmark=0.9.1=py_0
<   - configurable-http-proxy=4.5.3=he2f69ee_3
<   - contourpy=1.0.6=py38h43d8883_0
<   - coverage=6.5.0=py38h0a891b7_1
<   - cryptography=40.0.1=py38h3d167d9_0
<   - curl=7.88.1=hdc1c0ab_1
---
>   - comm=0.1.3=pyhd8ed1ab_0
>   - configurable-http-proxy=4.5.4=he2f69ee_2
>   - contourpy=1.0.7=py39h4b4f3f3_0
>   - coverage=7.2.7=py39hd1e30aa_0
>   - cryptography=40.0.2=py39h079d5ae_0
>   - curl=8.1.2=h409715c_0
107,111c106,110
<   - cytoolz=0.12.0=py38h0a891b7_1
<   - dash=2.7.0=pyhd8ed1ab_0
<   - dask=2022.11.1=pyhd8ed1ab_0
<   - dask-core=2022.11.1=pyhd8ed1ab_0
<   - dask-labextension=6.0.0=pyhd8ed1ab_0
---
>   - cytoolz=0.12.0=py39hb9d737c_1
>   - dash=2.9.3=pyhd8ed1ab_2
>   - dask=2023.5.1=pyhd8ed1ab_0
>   - dask-core=2023.5.1=pyhd8ed1ab_0
>   - dask-labextension=6.1.0=pyhd8ed1ab_0
113c112
<   - datashader=0.14.3=pyh1a96a4e_0
---
>   - datashader=0.14.4=pyh1a96a4e_0
115c114
<   - dav1d=1.0.0=h166bdaf_1
---
>   - dav1d=1.2.0=hd590300_0
117c116
<   - debugpy=1.6.4=py38hfa26641_0
---
>   - debugpy=1.6.7=py39h227be39_0
122c121
<   - distarray=2.12.2=pyhd8ed1ab_2
---
>   - distarray=2.12.2=pyh050c7b8_4
124c123
<   - distributed=2022.11.1=pyhd8ed1ab_0
---
>   - distributed=2023.5.1=pyhd8ed1ab_0
127,128c126,127
<   - eccodes=2.27.0=h164a9dd_0
<   - elfutils=0.186=he364ef2_0
---
>   - eccodes=2.28.0=h7513371_1
>   - elfutils=0.189=hde5d1a3_0
133,135c132,135
<   - esmf=8.2.0=mpi_mpich_h5a1934d_102
<   - esmpy=8.2.0=mpi_mpich_py38h9147699_101
<   - exceptiongroup=1.0.4=pyhd8ed1ab_0
---
>   - esmf=8.4.0=mpi_mpich_hc592774_104
>   - esmpy=8.4.0=mpi_mpich_py39h3088dd8_102
>   - exceptiongroup=1.1.1=pyhd8ed1ab_0
>   - execnet=1.9.0=pyhd8ed1ab_0
137c137
<   - expat=2.5.0=h27087fc_0
---
>   - expat=2.5.0=hcb278e6_1
140,148c140,147
<   - fftw=3.3.10=nompi_hf0379b8_105
<   - filelock=3.8.0=pyhd8ed1ab_0
<   - findlibs=0.0.2=pyhd8ed1ab_0
<   - fiona=1.8.22=py38h85a5e0f_5
<   - flask=2.2.2=pyhd8ed1ab_0
<   - flask-compress=1.13=pyhd8ed1ab_0
<   - flit-core=3.8.0=pyhd8ed1ab_0
<   - flox=0.6.4=pyhd8ed1ab_0
<   - folium=0.13.0=pyhd8ed1ab_0
---
>   - fftw=3.3.10=nompi_hc118613_107
>   - filelock=3.12.0=pyhd8ed1ab_0
>   - findlibs=0.0.5=pyhd8ed1ab_0
>   - fiona=1.9.1=py39hbc5ff6d_0
>   - flask=2.3.2=pyhd8ed1ab_0
>   - flit-core=3.9.0=pyhd8ed1ab_0
>   - flox=0.7.2=pyhd8ed1ab_0
>   - folium=0.14.0=pyhd8ed1ab_0
153c152
<   - fontconfig=2.14.1=hc2a2eb6_0
---
>   - fontconfig=2.14.2=h14ed4e7_0
156c155
<   - fonttools=4.38.0=py38h0a891b7_1
---
>   - fonttools=4.39.4=py39hd1e30aa_0
160,161c159,160
<   - frozenlist=1.3.3=py38h0a891b7_0
<   - fsspec=2022.11.0=pyhd8ed1ab_0
---
>   - frozenlist=1.3.3=py39hb9d737c_0
>   - fsspec=2023.5.0=pyh1a96a4e_0
163c162
<   - future=0.18.2=pyhd8ed1ab_6
---
>   - future=0.18.3=pyhd8ed1ab_0
165,167c164,166
<   - gcsfs=2022.11.0=pyhd8ed1ab_0
<   - gdal=3.6.0=py38h58634bd_13
<   - geckodriver=0.32.0=h4b87306_0
---
>   - gcsfs=2023.5.0=pyhd8ed1ab_0
>   - gdal=3.6.2=py39hc6cd174_6
>   - geckodriver=0.33.0=hd2f7af9_0
169,170c168,169
<   - geopandas=0.12.1=pyhd8ed1ab_1
<   - geopandas-base=0.12.1=pyha770c72_1
---
>   - geopandas=0.13.0=pyhd8ed1ab_0
>   - geopandas-base=0.13.0=pyha770c72_0
173,175c172,174
<   - geotiff=1.7.1=ha76d385_4
<   - geoviews=1.9.5=pyhd8ed1ab_0
<   - geoviews-core=1.9.5=pyha770c72_0
---
>   - geotiff=1.7.1=h7a142b4_6
>   - geoviews=1.9.6=pyhd8ed1ab_0
>   - geoviews-core=1.9.6=pyha770c72_0
178c177
<   - giflib=5.2.1=h36c2ea0_2
---
>   - giflib=5.2.1=h0b41bf4_3
180,182c179,181
<   - gitpython=3.1.29=pyhd8ed1ab_0
<   - glib=2.74.1=h6239696_1
<   - glib-tools=2.74.1=h6239696_1
---
>   - gitpython=3.1.31=pyhd8ed1ab_0
>   - glib=2.76.3=hfc55251_0
>   - glib-tools=2.76.3=hfc55251_0
185,187c184,186
<   - google-api-core=2.10.2=pyhd8ed1ab_0
<   - google-auth=2.14.1=pyh1a96a4e_0
<   - google-auth-oauthlib=0.7.1=pyhd8ed1ab_0
---
>   - google-api-core=2.11.0=pyhd8ed1ab_0
>   - google-auth=2.19.0=pyh1a96a4e_0
>   - google-auth-oauthlib=1.0.0=pyhd8ed1ab_0
189,198c188,197
<   - google-cloud-storage=2.6.0=pyh1a96a4e_0
<   - google-crc32c=1.1.2=py38h57c428a_4
<   - google-resumable-media=2.4.0=pyhd8ed1ab_0
<   - googleapis-common-protos=1.57.0=pyhd8ed1ab_3
<   - greenlet=2.0.1=py38hfa26641_0
<   - grpc-cpp=1.51.1=h27aab58_3
<   - grpcio=1.51.1=py38h8dc9893_3
<   - gst-plugins-base=1.21.2=h3e40eee_0
<   - gstreamer=1.21.2=hd4edc92_0
<   - gstreamer-orc=0.4.33=h166bdaf_0
---
>   - google-cloud-storage=2.9.0=pyh1a96a4e_0
>   - google-crc32c=1.1.2=py39h8db88ab_4
>   - google-resumable-media=2.5.0=pyhd8ed1ab_0
>   - googleapis-common-protos=1.57.1=pyhd8ed1ab_0
>   - graphite2=1.3.13=h58526e2_1001
>   - greenlet=2.0.2=py39h3d6467e_1
>   - grpcio=1.54.2=py39h227be39_2
>   - gst-plugins-base=1.22.0=h4243ec0_2
>   - gstreamer=1.22.0=h25f0c4b_2
>   - gstreamer-orc=0.4.34=hd590300_0
200,202c199,202
<   - h5netcdf=1.1.0=pyhd8ed1ab_0
<   - h5py=3.7.0=nompi_py38h7927eab_102
<   - haversine=2.7.0=pyhd8ed1ab_0
---
>   - h5netcdf=1.1.0=pyhd8ed1ab_1
>   - h5py=3.8.0=mpi_mpich_py39hadaddcd_0
>   - harfbuzz=6.0.0=h8e241bc_0
>   - haversine=2.8.0=pyhd8ed1ab_0
205,207c205,206
<   - heapdict=1.0.1=py_0
<   - holoviews=1.15.2=pyhd8ed1ab_0
<   - hvplot=0.8.2=pyhd8ed1ab_0
---
>   - holoviews=1.16.0=pyhd8ed1ab_0
>   - hvplot=0.8.3=pyhd8ed1ab_0
209c208
<   - identify=2.5.9=pyhd8ed1ab_0
---
>   - identify=2.5.24=pyhd8ed1ab_0
211,217c210,217
<   - imagecodecs=2022.9.26=py38hf74bd01_4
<   - imageio=2.22.4=pyhfa7a67d_1
<   - importlib-metadata=5.1.0=pyha770c72_0
<   - importlib_metadata=5.1.0=hd8ed1ab_0
<   - importlib_resources=5.10.0=pyhd8ed1ab_0
<   - iniconfig=1.1.1=pyh9f0ad1d_0
<   - intake=0.6.6=pyhd8ed1ab_0
---
>   - imagecodecs=2023.1.23=py39hd061359_0
>   - imageio=2.28.1=pyh24c5eb1_0
>   - importlib-metadata=6.6.0=pyha770c72_0
>   - importlib-resources=5.12.0=pyhd8ed1ab_0
>   - importlib_metadata=6.6.0=hd8ed1ab_0
>   - importlib_resources=5.12.0=pyhd8ed1ab_0
>   - iniconfig=2.0.0=pyhd8ed1ab_0
>   - intake=0.7.0=pyhd8ed1ab_0
221,222c221,222
<   - intake-xarray=0.6.1=pyhd8ed1ab_0
<   - ipykernel=6.17.1=pyh210e3f2_0
---
>   - intake-xarray=0.7.0=pyhd8ed1ab_0
>   - ipykernel=6.23.1=pyh210e3f2_0
224c224
<   - ipython=8.6.0=pyh41d4057_1
---
>   - ipython=8.13.2=pyh41d4057_0
226c226
<   - ipywidgets=8.0.2=pyhd8ed1ab_1
---
>   - ipywidgets=8.0.6=pyhd8ed1ab_0
228,229c228,229
<   - jack=1.9.21=he978b8e_1
<   - jasper=2.0.33=ha77e612_0
---
>   - jack=1.9.22=h11f4161_0
>   - jasper=2.0.33=h0ff4b12_1
234c234
<   - jpeg=9e=h166bdaf_2
---
>   - jpeg=9e=h0b41bf4_3
239,240c239,240
<   - jupyter=1.0.0=py38h578d9bd_7
<   - jupyter-archive=3.3.3=pyhd8ed1ab_0
---
>   - jupyter=1.0.0=py39hf3d152e_8
>   - jupyter-archive=3.3.4=pyhd8ed1ab_1
242,244c242,244
<   - jupyter-resource-usage=0.6.4=pyhd8ed1ab_0
<   - jupyter-server-mathjax=0.2.6=pyhc268e32_0
<   - jupyter-server-proxy=3.2.2=pyhd8ed1ab_0
---
>   - jupyter-resource-usage=0.7.1=pyhd8ed1ab_0
>   - jupyter-server-mathjax=0.2.6=pyh5bfe37b_1
>   - jupyter-server-proxy=4.0.0=pyhd8ed1ab_0
246,249c246,252
<   - jupyter_client=7.3.4=pyhd8ed1ab_0
<   - jupyter_console=6.4.4=pyhd8ed1ab_0
<   - jupyter_core=5.1.0=py38h578d9bd_0
<   - jupyter_server=1.23.3=pyhd8ed1ab_0
---
>   - jupyter_client=7.4.1=pyhd8ed1ab_0
>   - jupyter_console=6.6.3=pyhd8ed1ab_0
>   - jupyter_core=5.3.0=py39hf3d152e_0
>   - jupyter_events=0.6.3=pyhd8ed1ab_0
>   - jupyter_server=1.23.6=pyhd8ed1ab_0
>   - jupyter_server_fileid=0.9.0=pyhd8ed1ab_0
>   - jupyter_server_ydoc=0.8.0=pyhd8ed1ab_0
251,254c254,258
<   - jupyterhub=3.0.0=pyh2a2186d_1
<   - jupyterhub-base=3.0.0=pyh2a2186d_1
<   - jupyterlab=3.5.0=pyhd8ed1ab_0
<   - jupyterlab-git=0.40.1=pyhd8ed1ab_0
---
>   - jupyter_ydoc=0.2.3=pyhd8ed1ab_0
>   - jupyterhub=4.0.0=pyh2a2186d_0
>   - jupyterhub-base=4.0.0=pyh2a2186d_0
>   - jupyterlab=3.6.3=pyhd8ed1ab_0
>   - jupyterlab-git=0.41.0=pyhd8ed1ab_1
258,260c262,264
<   - jupyterlab_server=2.16.3=pyhd8ed1ab_0
<   - jupyterlab_widgets=3.0.3=pyhd8ed1ab_0
<   - jupytext=1.14.1=pyhd0ecf6b_0
---
>   - jupyterlab_server=2.22.1=pyhd8ed1ab_0
>   - jupyterlab_widgets=3.0.7=pyhd8ed1ab_1
>   - jupytext=1.14.5=pyhcff175f_0
264c268
<   - kiwisolver=1.4.4=py38h43d8883_1
---
>   - kiwisolver=1.4.4=py39hf939315_1
267,269c271,274
<   - lazy-object-proxy=1.8.0=py38h0a891b7_0
<   - lcms2=2.14=h6ed2654_0
<   - ld_impl_linux-64=2.39=hcc3a1bd_1
---
>   - lazy-object-proxy=1.9.0=py39h72bdee0_0
>   - lazy_loader=0.2=pyhd8ed1ab_0
>   - lcms2=2.15=hfd0df8a_0
>   - ld_impl_linux-64=2.40=h41732ed_0
271,275c276,280
<   - libabseil=20230125.0=cxx17_hcb278e6_1
<   - libaec=1.0.6=h9c3ff4c_0
<   - libarchive=3.5.2=hada088e_3
<   - libarrow=11.0.0=h33598ff_9_cpu
<   - libavif=0.11.1=h5cdd6b5_0
---
>   - libabseil=20230125.2=cxx17_h59595ed_2
>   - libaec=1.0.6=hcb278e6_1
>   - libarchive=3.6.2=h3d51595_0
>   - libarrow=10.0.1=hf815326_25_cpu
>   - libavif=0.11.1=hff004cb_1
280c285
<   - libcap=2.66=ha37c62d_0
---
>   - libcap=2.67=he9d0100_0
282,285c287,290
<   - libcdms=3.1.2=h2973bc7_118
<   - libcf=1.0.3=py38h0c3d773_115
<   - libclang=15.0.6=default_h2e3cab8_0
<   - libclang13=15.0.6=default_h3a83d3e_0
---
>   - libcdms=3.1.2=hf94f14b_119
>   - libcf=1.0.3=py39h6c807ef_115
>   - libclang=15.0.7=default_h7634d5b_2
>   - libclang13=15.0.7=default_h9986a30_2
288,289c293
<   - libcurl=7.88.1=hdc1c0ab_1
<   - libdap4=3.20.6=hd7c4107_2
---
>   - libcurl=8.1.2=h409715c_0
291c295
<   - libdeflate=1.14=h166bdaf_0
---
>   - libdeflate=1.17=h0b41bf4_0
297a302
>   - libexpat=2.5.0=hcb278e6_1
302c307
<   - libgdal=3.6.0=h2f87c3e_13
---
>   - libgdal=3.6.2=h8c90c07_6
305c310
<   - libglib=2.74.1=h606061b_1
---
>   - libglib=2.76.3=hebfc3b9_0
308,310c313,315
<   - libgoogle-cloud=2.8.0=h3c06191_0
<   - libgpg-error=1.45=hc0c96e0_0
<   - libgrpc=1.51.1=hcf146ea_3
---
>   - libgoogle-cloud=2.10.1=hac9eb74_1
>   - libgpg-error=1.46=h620e276_0
>   - libgrpc=1.54.2=hb20ce57_2
315,317c320,323
<   - libllvm11=11.1.0=he0ac6c6_5
<   - libllvm15=15.0.6=h63197d8_0
<   - libmicrohttpd=0.9.75=h2603550_1
---
>   - libllvm14=14.0.6=hcd5def8_2
>   - libllvm15=15.0.7=hadd5161_1
>   - libllvm16=16.0.1=hadd5161_0
>   - libmicrohttpd=0.9.76=h87ba234_0
320a327
>   - libnuma=2.0.16=h0b41bf4_1
329c336
<   - libsndfile=1.1.0=h27087fc_0
---
>   - libsndfile=1.2.0=hb75c966_0
332,333c339,340
<   - libspatialite=5.0.1=h7c8129e_22
<   - libsqlite=3.40.0=h753d276_0
---
>   - libspatialite=5.0.1=h221c8f1_23
>   - libsqlite=3.42.0=h2797004_0
336c343
<   - libsystemd0=252=h2a991cd_0
---
>   - libsystemd0=253=h8c4010b_1
338,341c345,348
<   - libthrift=0.18.0=h5e4af38_0
<   - libtiff=4.4.0=h55922b4_4
<   - libtool=2.4.6=h9c3ff4c_1008
<   - libudev1=252=h166bdaf_0
---
>   - libthrift=0.18.1=h5e4af38_0
>   - libtiff=4.5.0=h6adf6a1_2
>   - libtool=2.4.7=h27087fc_0
>   - libudev1=253=h0b41bf4_1
344c351
<   - libuuid=2.32.1=h7f98852_1000
---
>   - libuuid=2.38.1=h0b41bf4_0
347c354
<   - libwebp-base=1.2.4=h166bdaf_0
---
>   - libwebp-base=1.3.0=h0b41bf4_0
349,350c356,357
<   - libxkbcommon=1.0.3=he3ba5ed_0
<   - libxml2=2.10.3=h7463322_0
---
>   - libxkbcommon=1.5.0=h79f4944_1
>   - libxml2=2.10.3=hca2bb57_4
355c362,363
<   - llvmlite=0.39.1=py38h38d86a4_1
---
>   - llvmlite=0.40.0=py39h174d805_0
>   - lmoments3=1.0.5=pyhd8ed1ab_0
357,360c365,368
<   - loguru=0.6.0=py38h578d9bd_2
<   - lxml=4.9.1=py38ha9ef780_1
<   - lz4=4.0.2=py38h1bf946c_0
<   - lz4-c=1.9.3=h9c3ff4c_1
---
>   - loguru=0.7.0=py39hf3d152e_0
>   - lxml=4.9.2=py39h14694de_0
>   - lz4=4.3.2=py39h724f13c_0
>   - lz4-c=1.9.4=hcb278e6_0
363,369c371,377
<   - mamba_gator=5.2.0=pyhd8ed1ab_0
<   - mapclassify=2.4.3=pyhd8ed1ab_0
<   - markdown=3.4.1=pyhd8ed1ab_0
<   - markdown-it-py=2.1.0=pyhd8ed1ab_0
<   - markupsafe=2.1.1=py38h0a891b7_2
<   - matplotlib=3.6.2=py38h578d9bd_0
<   - matplotlib-base=3.6.2=py38hb021067_0
---
>   - mamba_gator=5.2.1=pyhd8ed1ab_0
>   - mapclassify=2.5.0=pyhd8ed1ab_1
>   - markdown=3.4.3=pyhd8ed1ab_0
>   - markdown-it-py=2.2.0=pyhd8ed1ab_0
>   - markupsafe=2.1.2=py39h72bdee0_0
>   - matplotlib=3.7.1=py39hf3d152e_0
>   - matplotlib-base=3.7.1=py39he190548_0
371c379
<   - mdit-py-plugins=0.3.1=pyhd8ed1ab_0
---
>   - mdit-py-plugins=0.3.5=pyhd8ed1ab_0
374,376c382,384
<   - mesalib=21.2.5=h0e4506f_3
<   - mistune=2.0.4=pyhd8ed1ab_0
<   - mpg123=1.30.2=h27087fc_1
---
>   - mesalib=23.0.2=h3855f93_0
>   - mistune=2.0.5=pyhd8ed1ab_0
>   - mpg123=1.31.3=hcb278e6_0
378c386
<   - mpi4py=3.1.4=py38h97ac3a3_0
---
>   - mpi4py=3.1.4=py39h32b9844_0
380,381c388,389
<   - msgpack-python=1.0.4=py38h43d8883_1
<   - multidict=6.0.2=py38h0a891b7_2
---
>   - msgpack-python=1.0.5=py39h4b4f3f3_0
>   - multidict=6.0.4=py39h72bdee0_0
383,384c391,392
<   - multiprocess=0.70.14=py38h0a891b7_3
<   - munch=2.5.0=py_0
---
>   - multiprocess=0.70.14=py39hb9d737c_3
>   - munch=3.0.0=pyhd8ed1ab_0
387,395c395,403
<   - mysql-common=8.0.32=ha901b37_1
<   - mysql-libs=8.0.32=hd7da12d_1
<   - nbclassic=0.4.8=pyhd8ed1ab_0
<   - nbclient=0.7.2=pyhd8ed1ab_0
<   - nbconvert=7.2.5=pyhd8ed1ab_0
<   - nbconvert-core=7.2.5=pyhd8ed1ab_0
<   - nbconvert-pandoc=7.2.5=pyhd8ed1ab_0
<   - nbdime=3.1.1=pyhd8ed1ab_0
<   - nbformat=5.7.0=pyhd8ed1ab_0
---
>   - mysql-common=8.0.32=hf1915f5_2
>   - mysql-libs=8.0.32=hca2cd23_2
>   - nbclassic=1.0.0=pyhb4ecaf3_1
>   - nbclient=0.7.4=pyhd8ed1ab_0
>   - nbconvert=7.4.0=pyhd8ed1ab_0
>   - nbconvert-core=7.4.0=pyhd8ed1ab_0
>   - nbconvert-pandoc=7.4.0=pyhd8ed1ab_0
>   - nbdime=3.2.1=pyhd8ed1ab_0
>   - nbformat=5.8.0=pyhd8ed1ab_0
402,403c410,411
<   - netcdf-fortran=4.6.0=mpi_mpich_hd09bd1e_1
<   - netcdf4=1.6.2=nompi_py38h2250339_100
---
>   - netcdf-fortran=4.6.0=mpi_mpich_h1e13492_2
>   - netcdf4=1.6.2=nompi_py39hfaa66c4_100
405,406c413,414
<   - networkx=2.8.8=pyhd8ed1ab_0
<   - nodeenv=1.7.0=pyhd8ed1ab_0
---
>   - networkx=3.1=pyhd8ed1ab_0
>   - nodeenv=1.8.0=pyhd8ed1ab_0
408,409c416,417
<   - notebook=6.5.2=pyha770c72_1
<   - notebook-shim=0.2.2=pyhd8ed1ab_0
---
>   - notebook=6.5.4=pyha770c72_0
>   - notebook-shim=0.2.3=pyhd8ed1ab_0
411,415c419,423
<   - nss=3.82=he02c5a1_0
<   - numba=0.56.4=py38h9a4aae9_0
<   - numcodecs=0.10.2=py38hfa26641_0
<   - numpy=1.23.5=py38h7042d01_0
<   - numpy_groupies=0.9.20=pyhd8ed1ab_0
---
>   - nss=3.89=he45b914_0
>   - numba=0.57.0=py39hb75a051_0
>   - numcodecs=0.11.0=py39h227be39_1
>   - numpy=1.23.5=py39h3d75532_0
>   - numpy_groupies=0.9.22=pyhd8ed1ab_0
418,421c426,428
<   - openjpeg=2.5.0=h7d73246_1
<   - openssl=3.1.0=h0b41bf4_0
<   - orc=1.8.2=hfdbbad2_2
<   - ostrich=21.03.16=h4bd325d_1
---
>   - openjpeg=2.5.0=hfec8fc6_2
>   - openssl=3.1.1=hd590300_0
>   - orc=1.8.3=hfdbbad2_0
423c430
<   - owslib=0.27.2=pyhd8ed1ab_1
---
>   - owslib=0.28.1=pyhd8ed1ab_0
425c432
<   - packaging=21.3=pyhd8ed1ab_0
---
>   - packaging=23.1=pyhd8ed1ab_0
427,428c434,435
<   - pandas=1.3.5=py38h43a58ef_0
<   - pandoc=2.19.2=h32600fe_1
---
>   - pandas=1.3.5=py39hde0f152_0
>   - pandoc=2.19.2=h32600fe_2
430,433c437,440
<   - panel=0.14.1=pyhd8ed1ab_0
<   - param=1.12.2=pyh6c4a22f_0
<   - paramiko=2.12.0=pyhd8ed1ab_0
<   - parquet-cpp=1.5.1=2
---
>   - panel=0.14.4=pyhd8ed1ab_0
>   - parallelio=2.5.10=mpi_mpich_h862c5c2_100
>   - param=1.13.0=pyh1a96a4e_0
>   - paramiko=3.2.0=pyhd8ed1ab_0
435c442
<   - partd=1.3.0=pyhd8ed1ab_0
---
>   - partd=1.4.0=pyhd8ed1ab_0
438d444
<   - pcre=8.45=h9c3ff4c_0
442,444c448,450
<   - pillow=9.2.0=py38h9eb91d8_3
<   - pint=0.20.1=pyhd8ed1ab_0
<   - pip=22.3.1=pyhd8ed1ab_0
---
>   - pillow=9.4.0=py39h2320bf1_1
>   - pint=0.21=pyhd8ed1ab_0
>   - pip=23.1.2=pyhd8ed1ab_0
447,448c453,454
<   - platformdirs=2.5.2=pyhd8ed1ab_1
<   - plotly=5.11.0=pyhd8ed1ab_0
---
>   - platformdirs=3.5.1=pyhd8ed1ab_0
>   - plotly=5.14.1=pyhd8ed1ab_0
451,453c457,459
<   - pooch=1.6.0=pyhd8ed1ab_0
<   - poppler=22.11.0=h92391eb_0
<   - poppler-data=0.4.11=hd8ed1ab_0
---
>   - pooch=1.7.0=pyha770c72_3
>   - poppler=23.01.0=h091648b_0
>   - poppler-data=0.4.12=hd8ed1ab_0
457,461c463,467
<   - pre-commit=2.20.0=py38h578d9bd_1
<   - proj=9.1.0=h93bde94_0
<   - prometheus_client=0.15.0=pyhd8ed1ab_0
<   - prompt-toolkit=3.0.33=pyha770c72_0
<   - prompt_toolkit=3.0.33=hd8ed1ab_0
---
>   - pre-commit=3.3.2=pyha770c72_0
>   - proj=9.1.1=h8ffa02c_2
>   - prometheus_client=0.17.0=pyhd8ed1ab_0
>   - prompt-toolkit=3.0.38=pyha770c72_0
>   - prompt_toolkit=3.0.38=hd8ed1ab_0
463c469
<   - protobuf=4.21.12=py38h8dc9893_0
---
>   - protobuf=4.21.12=py39h227be39_0
465c471
<   - psutil=5.9.4=py38h0a891b7_0
---
>   - psutil=5.9.5=py39h72bdee0_0
468c474,476
<   - pulseaudio=16.1=h126f2b6_0
---
>   - pulseaudio=16.1=hcb278e6_3
>   - pulseaudio-client=16.1=h5195f5e_3
>   - pulseaudio-daemon=16.1=ha8d29e2_3
470c478
<   - pyarrow=11.0.0=py38hf05218d_9_cpu
---
>   - pyarrow=10.0.1=py39he4327e9_25_cpu
476,478c484,486
<   - pycurl=7.45.1=py38he9e1d38_3
<   - pydantic=1.10.2=py38h0a891b7_1
<   - pydap=3.3.0=pyhd8ed1ab_0
---
>   - pycurl=7.45.1=py39h9297c8b_3
>   - pydantic=1.10.8=py39hd1e30aa_0
>   - pydap=3.4.0=pyhd8ed1ab_0
480,482c488,491
<   - pygeos=0.13=py38hafd38ec_2
<   - pygments=2.13.0=pyhd8ed1ab_0
<   - pyjwt=2.6.0=pyhd8ed1ab_0
---
>   - pygeos=0.14=py39hc9151fd_0
>   - pygments=2.15.1=pyhd8ed1ab_0
>   - pyjwt=2.7.0=pyhd8ed1ab_0
>   - pymbolic=2022.2=pyhd8ed1ab_0
485c494,495
<   - pynacl=1.5.0=py38h0a891b7_2
---
>   - pynacl=1.5.0=py39hb9d737c_2
>   - pyogrio=0.5.1=py39hbc5ff6d_0
488,491c498,501
<   - pyproj=3.4.0=py38hce0a2d1_2
<   - pyqt=5.15.7=py38h7492b6b_2
<   - pyqt5-sip=12.11.0=py38hfa26641_2
<   - pyrsistent=0.19.2=py38h0a891b7_0
---
>   - pyproj=3.5.0=py39hf8a5840_0
>   - pyqt=5.15.7=py39h5c7b992_3
>   - pyqt5-sip=12.11.0=py39h227be39_3
>   - pyrsistent=0.19.3=py39h72bdee0_0
494,497c504,506
<   - pyston_lite=2.3.4=py38h0a891b7_1
<   - pyston_lite_autoload=2.3.4=pyh44b312d_1
<   - pytest=7.2.0=pyhd8ed1ab_2
<   - python=3.8.16=he550d4f_1_cpython
---
>   - pytest=7.3.1=pyhd8ed1ab_0
>   - pytest-xdist=3.3.1=pyhd8ed1ab_0
>   - python=3.9.16=h2782a2a_0_cpython
499,501c508,510
<   - python-eccodes=1.4.2=py38h26c90d9_1
<   - python-fastjsonschema=2.16.2=pyhd8ed1ab_0
<   - python-json-logger=2.0.1=pyh9f0ad1d_0
---
>   - python-eccodes=1.5.1=py39h389d5f1_0
>   - python-fastjsonschema=2.17.1=pyhd8ed1ab_0
>   - python-json-logger=2.0.7=pyhd8ed1ab_0
503,506c512,515
<   - python-tzdata=2022.7=pyhd8ed1ab_0
<   - python_abi=3.8=3_cp38
<   - pytz=2022.6=pyhd8ed1ab_0
<   - pytz-deprecation-shim=0.1.0.post0=py38h578d9bd_3
---
>   - python-tzdata=2023.3=pyhd8ed1ab_0
>   - python_abi=3.9=3_cp39
>   - pytools=2022.1.14=pyhd8ed1ab_0
>   - pytz=2023.3=pyhd8ed1ab_0
508,521c517,530
<   - pyviz_comms=2.2.1=pyhd8ed1ab_1
<   - pywavelets=1.3.0=py38h26c90d9_2
<   - pyyaml=6.0=py38h0a891b7_5
<   - pyzmq=24.0.1=py38hfc09fa9_1
<   - qhull=2020.2=h4bd325d_2
<   - qt-main=5.15.6=hf6cd601_5
<   - qtconsole=5.4.0=pyhd8ed1ab_0
<   - qtconsole-base=5.4.0=pyha770c72_0
<   - qtpy=2.3.0=pyhd8ed1ab_0
<   - rasterio=1.3.4=py38h485b76c_0
<   - raven-hydro=3.0.4.322=ha46ed4c_2
<   - ravenpy=0.9.0=pyha21a80b_0
<   - re2=2023.02.02=hcb278e6_0
<   - readline=8.1.2=h0f457ee_0
---
>   - pyviz_comms=2.3.0=pyhd8ed1ab_0
>   - pywavelets=1.4.1=py39h389d5f1_0
>   - pyyaml=6.0=py39hb9d737c_5
>   - pyzmq=25.0.2=py39h0be026e_0
>   - qt-main=5.15.8=h5d23da1_6
>   - qtconsole=5.4.3=pyhd8ed1ab_0
>   - qtconsole-base=5.4.3=pyha770c72_0
>   - qtpy=2.3.1=pyhd8ed1ab_0
>   - rasterio=1.3.6=py39h09b1985_0
>   - raven-hydro=0.2.1=py39h8e2dbb5_1
>   - ravenpy=0.12.0=py39hf3d152e_2
>   - rdma-core=28.9=h59595ed_1
>   - re2=2023.03.02=h8c504da_0
>   - readline=8.2=h8228510_1
523c532
<   - requests=2.28.1=pyhd8ed1ab_1
---
>   - requests=2.31.0=pyhd8ed1ab_0
528,530c537,540
<   - rich=12.6.0=pyhd8ed1ab_0
<   - rioxarray=0.13.1=pyhd8ed1ab_0
<   - roocs-utils=0.6.3=pyh1a96a4e_0
---
>   - rfc3339-validator=0.1.4=pyhd8ed1ab_0
>   - rfc3986-validator=0.1.1=pyh9f0ad1d_0
>   - rioxarray=0.14.1=pyhd8ed1ab_0
>   - roocs-utils=0.6.4=pyh1a96a4e_0
532,548c542,560
<   - rtree=1.0.1=py38h02d302b_1
<   - ruamel.yaml=0.17.21=py38h0a891b7_2
<   - ruamel.yaml.clib=0.2.7=py38h0a891b7_0
<   - s2n=1.3.41=h3358134_0
<   - s3fs=2022.11.0=pyhd8ed1ab_0
<   - s3transfer=0.6.0=pyhd8ed1ab_0
<   - scikit-image=0.19.3=py38h8f669ce_2
<   - scikit-learn=1.1.3=py38h4c4ba11_1
<   - scipy=1.8.1=py38h8ce737c_3
<   - scp=0.14.4=pyhd8ed1ab_0
<   - selenium=4.6.0=pyhd8ed1ab_0
<   - semver=2.13.0=pyh9f0ad1d_0
<   - send2trash=1.8.0=pyhd8ed1ab_0
<   - setuptools=59.8.0=py38h578d9bd_1
<   - shapely=1.8.5=py38hafd38ec_2
<   - simpervisor=0.4=pyhd8ed1ab_0
<   - sip=6.7.5=py38hfa26641_0
---
>   - rtree=1.0.1=py39hb102c33_1
>   - ruamel.yaml=0.17.30=py39hd1e30aa_0
>   - ruamel.yaml.clib=0.2.7=py39h72bdee0_1
>   - s2n=1.3.44=h06160fa_0
>   - s3fs=2023.5.0=pyhd8ed1ab_0
>   - s3transfer=0.6.1=pyhd8ed1ab_0
>   - scikit-image=0.20.0=py39h7c7b5a8_1
>   - scikit-learn=1.2.2=py39hc236052_2
>   - scipy=1.9.1=py39h8ba3f38_0
>   - scp=0.14.5=pyhd8ed1ab_0
>   - seaborn=0.12.2=hd8ed1ab_0
>   - seaborn-base=0.12.2=pyhd8ed1ab_0
>   - selenium=4.9.1=pyhd8ed1ab_0
>   - semver=3.0.0=pyhd8ed1ab_0
>   - send2trash=1.8.2=pyh41d4057_0
>   - setuptools=59.8.0=py39hf3d152e_1
>   - shapely=2.0.1=py39hc9151fd_0
>   - simpervisor=1.0.0=pyhd8ed1ab_0
>   - sip=6.7.9=py39h3d6467e_0
552c564
<   - snappy=1.1.9=hbd366e4_2
---
>   - snappy=1.1.10=h9fff704_0
557,560c569,572
<   - sparse=0.13.0=pyhd8ed1ab_0
<   - spotpy=1.6.1=pyhd8ed1ab_0
<   - sqlalchemy=1.4.44=py38h0a891b7_0
<   - sqlite=3.40.0=h4ff8645_0
---
>   - sparse=0.14.0=pyhd8ed1ab_0
>   - spotpy=1.6.2=pyhd8ed1ab_0
>   - sqlalchemy=2.0.15=py39hd1e30aa_0
>   - sqlite=3.42.0=h2c6b66d_0
562c574
<   - statsmodels=0.13.5=py38h26c90d9_2
---
>   - statsmodels=0.14.0=py39h0f8d45d_1
565,566c577,578
<   - tenacity=8.1.0=pyhd8ed1ab_0
<   - terminado=0.17.0=pyh41d4057_0
---
>   - tenacity=8.2.2=pyhd8ed1ab_0
>   - terminado=0.17.1=pyh41d4057_0
569c581
<   - tifffile=2022.10.10=pyhd8ed1ab_0
---
>   - tifffile=2023.4.12=pyhd8ed1ab_0
576,578c588,590
<   - tornado=6.1=py38h0a891b7_3
<   - tqdm=4.64.1=pyhd8ed1ab_0
<   - traitlets=5.6.0=pyhd8ed1ab_0
---
>   - tornado=6.3.2=py39hd1e30aa_0
>   - tqdm=4.65.0=pyhd8ed1ab_1
>   - traitlets=5.9.0=pyhd8ed1ab_0
580,589c592,602
<   - trio=0.21.0=py38h578d9bd_0
<   - trio-websocket=0.9.2=pyhd8ed1ab_0
<   - typing-extensions=4.4.0=hd8ed1ab_0
<   - typing_extensions=4.4.0=pyha770c72_0
<   - tzcode=2022g=h166bdaf_0
<   - tzdata=2022g=h191b570_0
<   - tzlocal=4.2=py38h578d9bd_2
<   - ujson=5.7.0=py38h8dc9893_0
<   - ukkonen=1.0.1=py38h43d8883_3
<   - unicodedata2=15.0.0=py38h0a891b7_0
---
>   - trio=0.22.0=py39hf3d152e_1
>   - trio-websocket=0.10.2=pyhd8ed1ab_0
>   - typing-extensions=4.6.2=hd8ed1ab_0
>   - typing_extensions=4.6.2=pyha770c72_0
>   - tzcode=2023c=h0b41bf4_0
>   - tzdata=2023c=h71feb2d_0
>   - tzlocal=5.0.1=py39hf3d152e_0
>   - ucx=1.14.1=hf587318_1
>   - ujson=5.7.0=py39h227be39_0
>   - ukkonen=1.0.1=py39hf939315_3
>   - unicodedata2=15.0.0=py39hb9d737c_0
591c604
<   - urllib3=1.26.13=pyhd8ed1ab_0
---
>   - urllib3=1.26.15=pyhd8ed1ab_0
593,594c606,607
<   - validators=0.18.2=pyhd3deb0d_0
<   - virtualenv=20.17.0=py38h578d9bd_0
---
>   - validators=0.20.0=pyhd8ed1ab_0
>   - virtualenv=20.23.0=pyhd8ed1ab_0
596,597c609,610
<   - watchdog=2.1.9=py38h578d9bd_1
<   - wcwidth=0.2.5=pyh9f0ad1d_2
---
>   - watchdog=3.0.0=py39hf3d152e_0
>   - wcwidth=0.2.6=pyhd8ed1ab_0
600,602c613,615
<   - websocket-client=1.4.2=pyhd8ed1ab_0
<   - websockets=10.4=py38h0a891b7_1
<   - werkzeug=2.2.2=pyhd8ed1ab_0
---
>   - websocket-client=1.5.2=pyhd8ed1ab_0
>   - websockets=11.0.3=py39hd1e30aa_0
>   - werkzeug=2.3.4=pyhd8ed1ab_0
604,606c617,619
<   - wheel=0.38.4=pyhd8ed1ab_0
<   - widgetsnbextension=4.0.3=pyhd8ed1ab_0
<   - wrapt=1.14.1=py38h0a891b7_1
---
>   - wheel=0.40.0=pyhd8ed1ab_0
>   - widgetsnbextension=4.0.7=pyhd8ed1ab_0
>   - wrapt=1.15.0=py39h72bdee0_0
608c621
<   - xarray=2022.10.0=pyhd8ed1ab_0
---
>   - xarray=2023.1.0=pyhd8ed1ab_0
614c627
<   - xclim=0.39.0=pyhd8ed1ab_0
---
>   - xclim=0.43.0=py39hf3d152e_1
616c629
<   - xesmf=0.6.3=pyhd8ed1ab_1
---
>   - xesmf=0.7.1=pyhd8ed1ab_0
618c631
<   - xeus-python=0.15.8=py38hfbd4bf9_1
---
>   - xeus-python=0.15.9=py39h7633fee_0
621c634
<   - xeus-zmq=1.0.2=h0541b36_2
---
>   - xeus-zmq=1.0.3=h0541b36_0
622a636
>   - xkeyboard-config=2.38=h0b41bf4_0
624c638
<   - xlsxwriter=3.0.3=pyhd8ed1ab_0
---
>   - xlsxwriter=3.1.2=pyhd8ed1ab_0
630,633c644,647
<   - xorg-libice=1.0.10=h7f98852_0
<   - xorg-libsm=1.2.3=hd9c2040_1000
<   - xorg-libx11=1.7.2=h7f98852_0
<   - xorg-libxau=1.0.9=h7f98852_0
---
>   - xorg-libice=1.1.1=hd590300_0
>   - xorg-libsm=1.2.4=h7391055_0
>   - xorg-libx11=1.8.4=h0b41bf4_0
>   - xorg-libxau=1.0.11=hd590300_0
636c650
<   - xorg-libxext=1.3.4=h7f98852_1
---
>   - xorg-libxext=1.3.4=h0b41bf4_2
644c658
<   - xorg-xextproto=7.3.0=h7f98852_1002
---
>   - xorg-xextproto=7.3.0=h0b41bf4_1003
647c661
<   - xrft=1.0.0=pyhd8ed1ab_0
---
>   - xrft=1.0.1=pyhd8ed1ab_0
649c663
<   - xyzservices=2022.9.0=pyhd8ed1ab_0
---
>   - xyzservices=2023.5.0=pyhd8ed1ab_1
650a665
>   - y-py=0.5.9=py39h50f1755_0
652,653c667,669
<   - yarl=1.8.1=py38h0a891b7_0
<   - zarr=2.13.3=pyhd8ed1ab_0
---
>   - yarl=1.9.2=py39hd1e30aa_0
>   - ypy-websocket=0.8.2=pyhd8ed1ab_0
>   - zarr=2.14.2=pyhd8ed1ab_0
656,657c672,673
<   - zict=2.2.0=pyhd8ed1ab_0
<   - zipp=3.11.0=pyhd8ed1ab_0
---
>   - zict=3.0.0=pyhd8ed1ab_0
>   - zipp=3.15.0=pyhd8ed1ab_0
659,660c675,676
<   - zlib-ng=2.0.6=h166bdaf_0
<   - zstd=1.5.2=h6239696_4
---
>   - zlib-ng=2.0.7=h0b41bf4_0
>   - zstd=1.5.2=h3eb15da_6
662,673c678,701
<     - astunparse==1.6.3
<     - colour==0.1.5
<     - geojson==2.5.0
<     - ipython-blocking==0.3.1
<     - jupyterlab-logout==0.5.0
<     - jupyterlab-tabular-data-editor==1.0.0
<     - jupyternotify==0.1.15
<     - pixiedust==1.1.19
<     - pytest-tornasync==0.6.0.post2
<     - xmltodict==0.13.0
<     - xncml==0.2
<     - xsdata==22.12
---
>       - arrow==1.2.3
>       - astunparse==1.6.3
>       - colour==0.1.5
>       - dnspython==2.3.0
>       - email-validator==2.0.0.post2
>       - fqdn==1.5.1
>       - geojson==3.0.1
>       - hsclient==0.3.3
>       - hsmodels==0.5.5
>       - ipython-blocking==0.3.1
>       - isodate==0.6.1
>       - isoduration==20.11.0
>       - jsonpointer==2.3
>       - jupyterlab-logout==0.5.0
>       - jupyterlab-tabular-data-editor==1.0.0
>       - jupyternotify==0.1.15
>       - pixiedust==1.1.19
>       - pytest-tornasync==0.6.0.post2
>       - rdflib==5.0.0
>       - uri-template==1.2.0
>       - webcolors==1.13
>       - xmltodict==0.13.0
>       - xncml==0.2
>       - xsdata==23.5
```


Full new conda env export:

[230530-1-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621130/230530-1-conda-env-export.yml.txt)
```
name: birdy
channels:
  - cdat
  - conda-forge
  - defaults
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - affine=2.4.0=pyhd8ed1ab_0
  - aiobotocore=2.5.0=pyhd8ed1ab_0
  - aiofiles=22.1.0=pyhd8ed1ab_0
  - aiohttp=3.8.4=py39h72bdee0_0
  - aioitertools=0.11.0=pyhd8ed1ab_0
  - aiosignal=1.3.1=pyhd8ed1ab_0
  - aiosqlite=0.19.0=pyhd8ed1ab_0
  - alembic=1.11.1=pyhd8ed1ab_0
  - alsa-lib=1.2.8=h166bdaf_0
  - altair=5.0.1=pyhd8ed1ab_0
  - ansi2html=1.8.0=py39hf3d152e_1
  - anyio=3.6.1=pyhd8ed1ab_1
  - aom=3.5.0=h27087fc_0
  - appdirs=1.4.4=pyh9f0ad1d_0
  - argon2-cffi=21.3.0=pyhd8ed1ab_0
  - argon2-cffi-bindings=21.2.0=py39hb9d737c_3
  - asciitree=0.3.3=py_2
  - astor=0.8.1=pyh9f0ad1d_0
  - asttokens=2.2.1=pyhd8ed1ab_0
  - async-timeout=4.0.2=pyhd8ed1ab_0
  - async_generator=1.10=py_0
  - attr=2.5.1=h166bdaf_1
  - attrs=23.1.0=pyh71513ae_1
  - aws-c-auth=0.6.27=he072965_1
  - aws-c-cal=0.5.26=hf677bf3_1
  - aws-c-common=0.8.19=hd590300_0
  - aws-c-compression=0.2.16=hbad4bc6_7
  - aws-c-event-stream=0.2.20=hb4b372c_7
  - aws-c-http=0.7.7=h2632f9a_4
  - aws-c-io=0.13.21=h9fef7b8_5
  - aws-c-mqtt=0.8.11=h2282364_1
  - aws-c-s3=0.3.0=hcb5a9b2_2
  - aws-c-sdkutils=0.1.9=hbad4bc6_2
  - aws-checksums=0.1.14=hbad4bc6_7
  - aws-crt-cpp=0.20.2=he0fdcb3_0
  - aws-sdk-cpp=1.10.57=h059227d_13
  - babel=2.12.1=pyhd8ed1ab_1
  - backcall=0.2.0=pyh9f0ad1d_0
  - backports=1.0=pyhd8ed1ab_3
  - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
  - base58=2.1.1=pyhd8ed1ab_0
  - bcrypt=3.2.2=py39hb9d737c_1
  - beautifulsoup4=4.12.2=pyha770c72_0
  - bias_correction=0.4=pyhd8ed1ab_0
  - birdy=0.8.4=pyh1a96a4e_0
  - bleach=6.0.0=pyhd8ed1ab_0
  - blinker=1.6.2=pyhd8ed1ab_0
  - blosc=1.21.4=h0f2a231_0
  - bokeh=2.4.3=pyhd8ed1ab_3
  - boltons=23.0.0=pyhd8ed1ab_0
  - boost-cpp=1.78.0=h5adbc97_2
  - boto3=1.26.76=pyhd8ed1ab_0
  - botocore=1.29.76=pyhd8ed1ab_0
  - bottleneck=1.3.7=py39h389d5f1_0
  - branca=0.6.0=pyhd8ed1ab_0
  - brotli=1.0.9=h166bdaf_8
  - brotli-bin=1.0.9=h166bdaf_8
  - brotlipy=0.7.0=py39hb9d737c_1005
  - brunsli=0.1=h9c3ff4c_0
  - bzip2=1.0.8=h7f98852_4
  - c-ares=1.19.1=hd590300_0
  - c-blosc2=2.9.2=hb4ffafa_0
  - ca-certificates=2023.5.7=hbcca054_0
  - cached-property=1.5.2=hd8ed1ab_1
  - cached_property=1.5.2=pyha770c72_1
  - cachetools=5.3.0=pyhd8ed1ab_0
  - cairo=1.16.0=ha61ee94_1014
  - cartopy=0.21.1=py39h6e7ad6e_0
  - cattrs=22.2.0=pyhd8ed1ab_0
  - cdat_info=8.2.1=pyhd8ed1ab_2
  - cdms2=3.1.5=py39h36de48d_15
  - cdtime=3.1.4=py39he83c29a_7
  - certifi=2023.5.7=pyhd8ed1ab_0
  - certipy=0.1.3=py_0
  - cf_xarray=0.8.0=pyhd8ed1ab_0
  - cffi=1.15.1=py39he91dace_3
  - cfgrib=0.9.10.4=pyhd8ed1ab_0
  - cfgv=3.3.1=pyhd8ed1ab_0
  - cfitsio=4.2.0=hd9d235c_0
  - cftime=1.6.2=py39h2ae25f5_1
  - charls=2.4.2=h59595ed_0
  - charset-normalizer=2.1.1=pyhd8ed1ab_0
  - click=8.1.3=unix_pyhd8ed1ab_2
  - click-plugins=1.1.1=py_0
  - cligj=0.7.2=pyhd8ed1ab_1
  - climpred=2.3.0=pyhd8ed1ab_0
  - clisops=0.9.6=pyh1a96a4e_0
  - cloudpickle=2.2.1=pyhd8ed1ab_0
  - colorama=0.4.6=pyhd8ed1ab_0
  - colorcet=3.0.1=pyhd8ed1ab_0
  - comm=0.1.3=pyhd8ed1ab_0
  - configurable-http-proxy=4.5.4=he2f69ee_2
  - contourpy=1.0.7=py39h4b4f3f3_0
  - coverage=7.2.7=py39hd1e30aa_0
  - cryptography=40.0.2=py39h079d5ae_0
  - curl=8.1.2=h409715c_0
  - cycler=0.11.0=pyhd8ed1ab_0
  - cytoolz=0.12.0=py39hb9d737c_1
  - dash=2.9.3=pyhd8ed1ab_2
  - dask=2023.5.1=pyhd8ed1ab_0
  - dask-core=2023.5.1=pyhd8ed1ab_0
  - dask-labextension=6.1.0=pyhd8ed1ab_0
  - dataclasses=0.8=pyhc8e2a94_3
  - datashader=0.14.4=pyh1a96a4e_0
  - datashape=0.5.4=py_1
  - dav1d=1.2.0=hd590300_0
  - dbus=1.13.6=h5008d03_3
  - debugpy=1.6.7=py39h227be39_0
  - decorator=5.1.1=pyhd8ed1ab_0
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - descartes=1.1.0=py_4
  - dill=0.3.6=pyhd8ed1ab_1
  - distarray=2.12.2=pyh050c7b8_4
  - distlib=0.3.6=pyhd8ed1ab_0
  - distributed=2023.5.1=pyhd8ed1ab_0
  - docopt=0.6.2=py_1
  - docrep=0.3.2=pyh44b312d_0
  - eccodes=2.28.0=h7513371_1
  - elfutils=0.189=hde5d1a3_0
  - entrypoints=0.4=pyhd8ed1ab_0
  - eofs=1.4.0=py_0
  - esgf-compute-api=2.3.9=0_h1234567_
  - esgf-pyclient=0.3.1=pyh1a96a4e_2
  - esmf=8.4.0=mpi_mpich_hc592774_104
  - esmpy=8.4.0=mpi_mpich_py39h3088dd8_102
  - exceptiongroup=1.1.1=pyhd8ed1ab_0
  - execnet=1.9.0=pyhd8ed1ab_0
  - executing=1.2.0=pyhd8ed1ab_0
  - expat=2.5.0=hcb278e6_1
  - fasteners=0.17.3=pyhd8ed1ab_0
  - fastprogress=1.0.3=pyhd8ed1ab_0
  - fftw=3.3.10=nompi_hc118613_107
  - filelock=3.12.0=pyhd8ed1ab_0
  - findlibs=0.0.5=pyhd8ed1ab_0
  - fiona=1.9.1=py39hbc5ff6d_0
  - flask=2.3.2=pyhd8ed1ab_0
  - flit-core=3.9.0=pyhd8ed1ab_0
  - flox=0.7.2=pyhd8ed1ab_0
  - folium=0.14.0=pyhd8ed1ab_0
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=hab24e00_0
  - fontconfig=2.14.2=h14ed4e7_0
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - fonttools=4.39.4=py39hd1e30aa_0
  - freeglut=3.2.2=h9c3ff4c_1
  - freetype=2.12.1=hca18f0e_1
  - freexl=1.0.6=h166bdaf_1
  - frozenlist=1.3.3=py39hb9d737c_0
  - fsspec=2023.5.0=pyh1a96a4e_0
  - funcsigs=1.0.2=py_3
  - future=0.18.3=pyhd8ed1ab_0
  - g2clib=1.6.3=hbecde78_1
  - gcsfs=2023.5.0=pyhd8ed1ab_0
  - gdal=3.6.2=py39hc6cd174_6
  - geckodriver=0.33.0=hd2f7af9_0
  - geographiclib=1.52=pyhd8ed1ab_0
  - geopandas=0.13.0=pyhd8ed1ab_0
  - geopandas-base=0.13.0=pyha770c72_0
  - geopy=2.3.0=pyhd8ed1ab_0
  - geos=3.11.1=h27087fc_0
  - geotiff=1.7.1=h7a142b4_6
  - geoviews=1.9.6=pyhd8ed1ab_0
  - geoviews-core=1.9.6=pyha770c72_0
  - gettext=0.21.1=h27087fc_0
  - gflags=2.2.2=he1b5a44_1004
  - giflib=5.2.1=h0b41bf4_3
  - gitdb=4.0.10=pyhd8ed1ab_0
  - gitpython=3.1.31=pyhd8ed1ab_0
  - glib=2.76.3=hfc55251_0
  - glib-tools=2.76.3=hfc55251_0
  - glog=0.6.0=h6f12383_0
  - gnutls=3.7.8=hf3e180e_0
  - google-api-core=2.11.0=pyhd8ed1ab_0
  - google-auth=2.19.0=pyh1a96a4e_0
  - google-auth-oauthlib=1.0.0=pyhd8ed1ab_0
  - google-cloud-core=2.3.2=pyhd8ed1ab_0
  - google-cloud-storage=2.9.0=pyh1a96a4e_0
  - google-crc32c=1.1.2=py39h8db88ab_4
  - google-resumable-media=2.5.0=pyhd8ed1ab_0
  - googleapis-common-protos=1.57.1=pyhd8ed1ab_0
  - graphite2=1.3.13=h58526e2_1001
  - greenlet=2.0.2=py39h3d6467e_1
  - grpcio=1.54.2=py39h227be39_2
  - gst-plugins-base=1.22.0=h4243ec0_2
  - gstreamer=1.22.0=h25f0c4b_2
  - gstreamer-orc=0.4.34=hd590300_0
  - h11=0.14.0=pyhd8ed1ab_0
  - h5netcdf=1.1.0=pyhd8ed1ab_1
  - h5py=3.8.0=mpi_mpich_py39hadaddcd_0
  - harfbuzz=6.0.0=h8e241bc_0
  - haversine=2.8.0=pyhd8ed1ab_0
  - hdf4=4.2.15=h9772cbc_5
  - hdf5=1.12.2=mpi_mpich_h5d83325_1
  - holoviews=1.16.0=pyhd8ed1ab_0
  - hvplot=0.8.3=pyhd8ed1ab_0
  - icu=70.1=h27087fc_0
  - identify=2.5.24=pyhd8ed1ab_0
  - idna=3.4=pyhd8ed1ab_0
  - imagecodecs=2023.1.23=py39hd061359_0
  - imageio=2.28.1=pyh24c5eb1_0
  - importlib-metadata=6.6.0=pyha770c72_0
  - importlib-resources=5.12.0=pyhd8ed1ab_0
  - importlib_metadata=6.6.0=hd8ed1ab_0
  - importlib_resources=5.12.0=pyhd8ed1ab_0
  - iniconfig=2.0.0=pyhd8ed1ab_0
  - intake=0.7.0=pyhd8ed1ab_0
  - intake-esm=2021.8.17=pyhd8ed1ab_0
  - intake-geopandas=0.4.0=pyhd8ed1ab_0
  - intake-thredds=2022.8.19=pyhd8ed1ab_0
  - intake-xarray=0.7.0=pyhd8ed1ab_0
  - ipykernel=6.23.1=pyh210e3f2_0
  - ipyleaflet=0.17.2=pyhd8ed1ab_0
  - ipython=8.13.2=pyh41d4057_0
  - ipython_genutils=0.2.0=py_1
  - ipywidgets=8.0.6=pyhd8ed1ab_0
  - itsdangerous=2.1.2=pyhd8ed1ab_0
  - jack=1.9.22=h11f4161_0
  - jasper=2.0.33=h0ff4b12_1
  - jedi=0.18.2=pyhd8ed1ab_0
  - jinja2=3.1.2=pyhd8ed1ab_1
  - jmespath=1.0.1=pyhd8ed1ab_0
  - joblib=1.2.0=pyhd8ed1ab_0
  - jpeg=9e=h0b41bf4_3
  - json-c=0.16=hc379101_0
  - json5=0.9.5=pyh9f0ad1d_0
  - jsonpickle=2.2.0=pyhd8ed1ab_0
  - jsonschema=4.17.3=pyhd8ed1ab_0
  - jupyter=1.0.0=py39hf3d152e_8
  - jupyter-archive=3.3.4=pyhd8ed1ab_1
  - jupyter-dash=0.4.2=pyhd8ed1ab_1
  - jupyter-resource-usage=0.7.1=pyhd8ed1ab_0
  - jupyter-server-mathjax=0.2.6=pyh5bfe37b_1
  - jupyter-server-proxy=4.0.0=pyhd8ed1ab_0
  - jupyter_bokeh=3.0.5=pyhd8ed1ab_0
  - jupyter_client=7.4.1=pyhd8ed1ab_0
  - jupyter_console=6.6.3=pyhd8ed1ab_0
  - jupyter_core=5.3.0=py39hf3d152e_0
  - jupyter_events=0.6.3=pyhd8ed1ab_0
  - jupyter_server=1.23.6=pyhd8ed1ab_0
  - jupyter_server_fileid=0.9.0=pyhd8ed1ab_0
  - jupyter_server_ydoc=0.8.0=pyhd8ed1ab_0
  - jupyter_telemetry=0.1.0=pyhd8ed1ab_1
  - jupyter_ydoc=0.2.3=pyhd8ed1ab_0
  - jupyterhub=4.0.0=pyh2a2186d_0
  - jupyterhub-base=4.0.0=pyh2a2186d_0
  - jupyterlab=3.6.3=pyhd8ed1ab_0
  - jupyterlab-git=0.41.0=pyhd8ed1ab_1
  - jupyterlab-system-monitor=0.8.0=pyhd8ed1ab_2
  - jupyterlab-topbar=0.6.1=pyhd8ed1ab_2
  - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0
  - jupyterlab_server=2.22.1=pyhd8ed1ab_0
  - jupyterlab_widgets=3.0.7=pyhd8ed1ab_1
  - jupytext=1.14.5=pyhcff175f_0
  - jxrlib=1.1=h7f98852_2
  - kealib=1.5.0=ha7026e8_0
  - keyutils=1.6.1=h166bdaf_0
  - kiwisolver=1.4.4=py39hf939315_1
  - krb5=1.20.1=h81ceb04_0
  - lame=3.100=h166bdaf_1003
  - lazy-object-proxy=1.9.0=py39h72bdee0_0
  - lazy_loader=0.2=pyhd8ed1ab_0
  - lcms2=2.15=hfd0df8a_0
  - ld_impl_linux-64=2.40=h41732ed_0
  - lerc=4.0.0=h27087fc_0
  - libabseil=20230125.2=cxx17_h59595ed_2
  - libaec=1.0.6=hcb278e6_1
  - libarchive=3.6.2=h3d51595_0
  - libarrow=10.0.1=hf815326_25_cpu
  - libavif=0.11.1=hff004cb_1
  - libblas=3.9.0=16_linux64_openblas
  - libbrotlicommon=1.0.9=h166bdaf_8
  - libbrotlidec=1.0.9=h166bdaf_8
  - libbrotlienc=1.0.9=h166bdaf_8
  - libcap=2.67=he9d0100_0
  - libcblas=3.9.0=16_linux64_openblas
  - libcdms=3.1.2=hf94f14b_119
  - libcf=1.0.3=py39h6c807ef_115
  - libclang=15.0.7=default_h7634d5b_2
  - libclang13=15.0.7=default_h9986a30_2
  - libcrc32c=1.1.2=h9c3ff4c_0
  - libcups=2.3.3=h36d4200_3
  - libcurl=8.1.2=h409715c_0
  - libdb=6.2.32=h9c3ff4c_0
  - libdeflate=1.17=h0b41bf4_0
  - libdrm=2.4.114=h166bdaf_0
  - libdrs=3.1.2=hf593df3_118
  - libdrs_f=3.1.2=h7e76ec7_114
  - libedit=3.1.20191231=he28a2e2_2
  - libev=4.33=h516909a_1
  - libevent=2.1.10=h28343ad_4
  - libexpat=2.5.0=hcb278e6_1
  - libffi=3.4.2=h7f98852_5
  - libflac=1.4.2=h27087fc_0
  - libgcc-ng=12.2.0=h65d4601_19
  - libgcrypt=1.10.1=h166bdaf_0
  - libgdal=3.6.2=h8c90c07_6
  - libgfortran-ng=12.2.0=h69a702a_19
  - libgfortran5=12.2.0=h337968e_19
  - libglib=2.76.3=hebfc3b9_0
  - libglu=9.0.0=he1b5a44_1001
  - libgomp=12.2.0=h65d4601_19
  - libgoogle-cloud=2.10.1=hac9eb74_1
  - libgpg-error=1.46=h620e276_0
  - libgrpc=1.54.2=hb20ce57_2
  - libiconv=1.17=h166bdaf_0
  - libidn2=2.3.4=h166bdaf_0
  - libkml=1.3.0=h37653c0_1015
  - liblapack=3.9.0=16_linux64_openblas
  - libllvm14=14.0.6=hcd5def8_2
  - libllvm15=15.0.7=hadd5161_1
  - libllvm16=16.0.1=hadd5161_0
  - libmicrohttpd=0.9.76=h87ba234_0
  - libnetcdf=4.8.1=mpi_mpich_hcd871d9_6
  - libnghttp2=1.52.0=h61bc06f_0
  - libnsl=2.0.0=h7f98852_0
  - libnuma=2.0.16=h0b41bf4_1
  - libogg=1.3.4=h7f98852_1
  - libopenblas=0.3.21=pthreads_h78a6416_3
  - libopus=1.3.1=h7f98852_1
  - libpciaccess=0.17=h166bdaf_0
  - libpng=1.6.39=h753d276_0
  - libpq=15.2=hb675445_0
  - libprotobuf=3.21.12=h3eb15da_0
  - librttopo=1.1.0=ha49c73b_12
  - libsndfile=1.2.0=hb75c966_0
  - libsodium=1.0.18=h36c2ea0_1
  - libspatialindex=1.9.3=h9c3ff4c_4
  - libspatialite=5.0.1=h221c8f1_23
  - libsqlite=3.42.0=h2797004_0
  - libssh2=1.10.0=hf14f497_3
  - libstdcxx-ng=12.2.0=h46fd767_19
  - libsystemd0=253=h8c4010b_1
  - libtasn1=4.19.0=h166bdaf_0
  - libthrift=0.18.1=h5e4af38_0
  - libtiff=4.5.0=h6adf6a1_2
  - libtool=2.4.7=h27087fc_0
  - libudev1=253=h0b41bf4_1
  - libunistring=0.9.10=h7f98852_0
  - libutf8proc=2.8.0=h166bdaf_0
  - libuuid=2.38.1=h0b41bf4_0
  - libuv=1.44.2=h166bdaf_0
  - libvorbis=1.3.7=h9c3ff4c_0
  - libwebp-base=1.3.0=h0b41bf4_0
  - libxcb=1.13=h7f98852_1004
  - libxkbcommon=1.5.0=h79f4944_1
  - libxml2=2.10.3=hca2bb57_4
  - libxslt=1.1.37=h873f0b0_0
  - libzip=1.9.2=hc929e4a_1
  - libzlib=1.2.13=h166bdaf_4
  - libzopfli=1.0.3=h9c3ff4c_0
  - llvmlite=0.40.0=py39h174d805_0
  - lmoments3=1.0.5=pyhd8ed1ab_0
  - locket=1.0.0=pyhd8ed1ab_0
  - loguru=0.7.0=py39hf3d152e_0
  - lxml=4.9.2=py39h14694de_0
  - lz4=4.3.2=py39h724f13c_0
  - lz4-c=1.9.4=hcb278e6_0
  - lzo=2.10=h516909a_1000
  - mako=1.2.4=pyhd8ed1ab_0
  - mamba_gator=5.2.1=pyhd8ed1ab_0
  - mapclassify=2.5.0=pyhd8ed1ab_1
  - markdown=3.4.3=pyhd8ed1ab_0
  - markdown-it-py=2.2.0=pyhd8ed1ab_0
  - markupsafe=2.1.2=py39h72bdee0_0
  - matplotlib=3.7.1=py39hf3d152e_0
  - matplotlib-base=3.7.1=py39he190548_0
  - matplotlib-inline=0.1.6=pyhd8ed1ab_0
  - mdit-py-plugins=0.3.5=pyhd8ed1ab_0
  - mdurl=0.1.0=pyhd8ed1ab_0
  - memory_profiler=0.61.0=pyhd8ed1ab_0
  - mesalib=23.0.2=h3855f93_0
  - mistune=2.0.5=pyhd8ed1ab_0
  - mpg123=1.31.3=hcb278e6_0
  - mpi=1.0=mpich
  - mpi4py=3.1.4=py39h32b9844_0
  - mpich=4.0.3=h846660c_100
  - msgpack-python=1.0.5=py39h4b4f3f3_0
  - multidict=6.0.4=py39h72bdee0_0
  - multipledispatch=0.6.0=py_0
  - multiprocess=0.70.14=py39hb9d737c_3
  - munch=3.0.0=pyhd8ed1ab_0
  - munkres=1.1.4=pyh9f0ad1d_0
  - myproxyclient=2.1.0=pyhd8ed1ab_2
  - mysql-common=8.0.32=hf1915f5_2
  - mysql-libs=8.0.32=hca2cd23_2
  - nbclassic=1.0.0=pyhb4ecaf3_1
  - nbclient=0.7.4=pyhd8ed1ab_0
  - nbconvert=7.4.0=pyhd8ed1ab_0
  - nbconvert-core=7.4.0=pyhd8ed1ab_0
  - nbconvert-pandoc=7.4.0=pyhd8ed1ab_0
  - nbdime=3.2.1=pyhd8ed1ab_0
  - nbformat=5.8.0=pyhd8ed1ab_0
  - nbresuse=0.4.0=pyhd8ed1ab_0
  - nbval=0.9.6=pyh9f0ad1d_0
  - nc-time-axis=1.4.1=pyhd8ed1ab_0
  - ncurses=6.3=h27087fc_1
  - nest-asyncio=1.5.6=pyhd8ed1ab_0
  - nested_dict=1.61=pyhd3deb0d_0
  - netcdf-fortran=4.6.0=mpi_mpich_h1e13492_2
  - netcdf4=1.6.2=nompi_py39hfaa66c4_100
  - nettle=3.8.1=hc379101_1
  - networkx=3.1=pyhd8ed1ab_0
  - nodeenv=1.8.0=pyhd8ed1ab_0
  - nodejs=18.15.0=h8d033a5_0
  - notebook=6.5.4=pyha770c72_0
  - notebook-shim=0.2.3=pyhd8ed1ab_0
  - nspr=4.35=h27087fc_0
  - nss=3.89=he45b914_0
  - numba=0.57.0=py39hb75a051_0
  - numcodecs=0.11.0=py39h227be39_1
  - numpy=1.23.5=py39h3d75532_0
  - numpy_groupies=0.9.22=pyhd8ed1ab_0
  - oauthlib=3.2.2=pyhd8ed1ab_0
  - openblas=0.3.21=pthreads_h320a7e8_3
  - openjpeg=2.5.0=hfec8fc6_2
  - openssl=3.1.1=hd590300_0
  - orc=1.8.3=hfdbbad2_0
  - outcome=1.2.0=pyhd8ed1ab_0
  - owslib=0.28.1=pyhd8ed1ab_0
  - p11-kit=0.24.1=hc5aa10d_0
  - packaging=23.1=pyhd8ed1ab_0
  - pamela=1.0.0=py_0
  - pandas=1.3.5=py39hde0f152_0
  - pandoc=2.19.2=h32600fe_2
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - panel=0.14.4=pyhd8ed1ab_0
  - parallelio=2.5.10=mpi_mpich_h862c5c2_100
  - param=1.13.0=pyh1a96a4e_0
  - paramiko=3.2.0=pyhd8ed1ab_0
  - parso=0.8.3=pyhd8ed1ab_0
  - partd=1.4.0=pyhd8ed1ab_0
  - pathos=0.3.0=pyhd8ed1ab_0
  - patsy=0.5.3=pyhd8ed1ab_0
  - pcre2=10.40=hc3806b6_0
  - pexpect=4.8.0=pyh1a96a4e_2
  - pickleshare=0.7.5=py_1003
  - pillow=9.4.0=py39h2320bf1_1
  - pint=0.21=pyhd8ed1ab_0
  - pip=23.1.2=pyhd8ed1ab_0
  - pixman=0.40.0=h36c2ea0_0
  - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_0
  - platformdirs=3.5.1=pyhd8ed1ab_0
  - plotly=5.14.1=pyhd8ed1ab_0
  - pluggy=1.0.0=pyhd8ed1ab_5
  - ply=3.11=py_1
  - pooch=1.7.0=pyha770c72_3
  - poppler=23.01.0=h091648b_0
  - poppler-data=0.4.12=hd8ed1ab_0
  - postgresql=15.2=h3248436_0
  - pox=0.3.2=pyhd8ed1ab_0
  - ppft=1.7.6.6=pyhd8ed1ab_0
  - pre-commit=3.3.2=pyha770c72_0
  - proj=9.1.1=h8ffa02c_2
  - prometheus_client=0.17.0=pyhd8ed1ab_0
  - prompt-toolkit=3.0.38=pyha770c72_0
  - prompt_toolkit=3.0.38=hd8ed1ab_0
  - properscoring=0.1=py_0
  - protobuf=4.21.12=py39h227be39_0
  - pscript=0.7.7=pyhd8ed1ab_0
  - psutil=5.9.5=py39h72bdee0_0
  - pthread-stubs=0.4=h36c2ea0_1001
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - pulseaudio=16.1=hcb278e6_3
  - pulseaudio-client=16.1=h5195f5e_3
  - pulseaudio-daemon=16.1=ha8d29e2_3
  - pure_eval=0.2.2=pyhd8ed1ab_0
  - pyarrow=10.0.1=py39he4327e9_25_cpu
  - pyasn1=0.4.8=py_0
  - pyasn1-modules=0.2.7=py_0
  - pycparser=2.21=pyhd8ed1ab_0
  - pyct=0.4.6=py_0
  - pyct-core=0.4.6=py_0
  - pycurl=7.45.1=py39h9297c8b_3
  - pydantic=1.10.8=py39hd1e30aa_0
  - pydap=3.4.0=pyhd8ed1ab_0
  - pydeck=0.8.0=pyhd8ed1ab_0
  - pygeos=0.14=py39hc9151fd_0
  - pygments=2.15.1=pyhd8ed1ab_0
  - pyjwt=2.7.0=pyhd8ed1ab_0
  - pymbolic=2022.2=pyhd8ed1ab_0
  - pymetalink=6.4=pyhd8ed1ab_0
  - pympler=1.0.1=pyhd8ed1ab_0
  - pynacl=1.5.0=py39hb9d737c_2
  - pyogrio=0.5.1=py39hbc5ff6d_0
  - pyopenssl=23.1.1=pyhd8ed1ab_0
  - pyparsing=3.0.9=pyhd8ed1ab_0
  - pyproj=3.5.0=py39hf8a5840_0
  - pyqt=5.15.7=py39h5c7b992_3
  - pyqt5-sip=12.11.0=py39h227be39_3
  - pyrsistent=0.19.3=py39h72bdee0_0
  - pyshp=2.3.1=pyhd8ed1ab_0
  - pysocks=1.7.1=pyha2e5f31_6
  - pytest=7.3.1=pyhd8ed1ab_0
  - pytest-xdist=3.3.1=pyhd8ed1ab_0
  - python=3.9.16=h2782a2a_0_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python-eccodes=1.5.1=py39h389d5f1_0
  - python-fastjsonschema=2.17.1=pyhd8ed1ab_0
  - python-json-logger=2.0.7=pyhd8ed1ab_0
  - python-pptx=0.6.21=pyhd8ed1ab_0
  - python-tzdata=2023.3=pyhd8ed1ab_0
  - python_abi=3.9=3_cp39
  - pytools=2022.1.14=pyhd8ed1ab_0
  - pytz=2023.3=pyhd8ed1ab_0
  - pyu2f=0.1.5=pyhd8ed1ab_0
  - pyviz_comms=2.3.0=pyhd8ed1ab_0
  - pywavelets=1.4.1=py39h389d5f1_0
  - pyyaml=6.0=py39hb9d737c_5
  - pyzmq=25.0.2=py39h0be026e_0
  - qt-main=5.15.8=h5d23da1_6
  - qtconsole=5.4.3=pyhd8ed1ab_0
  - qtconsole-base=5.4.3=pyha770c72_0
  - qtpy=2.3.1=pyhd8ed1ab_0
  - rasterio=1.3.6=py39h09b1985_0
  - raven-hydro=0.2.1=py39h8e2dbb5_1
  - ravenpy=0.12.0=py39hf3d152e_2
  - rdma-core=28.9=h59595ed_1
  - re2=2023.03.02=h8c504da_0
  - readline=8.2=h8228510_1
  - regionmask=0.9.0=pyhd8ed1ab_0
  - requests=2.31.0=pyhd8ed1ab_0
  - requests-cache=1.0.1=pyhd8ed1ab_0
  - requests-magpie=0.2.0=pyhd8ed1ab_0
  - requests-oauthlib=1.3.1=pyhd8ed1ab_0
  - retrying=1.3.3=py_2
  - rfc3339-validator=0.1.4=pyhd8ed1ab_0
  - rfc3986-validator=0.1.1=pyh9f0ad1d_0
  - rioxarray=0.14.1=pyhd8ed1ab_0
  - roocs-utils=0.6.4=pyh1a96a4e_0
  - rsa=4.9=pyhd8ed1ab_0
  - rtree=1.0.1=py39hb102c33_1
  - ruamel.yaml=0.17.30=py39hd1e30aa_0
  - ruamel.yaml.clib=0.2.7=py39h72bdee0_1
  - s2n=1.3.44=h06160fa_0
  - s3fs=2023.5.0=pyhd8ed1ab_0
  - s3transfer=0.6.1=pyhd8ed1ab_0
  - scikit-image=0.20.0=py39h7c7b5a8_1
  - scikit-learn=1.2.2=py39hc236052_2
  - scipy=1.9.1=py39h8ba3f38_0
  - scp=0.14.5=pyhd8ed1ab_0
  - seaborn=0.12.2=hd8ed1ab_0
  - seaborn-base=0.12.2=pyhd8ed1ab_0
  - selenium=4.9.1=pyhd8ed1ab_0
  - semver=3.0.0=pyhd8ed1ab_0
  - send2trash=1.8.2=pyh41d4057_0
  - setuptools=59.8.0=py39hf3d152e_1
  - shapely=2.0.1=py39hc9151fd_0
  - simpervisor=1.0.0=pyhd8ed1ab_0
  - sip=6.7.9=py39h3d6467e_0
  - siphon=0.9=pyhd8ed1ab_2
  - six=1.16.0=pyh6c4a22f_0
  - smmap=3.0.5=pyh44b312d_0
  - snappy=1.1.10=h9fff704_0
  - sniffio=1.3.0=pyhd8ed1ab_0
  - snuggs=1.4.7=py_0
  - sortedcontainers=2.4.0=pyhd8ed1ab_0
  - soupsieve=2.3.2.post1=pyhd8ed1ab_0
  - sparse=0.14.0=pyhd8ed1ab_0
  - spotpy=1.6.2=pyhd8ed1ab_0
  - sqlalchemy=2.0.15=py39hd1e30aa_0
  - sqlite=3.42.0=h2c6b66d_0
  - stack_data=0.6.2=pyhd8ed1ab_0
  - statsmodels=0.14.0=py39h0f8d45d_1
  - streamlit=1.8.0=pyhd8ed1ab_0
  - tblib=1.7.0=pyhd8ed1ab_0
  - tenacity=8.2.2=pyhd8ed1ab_0
  - terminado=0.17.1=pyh41d4057_0
  - threadpoolctl=3.1.0=pyh8a188c0_0
  - threddsclient=0.4.2=py_0
  - tifffile=2023.4.12=pyhd8ed1ab_0
  - tiledb=2.13.2=hd532e3d_0
  - tinycss2=1.2.1=pyhd8ed1ab_0
  - tk=8.6.12=h27826a3_0
  - toml=0.10.2=pyhd8ed1ab_0
  - tomli=2.0.1=pyhd8ed1ab_0
  - toolz=0.12.0=pyhd8ed1ab_0
  - tornado=6.3.2=py39hd1e30aa_0
  - tqdm=4.65.0=pyhd8ed1ab_1
  - traitlets=5.9.0=pyhd8ed1ab_0
  - traittypes=0.2.1=pyh9f0ad1d_2
  - trio=0.22.0=py39hf3d152e_1
  - trio-websocket=0.10.2=pyhd8ed1ab_0
  - typing-extensions=4.6.2=hd8ed1ab_0
  - typing_extensions=4.6.2=pyha770c72_0
  - tzcode=2023c=h0b41bf4_0
  - tzdata=2023c=h71feb2d_0
  - tzlocal=5.0.1=py39hf3d152e_0
  - ucx=1.14.1=hf587318_1
  - ujson=5.7.0=py39h227be39_0
  - ukkonen=1.0.1=py39hf939315_3
  - unicodedata2=15.0.0=py39hb9d737c_0
  - url-normalize=1.4.3=pyhd8ed1ab_0
  - urllib3=1.26.15=pyhd8ed1ab_0
  - urlpath=1.2.0=pyhd8ed1ab_0
  - validators=0.20.0=pyhd8ed1ab_0
  - virtualenv=20.23.0=pyhd8ed1ab_0
  - voila=0.4.0=pyhd8ed1ab_0
  - watchdog=3.0.0=py39hf3d152e_0
  - wcwidth=0.2.6=pyhd8ed1ab_0
  - webencodings=0.5.1=py_1
  - webob=1.8.7=pyhd8ed1ab_0
  - websocket-client=1.5.2=pyhd8ed1ab_0
  - websockets=11.0.3=py39hd1e30aa_0
  - werkzeug=2.3.4=pyhd8ed1ab_0
  - wget=1.20.3=ha35d2d1_1
  - wheel=0.40.0=pyhd8ed1ab_0
  - widgetsnbextension=4.0.7=pyhd8ed1ab_0
  - wrapt=1.15.0=py39h72bdee0_0
  - wsproto=1.2.0=pyhd8ed1ab_0
  - xarray=2023.1.0=pyhd8ed1ab_0
  - xcb-util=0.4.0=h516909a_0
  - xcb-util-image=0.4.0=h166bdaf_0
  - xcb-util-keysyms=0.4.0=h516909a_0
  - xcb-util-renderutil=0.3.9=h166bdaf_0
  - xcb-util-wm=0.4.1=h516909a_0
  - xclim=0.43.0=py39hf3d152e_1
  - xerces-c=3.2.4=h55805fa_1
  - xesmf=0.7.1=pyhd8ed1ab_0
  - xeus=3.0.5=hac2b420_1
  - xeus-python=0.15.9=py39h7633fee_0
  - xeus-python-shell=0.5.0=pyhd8ed1ab_0
  - xeus-python-shell-raw=0.5.0=pyhd8ed1ab_0
  - xeus-zmq=1.0.3=h0541b36_0
  - xhistogram=0.3.2=pyhd8ed1ab_0
  - xkeyboard-config=2.38=h0b41bf4_0
  - xlrd=2.0.1=pyhd8ed1ab_3
  - xlsxwriter=3.1.2=pyhd8ed1ab_0
  - xorg-damageproto=1.2.1=h7f98852_1002
  - xorg-fixesproto=5.0=h7f98852_1002
  - xorg-glproto=1.4.17=h7f98852_1002
  - xorg-inputproto=2.3.2=h7f98852_1002
  - xorg-kbproto=1.0.7=h7f98852_1002
  - xorg-libice=1.1.1=hd590300_0
  - xorg-libsm=1.2.4=h7391055_0
  - xorg-libx11=1.8.4=h0b41bf4_0
  - xorg-libxau=1.0.11=hd590300_0
  - xorg-libxdamage=1.1.5=h7f98852_1
  - xorg-libxdmcp=1.1.3=h7f98852_0
  - xorg-libxext=1.3.4=h0b41bf4_2
  - xorg-libxfixes=5.0.3=h7f98852_1004
  - xorg-libxi=1.7.10=h7f98852_0
  - xorg-libxrandr=1.5.2=h7f98852_1
  - xorg-libxrender=0.9.10=h7f98852_1003
  - xorg-randrproto=1.5.0=h7f98852_1001
  - xorg-renderproto=0.11.1=h7f98852_1002
  - xorg-util-macros=1.19.3=h7f98852_0
  - xorg-xextproto=7.3.0=h0b41bf4_1003
  - xorg-xf86vidmodeproto=2.3.1=h7f98852_1002
  - xorg-xproto=7.0.31=h7f98852_1007
  - xrft=1.0.1=pyhd8ed1ab_0
  - xskillscore=0.0.24=pyhd8ed1ab_0
  - xyzservices=2023.5.0=pyhd8ed1ab_1
  - xz=5.2.6=h166bdaf_0
  - y-py=0.5.9=py39h50f1755_0
  - yaml=0.2.5=h7f98852_2
  - yarl=1.9.2=py39hd1e30aa_0
  - ypy-websocket=0.8.2=pyhd8ed1ab_0
  - zarr=2.14.2=pyhd8ed1ab_0
  - zeromq=4.3.4=h9c3ff4c_1
  - zfp=1.0.0=h27087fc_3
  - zict=3.0.0=pyhd8ed1ab_0
  - zipp=3.15.0=pyhd8ed1ab_0
  - zlib=1.2.13=h166bdaf_4
  - zlib-ng=2.0.7=h0b41bf4_0
  - zstd=1.5.2=h3eb15da_6
  - pip:
      - arrow==1.2.3
      - astunparse==1.6.3
      - colour==0.1.5
      - dnspython==2.3.0
      - email-validator==2.0.0.post2
      - fqdn==1.5.1
      - geojson==3.0.1
      - hsclient==0.3.3
      - hsmodels==0.5.5
      - ipython-blocking==0.3.1
      - isodate==0.6.1
      - isoduration==20.11.0
      - jsonpointer==2.3
      - jupyterlab-logout==0.5.0
      - jupyterlab-tabular-data-editor==1.0.0
      - jupyternotify==0.1.15
      - pixiedust==1.1.19
      - pytest-tornasync==0.6.0.post2
      - rdflib==5.0.0
      - uri-template==1.2.0
      - webcolors==1.13
      - xmltodict==0.13.0
      - xncml==0.2
      - xsdata==23.5
prefix: /opt/conda/envs/birdy
```



Docker build log

[230530-1-buildlogs.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621136/230530-1-buildlogs.txt)
```
Sending build context to Docker daemon  22.02kB


Step 1/18 : FROM continuumio/miniconda3
 ---> fbedfde8d058
Step 2/18 : RUN conda update conda -n base &&     conda install mamba -n base -c conda-forge -c defaults &&     conda clean --all --yes &&     conda config --set channel_priority strict &&     wget -qO- https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -C /usr/local -xvj bin/micromamba
 ---> Using cache
 ---> 418cc0c03798
Step 3/18 : ENV MAMBA_ROOT_PREFIX="/opt/conda"
 ---> Using cache
 ---> cf727f7e31d9
Step 4/18 : RUN apt-get update &&     DEBIAN_FRONTEND=noninteractive apt-get install -y     git mercurial gcc unzip patch fonts-humor-sans     firefox-esr x11-utils &&     apt-get clean
 ---> Using cache
 ---> c1929f372dc2
Step 5/18 : RUN groupadd --gid 1000 jenkins     && useradd --uid 1000 --gid jenkins --create-home jenkins &&     chmod -R a+rwX /opt/conda
 ---> Using cache
 ---> 85378190e665
Step 6/18 : COPY environment.yml /environment.yml
 ---> c06bfdb4ac56
Step 7/18 : RUN umask 0000 &&     mamba create --name birdy --channel conda-forge --channel defaults xclim ravenpy python=3.9 --yes &&     mamba env update --name birdy --file /environment.yml &&     mamba clean --all --yes
 ---> Running in 95270a0111d6
Transaction

  Prefix: /opt/conda/envs/birdy

  Updating specs:

   - xclim
   - ravenpy
   - python=3.9


  Package                               Version  Build                       Channel                    Size
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
  Install:
──────────────────────────────────────────────────────────────────────────────────────────────────────────────

  + _libgcc_mutex                           0.1  conda_forge                 conda-forge/linux-64        3kB
  + _openmp_mutex                           4.5  2_gnu                       conda-forge/linux-64       24kB
  + affine                                2.4.0  pyhd8ed1ab_0                conda-forge/noarch         19kB
  + appdirs                               1.4.4  pyh9f0ad1d_0                conda-forge/noarch         13kB
  + asttokens                             2.2.1  pyhd8ed1ab_0                conda-forge/noarch         28kB
  + attrs                                23.1.0  pyh71513ae_1                conda-forge/noarch         55kB
  + aws-c-auth                           0.6.27  he072965_1                  conda-forge/linux-64      102kB
  + aws-c-cal                            0.5.26  hf677bf3_1                  conda-forge/linux-64       50kB
  + aws-c-common                         0.8.19  hd590300_0                  conda-forge/linux-64      196kB
  + aws-c-compression                    0.2.16  hbad4bc6_7                  conda-forge/linux-64       19kB
  + aws-c-event-stream                   0.2.20  hb4b372c_7                  conda-forge/linux-64       54kB
  + aws-c-http                            0.7.7  h2632f9a_4                  conda-forge/linux-64      192kB
  + aws-c-io                            0.13.21  h9fef7b8_5                  conda-forge/linux-64      140kB
  + aws-c-mqtt                           0.8.11  h2282364_1                  conda-forge/linux-64      148kB
  + aws-c-s3                              0.3.0  hcb5a9b2_2                  conda-forge/linux-64       76kB
  + aws-c-sdkutils                        0.1.9  hbad4bc6_2                  conda-forge/linux-64       54kB
  + aws-checksums                        0.1.14  hbad4bc6_7                  conda-forge/linux-64       50kB
  + aws-crt-cpp                          0.20.2  he0fdcb3_0                  conda-forge/linux-64      319kB
  + aws-sdk-cpp                         1.10.57  h059227d_13                 conda-forge/linux-64        4MB
  + backcall                              0.2.0  pyh9f0ad1d_0                conda-forge/noarch         14kB
  + backports                               1.0  pyhd8ed1ab_3                conda-forge/noarch          6kB
  + backports.functools_lru_cache         1.6.4  pyhd8ed1ab_0                conda-forge/noarch          9kB
  + bias_correction                         0.4  pyhd8ed1ab_0                conda-forge/noarch          8kB
  + blosc                                1.21.4  h0f2a231_0                  conda-forge/linux-64       49kB
  + bokeh                                 3.1.1  pyhd8ed1ab_0                conda-forge/noarch          6MB
  + boltons                              23.0.0  pyhd8ed1ab_0                conda-forge/noarch        303kB
  + boost-cpp                            1.78.0  h5adbc97_2                  conda-forge/linux-64       16MB
  + bottleneck                            1.3.7  py39h389d5f1_0              conda-forge/linux-64      122kB
  + branca                                0.6.0  pyhd8ed1ab_0                conda-forge/noarch         28kB
  + brotli                                1.0.9  h166bdaf_8                  conda-forge/linux-64       19kB
  + brotli-bin                            1.0.9  h166bdaf_8                  conda-forge/linux-64       20kB
  + bzip2                                 1.0.8  h7f98852_4                  conda-forge/linux-64      496kB
  + c-ares                               1.19.1  hd590300_0                  conda-forge/linux-64      113kB
  + ca-certificates                    2023.5.7  hbcca054_0                  conda-forge/linux-64     Cached
  + cairo                                1.16.0  ha61ee94_1014               conda-forge/linux-64        2MB
  + certifi                            2023.5.7  pyhd8ed1ab_0                conda-forge/noarch       Cached
  + cf_xarray                             0.8.1  pyhd8ed1ab_0                conda-forge/noarch         52kB
  + cfitsio                               4.2.0  hd9d235c_0            …
tlvu added a commit to Ouranosinc/PAVICS-e2e-workflow-tests that referenced this issue Jun 24, 2023
@tlvu
Copy link
Collaborator Author

tlvu commented Jun 30, 2023

Should be fixed by Ouranosinc/PAVICS-e2e-workflow-tests#121

tlvu added a commit to Ouranosinc/PAVICS-e2e-workflow-tests that referenced this issue May 9, 2024
…t xclim and ravenpy to smooth transition (#121)

# Overview

This new full build has latest of almost everything except `xclim` and
`ravenpy` as intermediate step to smooth transition to `pandas` 2.2 freq
strings changes.

## Changes

- New: save conda env export, DockerHub build logs and Jenkins test
result in the repo to track changes much more easily between releases

- Jenkins: add `SAVE_RESULTING_NOTEBOOK_TIMEOUT` for slow notebooks or
slow machine

- Jupyter env changes:
- add `conda-pack` so we can export the conda env outside of the docker
image if need to run locally without docker
  - upgrade from Python 3.9 to 3.11
  - Relevant changes (alphabetical order):
```diff
-  - birdy=0.8.4=pyh1a96a4e_0
+      - birdhouse-birdy==0.8.7

# major upgrade from v2 to v3
-  - bokeh=2.4.3=pyhd8ed1ab_3
+  - bokeh=3.4.1=pyhd8ed1ab_0

-  - cartopy=0.21.1=py39h6e7ad6e_0
+  - cartopy=0.23.0=py311h320fe9a_0

-  - cf_xarray=0.8.0=pyhd8ed1ab_0
+  - cf_xarray=0.9.0=pyhd8ed1ab_0

-  - cfgrib=0.9.10.4=pyhd8ed1ab_0
+  - cfgrib=0.9.11.0=pyhd8ed1ab_0

-  - cftime=1.6.2=py39h2ae25f5_1
+  - cftime=1.6.3=py311h1f0f07a_0

-  - climpred=2.3.0=pyhd8ed1ab_0
+  - climpred=2.4.0=pyhd8ed1ab_0

-  - clisops=0.9.6=pyh1a96a4e_0
+  - clisops=0.13.0=pyhca7485f_0

-  - dask=2023.5.1=pyhd8ed1ab_0
+  - dask=2024.5.0=pyhd8ed1ab_0

-  - geopandas=0.13.0=pyhd8ed1ab_0
+  - geopandas=0.14.4=pyhd8ed1ab_0

-  - hvplot=0.8.3=pyhd8ed1ab_0
+  - hvplot=0.9.2=pyhd8ed1ab_0

-  - numpy=1.23.5=py39h3d75532_0
+  - numpy=1.24.4=py311h64a7726_0

-  - numba=0.57.0=py39hb75a051_1
+  - numba=0.59.1=py311h96b013e_0

# major upgrade from v1 to v2
-  - pandas=1.3.5=py39hde0f152_0
+  - pandas=2.1.4=py311h320fe9a_0

# major upgrade to v1
-  - panel=0.14.4=pyhd8ed1ab_0
+  - panel=1.4.2=pyhd8ed1ab_0

# major upgrade from v1 to v2
-  - pydantic=1.10.8=py39hd1e30aa_0
+  - pydantic=2.7.1=pyhd8ed1ab_0

# Python 3.9 to 3.11
-  - python=3.9.16=h2782a2a_0_cpython
+  - python=3.11.6=hab00c5b_0_cpython

-  - raven-hydro=0.2.1=py39h8e2dbb5_1
+  - raven-hydro=0.2.4=py311h64a4d7b_0

-  - ravenpy=0.12.1=py39hf3d152e_0
+      - ravenpy==0.13.1

-  - rioxarray=0.14.1=pyhd8ed1ab_0
+  - rioxarray=0.15.5=pyhd8ed1ab_0

-  - roocs-utils=0.6.4=pyh1a96a4e_0
+  - roocs-utils=0.6.8=pyhd8ed1ab_0

-  - scipy=1.9.1=py39h8ba3f38_0
+  - scipy=1.13.0=py311h517d4fd_1

-  - xarray=2023.1.0=pyhd8ed1ab_0
+  - xarray=2023.8.0=pyhd8ed1ab_0

-  - xclim=0.43.0=py39hf3d152e_1
+  - xclim=0.47.0=py311h38be061_0

-  - xesmf=0.7.1=pyhd8ed1ab_0
+  - xesmf=0.8.5=pyhd8ed1ab_0

-  - xskillscore=0.0.24=pyhd8ed1ab_0
+  - xskillscore=0.0.26=pyhd8ed1ab_0

+  - xscen=0.8.2=pyhd8ed1ab_0

+      - figanos==0.3.0

-      - xncml==0.2
+      - xncml==0.4.0

```


## Test

- Deployed as "beta" image in production for bokeh visualization
performance regression testing.
- Manual test notebook
https://github.com/Ouranosinc/PAVICS-landing/blob/master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb
for bokeh visualization performance and it looks fine.
- Jenkins build:
- Default notebooks, all passed:
https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/blob/54792e6510adfcd1bb21e1bd31fdfa36c5c634e0/docker/saved_buildout/jenkins-buildlogs-default.txt
- Raven notebooks, only known `HydroShare_integration.ipynb` failing:
https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/blob/931cfc924a147d07b59e88badff9f170e852a03b/docker/saved_buildout/jenkins-buildlogs-raven.txt


## Related Issue / Discussion

- Matching notebook fixes:
  - Pavics-sdi: PR Ouranosinc/pavics-sdi#321
  - Finch: PR url: None
- PAVICS-landing: PR
Ouranosinc/PAVICS-landing#78
  - RavenPy: PR CSHS-CWRA/RavenPy#356
  - Resolves Ouranosinc/PAVICS-landing#65
  - Resolves Ouranosinc/PAVICS-landing#66

- Deployment to PAVICS:
bird-house/birdhouse-deploy#453

- Jenkins-config changes for new notebooks: PR url: None

- Other issues found while working on this one
  - computationalmodelling/nbval#204
  - jupyterlab-contrib/jupyter-archive#132
  - CSHS-CWRA/RavenPy#357
  - CSHS-CWRA/RavenPy#361
  - CSHS-CWRA/RavenPy#362

- Previous release: PR
#134


## Additional Information

Full diff conda env export:

81deb99...931cfc9#diff-e8f2a6a53085ae29bb7cedc701c1d345a330651ae971555e85a5c005e94f4cd9


Full new conda env export:

https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/blob/931cfc924a147d07b59e88badff9f170e852a03b/docker/saved_buildout/conda-env-export.yml


DockerHub build log

https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/blob/931cfc924a147d07b59e88badff9f170e852a03b/docker/saved_buildout/docker-buildlogs.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
5 participants