Skip to content

Commit

Permalink
Merge pull request #101 from Ouranosinc/new-docker-build
Browse files Browse the repository at this point in the history
New Jupyter env build with new xlrd, pre-commit, pin dask, distributed, cf_xarray, latest of everything else

## Relevant Changes

```diff
>   - pre-commit=2.17.0=py38h578d9bd_0
>   - xlrd=2.0.1=pyhd8ed1ab_3

<   - xclim=0.32.1=pyhd8ed1ab_0
>   - xclim=0.34.0=pyhd8ed1ab_0

<   - cfgrib=0.9.9.1=pyhd8ed1ab_1
>   - cfgrib=0.9.10.1=pyhd8ed1ab_0

<   - cftime=1.5.1.1=py38h6c62de6_1
>   - cftime=1.6.0=py38h3ec907f_0

<   - intake-xarray=0.5.0=pyhd8ed1ab_0
>   - intake-xarray=0.6.0=pyhd8ed1ab_0

<   - pandas=1.3.5=py38h43a58ef_0
>   - pandas=1.4.1=py38h43a58ef_0

<   - regionmask=0.8.0=pyhd8ed1ab_1
>   - regionmask=0.9.0=pyhd8ed1ab_0

<   - rioxarray=0.9.1=pyhd8ed1ab_0
>   - rioxarray=0.10.3=pyhd8ed1ab_0

<   - xarray=0.20.2=pyhd8ed1ab_0
>   - xarray=2022.3.0=pyhd8ed1ab_0

<   - zarr=2.10.3=pyhd8ed1ab_0
>   - zarr=2.11.1=pyhd8ed1ab_0
```

## New Packages Pins
`dask` and `distributed` was causing `PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb` to run excessively slow. 

`cf_xarray` caused `WPS_example.ipynb` to be slow.

See #100 for more info why these had to be pinned.

## Related Issue / Discussion

- Fixes #97
- #99
- #100
- PR to deploy this new Jupyter env to PAVICS: bird-house/birdhouse-deploy#240

## Test  Results

- 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, only known intermittent error: subset-user-input.ipynb: RemoteDisconnected, slow WPS_example.ipynb: http://jenkins.ouranos.ca/job/PAVICS-e2e-workflow-tests/job/preview-docker-build/37/console, logs: [job-PAVICS-e2e-workflow-tests-preview-docker-build-37-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8401086/job-PAVICS-e2e-workflow-tests-preview-docker-build-37-consoleText.txt)
- Jenkins build 2, only known intermittent error: subset-user-input.ipynb: RemoteDisconnected, opendap.ipynb runtime crashed: http://jenkins.ouranos.ca/job/PAVICS-e2e-workflow-tests/job/new-docker-build/7/console, logs: [job-PAVICS-e2e-workflow-tests-new-docker-build-7-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8401197/job-PAVICS-e2e-workflow-tests-new-docker-build-7-consoleText.txt)
- Jenkins build 3, only known intermittent error: stress-test.ipynb "ValueError: max() arg is an empty sequence": http://jenkins.ouranos.ca/job/PAVICS-e2e-workflow-tests/job/new-docker-build/8/console, logs: [job-PAVICS-e2e-workflow-tests-new-docker-build-8-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8410742/job-PAVICS-e2e-workflow-tests-new-docker-build-8-consoleText.txt)
- Jenkins build 4, only known intermittent error: WMS_example.ipynb: SyntaxError: not a PNG file, stress-tests.ipynb: ValueError: max() arg is an empty sequence, , slow WPS_example.ipynb: http://jenkins.ouranos.ca/job/PAVICS-e2e-workflow-tests/job/new-docker-build/12/console, logs: [job-PAVICS-e2e-workflow-tests-new-docker-build-12-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8411737/job-PAVICS-e2e-workflow-tests-new-docker-build-12-consoleText.txt)

## Additional Information

- Full `conda env export` diff:
[220121-220401-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8401067/220121-220401-conda-env-export.diff.txt)
```diff
9,10c9,10
<   - affine=2.3.0=py_0
<   - aiobotocore=2.1.0=pyhd8ed1ab_0
---
>   - affine=2.3.1=pyhd8ed1ab_0
>   - aiobotocore=2.1.2=pyhd8ed1ab_0
12c12
<   - aioitertools=0.8.0=pyhd8ed1ab_0
---
>   - aioitertools=0.10.0=pyhd8ed1ab_0
14c14
<   - alembic=1.7.5=pyhd8ed1ab_0
---
>   - alembic=1.7.7=pyhd8ed1ab_0
16c16
<   - ansi2html=1.6.0=py38h578d9bd_2
---
>   - ansi2html=1.7.0=py38h578d9bd_0
34d33
<   - black=21.12b0=pyhd8ed1ab_0
42c41
<   - bottleneck=1.3.2=py38h6c62de6_5
---
>   - bottleneck=1.3.4=py38h3ec907f_0
48d46
<   - brunsli=0.1=h9c3ff4c_0
51d48
<   - c-blosc2=2.0.4=h5f21a17_1
55c52
<   - cachetools=4.2.4=pyhd8ed1ab_0
---
>   - cachetools=5.0.0=pyhd8ed1ab_0
61c58
<   - certifi=2021.10.8=py38h578d9bd_1
---
>   - certifi=2021.10.8=py38h578d9bd_2
65c62,63
<   - cfgrib=0.9.9.1=pyhd8ed1ab_1
---
>   - cfgrib=0.9.10.1=pyhd8ed1ab_0
>   - cfgv=3.3.1=pyhd8ed1ab_0
67,70c65,67
<   - cftime=1.5.1.1=py38h6c62de6_1
<   - charls=2.2.0=h9c3ff4c_0
<   - charset-normalizer=2.0.10=pyhd8ed1ab_0
<   - click=8.0.3=py38h578d9bd_1
---
>   - cftime=1.6.0=py38h3ec907f_0
>   - charset-normalizer=2.0.12=pyhd8ed1ab_0
>   - click=8.1.2=py38h578d9bd_0
79,81c76,78
<   - coverage=6.2=py38h497a2fe_0
<   - cryptography=36.0.1=py38h3e25421_0
<   - curl=7.81.0=h2574ce0_0
---
>   - coverage=6.3.2=py38h0a891b7_2
>   - cryptography=36.0.2=py38h2b5fc30_0
>   - curl=7.82.0=h7bff187_0
84c81
<   - dash=2.0.0=pyhd8ed1ab_0
---
>   - dash=2.3.1=pyhd8ed1ab_0
87d83
<   - dataclasses=0.8=pyhc8e2a94_3
95a92
>   - distlib=0.3.4=pyhd8ed1ab_0
99c96
<   - eccodes=2.24.2=h11d1a29_0
---
>   - eccodes=2.25.0=hc08acdf_0
101c98
<   - entrypoints=0.3=pyhd8ed1ab_1003
---
>   - entrypoints=0.4=pyhd8ed1ab_0
106,109c103,107
<   - executing=0.8.2=pyhd8ed1ab_0
<   - expat=2.4.3=h9c3ff4c_0
<   - fasteners=0.16=pyhd8ed1ab_0
<   - fastprogress=1.0.0=py_0
---
>   - executing=0.8.3=pyhd8ed1ab_0
>   - expat=2.4.8=h27087fc_0
>   - fasteners=0.17.3=pyhd8ed1ab_0
>   - fastprogress=1.0.2=pyhd8ed1ab_0
>   - filelock=3.6.0=pyhd8ed1ab_0
112,114c110,112
<   - flask=2.0.2=pyhd8ed1ab_0
<   - flask-compress=1.10.1=pyhd8ed1ab_0
<   - flit-core=3.6.0=pyhd8ed1ab_0
---
>   - flask=2.1.1=pyhd8ed1ab_0
>   - flask-compress=1.11=pyhd8ed1ab_0
>   - flit-core=3.7.1=pyhd8ed1ab_0
120c118
<   - fontconfig=2.13.1=hba837de_1005
---
>   - fontconfig=2.13.96=h8e229c2_2
123,124c121,122
<   - fonttools=4.28.5=py38h497a2fe_0
<   - freeglut=3.2.1=h9c3ff4c_2
---
>   - fonttools=4.31.2=py38h0a891b7_0
>   - freeglut=3.2.2=h9c3ff4c_1
127,128c125,126
<   - frozenlist=1.2.0=py38h497a2fe_1
<   - fsspec=2022.1.0=pyhd8ed1ab_0
---
>   - frozenlist=1.3.0=py38h0a891b7_1
>   - fsspec=2022.2.0=pyhd8ed1ab_0
132c130
<   - gcsfs=2022.1.0=pyhd8ed1ab_0
---
>   - gcsfs=2022.2.0=pyhd8ed1ab_0
139,140c137,138
<   - geoviews=1.9.3=pyhd8ed1ab_0
<   - geoviews-core=1.9.3=pyha770c72_0
---
>   - geoviews=1.9.5=pyhd8ed1ab_0
>   - geoviews-core=1.9.5=pyha770c72_0
144c142
<   - gitpython=3.1.26=pyhd8ed1ab_0
---
>   - gitpython=3.1.27=pyhd8ed1ab_0
146,148c144,146
<   - google-api-core=2.4.0=pyhd8ed1ab_0
<   - google-auth=2.3.3=pyh6c4a22f_0
<   - google-auth-oauthlib=0.4.6=pyhd8ed1ab_0
---
>   - google-api-core=2.5.0=pyhd8ed1ab_0
>   - google-auth=2.6.2=pyh6c4a22f_0
>   - google-auth-oauthlib=0.5.1=pyhd8ed1ab_0
150c148
<   - google-cloud-storage=2.0.0=pyh6c4a22f_0
---
>   - google-cloud-storage=2.1.0=pyh6c4a22f_0
153c151
<   - googleapis-common-protos=1.54.0=py38h578d9bd_0
---
>   - googleapis-common-protos=1.56.0=py38h578d9bd_0
155c153
<   - grpcio=1.43.0=py38hdd6454d_0
---
>   - grpcio=1.45.0=py38ha0cdfde_0
158,159c156,157
<   - h11=0.12.0=pyhd8ed1ab_0
<   - h5netcdf=0.13.1=pyhd8ed1ab_0
---
>   - h11=0.13.0=pyhd8ed1ab_0
>   - h5netcdf=1.0.0=pyhd8ed1ab_0
163c161
<   - hdf5=1.12.1=mpi_mpich_h9c45103_3
---
>   - hdf5=1.12.1=mpi_mpich_h08b82f9_4
165c163
<   - holoviews=1.14.7=pyhd8ed1ab_0
---
>   - holoviews=1.14.8=pyhd8ed1ab_0
167a166
>   - identify=2.4.12=pyhd8ed1ab_0
169,173c168,172
<   - imagecodecs=2021.8.26=py38hb5ce8f7_1
<   - imageio=2.13.5=pyh239f2a4_0
<   - importlib-metadata=4.10.1=py38h578d9bd_0
<   - importlib_metadata=4.10.1=hd8ed1ab_0
<   - importlib_resources=5.4.0=pyhd8ed1ab_0
---
>   - imagecodecs-lite=2019.12.3=py38h6c62de6_4
>   - imageio=2.16.1=pyhcf75d05_0
>   - importlib-metadata=4.11.3=py38h578d9bd_1
>   - importlib_metadata=4.11.3=hd8ed1ab_1
>   - importlib_resources=5.6.0=pyhd8ed1ab_0
179,180c178,179
<   - intake-xarray=0.5.0=pyhd8ed1ab_0
<   - ipykernel=6.7.0=py38he5a9106_0
---
>   - intake-xarray=0.6.0=pyhd8ed1ab_0
>   - ipykernel=6.11.0=py38h7f3c49e_0
182c181
<   - ipython=8.0.1=py38h578d9bd_0
---
>   - ipython=8.2.0=py38h578d9bd_0
184,185c183,184
<   - ipywidgets=7.6.5=pyhd8ed1ab_0
<   - itsdangerous=2.0.1=pyhd8ed1ab_0
---
>   - ipywidgets=7.7.0=pyhd8ed1ab_0
>   - itsdangerous=2.1.2=pyhd8ed1ab_0
189c188
<   - jinja2=3.0.3=pyhd8ed1ab_0
---
>   - jinja2=3.1.1=pyhd8ed1ab_0
192c191
<   - jpeg=9d=h36c2ea0_0
---
>   - jpeg=9e=h7f98852_0
198,199c197,198
<   - jupyter-archive=3.2.1=pyhd8ed1ab_0
<   - jupyter-dash=0.4.0=pyhd8ed1ab_0
---
>   - jupyter-archive=3.3.0=pyhd8ed1ab_1
>   - jupyter-dash=0.4.1=pyhd8ed1ab_2
201c200
<   - jupyter-server-mathjax=0.2.3=pyhd8ed1ab_0
---
>   - jupyter-server-mathjax=0.2.5=pyhc268e32_0
203,206c202,205
<   - jupyter_client=7.1.1=pyhd8ed1ab_0
<   - jupyter_console=6.4.0=pyhd8ed1ab_0
<   - jupyter_core=4.9.1=py38h578d9bd_1
<   - jupyter_server=1.13.3=pyhd8ed1ab_0
---
>   - jupyter_client=7.2.1=pyhd8ed1ab_0
>   - jupyter_console=6.4.3=pyhd8ed1ab_0
>   - jupyter_core=4.9.2=py38h578d9bd_0
>   - jupyter_server=1.16.0=pyhd8ed1ab_1
208,211c207,210
<   - jupyterhub=2.1.0=hd8ed1ab_0
<   - jupyterhub-base=2.1.0=pyhd8ed1ab_0
<   - jupyterlab=3.2.8=pyhd8ed1ab_0
<   - jupyterlab-git=0.34.2=pyhd8ed1ab_0
---
>   - jupyterhub=2.2.2=hd8ed1ab_0
>   - jupyterhub-base=2.2.2=pyhd8ed1ab_0
>   - jupyterlab=3.3.2=pyhd8ed1ab_0
>   - jupyterlab-git=0.36.0=pyhd8ed1ab_0
215,218c214,216
<   - jupyterlab_server=2.10.3=pyhd8ed1ab_0
<   - jupyterlab_widgets=1.0.2=pyhd8ed1ab_0
<   - jupytext=1.13.6=pyheef035f_0
<   - jxrlib=1.1=h7f98852_2
---
>   - jupyterlab_server=2.12.0=pyhd8ed1ab_0
>   - jupyterlab_widgets=1.1.0=pyhd8ed1ab_0
>   - jupytext=1.13.7=pyhd0ecf6b_0
220,221c218,220
<   - kiwisolver=1.3.2=py38h1fd1430_1
<   - krb5=1.19.2=hcc1bbae_3
---
>   - keyutils=1.6.1=h166bdaf_0
>   - kiwisolver=1.4.2=py38h43d8883_0
>   - krb5=1.19.3=h3790be6_0
237c236
<   - libcurl=7.81.0=h2574ce0_0
---
>   - libcurl=7.82.0=h7bff187_0
239c238
<   - libdeflate=1.8=h7f98852_0
---
>   - libdeflate=1.10=h7f98852_0
247c246
<   - libgcc-ng=11.2.0=h1d223b6_11
---
>   - libgcc-ng=11.2.0=h1d223b6_14
249,251c248,250
<   - libgfortran-ng=11.2.0=h69a702a_11
<   - libgfortran5=11.2.0=h5c6108e_11
<   - libglib=2.70.2=h174f98d_1
---
>   - libgfortran-ng=11.2.0=h69a702a_14
>   - libgfortran5=11.2.0=h5c6108e_14
>   - libglib=2.70.2=h174f98d_4
253c252
<   - libgomp=11.2.0=h1d223b6_11
---
>   - libgomp=11.2.0=h1d223b6_14
258c257
<   - libllvm11=11.1.0=hf817b99_2
---
>   - libllvm11=11.1.0=hf817b99_3
261c260
<   - libnghttp2=1.43.0=h812cca2_1
---
>   - libnghttp2=1.47.0=h727a467_0
269c268
<   - libprotobuf=3.19.3=h780b84a_0
---
>   - libprotobuf=3.20.0=h6239696_0
275,276c274,275
<   - libstdcxx-ng=11.2.0=he4da1e4_11
<   - libtiff=4.3.0=h6f004c6_2
---
>   - libstdcxx-ng=11.2.0=he4da1e4_14
>   - libtiff=4.3.0=h542a066_3
281c280,281
<   - libwebp-base=1.2.2=h7f98852_0
---
>   - libwebp=1.2.2=h3452ae3_0
>   - libwebp-base=1.2.2=h7f98852_1
287,288c287
<   - libzlib=1.2.11=h36c2ea0_1013
<   - libzopfli=1.0.3=h9c3ff4c_0
---
>   - libzlib=1.2.11=h166bdaf_1014
291c290,291
<   - lxml=4.7.1=py38hf1fe3a4_0
---
>   - lxml=4.8.0=py38h0a891b7_1
>   - lz4=3.1.10=py38hebdc3cf_0
294c294
<   - mako=1.1.6=pyhd8ed1ab_0
---
>   - mako=1.2.0=pyhd8ed1ab_0
299c299
<   - markupsafe=2.0.1=py38h497a2fe_1
---
>   - markupsafe=2.1.1=py38h0a891b7_1
307d306
<   - monotonic=1.5=py_0
310,312c309,311
<   - mpich=3.4.3=h846660c_100
<   - msgpack-python=1.0.3=py38h1fd1430_0
<   - multidict=5.2.0=py38h497a2fe_1
---
>   - mpich=4.0.1=h846660c_100
>   - msgpack-python=1.0.3=py38h43d8883_1
>   - multidict=6.0.2=py38h497a2fe_0
316,321c315,320
<   - mypy_extensions=0.4.3=py38h578d9bd_4
<   - mysql-common=8.0.28=ha770c72_0
<   - mysql-libs=8.0.28=hfa10184_0
<   - nbclassic=0.3.5=pyhd8ed1ab_0
<   - nbclient=0.5.10=pyhd8ed1ab_1
<   - nbconvert=6.4.0=py38h578d9bd_0
---
>   - mysql-common=8.0.28=haf5c9bc_2
>   - mysql-libs=8.0.28=h28c427c_2
>   - nbclassic=0.3.7=pyhd8ed1ab_0
>   - nbclient=0.5.13=pyhd8ed1ab_0
>   - nbconvert=6.4.5=py38h578d9bd_0
>   - nbconvert-core=6.4.5=pyhd8ed1ab_1
323c322
<   - nbformat=5.1.3=pyhd8ed1ab_0
---
>   - nbformat=5.2.0=pyhd8ed1ab_0
333c332,333
<   - networkx=2.6.3=pyhd8ed1ab_1
---
>   - networkx=2.7.1=pyhd8ed1ab_1
>   - nodeenv=1.6.0=pyhd8ed1ab_0
335c335,336
<   - notebook=6.4.7=pyha770c72_0
---
>   - notebook=6.4.10=pyha770c72_0
>   - notebook-shim=0.1.0=pyhd8ed1ab_0
337,338c338,339
<   - nss=3.74=hb5efdd6_0
<   - numba=0.55.0=py38h4bf6c61_0
---
>   - nss=3.77=h2350873_0
>   - numba=0.55.1=py38h4bf6c61_0
341,342c342
<   - oauthlib=3.1.1=pyhd8ed1ab_0
<   - olefile=0.46=pyh9f0ad1d_1
---
>   - oauthlib=3.2.0=pyhd8ed1ab_0
345c345
<   - openssl=1.1.1l=h7f98852_0
---
>   - openssl=1.1.1n=h166bdaf_0
351,352c351,352
<   - pandas=1.3.5=py38h43a58ef_0
<   - pandoc=2.17.0.1=h7f98852_0
---
>   - pandas=1.4.1=py38h43a58ef_0
>   - pandoc=2.17.1.1=ha770c72_0
354,356c354,356
<   - panel=0.12.6=pyhd8ed1ab_0
<   - param=1.12.0=pyh6c4a22f_0
<   - paramiko=2.9.2=pyhd8ed1ab_0
---
>   - panel=0.12.7=pyhd8ed1ab_0
>   - param=1.12.1=pyh6c4a22f_0
>   - paramiko=2.10.3=pyhd8ed1ab_0
359d358
<   - pathspec=0.9.0=pyhd8ed1ab_0
362,364c361,363
<   - pexpect=4.8.0=pyh9f0ad1d_2
<   - pickleshare=0.7.5=py_1003
<   - pillow=8.4.0=py38h8e6f84c_0
---
>   - pexpect=4.8.0=py38h32f6830_1
>   - pickleshare=0.7.5=py38h32f6830_1002
>   - pillow=9.0.1=py38h0ee0e06_2
366c365
<   - pip=21.3.1=pyhd8ed1ab_0
---
>   - pip=22.0.4=pyhd8ed1ab_0
368,371c367,370
<   - platformdirs=2.3.0=pyhd8ed1ab_0
<   - plotly=5.5.0=pyhd8ed1ab_0
<   - pluggy=1.0.0=py38h578d9bd_2
<   - pooch=1.5.2=pyhd8ed1ab_0
---
>   - platformdirs=2.5.1=pyhd8ed1ab_0
>   - plotly=5.6.0=pyhd8ed1ab_0
>   - pluggy=1.0.0=py38h578d9bd_3
>   - pooch=1.6.0=pyhd8ed1ab_0
374a374
>   - pre-commit=2.17.0=py38h578d9bd_0
376,378c376,378
<   - prometheus_client=0.12.0=pyhd8ed1ab_0
<   - prompt-toolkit=3.0.24=pyha770c72_0
<   - prompt_toolkit=3.0.24=hd8ed1ab_0
---
>   - prometheus_client=0.13.1=pyhd8ed1ab_0
>   - prompt-toolkit=3.0.27=pyha770c72_0
>   - prompt_toolkit=3.0.27=hd8ed1ab_0
380c380
<   - protobuf=3.19.3=py38h709712a_0
---
>   - protobuf=3.20.0=py38hfa26641_0
385c385
<   - pure_eval=0.2.1=pyhd8ed1ab_1
---
>   - pure_eval=0.2.2=pyhd8ed1ab_0
392c392
<   - pycurl=7.44.1=py38h996a351_1
---
>   - pycurl=7.45.1=py38h61f0cdf_0
394c394
<   - pydap=3.2.2=pyh9f0ad1d_1001
---
>   - pydap=3.3.0=pyhd8ed1ab_0
399c399
<   - pyopenssl=21.0.0=pyhd8ed1ab_0
---
>   - pyopenssl=22.0.0=pyhd8ed1ab_0
408c408
<   - pyshp=2.1.3=pyh44b312d_0
---
>   - pyshp=2.2.0=pyhd8ed1ab_0
410,411c410,411
<   - pytest=6.2.5=py38h578d9bd_2
<   - python=3.8.12=hb7a2778_2_cpython
---
>   - pytest=7.1.1=py38h578d9bd_1
>   - python=3.8.13=h582c2e5_0_cpython
413c413
<   - python-eccodes=2021.05.1=py38h6c62de6_0
---
>   - python-eccodes=1.4.0=py38h71d37f0_0
416c416
<   - pytz=2021.3=pyhd8ed1ab_0
---
>   - pytz=2022.1=pyhd8ed1ab_0
418,420c418,420
<   - pyviz_comms=2.1.0=pyhd8ed1ab_0
<   - pywavelets=1.2.0=py38h6c62de6_1
<   - pyyaml=6.0=py38h497a2fe_3
---
>   - pyviz_comms=2.2.0=pyhd8ed1ab_0
>   - pywavelets=1.3.0=py38h3ec907f_0
>   - pyyaml=6.0=py38h0a891b7_4
423,425c423,425
<   - qtconsole=5.2.2=pyhd8ed1ab_1
<   - qtconsole-base=5.2.2=pyhd8ed1ab_1
<   - qtpy=2.0.0=pyhd8ed1ab_0
---
>   - qtconsole=5.3.0=pyhd8ed1ab_0
>   - qtconsole-base=5.3.0=pyhd8ed1ab_0
>   - qtpy=2.0.1=pyhd8ed1ab_0
430c430
<   - regionmask=0.8.0=pyhd8ed1ab_1
---
>   - regionmask=0.9.0=pyhd8ed1ab_0
432c432
<   - requests-oauthlib=1.3.0=pyh9f0ad1d_0
---
>   - requests-oauthlib=1.3.1=pyhd8ed1ab_0
434c434
<   - rioxarray=0.9.1=pyhd8ed1ab_0
---
>   - rioxarray=0.10.3=pyhd8ed1ab_0
438c438
<   - ruamel.yaml=0.17.19=py38h497a2fe_0
---
>   - ruamel.yaml=0.17.21=py38h497a2fe_0
440,441c440,441
<   - s3fs=2022.1.0=pyhd8ed1ab_0
<   - scikit-image=0.19.1=py38h43a58ef_0
---
>   - s3fs=2022.2.0=pyhd8ed1ab_1
>   - scikit-image=0.19.2=py38h43a58ef_0
443,444c443,444
<   - scipy=1.7.3=py38h56a6a73_0
<   - scp=0.14.2=pyhd8ed1ab_0
---
>   - scipy=1.8.0=py38h56a6a73_1
>   - scp=0.14.4=pyhd8ed1ab_0
447d446
<   - setuptools=59.8.0=py38h578d9bd_0
449c448
<   - siphon=0.9=pyhd8ed1ab_2
---
>   - siphon=0.9=py38h578d9bd_1
452,453c451
<   - snappy=1.1.8=he1b5a44_3
<   - sniffio=1.2.0=py38h578d9bd_2
---
>   - sniffio=1.2.0=py38h578d9bd_3
458,461c456,459
<   - sqlalchemy=1.4.31=py38h497a2fe_0
<   - sqlite=3.37.0=h9cd32fc_0
<   - stack_data=0.1.4=pyhd8ed1ab_0
<   - statsmodels=0.13.1=py38h6c62de6_0
---
>   - sqlalchemy=1.4.33=py38h0a891b7_0
>   - sqlite=3.37.1=h4ff8645_0
>   - stack_data=0.2.0=pyhd8ed1ab_0
>   - statsmodels=0.13.2=py38h6c62de6_0
464,466c462,464
<   - terminado=0.12.1=py38h578d9bd_1
<   - testpath=0.5.0=pyhd8ed1ab_0
<   - threadpoolctl=3.0.0=pyh8a188c0_0
---
>   - terminado=0.13.3=py38h578d9bd_0
>   - testpath=0.6.0=pyhd8ed1ab_0
>   - threadpoolctl=3.1.0=pyh8a188c0_0
468c466
<   - tifffile=2021.11.2=pyhd8ed1ab_0
---
>   - tifffile=2020.6.3=py_0
470c468
<   - tk=8.6.11=h27826a3_1
---
>   - tk=8.6.12=h27826a3_0
472c470
<   - tomli=1.2.2=pyhd8ed1ab_0
---
>   - tomli=2.0.1=pyhd8ed1ab_0
474,475c472,473
<   - tornado=6.1=py38h497a2fe_2
<   - tqdm=4.62.3=pyhd8ed1ab_0
---
>   - tornado=6.1=py38h0a891b7_3
>   - tqdm=4.63.1=pyhd8ed1ab_0
478c476
<   - trio=0.19.0=py38h578d9bd_1
---
>   - trio=0.20.0=py38h578d9bd_0
480,484c478,482
<   - typed-ast=1.5.1=py38h497a2fe_0
<   - typing-extensions=4.0.1=hd8ed1ab_0
<   - typing_extensions=4.0.1=pyha770c72_0
<   - tzcode=2021e=h7f98852_0
<   - tzdata=2021e=he74cb21_0
---
>   - typing-extensions=4.1.1=hd8ed1ab_0
>   - typing_extensions=4.1.1=pyha770c72_0
>   - tzcode=2022a=h166bdaf_0
>   - tzdata=2022a=h191b570_0
>   - ukkonen=1.0.1=py38h1fd1430_1
486,487c484,486
<   - urllib3=1.25.11=py_0
<   - voila=0.3.0=pyhd8ed1ab_1
---
>   - urllib3=1.26.9=pyhd8ed1ab_0
>   - virtualenv=20.14.0=py38h578d9bd_1
>   - voila=0.3.5=pyhd8ed1ab_0
491,493c490,492
<   - websocket-client=1.2.3=pyhd8ed1ab_0
<   - websockets=10.1=py38h497a2fe_0
<   - werkzeug=2.0.2=pyhd8ed1ab_0
---
>   - websocket-client=1.3.2=pyhd8ed1ab_0
>   - websockets=10.2=py38h0a891b7_0
>   - werkzeug=2.1.0=pyhd8ed1ab_0
496,500c495,499
<   - widgetsnbextension=3.5.2=py38h578d9bd_1
<   - wrapt=1.13.3=py38h497a2fe_1
<   - wsproto=1.0.0=py38h578d9bd_2
<   - xarray=0.20.2=pyhd8ed1ab_0
<   - xclim=0.32.1=pyhd8ed1ab_0
---
>   - widgetsnbextension=3.6.0=py38h578d9bd_0
>   - wrapt=1.14.0=py38h0a891b7_0
>   - wsproto=1.1.0=py38h578d9bd_0
>   - xarray=2022.3.0=pyhd8ed1ab_0
>   - xclim=0.34.0=pyhd8ed1ab_0
503,504c502,503
<   - xeus=2.3.1=hab3612f_0
<   - xeus-python=0.13.6=py38hcf90354_1
---
>   - xeus=2.4.0=hab3612f_0
>   - xeus-python=0.13.6=py38h9f61dbb_2
506a506
>   - xlrd=2.0.1=pyhd8ed1ab_3
531c531
<   - xyzservices=2022.1.1=pyhd8ed1ab_0
---
>   - xyzservices=2022.3.0=pyhd8ed1ab_0
535c535
<   - zarr=2.10.3=pyhd8ed1ab_0
---
>   - zarr=2.11.1=pyhd8ed1ab_0
537,540c537,539
<   - zfp=0.5.5=h9c3ff4c_8
<   - zict=2.0.0=py_0
<   - zipp=3.7.0=pyhd8ed1ab_0
<   - zlib=1.2.11=h36c2ea0_1013
---
>   - zict=2.1.0=pyhd8ed1ab_0
>   - zipp=3.7.0=pyhd8ed1ab_1
>   - zlib=1.2.11=h166bdaf_1014
547c546
<     - innerscope==0.5.0
---
>     - innerscope==0.5.1
555a555
>     - setuptools==61.3.0
```

- Full new `conda env export`: 
[220401-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8401069/220401-conda-env-export.yml.txt)
```
name: birdy
channels:
  - cdat
  - conda-forge
  - defaults
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=1_gnu
  - affine=2.3.1=pyhd8ed1ab_0
  - aiobotocore=2.1.2=pyhd8ed1ab_0
  - aiohttp=3.8.1=py38h497a2fe_0
  - aioitertools=0.10.0=pyhd8ed1ab_0
  - aiosignal=1.2.0=pyhd8ed1ab_0
  - alembic=1.7.7=pyhd8ed1ab_0
  - alsa-lib=1.2.3=h516909a_0
  - ansi2html=1.7.0=py38h578d9bd_0
  - anyio=3.5.0=py38h578d9bd_0
  - appdirs=1.4.4=pyh9f0ad1d_0
  - argon2-cffi=21.3.0=pyhd8ed1ab_0
  - argon2-cffi-bindings=21.2.0=py38h497a2fe_1
  - asciitree=0.3.3=py_2
  - asttokens=2.0.5=pyhd8ed1ab_0
  - async-timeout=4.0.2=pyhd8ed1ab_0
  - async_generator=1.10=py_0
  - attrs=21.4.0=pyhd8ed1ab_0
  - babel=2.9.1=pyh44b312d_0
  - backcall=0.2.0=pyh9f0ad1d_0
  - backports=1.0=py_2
  - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
  - bcrypt=3.2.0=py38h497a2fe_2
  - beautifulsoup4=4.10.0=pyha770c72_0
  - bias_correction=0.4=pyhd8ed1ab_0
  - birdy=0.8.1=pyh6c4a22f_1
  - bleach=4.1.0=pyhd8ed1ab_0
  - blinker=1.4=py_1
  - blosc=1.21.0=h9c3ff4c_0
  - bokeh=2.4.2=py38h578d9bd_0
  - boltons=21.0.0=pyhd8ed1ab_0
  - boost-cpp=1.74.0=h312852a_4
  - botocore=1.23.24=pyhd8ed1ab_0
  - bottleneck=1.3.4=py38h3ec907f_0
  - branca=0.4.2=pyhd8ed1ab_0
  - brotli=1.0.9=h7f98852_6
  - brotli-bin=1.0.9=h7f98852_6
  - brotli-python=1.0.9=py38h709712a_6
  - brotlipy=0.7.0=py38h497a2fe_1003
  - bzip2=1.0.8=h7f98852_4
  - c-ares=1.18.1=h7f98852_0
  - ca-certificates=2021.10.8=ha878542_0
  - cached-property=1.5.2=hd8ed1ab_1
  - cached_property=1.5.2=pyha770c72_1
  - cachetools=5.0.0=pyhd8ed1ab_0
  - cairo=1.16.0=h6cf1ce9_1008
  - cartopy=0.20.1=py38hf9a4893_1
  - cdat_info=8.2.1=pyhd8ed1ab_2
  - cdms2=3.1.5=py38hc1ef740_14
  - cdtime=3.1.4=py38hc54c017_7
  - certifi=2021.10.8=py38h578d9bd_2
  - certipy=0.1.3=py_0
  - cf_xarray=0.6.3=pyhd8ed1ab_0
  - cffi=1.15.0=py38h3931269_0
  - cfgrib=0.9.10.1=pyhd8ed1ab_0
  - cfgv=3.3.1=pyhd8ed1ab_0
  - cfitsio=3.470=hb418390_7
  - cftime=1.6.0=py38h3ec907f_0
  - charset-normalizer=2.0.12=pyhd8ed1ab_0
  - click=8.1.2=py38h578d9bd_0
  - click-plugins=1.1.1=py_0
  - cligj=0.7.2=pyhd8ed1ab_1
  - climpred=2.2.0=pyhd8ed1ab_0
  - clisops=0.8.0=pyh6c4a22f_0
  - cloudpickle=2.0.0=pyhd8ed1ab_0
  - colorama=0.4.4=pyh9f0ad1d_0
  - colorcet=3.0.0=pyhd8ed1ab_0
  - configurable-http-proxy=4.5.0=node16_h3b247e2_2
  - coverage=6.3.2=py38h0a891b7_2
  - cryptography=36.0.2=py38h2b5fc30_0
  - curl=7.82.0=h7bff187_0
  - cycler=0.11.0=pyhd8ed1ab_0
  - cytoolz=0.11.2=py38h497a2fe_1
  - dash=2.3.1=pyhd8ed1ab_0
  - dask=2022.1.0=pyhd8ed1ab_0
  - dask-core=2022.1.0=pyhd8ed1ab_0
  - datashader=0.13.0=pyh6c4a22f_0
  - datashape=0.5.4=py_1
  - dbus=1.13.6=h5008d03_3
  - debugpy=1.5.1=py38h709712a_0
  - decorator=5.1.1=pyhd8ed1ab_0
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - descartes=1.1.0=py_4
  - distarray=2.12.2=pyhd8ed1ab_2
  - distlib=0.3.4=pyhd8ed1ab_0
  - distributed=2022.1.0=py38h578d9bd_0
  - docopt=0.6.2=py_1
  - docrep=0.3.2=pyh44b312d_0
  - eccodes=2.25.0=hc08acdf_0
  - elfutils=0.186=he364ef2_0
  - entrypoints=0.4=pyhd8ed1ab_0
  - eofs=1.4.0=py_0
  - esgf-compute-api=2.3.9=0_h1234567_
  - esmf=8.2.0=mpi_mpich_h4975321_100
  - esmpy=8.2.0=mpi_mpich_py38h9147699_101
  - executing=0.8.3=pyhd8ed1ab_0
  - expat=2.4.8=h27087fc_0
  - fasteners=0.17.3=pyhd8ed1ab_0
  - fastprogress=1.0.2=pyhd8ed1ab_0
  - filelock=3.6.0=pyhd8ed1ab_0
  - findlibs=0.0.2=pyhd8ed1ab_0
  - fiona=1.8.20=py38hbb147eb_2
  - flask=2.1.1=pyhd8ed1ab_0
  - flask-compress=1.11=pyhd8ed1ab_0
  - flit-core=3.7.1=pyhd8ed1ab_0
  - folium=0.12.1.post1=pyhd8ed1ab_1
  - 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.13.96=h8e229c2_2
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - fonttools=4.31.2=py38h0a891b7_0
  - freeglut=3.2.2=h9c3ff4c_1
  - freetype=2.10.4=h0708190_1
  - freexl=1.0.6=h7f98852_0
  - frozenlist=1.3.0=py38h0a891b7_1
  - fsspec=2022.2.0=pyhd8ed1ab_0
  - funcsigs=1.0.2=py_3
  - future=0.18.2=py38h578d9bd_4
  - g2clib=1.6.3=heb9ad7a_1
  - gcsfs=2022.2.0=pyhd8ed1ab_0
  - gdal=3.3.3=py38hcf2042a_0
  - geckodriver=0.30.0=h3146498_0
  - geopandas=0.10.2=pyhd8ed1ab_1
  - geopandas-base=0.10.2=pyha770c72_1
  - geos=3.9.1=h9c3ff4c_2
  - geotiff=1.7.0=hcfb7246_3
  - geoviews=1.9.5=pyhd8ed1ab_0
  - geoviews-core=1.9.5=pyha770c72_0
  - gettext=0.19.8.1=h73d1719_1008
  - giflib=5.2.1=h36c2ea0_2
  - gitdb=4.0.9=pyhd8ed1ab_0
  - gitpython=3.1.27=pyhd8ed1ab_0
  - gnutls=3.6.13=h85f3911_1
  - google-api-core=2.5.0=pyhd8ed1ab_0
  - google-auth=2.6.2=pyh6c4a22f_0
  - google-auth-oauthlib=0.5.1=pyhd8ed1ab_0
  - google-cloud-core=2.2.2=pyh6c4a22f_0
  - google-cloud-storage=2.1.0=pyh6c4a22f_0
  - google-crc32c=1.1.2=py38h8838a9a_2
  - google-resumable-media=2.1.0=pyh6c4a22f_0
  - googleapis-common-protos=1.56.0=py38h578d9bd_0
  - greenlet=1.1.2=py38h709712a_1
  - grpcio=1.45.0=py38ha0cdfde_0
  - gst-plugins-base=1.18.5=hf529b03_3
  - gstreamer=1.18.5=h9f60fe5_3
  - h11=0.13.0=pyhd8ed1ab_0
  - h5netcdf=1.0.0=pyhd8ed1ab_0
  - h5py=3.6.0=nompi_py38hfbb2109_100
  - haversine=2.5.1=pyhd8ed1ab_0
  - hdf4=4.2.15=h10796ff_3
  - hdf5=1.12.1=mpi_mpich_h08b82f9_4
  - heapdict=1.0.1=py_0
  - holoviews=1.14.8=pyhd8ed1ab_0
  - hvplot=0.7.3=pyh6c4a22f_0
  - icu=68.2=h9c3ff4c_0
  - identify=2.4.12=pyhd8ed1ab_0
  - idna=3.3=pyhd8ed1ab_0
  - imagecodecs-lite=2019.12.3=py38h6c62de6_4
  - imageio=2.16.1=pyhcf75d05_0
  - importlib-metadata=4.11.3=py38h578d9bd_1
  - importlib_metadata=4.11.3=hd8ed1ab_1
  - importlib_resources=5.6.0=pyhd8ed1ab_0
  - iniconfig=1.1.1=pyh9f0ad1d_0
  - intake=0.6.5=pyhd8ed1ab_0
  - intake-esm=2021.8.17=pyhd8ed1ab_0
  - intake-geopandas=0.4.0=pyhd8ed1ab_0
  - intake-thredds=2021.6.16=pyhd8ed1ab_0
  - intake-xarray=0.6.0=pyhd8ed1ab_0
  - ipykernel=6.11.0=py38h7f3c49e_0
  - ipyleaflet=0.15.0=pyhd8ed1ab_3
  - ipython=8.2.0=py38h578d9bd_0
  - ipython_genutils=0.2.0=py_1
  - ipywidgets=7.7.0=pyhd8ed1ab_0
  - itsdangerous=2.1.2=pyhd8ed1ab_0
  - jasper=2.0.33=ha77e612_0
  - jbig=2.1=h7f98852_2003
  - jedi=0.18.1=py38h578d9bd_0
  - jinja2=3.1.1=pyhd8ed1ab_0
  - jmespath=0.10.0=pyh9f0ad1d_0
  - joblib=1.1.0=pyhd8ed1ab_0
  - jpeg=9e=h7f98852_0
  - json-c=0.15=h98cffda_0
  - json5=0.9.5=pyh9f0ad1d_0
  - jsonpickle=2.1.0=pyhd8ed1ab_0
  - jsonschema=4.4.0=pyhd8ed1ab_0
  - jupyter=1.0.0=py38h578d9bd_7
  - jupyter-archive=3.3.0=pyhd8ed1ab_1
  - jupyter-dash=0.4.1=pyhd8ed1ab_2
  - jupyter-resource-usage=0.5.1=pyhd8ed1ab_0
  - jupyter-server-mathjax=0.2.5=pyhc268e32_0
  - jupyter_bokeh=3.0.4=pyhd8ed1ab_0
  - jupyter_client=7.2.1=pyhd8ed1ab_0
  - jupyter_console=6.4.3=pyhd8ed1ab_0
  - jupyter_core=4.9.2=py38h578d9bd_0
  - jupyter_server=1.16.0=pyhd8ed1ab_1
  - jupyter_telemetry=0.1.0=pyhd8ed1ab_1
  - jupyterhub=2.2.2=hd8ed1ab_0
  - jupyterhub-base=2.2.2=pyhd8ed1ab_0
  - jupyterlab=3.3.2=pyhd8ed1ab_0
  - jupyterlab-git=0.36.0=pyhd8ed1ab_0
  - jupyterlab-system-monitor=0.8.0=pyhd8ed1ab_1
  - jupyterlab-topbar=0.6.1=pyhd8ed1ab_2
  - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
  - jupyterlab_server=2.12.0=pyhd8ed1ab_0
  - jupyterlab_widgets=1.1.0=pyhd8ed1ab_0
  - jupytext=1.13.7=pyhd0ecf6b_0
  - kealib=1.4.14=h87e4c3c_3
  - keyutils=1.6.1=h166bdaf_0
  - kiwisolver=1.4.2=py38h43d8883_0
  - krb5=1.19.3=h3790be6_0
  - lazy-object-proxy=1.7.1=py38h497a2fe_0
  - lcms2=2.12=hddcbb42_0
  - ld_impl_linux-64=2.36.1=hea4e1c9_2
  - lerc=3.0=h9c3ff4c_0
  - libaec=1.0.6=h9c3ff4c_0
  - libarchive=3.5.2=hccf745f_1
  - libblas=3.9.0=13_linux64_openblas
  - libbrotlicommon=1.0.9=h7f98852_6
  - libbrotlidec=1.0.9=h7f98852_6
  - libbrotlienc=1.0.9=h7f98852_6
  - libcblas=3.9.0=13_linux64_openblas
  - libcdms=3.1.2=h3bdf4ba_117
  - libcf=1.0.3=py38h80f51ce_113
  - libclang=11.1.0=default_ha53f305_1
  - libcrc32c=1.1.2=h9c3ff4c_0
  - libcurl=7.82.0=h7bff187_0
  - libdap4=3.20.6=hd7c4107_2
  - libdeflate=1.10=h7f98852_0
  - libdrm=2.4.109=h7f98852_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=h9b69904_4
  - libffi=3.4.2=h7f98852_5
  - libgcc-ng=11.2.0=h1d223b6_14
  - libgdal=3.3.3=h356f897_0
  - libgfortran-ng=11.2.0=h69a702a_14
  - libgfortran5=11.2.0=h5c6108e_14
  - libglib=2.70.2=h174f98d_4
  - libglu=9.0.0=he1b5a44_1001
  - libgomp=11.2.0=h1d223b6_14
  - libiconv=1.16=h516909a_0
  - libidn2=2.3.2=h7f98852_0
  - libkml=1.3.0=h238a007_1014
  - liblapack=3.9.0=13_linux64_openblas
  - libllvm11=11.1.0=hf817b99_3
  - libmicrohttpd=0.9.75=h7f98852_0
  - libnetcdf=4.8.1=mpi_mpich_h319fa22_1
  - libnghttp2=1.47.0=h727a467_0
  - libnsl=2.0.0=h7f98852_0
  - libogg=1.3.4=h7f98852_1
  - libopenblas=0.3.18=pthreads_h8fe5266_0
  - libopus=1.3.1=h7f98852_1
  - libpciaccess=0.16=h516909a_0
  - libpng=1.6.37=h21135ba_2
  - libpq=13.5=hd57d9b9_1
  - libprotobuf=3.20.0=h6239696_0
  - librttopo=1.1.0=h1185371_6
  - libsodium=1.0.18=h36c2ea0_1
  - libspatialindex=1.9.3=h9c3ff4c_4
  - libspatialite=5.0.1=h8796b1e_9
  - libssh2=1.10.0=ha56f1ee_2
  - libstdcxx-ng=11.2.0=he4da1e4_14
  - libtiff=4.3.0=h542a066_3
  - libunistring=0.9.10=h7f98852_0
  - libuuid=2.32.1=h7f98852_1000
  - libuv=1.40.0=h7f98852_0
  - libvorbis=1.3.7=h9c3ff4c_0
  - libwebp=1.2.2=h3452ae3_0
  - libwebp-base=1.2.2=h7f98852_1
  - libxcb=1.13=h7f98852_1004
  - libxkbcommon=1.0.3=he3ba5ed_0
  - libxml2=2.9.12=h72842e0_0
  - libxslt=1.1.33=h15afd5d_2
  - libzip=1.8.0=h4de3113_1
  - libzlib=1.2.11=h166bdaf_1014
  - llvmlite=0.38.0=py38h4630a5e_0
  - locket=0.2.0=py_2
  - lxml=4.8.0=py38h0a891b7_1
  - lz4=3.1.10=py38hebdc3cf_0
  - lz4-c=1.9.3=h9c3ff4c_1
  - lzo=2.10=h516909a_1000
  - mako=1.2.0=pyhd8ed1ab_0
  - mamba_gator=5.1.2=pyhd8ed1ab_0
  - mapclassify=2.4.3=pyhd8ed1ab_0
  - markdown=3.3.6=pyhd8ed1ab_0
  - markdown-it-py=1.1.0=pyhd8ed1ab_0
  - markupsafe=2.1.1=py38h0a891b7_1
  - matplotlib=3.5.1=py38h578d9bd_0
  - matplotlib-base=3.5.1=py38hf4fb855_0
  - matplotlib-inline=0.1.3=pyhd8ed1ab_0
  - mdit-py-plugins=0.3.0=pyhd8ed1ab_0
  - memory_profiler=0.60.0=pyhd8ed1ab_0
  - mesalib=21.2.5=h0e4506f_3
  - mistune=0.8.4=py38h497a2fe_1005
  - mpi=1.0=mpich
  - mpi4py=3.1.3=py38he865349_0
  - mpich=4.0.1=h846660c_100
  - msgpack-python=1.0.3=py38h43d8883_1
  - multidict=6.0.2=py38h497a2fe_0
  - multipledispatch=0.6.0=py_0
  - munch=2.5.0=py_0
  - munkres=1.1.4=pyh9f0ad1d_0
  - mysql-common=8.0.28=haf5c9bc_2
  - mysql-libs=8.0.28=h28c427c_2
  - nbclassic=0.3.7=pyhd8ed1ab_0
  - nbclient=0.5.13=pyhd8ed1ab_0
  - nbconvert=6.4.5=py38h578d9bd_0
  - nbconvert-core=6.4.5=pyhd8ed1ab_1
  - nbdime=3.1.1=pyhd8ed1ab_0
  - nbformat=5.2.0=pyhd8ed1ab_0
  - nbresuse=0.4.0=pyhd8ed1ab_0
  - nbval=0.9.6=pyh9f0ad1d_0
  - nc-time-axis=1.4.0=pyhd8ed1ab_0
  - ncurses=6.3=h9c3ff4c_0
  - nest-asyncio=1.5.4=pyhd8ed1ab_0
  - nested_dict=1.61=pyhd3deb0d_0
  - netcdf-fortran=4.5.4=mpi_mpich_h1364a43_0
  - netcdf4=1.5.8=nompi_py38h2823cc8_101
  - nettle=3.6=he412f7d_0
  - networkx=2.7.1=pyhd8ed1ab_1
  - nodeenv=1.6.0=pyhd8ed1ab_0
  - nodejs=16.13.1=hb931c9a_0
  - notebook=6.4.10=pyha770c72_0
  - notebook-shim=0.1.0=pyhd8ed1ab_0
  - nspr=4.32=h9c3ff4c_1
  - nss=3.77=h2350873_0
  - numba=0.55.1=py38h4bf6c61_0
  - numcodecs=0.9.1=py38h709712a_2
  - numpy=1.21.5=py38h87f13fb_0
  - oauthlib=3.2.0=pyhd8ed1ab_0
  - openblas=0.3.18=pthreads_h4748800_0
  - openjpeg=2.4.0=hb52868f_1
  - openssl=1.1.1n=h166bdaf_0
  - ostrich=21.03.16=h4bd325d_1
  - outcome=1.1.0=pyhd8ed1ab_0
  - owslib=0.25.0=pyhd8ed1ab_0
  - packaging=21.3=pyhd8ed1ab_0
  - pamela=1.0.0=py_0
  - pandas=1.4.1=py38h43a58ef_0
  - pandoc=2.17.1.1=ha770c72_0
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - panel=0.12.7=pyhd8ed1ab_0
  - param=1.12.1=pyh6c4a22f_0
  - paramiko=2.10.3=pyhd8ed1ab_0
  - parso=0.8.3=pyhd8ed1ab_0
  - partd=1.2.0=pyhd8ed1ab_0
  - patsy=0.5.2=pyhd8ed1ab_0
  - pcre=8.45=h9c3ff4c_0
  - pexpect=4.8.0=py38h32f6830_1
  - pickleshare=0.7.5=py38h32f6830_1002
  - pillow=9.0.1=py38h0ee0e06_2
  - pint=0.18=pyhd8ed1ab_0
  - pip=22.0.4=pyhd8ed1ab_0
  - pixman=0.40.0=h36c2ea0_0
  - platformdirs=2.5.1=pyhd8ed1ab_0
  - plotly=5.6.0=pyhd8ed1ab_0
  - pluggy=1.0.0=py38h578d9bd_3
  - pooch=1.6.0=pyhd8ed1ab_0
  - poppler=21.09.0=ha39eefc_3
  - poppler-data=0.4.11=hd8ed1ab_0
  - postgresql=13.5=h2510834_1
  - pre-commit=2.17.0=py38h578d9bd_0
  - proj=8.1.1=h277dcde_2
  - prometheus_client=0.13.1=pyhd8ed1ab_0
  - prompt-toolkit=3.0.27=pyha770c72_0
  - prompt_toolkit=3.0.27=hd8ed1ab_0
  - properscoring=0.1=py_0
  - protobuf=3.20.0=py38hfa26641_0
  - pscript=0.7.5=pyhd3deb0d_0
  - psutil=5.9.0=py38h497a2fe_0
  - pthread-stubs=0.4=h36c2ea0_1001
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - pure_eval=0.2.2=pyhd8ed1ab_0
  - py=1.11.0=pyh6c4a22f_0
  - 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=py38h61f0cdf_0
  - pydantic=1.9.0=py38h497a2fe_0
  - pydap=3.3.0=pyhd8ed1ab_0
  - pygeos=0.10.2=py38hb7fe4a8_0
  - pygments=2.11.2=pyhd8ed1ab_0
  - pyjwt=2.3.0=pyhd8ed1ab_1
  - pynacl=1.5.0=py38h497a2fe_0
  - pyopenssl=22.0.0=pyhd8ed1ab_0
  - pyparsing=3.0.7=pyhd8ed1ab_0
  - pyproj=3.2.1=py38h80797bf_2
  - pyqt=5.12.3=py38h578d9bd_8
  - pyqt-impl=5.12.3=py38h0ffb2e6_8
  - pyqt5-sip=4.19.18=py38h709712a_8
  - pyqtchart=5.12=py38h7400c14_8
  - pyqtwebengine=5.12.1=py38h7400c14_8
  - pyrsistent=0.18.1=py38h497a2fe_0
  - pyshp=2.2.0=pyhd8ed1ab_0
  - pysocks=1.7.1=py38h578d9bd_4
  - pytest=7.1.1=py38h578d9bd_1
  - python=3.8.13=h582c2e5_0_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python-eccodes=1.4.0=py38h71d37f0_0
  - python-json-logger=2.0.1=pyh9f0ad1d_0
  - python_abi=3.8=2_cp38
  - pytz=2022.1=pyhd8ed1ab_0
  - pyu2f=0.1.5=pyhd8ed1ab_0
  - pyviz_comms=2.2.0=pyhd8ed1ab_0
  - pywavelets=1.3.0=py38h3ec907f_0
  - pyyaml=6.0=py38h0a891b7_4
  - pyzmq=22.3.0=py38h2035c66_1
  - qt=5.12.9=hda022c4_4
  - qtconsole=5.3.0=pyhd8ed1ab_0
  - qtconsole-base=5.3.0=pyhd8ed1ab_0
  - qtpy=2.0.1=pyhd8ed1ab_0
  - rasterio=1.2.10=py38hfd64e68_0
  - raven-hydro=3.0.4.322=ha46ed4c_2
  - ravenpy=0.7.8=pyh8a188c0_0
  - readline=8.1=h46c0cb4_0
  - regionmask=0.9.0=pyhd8ed1ab_0
  - requests=2.27.1=pyhd8ed1ab_0
  - requests-oauthlib=1.3.1=pyhd8ed1ab_0
  - retrying=1.3.3=py_2
  - rioxarray=0.10.3=pyhd8ed1ab_0
  - roocs-utils=0.5.0=pyh6c4a22f_0
  - rsa=4.8=pyhd8ed1ab_0
  - rtree=0.9.7=py38h02d302b_3
  - ruamel.yaml=0.17.21=py38h497a2fe_0
  - ruamel.yaml.clib=0.2.6=py38h497a2fe_0
  - s3fs=2022.2.0=pyhd8ed1ab_1
  - scikit-image=0.19.2=py38h43a58ef_0
  - scikit-learn=1.0.2=py38h1561384_0
  - scipy=1.8.0=py38h56a6a73_1
  - scp=0.14.4=pyhd8ed1ab_0
  - selenium=4.1.0=pyhd8ed1ab_0
  - send2trash=1.8.0=pyhd8ed1ab_0
  - shapely=1.7.1=py38hb7fe4a8_5
  - siphon=0.9=py38h578d9bd_1
  - six=1.16.0=pyh6c4a22f_0
  - smmap=3.0.5=pyh44b312d_0
  - sniffio=1.2.0=py38h578d9bd_3
  - snuggs=1.4.7=py_0
  - sortedcontainers=2.4.0=pyhd8ed1ab_0
  - soupsieve=2.3.1=pyhd8ed1ab_0
  - sparse=0.13.0=pyhd8ed1ab_0
  - sqlalchemy=1.4.33=py38h0a891b7_0
  - sqlite=3.37.1=h4ff8645_0
  - stack_data=0.2.0=pyhd8ed1ab_0
  - statsmodels=0.13.2=py38h6c62de6_0
  - tblib=1.7.0=pyhd8ed1ab_0
  - tenacity=8.0.1=pyhd8ed1ab_0
  - terminado=0.13.3=py38h578d9bd_0
  - testpath=0.6.0=pyhd8ed1ab_0
  - threadpoolctl=3.1.0=pyh8a188c0_0
  - threddsclient=0.4.2=py_0
  - tifffile=2020.6.3=py_0
  - tiledb=2.3.4=he87e0bf_0
  - tk=8.6.12=h27826a3_0
  - toml=0.10.2=pyhd8ed1ab_0
  - tomli=2.0.1=pyhd8ed1ab_0
  - toolz=0.11.2=pyhd8ed1ab_0
  - tornado=6.1=py38h0a891b7_3
  - tqdm=4.63.1=pyhd8ed1ab_0
  - traitlets=5.1.1=pyhd8ed1ab_0
  - traittypes=0.2.1=pyh9f0ad1d_2
  - trio=0.20.0=py38h578d9bd_0
  - trio-websocket=0.9.2=pyhd8ed1ab_0
  - typing-extensions=4.1.1=hd8ed1ab_0
  - typing_extensions=4.1.1=pyha770c72_0
  - tzcode=2022a=h166bdaf_0
  - tzdata=2022a=h191b570_0
  - ukkonen=1.0.1=py38h1fd1430_1
  - unicodedata2=14.0.0=py38h497a2fe_0
  - urllib3=1.26.9=pyhd8ed1ab_0
  - virtualenv=20.14.0=py38h578d9bd_1
  - voila=0.3.5=pyhd8ed1ab_0
  - wcwidth=0.2.5=pyh9f0ad1d_2
  - webencodings=0.5.1=py_1
  - webob=1.8.7=pyhd8ed1ab_0
  - websocket-client=1.3.2=pyhd8ed1ab_0
  - websockets=10.2=py38h0a891b7_0
  - werkzeug=2.1.0=pyhd8ed1ab_0
  - wget=1.20.3=ha56f1ee_1
  - wheel=0.37.1=pyhd8ed1ab_0
  - widgetsnbextension=3.6.0=py38h578d9bd_0
  - wrapt=1.14.0=py38h0a891b7_0
  - wsproto=1.1.0=py38h578d9bd_0
  - xarray=2022.3.0=pyhd8ed1ab_0
  - xclim=0.34.0=pyhd8ed1ab_0
  - xerces-c=3.2.3=h9d8b166_3
  - xesmf=0.6.2=pyhd8ed1ab_0
  - xeus=2.4.0=hab3612f_0
  - xeus-python=0.13.6=py38h9f61dbb_2
  - xeus-python-shell=0.2.0=pyhd8ed1ab_0
  - xhistogram=0.3.1=pyhd8ed1ab_0
  - xlrd=2.0.1=pyhd8ed1ab_3
  - 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.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-libxdamage=1.1.5=h7f98852_1
  - xorg-libxdmcp=1.1.3=h7f98852_0
  - xorg-libxext=1.3.4=h7f98852_1
  - 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=h7f98852_1002
  - xorg-xf86vidmodeproto=2.3.1=h7f98852_1002
  - xorg-xproto=7.0.31=h7f98852_1007
  - xrft=0.4.1=pyhd8ed1ab_0
  - xskillscore=0.0.24=pyhd8ed1ab_0
  - xyzservices=2022.3.0=pyhd8ed1ab_0
  - xz=5.2.5=h516909a_1
  - yaml=0.2.5=h7f98852_2
  - yarl=1.7.2=py38h497a2fe_1
  - zarr=2.11.1=pyhd8ed1ab_0
  - zeromq=4.3.4=h9c3ff4c_1
  - zict=2.1.0=pyhd8ed1ab_0
  - zipp=3.7.0=pyhd8ed1ab_1
  - zlib=1.2.11=h166bdaf_1014
  - zstd=1.5.2=ha95c52a_0
  - pip:
    - astunparse==1.6.3
    - colour==0.1.5
    - geojson==2.5.0
    - handcalcs==1.4.1
    - innerscope==0.5.1
    - ipython-blocking==0.3.1
    - jupyterlab-logout==0.5.0
    - jupyternotify==0.1.15
    - more-itertools==8.12.0
    - pixiedust==1.1.19
    - pymetalink==6.4
    - pytest-tornasync==0.6.0.post2
    - requests-magpie==0.1.1
    - setuptools==61.3.0
prefix: /opt/conda/envs/birdy
```
  • Loading branch information
tlvu authored Apr 7, 2022
2 parents 8dae868 + ce9182f commit c74ad1e
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 7 deletions.
2 changes: 1 addition & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ pipeline {
// https://jenkins.io/doc/book/pipeline/syntax/
agent {
docker {
image "pavics/workflow-tests:220121"
image "pavics/workflow-tests:220401"
label 'linux && docker'
}
}
Expand Down
2 changes: 1 addition & 1 deletion binder/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM pavics/workflow-tests:220121
FROM pavics/workflow-tests:220401

USER root

Expand Down
3 changes: 2 additions & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@ RUN wget https://raw.githubusercontent.com/jupyter/docker-stacks/$DOCKER_STACKS_
wget https://raw.githubusercontent.com/jupyter/docker-stacks/$DOCKER_STACKS_COMMIT/base-notebook/jupyter_notebook_config.py --output-document /etc/jupyter/jupyter_notebook_config.py && \
chmod a+rx /usr/local/bin/start.sh /usr/local/bin/start-singleuser.sh /usr/local/bin/start-notebook.sh /usr/local/bin/fix-permissions && \
chmod a+r /etc/jupyter/jupyter_notebook_config.py && \
mkdir /notebook_dir && chown jenkins /notebook_dir
mkdir /notebook_dir && chown jenkins /notebook_dir && \
chmod a+rwX -R /opt/conda/envs/birdy/fonts

# problem running start-notebook.sh when being root
# the jupyter/base-notebook image also do not default to root user so we do the same here
Expand Down
8 changes: 6 additions & 2 deletions docker/Dockerfile.testing
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
# For testing quickly without having to do a full rebuild.

FROM pavics/workflow-tests:211221
FROM pavics/workflow-tests:220201

USER root

# Use 'update' for existing and 'install' for new package.
# Keep same channel ordering to not revert anything.
# Pin dask and distributed for slow PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb.
# Pin cf_xarray for slow WPS_example.ipynb.
RUN umask 0000 \
&& mamba install -c conda-forge -c cdat -c bokeh -c plotly -c defaults -n birdy "shapely<=1.7.1" "bokeh<=2.3.3"
&& conda install -c conda-forge mamba -n base \
&& mamba install -c conda-forge -c cdat -c bokeh -c plotly -c defaults -n birdy "dask<=2022.1.0" "distributed<=2022.1.0" "cf_xarray<=0.6.3" \
&& conda remove mamba -n base
# && pip uninstall -y ravenpy \
# && mamba install -c conda-forge -c cdat -c bokeh -c plotly -c defaults -n birdy ravenpy aiohttp

Expand Down
12 changes: 12 additions & 0 deletions docker/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,15 @@ dependencies:
- xclim >= 0.32.1
- ravenpy >= 0.7.8

# Pin dask and distributed for slow PAVICStutorial_ClimateDataAnalysis-3Climate-Indicators.ipynb.
# Same as in commit https://github.com/bird-house/finch/pull/226/commits/7bf4a7e1bcb12bc88d15bdcbbd484e81106be67c
# See issue https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/issues/100
- dask <= 2022.1.0
- distributed <= 2022.1.0

# Pin cf_xarray for slow WPS_example.ipynb.
- cf_xarray<=0.6.3

- matplotlib
# - xarray # from xclim and ravenpy
# - numpy # from xclim and ravenpy
Expand Down Expand Up @@ -88,6 +97,7 @@ dependencies:
- s3fs
# - shapely # from ravenpy
# PIN shapely due to notebook failure
# See issue https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/issues/99
# PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb:
# /opt/conda/envs/birdy/lib/python3.7/site-packages/shapely/geometry/base.py in array_interface_base(self)
# 324 "removed in Shapely 2.0.",
Expand Down Expand Up @@ -173,6 +183,8 @@ dependencies:
- scp
- selenium
- geckodriver
- xlrd
- pre-commit
# for pip packages
- pip
- pip:
Expand Down
2 changes: 1 addition & 1 deletion launchcontainer
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/sh -x

if [ -z "$DOCKER_IMAGE" ]; then
DOCKER_IMAGE="pavics/workflow-tests:220121"
DOCKER_IMAGE="pavics/workflow-tests:220401"
fi

if [ -z "$CONTAINER_NAME" ]; then
Expand Down
2 changes: 1 addition & 1 deletion launchnotebook
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ if [ -z "$PORT" ]; then
fi

if [ -z "$DOCKER_IMAGE" ]; then
DOCKER_IMAGE="pavics/workflow-tests:220121"
DOCKER_IMAGE="pavics/workflow-tests:220401"
fi

if [ -z "$CONTAINER_NAME" ]; then
Expand Down

0 comments on commit c74ad1e

Please sign in to comment.