Skip to content

Commit

Permalink
Jupyter docker: new build for xclim, ravenpy, globus personal connect…
Browse files Browse the repository at this point in the history
… 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            …
  • Loading branch information
tlvu authored Jun 1, 2023
2 parents 597529c + 9f372ec commit 3191ff5
Show file tree
Hide file tree
Showing 12 changed files with 130 additions and 35 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
pavics-sdi-*/
finch-*/
raven-*/
RavenPy-*/
esgf-compute-api-*/
PAVICS-landing-*/

Expand Down
23 changes: 20 additions & 3 deletions 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:221130-update230403"
image "pavics/workflow-tests:230530-1"
label 'linux && docker'
}
}
Expand Down Expand Up @@ -66,14 +66,20 @@ Requires 'weaver' component to be active on the target 'PAVICS_HOST' server
description: 'RAVEN_REPO branch to test against.', trim: true)
string(name: 'RAVEN_REPO', defaultValue: 'Ouranosinc/raven',
description: 'https://github.com/Ouranosinc/raven repo or fork to test against.', trim: true)
booleanParam(name: 'TEST_RAVENPY_REPO', defaultValue: false,
description: 'Check the box to test RavenPy repo.')
string(name: 'RAVENPY_BRANCH', defaultValue: 'master',
description: 'RAVENPY_REPO branch to test against.', trim: true)
string(name: 'RAVENPY_REPO', defaultValue: 'CSHS-CWRA/RavenPy',
description: 'https://github.com/CSHS-CWRA/RavenPy repo or fork to test against.', trim: true)
booleanParam(name: 'TEST_ESGF_COMPUTE_API_REPO', defaultValue: false,
description: 'Check the box to test esgf-compute-api repo.')
string(name: 'ESGF_COMPUTE_API_BRANCH', defaultValue: 'devel',
description: 'ESGF_COMPUTE_API_REPO branch to test against.', trim: true)
string(name: 'ESGF_COMPUTE_API_REPO', defaultValue: 'ESGF/esgf-compute-api',
description: 'https://github.com/ESGF/esgf-compute-api repo or fork to test against.', trim: true)
string(name: 'PYTEST_EXTRA_OPTS', defaultValue: '',
description: 'Extra options to pass to pytest, ex: --nbval-lax', trim: true)
string(name: 'PYTEST_EXTRA_OPTS', defaultValue: '--dist=loadscope --numprocesses=0',
description: 'Extra options to pass to pytest, ex: --nbval-lax --dist=loadscope --numprocesses=0', trim: true)
string(name: 'EXTRA_TEST_ENV_VAR', defaultValue: '',
description: 'Extra environment variables for the various tests, ex: "TEST_RUNS=50 TEST_WPS_BIRDS=finch,raven,flyingpigeon TEST_NO_USE_PROD_DATA=1"', trim: true)
booleanParam(name: 'TEST_LOCAL_NOTEBOOKS', defaultValue: true,
Expand Down Expand Up @@ -101,6 +107,16 @@ Note this is another run, will double the time and no guaranty to have same erro
variable: 'ESGF_AUTH_TOKEN'), // Kept old env var name for backward compat
string(credentialsId: 'esgf_auth_token',
variable: 'COMPUTE_TOKEN'), // ESGF expect this env var name
// For RavenPy HydroShare_integration.ipynb once a token is really required.
// Not enable immediately to not force all existing Jenkins deployments
// to add theses new credentials.
// See required Jenkins config change
// https://github.com/Ouranosinc/jenkins-config/commit/c6b36cfb761b5093375225a121ef5ec04684e84b
// https://github.com/Ouranosinc/jenkins-config/pull/15
// string(credentialsId: 'hydroshare_auth_client_id',
// variable: 'HYDROSHARE_AUTH_CLIENT_ID'),
// string(credentialsId: 'hydroshare_auth_token',
// variable: 'HYDROSHARE_AUTH_TOKEN'),
]) {
sh("VERIFY_SSL=${params.VERIFY_SSL} \
SAVE_RESULTING_NOTEBOOK=${params.SAVE_RESULTING_NOTEBOOK} \
Expand All @@ -118,6 +134,7 @@ Note this is another run, will double the time and no guaranty to have same erro
archiveArtifacts(artifacts: 'pavics-sdi-*/docs/source/notebook-components/*.ipynb', fingerprint: true)
archiveArtifacts(artifacts: 'finch-*/docs/source/notebooks/*.ipynb', fingerprint: true)
archiveArtifacts(artifacts: 'raven-*/docs/source/notebooks/*.ipynb', fingerprint: true)
archiveArtifacts(artifacts: 'RavenPy-*/docs/notebooks/*.ipynb', fingerprint: true)
archiveArtifacts(artifacts: 'esgf-compute-api-*/examples/*.ipynb', fingerprint: true)
archiveArtifacts(artifacts: 'PAVICS-landing-*/content/notebooks/climate_indicators/*.ipynb', fingerprint: true)
archiveArtifacts(artifacts: 'buildout/*.output.ipynb', fingerprint: true, allowEmptyArchive: true)
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:221130-update230403
FROM pavics/workflow-tests:230530-1

USER root

Expand Down
14 changes: 9 additions & 5 deletions binder/reorg-notebooks
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@

# if name clash, last command wins

mv -v esgf-compute-api-$ESGF_COMPUTE_API_BRANCH/examples ./esgf-compute-api-examples-$ESGF_COMPUTE_API_BRANCH
rm -rfv esgf-compute-api-$ESGF_COMPUTE_API_BRANCH
rm -r esgf-compute-api-$ESGF_COMPUTE_API_BRANCH

mkdir raven
mv -v raven-${RAVEN_BRANCH}/docs/source/notebooks/*.ipynb ./raven/
mv -v RavenPy-${RAVENPY_BRANCH}/docs/notebooks/*.ipynb ./raven/
rm -r raven-${RAVEN_BRANCH} RavenPy-${RAVENPY_BRANCH}

if [ -n "$DEPLOY_PAVICS_LANDING_NB" ]; then
# Pavics landing notebooks already deployed to Jupyter env via
Expand All @@ -15,10 +19,10 @@ if [ -n "$DEPLOY_PAVICS_LANDING_NB" ]; then
mv -v PAVICS-landing-$PAVICS_LANDING_BRANCH/content/notebooks/climate_indicators ./pavics-homepage
rm -v ./pavics-homepage/*.html
fi
rm -rfv PAVICS-landing-$PAVICS_LANDING_BRANCH
rm -r PAVICS-landing-$PAVICS_LANDING_BRANCH

mv -v pavics-sdi-$PAVICS_SDI_BRANCH/docs/source/notebooks/*.ipynb ./
rm -rfv pavics-sdi-$PAVICS_SDI_BRANCH
rm -r pavics-sdi-$PAVICS_SDI_BRANCH

mv -v finch-$FINCH_BRANCH/docs/source/notebooks/*.ipynb ./
rm -rfv finch-$FINCH_BRANCH
rm -r finch-$FINCH_BRANCH
21 changes: 21 additions & 0 deletions default_build_params
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,27 @@ else
echo "RAVEN_REPO has been set to '$RAVEN_REPO'"
fi

if [ -z "$TEST_RAVENPY_REPO" ]; then
TEST_RAVENPY_REPO=false
echo "TEST_RAVENPY_REPO not set, default to '$TEST_RAVENPY_REPO'"
else
echo "TEST_RAVENPY_REPO has been set to '$TEST_RAVENPY_REPO'"
fi

if [ -z "$RAVENPY_BRANCH" ]; then
RAVENPY_BRANCH=master
echo "RAVENPY_BRANCH not set, default to '$RAVENPY_BRANCH'"
else
echo "RAVENPY_BRANCH has been set to '$RAVENPY_BRANCH'"
fi

if [ -z "$RAVENPY_REPO" ]; then
RAVENPY_REPO='CSHS-CWRA/RavenPy'
echo "RAVENPY_REPO not set, default to '$RAVENPY_REPO'"
else
echo "RAVENPY_REPO has been set to '$RAVENPY_REPO'"
fi

if [ -z "$TEST_ESGF_COMPUTE_API_REPO" ]; then
TEST_ESGF_COMPUTE_API_REPO=false
echo "TEST_ESGF_COMPUTE_API_REPO not set, default to '$TEST_ESGF_COMPUTE_API_REPO'"
Expand Down
31 changes: 22 additions & 9 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ FROM continuumio/miniconda3
# The 'channel_priority strict' did help conda but it was not enough.
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

Expand Down Expand Up @@ -42,14 +43,12 @@ COPY environment.yml /environment.yml
# Conda was stuck at this step:
# DEBUG conda.common._logic:_run_sat(607): Invoking SAT with clause count: 2500273
#
# Pin python=3.9 because python 3.10 cause this error:
# Encountered problems while solving:
# - package cartopy-0.20.1-py310h902574e_5 requires geos >=3.10.1,<3.10.2.0a0, but none of the providers can be installed
# This means there is no py310 build for geos package but https://anaconda.org/conda-forge/geos/files seems to be python indepdendent !
# Pin python=3.8 because according to DavidH, xESMF has not been tested with 3.9 yet.
# Python 3.10 cause this "ValueError: `popmean.shape[axis]` must equal 1." in
# homepage nb 4, see https://github.com/Ouranosinc/PAVICS-landing/issues/65
RUN umask 0000 && \
mamba create --name birdy --channel conda-forge --channel defaults xclim ravenpy python=3.8 --yes && \
mamba env update --name birdy --file /environment.yml
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

# alternate way to 'source activate birdy'
ENV PATH="/opt/conda/envs/birdy/bin:$PATH"
Expand Down Expand Up @@ -100,12 +99,26 @@ RUN wget https://raw.githubusercontent.com/jupyter/docker-stacks/$DOCKER_STACKS_
chmod a+r /etc/jupyter/jupyter_notebook_config.py && \
mkdir /notebook_dir && chown jenkins /notebook_dir && \
chmod a+rwX -R /opt/conda/envs/birdy/fonts && \
chmod a+rwX -R /opt/conda/pkgs/cache && \
chown jenkins:jenkins -R /opt/conda/pkgs/cache
mkdir /opt/conda/pkgs/cache && \
chown jenkins:jenkins -R /opt/conda/pkgs/cache && \
mkdir -p /usr/local/bin && \
wget https://downloads.globus.org/globus-connect-personal/linux/stable/globusconnectpersonal-latest.tgz -O /usr/local/bin/globusconnectpersonal-latest.tgz && \
tar xzf /usr/local/bin/globusconnectpersonal-latest.tgz -C /usr/local/bin/ && \
ln -vs /usr/local/bin/globusconnectpersonal*/globusconnectpersonal /usr/local/bin/globusconnectpersonal && \
rm -v /usr/local/bin/globusconnectpersonal-latest.tgz

# For jupyter-panel-proxy launcher.
ENV BOKEH_ALLOW_WS_ORIGIN "*"

# For import xesmf since esmf-8.4.0, see
# https://github.com/conda-forge/esmf-feedstock/issues/91
ENV ESMFMKFILE="/opt/conda/envs/birdy/lib/esmf.mk"

# To avoid error "PROJ: proj_create_from_database: Open of
# /opt/conda/envs/birdy/share/proj failed"
# This simulates a real `conda activate birdy`.
ENV PROJ_DATA="/opt/conda/envs/birdy/share/proj"

# 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
USER jenkins
Expand Down
16 changes: 8 additions & 8 deletions docker/Dockerfile.testing
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
# For testing quickly without having to do a full rebuild.

FROM pavics/workflow-tests:221130
FROM pavics/workflow-tests:230526-1

# To avoid error "PROJ: proj_create_from_database: Open of /opt/conda/envs/birdy/share/proj failed"
# This simulates a real `conda activate birdy`.
ENV PROJ_DATA="/opt/conda/envs/birdy/share/proj"
#ENV ESMFMKFILE="/opt/conda/envs/birdy/lib/esmf.mk"

#ENV PROJ_DATA="/opt/conda/envs/birdy/share/proj"

USER root

# Use 'update' for existing and 'install' for new package.
# Keep same channel ordering to not revert anything.
# esgf-pyclient for pavics-sdi esgf-dap.ipynb, PR https://github.com/Ouranosinc/pavics-sdi/pull/269
# xncml for gen_catalog refactoring, PR https://github.com/Ouranosinc/pavics-vdb/pull/46
RUN umask 0000 \
&& mamba install -c conda-forge -c cdat -c bokeh -c plotly -c pyston -c pyviz/label/dev -c defaults -n birdy esgf-pyclient \
&& pip install xncml
&& mamba install -c conda-forge -c cdat -c bokeh -c plotly -c pyviz/label/dev -c defaults -n birdy numpy==1.23.5 pytest-xdist \
&& mamba clean --all --yes
# && pip uninstall -y ravenpy \
# && mamba install -c conda-forge -c cdat -c bokeh -c plotly -c defaults -n birdy ravenpy aiohttp

#RUN umask 0000 \
# && python -m pip install --upgrade --force-reinstall --no-deps --no-cache-dir netcdf4==1.6.0 --no-binary netcdf4
# RUN apt-get update && \
# DEBIAN_FRONTEND=noninteractive apt-get install -y unzip && \
# apt-get clean && \
Expand Down
39 changes: 33 additions & 6 deletions docker/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ channels:
- cdat
- bokeh
- plotly # for jupyter-dash
- pyston
# - pyston
- pyviz/label/dev # for jupyter-panel-proxy, panel
- defaults

Expand All @@ -19,8 +19,8 @@ dependencies:

# Pin latest xclim and ravenpy to avoid downgrading during the second installation phase.
# Mamba is quicker to solve dependencies than conda, but it is less precise so accidental downgrades can happen.
- xclim >= 0.38.0
- ravenpy >= 0.7.8
- xclim >= 0.43.0
- ravenpy >= 0.12.0

#- dask # from xclim and ravenpy
#- distributed
Expand All @@ -32,9 +32,17 @@ dependencies:
- matplotlib
# - xarray # from xclim and ravenpy
# - numpy # from xclim and ravenpy
# TODO: unpin numpy, pinned for hvplot.quadmesh(rasterize=True)
# datashade=True is an alias
# See https://github.com/holoviz/hvplot/issues/1073
- numpy <= 1.23.5
# TODO: unpin cf_xarray due to https://github.com/xarray-contrib/cf-xarray/issues/442
- cf_xarray != 0.8.1
- birdy
# - owslib>=0.23.0 # from ravenpy
# - netcdf4 # from ravenpy
# TODO: remove libnetcdf PIN because https://github.com/Ouranosinc/PAVICS-landing/issues/66
- libnetcdf <= 4.8.1
# https://github.com/ecmwf/cfgrib
# Python interface to map GRIB files to the Unidata's Common Data Model v4
# following the CF Conventions.
Expand All @@ -47,6 +55,9 @@ dependencies:
# - geopandas # from ravenpy
# - pandas # from xclim and ravenpy
# - rioxarray # from ravenpy
# https://anaconda.org/conda-forge/pyogrio
# Vectorized vector I/O using GDAL
- pyogrio
- scikit-image
- ipyleaflet
- threddsclient
Expand All @@ -56,11 +67,12 @@ dependencies:
- jupyter_bokeh
- pscript
- h5netcdf
- panel >= 0.13.1a3
# TODO: remove panel pin when Analogues dashboard works
- panel <= 0.14.4
# https://github.com/holoviz/panel
- pyviz_comms # (was labextension pyviz/jupyterlab_pyviz in jupyterlab v2)
- holoviews
- geoviews
- geoviews >= 1.9.6
# this might still be relevant https://github.com/holoviz/hvplot/issues/498
# (violin plot not working with hvplot 0.6.0).
# Per this comment
Expand All @@ -70,6 +82,9 @@ dependencies:
# https://streamlit.io/
# https://anaconda.org/conda-forge/streamlit
- streamlit
# https://anaconda.org/conda-forge/seaborn
# Statistical data visualization
- seaborn
# python-pptx is a Python library for creating and updating PowerPoint (.pptx) files.
# https://python-pptx.readthedocs.io/en/latest/
# https://anaconda.org/conda-forge/python-pptx
Expand Down Expand Up @@ -120,6 +135,8 @@ dependencies:
- memory_profiler
# for esgf notebooks
- esgf-compute-api
# https://anaconda.org/conda-forge/esgf-pyclient (for pavics-sdi esgf-dap.ipynb)
- esgf-pyclient
- cdms2
# Disable vcs because it was forcing python downgrade to below 3.9.
# See https://github.com/CDAT/vcs/issues/457
Expand All @@ -129,6 +146,7 @@ dependencies:
- mesalib
# tests
- pytest
- pytest-xdist
- nbval
# to edit .ipynb
- jupyter
Expand Down Expand Up @@ -187,11 +205,20 @@ dependencies:
- geckodriver
- xlrd
- pre-commit
# pyston_lite_autoload blocked us from using newer Python than 3.8
# package pyston_lite_autoload-2.3.4-pyh44b312d_0 requires pyston_lite
# 2.3.4 py38h0a891b7_0, but none of the providers can be installed
# https://github.com/pyston/pyston/
- pyston_lite_autoload
# - pyston_lite_autoload
# for pip packages
- pip
- pip:
# https://pypi.org/project/xncml/
# Tools for manipulating and opening NCML (NetCDF Markup) files with/for xarray
- xncml
# https://pypi.org/project/hsclient/
# A python client for managing HydroShare resources, replaces hs_restclient
- hsclient
# visual debugger for Jupyter Notebook, not working with JupyterLab at this moment
- pixiedust
# block execution of 'run_all_cells' until user input finished
Expand Down
1 change: 1 addition & 0 deletions downloadrepos
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ if [ -z "$1" ]; then
downloadgithubrepos $FINCH_REPO $FINCH_BRANCH
downloadgithubrepos $PAVICS_LANDING_REPO $PAVICS_LANDING_BRANCH
downloadgithubrepos $RAVEN_REPO $RAVEN_BRANCH
downloadgithubrepos $RAVENPY_REPO $RAVENPY_BRANCH
downloadgithubrepos $ESGF_COMPUTE_API_REPO $ESGF_COMPUTE_API_BRANCH
else
set -x
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:221130-update230403"
DOCKER_IMAGE="pavics/workflow-tests:230530-1"
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:221130-update230403"
DOCKER_IMAGE="pavics/workflow-tests:230530-1"
fi

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

0 comments on commit 3191ff5

Please sign in to comment.