Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

fix root_dir support for "Render with Panel" green button #3469

Merged
merged 2 commits into from
Apr 29, 2022

Conversation

tlvu
Copy link
Contributor

@tlvu tlvu commented Apr 28, 2022

Regression introduced when calling fullpath(path) when path is an URL fragment. I think fullpath() was meant for path on disk only.

See discussion in #3440 (comment)

Regression introduced when calling `fullpath(path)` when `path` is an
URL fragment.  I think `fullpath()` was meant for path on disk only.
@tlvu
Copy link
Contributor Author

tlvu commented Apr 28, 2022

This is really odd, my fix seems to make the JupyterLab server restart each time I save the notebook to test the "Render on Save" checkbox.

This is my first PR. I do not really understand how this plugin is interacting with JupyterLab. Please help.

@philippjfr
Copy link
Member

Thanks @tlvu. I'll look at this later today, want this in 0.13.1 which I hope to release today or Monday.

@philippjfr
Copy link
Member

So I don't see the issue you're seeing at all. This works perfectly for me, and I can confirm that adding fullpath caused issues when setting the --notebook-url.

@philippjfr philippjfr merged commit e28703d into holoviz:master Apr 29, 2022
@philippjfr
Copy link
Member

So I don't see the mechanism by which this could force a restart either. The server extension is simply installed as an additional handler on the tornado server. If it's somehow killing or resetting jupyterlab then there's something else going on causing it to crash.

@tlvu
Copy link
Contributor Author

tlvu commented Apr 29, 2022

If it's somehow killing or resetting jupyterlab then there's something else going on causing it to crash.

@philippjfr You're right, completely my fault. I had --autoreload given to jupyter lab and I forgot about it. Sorry for the false alarm. "Render on Save" checkbox works very well now.

While continuing to investigate the restart issue above, I noticed this line

context = ApplicationContext(app, url=path)

Given path is now really "full path on disk" and not a URL fragment anymore, that line seems wrong. But when testing I do not observe anything wrong. Is it worth to still fix that line?

@philippjfr
Copy link
Member

Thanks @tlvu. Good catch, I don't think the ApplicationContext.url value is used for anything important, which is why it seems to have no adverse consequences. Should still fix it though.

tlvu added a commit to Ouranosinc/PAVICS-e2e-workflow-tests that referenced this pull request May 3, 2022
Remove this patch once a Panel release contain this PR
holoviz/panel#3469
tlvu added a commit to Ouranosinc/PAVICS-e2e-workflow-tests that referenced this pull request May 5, 2022
docker: new build for new XClim and to get Dask dashboard and Panel server app to work

# Overview

Still have to pin `dask` for performance and `shapely` for notebook error.

Dask dashboard and Panel server app work both by manually mapping `http://localhost:<PORT>` to `https://pavics.ouranos.ca/jupyter/user/<USER>/proxy/<PORT>` as seen in screenshots below:

![Screenshot from 2022-04-12 15-20-58](https://user-images.githubusercontent.com/11966697/163259294-97337abd-91e6-4832-b639-d7d2e89c353d.png) 

![Screenshot from 2022-04-12 16-29-06](https://user-images.githubusercontent.com/11966697/163264000-c2d0f993-8d4d-4eeb-8fa7-0cdce454c2f4.png)

The "Render with Panel" green button also works and avoid having to deal with manual URL rewrite:
![Screenshot from 2022-05-04 15-18-03](https://user-images.githubusercontent.com/11966697/166810160-f6989da4-6e8f-4407-8fd5-4ef71770e1f2.png)


## Relevant Changes

```diff
# new
>   - dask-labextension=5.2.0=pyhd8ed1ab_0
>   - jupyter-panel-proxy=0.2.0a2=py_0
>   - jupyter-server-proxy=3.2.1=pyhd8ed1ab_0

# removed, interfere with panel
<     - handcalcs==1.4.1

<   - xclim=0.34.0=pyhd8ed1ab_0
>   - xclim=0.36.0=pyhd8ed1ab_0

<   - cf_xarray=0.6.3=pyhd8ed1ab_0
>   - cf_xarray=0.7.2=pyhd8ed1ab_0

<   - clisops=0.8.0=pyh6c4a22f_0
>   - clisops=0.9.0=pyh6c4a22f_0

# downgrade by clisops
<   - pandas=1.4.1=py38h43a58ef_0
>   - pandas=1.3.5=py38h43a58ef_0

<   - rioxarray=0.10.3=pyhd8ed1ab_0
>   - rioxarray=0.11.1=pyhd8ed1ab_0

<   - nc-time-axis=1.4.0=pyhd8ed1ab_0
>   - nc-time-axis=1.4.1=pyhd8ed1ab_0

<   - roocs-utils=0.5.0=pyh6c4a22f_0
>   - roocs-utils=0.6.1=pyh6c4a22f_0

<   - panel=0.12.7=pyhd8ed1ab_0
>   - panel=0.13.1a2=py_0

<   - plotly=5.6.0=pyhd8ed1ab_0
>   - plotly=5.7.0=pyhd8ed1ab_0
```

## Related Issue / Discussion

- #99
- #100
- PR to deploy this new Jupyter env to PAVICS: bird-house/birdhouse-deploy#241
- bokeh/bokeh#12090
- holoviz/jupyter-panel-proxy#21
- holoviz/panel#3469
- holoviz/panel#3440

## 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 builds: only known subset-user-input.ipynb: ​RemoteDisconnected, `pavics/workflow-tests:220412`: 
  [job-PAVICS-e2e-workflow-tests-new-docker-build-17-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8484558/job-PAVICS-e2e-workflow-tests-new-docker-build-17-consoleText.txt)
  [job-PAVICS-e2e-workflow-tests-new-docker-build-16-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8484559/job-PAVICS-e2e-workflow-tests-new-docker-build-16-consoleText.txt)
  [job-PAVICS-e2e-workflow-tests-new-docker-build-15-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8484560/job-PAVICS-e2e-workflow-tests-new-docker-build-15-consoleText.txt)

* Jenkins build: all passed, `pavics/workflow-tests:220522`:
climex.ipynb 2.5 mins, OK [job-PAVICS-e2e-workflow-tests-new-docker-build-39-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8627256/job-PAVICS-e2e-workflow-tests-new-docker-build-39-consoleText.txt)
climex.ipynb 5 mins, Slow [job-PAVICS-e2e-workflow-tests-new-docker-build-41-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8627258/job-PAVICS-e2e-workflow-tests-new-docker-build-41-consoleText.txt)
climex.ipynb 14 mins, VERY Slow [job-PAVICS-e2e-workflow-tests-new-docker-build-42-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8627789/job-PAVICS-e2e-workflow-tests-new-docker-build-42-consoleText.txt)





## Additional Information

* Full diff `conda env export`:
[220401-220412-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8484573/220401-220412-conda-env-export.diff.txt)

  [220401-220502-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8627790/220401-220502-conda-env-export.diff.txt)

```
2a3
>   - pyviz/label/dev
8c9
<   - _openmp_mutex=4.5=1_gnu
---
>   - _openmp_mutex=4.5=2_gnu
10,11c11,12
<   - aiobotocore=2.1.2=pyhd8ed1ab_0
<   - aiohttp=3.8.1=py38h497a2fe_0
---
>   - aiobotocore=2.2.0=pyhd8ed1ab_0
>   - aiohttp=3.8.1=py38h0a891b7_1
15,16c16,17
<   - alsa-lib=1.2.3=h516909a_0
<   - ansi2html=1.7.0=py38h578d9bd_0
---
>   - alsa-lib=1.2.3.2=h166bdaf_0
>   - ansi2html=1.7.0=py38h578d9bd_1
20c21
<   - argon2-cffi-bindings=21.2.0=py38h497a2fe_1
---
>   - argon2-cffi-bindings=21.2.0=py38h0a891b7_2
30,31c31,32
<   - bcrypt=3.2.0=py38h497a2fe_2
<   - beautifulsoup4=4.10.0=pyha770c72_0
---
>   - bcrypt=3.2.2=py38h0a891b7_0
>   - beautifulsoup4=4.11.1=pyha770c72_0
34c35
<   - bleach=4.1.0=pyhd8ed1ab_0
---
>   - bleach=5.0.0=pyhd8ed1ab_0
36,37c37,38
<   - blosc=1.21.0=h9c3ff4c_0
<   - bokeh=2.4.2=py38h578d9bd_0
---
>   - blosc=1.21.1=hd32f23e_0
>   - bokeh=2.4.2=py38h578d9bd_1
40,41c41,42
<   - botocore=1.23.24=pyhd8ed1ab_0
<   - bottleneck=1.3.4=py38h3ec907f_0
---
>   - botocore=1.24.21=pyhd8ed1ab_1
>   - bottleneck=1.3.4=py38h71d37f0_1
43,46c44,47
<   - 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
---
>   - brotli=1.0.9=h166bdaf_7
>   - brotli-bin=1.0.9=h166bdaf_7
>   - brotli-python=1.0.9=py38hfa26641_7
>   - brotlipy=0.7.0=py38h0a891b7_1004
60c61
<   - cf_xarray=0.6.3=pyhd8ed1ab_0
---
>   - cf_xarray=0.7.2=pyhd8ed1ab_0
65c66
<   - cftime=1.6.0=py38h3ec907f_0
---
>   - cftime=1.6.0=py38h71d37f0_1
67c68
<   - click=8.1.2=py38h578d9bd_0
---
>   - click=8.1.3=py38h578d9bd_0
71c72
<   - clisops=0.8.0=pyh6c4a22f_0
---
>   - clisops=0.9.0=pyh6c4a22f_0
77,78c78,79
<   - cryptography=36.0.2=py38h2b5fc30_0
<   - curl=7.82.0=h7bff187_0
---
>   - cryptography=36.0.2=py38h2b5fc30_1
>   - curl=7.83.0=h7bff187_0
80c81
<   - cytoolz=0.11.2=py38h497a2fe_1
---
>   - cytoolz=0.11.2=py38h0a891b7_2
84c85,86
<   - datashader=0.13.0=pyh6c4a22f_0
---
>   - dask-labextension=5.2.0=pyhd8ed1ab_0
>   - datashader=0.14.0=pyh6c4a22f_0
87c89
<   - debugpy=1.5.1=py38h709712a_0
---
>   - debugpy=1.6.0=py38hfa26641_0
110,111c112,113
<   - flask=2.1.1=pyhd8ed1ab_0
<   - flask-compress=1.11=pyhd8ed1ab_0
---
>   - flask=2.1.2=pyhd8ed1ab_0
>   - flask-compress=1.12=pyhd8ed1ab_0
118c120
<   - fontconfig=2.13.96=h8e229c2_2
---
>   - fontconfig=2.14.0=h8e229c2_0
121c123
<   - fonttools=4.31.2=py38h0a891b7_0
---
>   - fonttools=4.33.3=py38h0a891b7_0
126c128
<   - fsspec=2022.2.0=pyhd8ed1ab_0
---
>   - fsspec=2022.3.0=pyhd8ed1ab_0
128c130
<   - future=0.18.2=py38h578d9bd_4
---
>   - future=0.18.2=py38h578d9bd_5
130c132
<   - gcsfs=2022.2.0=pyhd8ed1ab_0
---
>   - gcsfs=2022.3.0=pyhd8ed1ab_0
145c147
<   - google-auth=2.6.2=pyh6c4a22f_0
---
>   - google-auth=2.6.6=pyh6c4a22f_0
149c151
<   - google-crc32c=1.1.2=py38h8838a9a_2
---
>   - google-crc32c=1.1.2=py38h57c428a_3
152c154
<   - greenlet=1.1.2=py38h709712a_1
---
>   - greenlet=1.1.2=py38hfa26641_2
166c168
<   - identify=2.4.12=pyhd8ed1ab_0
---
>   - identify=2.5.0=pyhd8ed1ab_0
168,169c170,171
<   - imagecodecs-lite=2019.12.3=py38h6c62de6_4
<   - imageio=2.16.1=pyhcf75d05_0
---
>   - imagecodecs-lite=2019.12.3=py38h71d37f0_5
>   - imageio=2.18.0=pyhcf75d05_0
172c174
<   - importlib_resources=5.6.0=pyhd8ed1ab_0
---
>   - importlib_resources=5.7.1=pyhd8ed1ab_0
179,181c181,183
<   - ipykernel=6.11.0=py38h7f3c49e_0
<   - ipyleaflet=0.15.0=pyhd8ed1ab_3
<   - ipython=8.2.0=py38h578d9bd_0
---
>   - ipykernel=6.13.0=py38h7f3c49e_0
>   - ipyleaflet=0.16.0=pyhd8ed1ab_3
>   - ipython=8.3.0=py38h578d9bd_0
187c189
<   - jedi=0.18.1=py38h578d9bd_0
---
>   - jedi=0.18.1=py38h578d9bd_1
189c191
<   - jmespath=0.10.0=pyh9f0ad1d_0
---
>   - jmespath=1.0.0=pyhd8ed1ab_0
191c193
<   - jpeg=9e=h7f98852_0
---
>   - jpeg=9e=h166bdaf_1
197,198c199,201
<   - jupyter-archive=3.3.0=pyhd8ed1ab_1
<   - jupyter-dash=0.4.1=pyhd8ed1ab_2
---
>   - jupyter-archive=3.3.1=pyhd8ed1ab_0
>   - jupyter-dash=0.4.2=pyhd8ed1ab_1
>   - jupyter-panel-proxy=0.2.0a2=py_0
200a204
>   - jupyter-server-proxy=3.2.1=pyhd8ed1ab_0
202c206
<   - jupyter_client=7.2.1=pyhd8ed1ab_0
---
>   - jupyter_client=7.3.0=pyhd8ed1ab_0
205c209
<   - jupyter_server=1.16.0=pyhd8ed1ab_1
---
>   - jupyter_server=1.17.0=pyhd8ed1ab_0
207,210c211,214
<   - 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
---
>   - jupyterhub=2.2.2=pyhd8ed1ab_1
>   - jupyterhub-base=2.2.2=pyhd8ed1ab_1
>   - jupyterlab=3.3.4=pyhd8ed1ab_0
>   - jupyterlab-git=0.37.1=pyhd8ed1ab_0
213,214c217,218
<   - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
<   - jupyterlab_server=2.12.0=pyhd8ed1ab_0
---
>   - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0
>   - jupyterlab_server=2.13.0=pyhd8ed1ab_1
216c220
<   - jupytext=1.13.7=pyhd0ecf6b_0
---
>   - jupytext=1.13.8=pyh4b9bcc7_0
219c223
<   - kiwisolver=1.4.2=py38h43d8883_0
---
>   - kiwisolver=1.4.2=py38h43d8883_1
221c225
<   - lazy-object-proxy=1.7.1=py38h497a2fe_0
---
>   - lazy-object-proxy=1.7.1=py38h0a891b7_1
227,231c231,235
<   - 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
---
>   - libblas=3.9.0=14_linux64_openblas
>   - libbrotlicommon=1.0.9=h166bdaf_7
>   - libbrotlidec=1.0.9=h166bdaf_7
>   - libbrotlienc=1.0.9=h166bdaf_7
>   - libcblas=3.9.0=14_linux64_openblas
233c237
<   - libcf=1.0.3=py38h80f51ce_113
---
>   - libcf=1.0.3=py38h0c3d773_114
236c240
<   - libcurl=7.82.0=h7bff187_0
---
>   - libcurl=7.83.0=h7bff187_0
246c250
<   - libgcc-ng=11.2.0=h1d223b6_14
---
>   - libgcc-ng=11.2.0=h1d223b6_16
248,249c252,253
<   - libgfortran-ng=11.2.0=h69a702a_14
<   - libgfortran5=11.2.0=h5c6108e_14
---
>   - libgfortran-ng=11.2.0=h69a702a_16
>   - libgfortran5=11.2.0=h5c6108e_16
252c256
<   - libgomp=11.2.0=h1d223b6_14
---
>   - libgomp=11.2.0=h1d223b6_16
256c260
<   - liblapack=3.9.0=13_linux64_openblas
---
>   - liblapack=3.9.0=14_linux64_openblas
259c263
<   - libnetcdf=4.8.1=mpi_mpich_h319fa22_1
---
>   - libnetcdf=4.8.1=mpi_mpich_hcdf9059_2
263c267
<   - libopenblas=0.3.18=pthreads_h8fe5266_0
---
>   - libopenblas=0.3.20=pthreads_h78a6416_0
274c278
<   - libstdcxx-ng=11.2.0=he4da1e4_14
---
>   - libstdcxx-ng=11.2.0=he4da1e4_16
288,291c292,296
<   - llvmlite=0.38.0=py38h4630a5e_0
<   - locket=0.2.0=py_2
<   - lxml=4.8.0=py38h0a891b7_1
<   - lz4=3.1.10=py38hebdc3cf_0
---
>   - llvmlite=0.38.0=py38h38d86a4_1
>   - locket=1.0.0=pyhd8ed1ab_0
>   - loguru=0.6.0=py38h578d9bd_1
>   - lxml=4.8.0=py38h0a891b7_2
>   - lz4=4.0.0=py38h1bf946c_1
294c299
<   - mako=1.2.0=pyhd8ed1ab_0
---
>   - mako=1.2.0=pyhd8ed1ab_1
298c303
<   - markdown-it-py=1.1.0=pyhd8ed1ab_0
---
>   - markdown-it-py=2.1.0=pyhd8ed1ab_0
303a309
>   - mdurl=0.1.0=pyhd8ed1ab_0
308,309c314,315
<   - mpi4py=3.1.3=py38he865349_0
<   - mpich=4.0.1=h846660c_100
---
>   - mpi4py=3.1.3=py38h97ac3a3_1
>   - mpich=4.0.2=h846660c_100
311c317
<   - multidict=6.0.2=py38h497a2fe_0
---
>   - multidict=6.0.2=py38h0a891b7_1
315,316c321,322
<   - mysql-common=8.0.28=haf5c9bc_2
<   - mysql-libs=8.0.28=h28c427c_2
---
>   - mysql-common=8.0.29=haf5c9bc_0
>   - mysql-libs=8.0.29=h28c427c_0
319,320c325,327
<   - nbconvert=6.4.5=py38h578d9bd_0
<   - nbconvert-core=6.4.5=pyhd8ed1ab_1
---
>   - nbconvert=6.5.0=pyhd8ed1ab_0
>   - nbconvert-core=6.5.0=pyhd8ed1ab_0
>   - nbconvert-pandoc=6.5.0=pyhd8ed1ab_0
322c329
<   - nbformat=5.2.0=pyhd8ed1ab_0
---
>   - nbformat=5.3.0=pyhd8ed1ab_0
325,327c332,334
<   - nc-time-axis=1.4.0=pyhd8ed1ab_0
<   - ncurses=6.3=h9c3ff4c_0
<   - nest-asyncio=1.5.4=pyhd8ed1ab_0
---
>   - nc-time-axis=1.4.1=pyhd8ed1ab_0
>   - ncurses=6.3=h27087fc_1
>   - nest-asyncio=1.5.5=pyhd8ed1ab_0
332c339
<   - networkx=2.7.1=pyhd8ed1ab_1
---
>   - networkx=2.8=pyhd8ed1ab_0
335c342
<   - notebook=6.4.10=pyha770c72_0
---
>   - notebook=6.4.11=pyha770c72_0
341c348
<   - numpy=1.21.5=py38h87f13fb_0
---
>   - numpy=1.21.6=py38h1d589f8_0
343c350
<   - openblas=0.3.18=pthreads_h4748800_0
---
>   - openblas=0.3.20=pthreads_h320a7e8_0
351,352c358,359
<   - pandas=1.4.1=py38h43a58ef_0
<   - pandoc=2.17.1.1=ha770c72_0
---
>   - pandas=1.3.5=py38h43a58ef_0
>   - pandoc=2.18=ha770c72_0
354c361
<   - panel=0.12.7=pyhd8ed1ab_0
---
>   - panel=0.13.1a2=py_0
356c363
<   - paramiko=2.10.3=pyhd8ed1ab_0
---
>   - paramiko=2.10.4=pyhd8ed1ab_0
363,364c370,371
<   - pillow=9.0.1=py38h0ee0e06_2
<   - pint=0.18=pyhd8ed1ab_0
---
>   - pillow=9.1.0=py38h0ee0e06_2
>   - pint=0.19.2=pyhd8ed1ab_0
368c375
<   - plotly=5.6.0=pyhd8ed1ab_0
---
>   - plotly=5.7.0=pyhd8ed1ab_0
374c381
<   - pre-commit=2.17.0=py38h578d9bd_0
---
>   - pre-commit=2.18.1=py38h578d9bd_1
376,378c383,385
<   - prometheus_client=0.13.1=pyhd8ed1ab_0
<   - prompt-toolkit=3.0.27=pyha770c72_0
<   - prompt_toolkit=3.0.27=hd8ed1ab_0
---
>   - prometheus_client=0.14.1=pyhd8ed1ab_0
>   - prompt-toolkit=3.0.29=pyha770c72_0
>   - prompt_toolkit=3.0.29=hd8ed1ab_0
380c387
<   - protobuf=3.20.0=py38hfa26641_0
---
>   - protobuf=3.20.0=py38hfa26641_4
382c389
<   - psutil=5.9.0=py38h497a2fe_0
---
>   - psutil=5.9.0=py38h0a891b7_1
392,393c399,400
<   - pycurl=7.45.1=py38h61f0cdf_0
<   - pydantic=1.9.0=py38h497a2fe_0
---
>   - pycurl=7.45.1=py38h61f0cdf_1
>   - pydantic=1.9.0=py38h0a891b7_1
396c403
<   - pygments=2.11.2=pyhd8ed1ab_0
---
>   - pygments=2.12.0=pyhd8ed1ab_0
398c405
<   - pynacl=1.5.0=py38h497a2fe_0
---
>   - pynacl=1.5.0=py38h0a891b7_1
400c407
<   - pyparsing=3.0.7=pyhd8ed1ab_0
---
>   - pyparsing=3.0.8=pyhd8ed1ab_0
407,410c414,417
<   - pyrsistent=0.18.1=py38h497a2fe_0
<   - pyshp=2.2.0=pyhd8ed1ab_0
<   - pysocks=1.7.1=py38h578d9bd_4
<   - pytest=7.1.1=py38h578d9bd_1
---
>   - pyrsistent=0.18.1=py38h0a891b7_1
>   - pyshp=2.3.0=pyhd8ed1ab_0
>   - pysocks=1.7.1=py38h578d9bd_5
>   - pytest=7.1.2=py38h578d9bd_0
413c420,421
<   - python-eccodes=1.4.0=py38h71d37f0_0
---
>   - python-eccodes=1.4.0=py38h71d37f0_1
>   - python-fastjsonschema=2.15.3=pyhd8ed1ab_0
419c427
<   - pywavelets=1.3.0=py38h3ec907f_0
---
>   - pywavelets=1.3.0=py38h71d37f0_1
421c429
<   - pyzmq=22.3.0=py38h2035c66_1
---
>   - pyzmq=22.3.0=py38hfc09fa9_2
425c433
<   - qtpy=2.0.1=pyhd8ed1ab_0
---
>   - qtpy=2.1.0=pyhd8ed1ab_0
434,435c442,443
<   - rioxarray=0.10.3=pyhd8ed1ab_0
<   - roocs-utils=0.5.0=pyh6c4a22f_0
---
>   - rioxarray=0.11.1=pyhd8ed1ab_0
>   - roocs-utils=0.6.1=pyh6c4a22f_0
437,440c445,448
<   - 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
---
>   - rtree=1.0.0=py38h02d302b_1
>   - ruamel.yaml=0.17.21=py38h0a891b7_1
>   - ruamel.yaml.clib=0.2.6=py38h0a891b7_1
>   - s3fs=2022.3.0=pyhd8ed1ab_0
446a455
>   - setuptools=59.8.0=py38h578d9bd_1
447a457
>   - simpervisor=0.4=pyhd8ed1ab_0
450a461
>   - snappy=1.1.8=he1b5a44_3
456,457c467,468
<   - sqlalchemy=1.4.33=py38h0a891b7_0
<   - sqlite=3.37.1=h4ff8645_0
---
>   - sqlalchemy=1.4.36=py38h0a891b7_0
>   - sqlite=3.38.3=h4ff8645_0
462,463c473
<   - terminado=0.13.3=py38h578d9bd_0
<   - testpath=0.6.0=pyhd8ed1ab_0
---
>   - terminado=0.13.3=py38h578d9bd_1
467a478
>   - tinycss2=1.1.1=pyhd8ed1ab_0
473c484
<   - tqdm=4.63.1=pyhd8ed1ab_0
---
>   - tqdm=4.64.0=pyhd8ed1ab_0
476c487
<   - trio=0.20.0=py38h578d9bd_0
---
>   - trio=0.20.0=py38h578d9bd_1
478,479c489,490
<   - typing-extensions=4.1.1=hd8ed1ab_0
<   - typing_extensions=4.1.1=pyha770c72_0
---
>   - typing-extensions=4.2.0=hd8ed1ab_1
>   - typing_extensions=4.2.0=pyha770c72_1
482,483c493,494
<   - ukkonen=1.0.1=py38h1fd1430_1
<   - unicodedata2=14.0.0=py38h497a2fe_0
---
>   - ukkonen=1.0.1=py38h43d8883_2
>   - unicodedata2=14.0.0=py38h0a891b7_1
485c496
<   - virtualenv=20.14.0=py38h578d9bd_1
---
>   - virtualenv=20.14.1=py38h578d9bd_0
491,492c502,503
<   - websockets=10.2=py38h0a891b7_0
<   - werkzeug=2.1.0=pyhd8ed1ab_0
---
>   - websockets=10.3=py38h0a891b7_0
>   - werkzeug=2.1.2=pyhd8ed1ab_0
496c507
<   - wrapt=1.14.0=py38h0a891b7_0
---
>   - wrapt=1.14.1=py38h0a891b7_0
499c510
<   - xclim=0.34.0=pyhd8ed1ab_0
---
>   - xclim=0.36.0=pyhd8ed1ab_0
502,503c513,514
<   - xeus=2.4.0=hab3612f_0
<   - xeus-python=0.13.6=py38h9f61dbb_2
---
>   - xeus=2.4.1=h70bab47_0
>   - xeus-python=0.13.7=py38h9f61dbb_0
531c542
<   - xyzservices=2022.3.0=pyhd8ed1ab_0
---
>   - xyzservices=2022.4.0=pyhd8ed1ab_0
534,535c545,546
<   - yarl=1.7.2=py38h497a2fe_1
<   - zarr=2.11.1=pyhd8ed1ab_0
---
>   - yarl=1.7.2=py38h0a891b7_2
>   - zarr=2.11.3=pyhd8ed1ab_0
537,538c548,549
<   - zict=2.1.0=pyhd8ed1ab_0
<   - zipp=3.7.0=pyhd8ed1ab_1
---
>   - zict=2.2.0=pyhd8ed1ab_0
>   - zipp=3.8.0=pyhd8ed1ab_0
545,546d555
<     - handcalcs==1.4.1
<     - innerscope==0.5.1
550d558
<     - more-itertools==8.12.0
555d562
<     - setuptools==61.3.0
```


* Full new `conda env export`:
[220412-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8484577/220412-conda-env-export.yml.txt)

  [220502-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/8627792/220502-conda-env-export.yml.txt)

```
name: birdy
channels:
  - pyviz/label/dev
  - cdat
  - conda-forge
  - defaults
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - affine=2.3.1=pyhd8ed1ab_0
  - aiobotocore=2.2.0=pyhd8ed1ab_0
  - aiohttp=3.8.1=py38h0a891b7_1
  - aioitertools=0.10.0=pyhd8ed1ab_0
  - aiosignal=1.2.0=pyhd8ed1ab_0
  - alembic=1.7.7=pyhd8ed1ab_0
  - alsa-lib=1.2.3.2=h166bdaf_0
  - ansi2html=1.7.0=py38h578d9bd_1
  - 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=py38h0a891b7_2
  - 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.2=py38h0a891b7_0
  - beautifulsoup4=4.11.1=pyha770c72_0
  - bias_correction=0.4=pyhd8ed1ab_0
  - birdy=0.8.1=pyh6c4a22f_1
  - bleach=5.0.0=pyhd8ed1ab_0
  - blinker=1.4=py_1
  - blosc=1.21.1=hd32f23e_0
  - bokeh=2.4.2=py38h578d9bd_1
  - boltons=21.0.0=pyhd8ed1ab_0
  - boost-cpp=1.74.0=h312852a_4
  - botocore=1.24.21=pyhd8ed1ab_1
  - bottleneck=1.3.4=py38h71d37f0_1
  - branca=0.4.2=pyhd8ed1ab_0
  - brotli=1.0.9=h166bdaf_7
  - brotli-bin=1.0.9=h166bdaf_7
  - brotli-python=1.0.9=py38hfa26641_7
  - brotlipy=0.7.0=py38h0a891b7_1004
  - 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.7.2=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=py38h71d37f0_1
  - charset-normalizer=2.0.12=pyhd8ed1ab_0
  - click=8.1.3=py38h578d9bd_0
  - click-plugins=1.1.1=py_0
  - cligj=0.7.2=pyhd8ed1ab_1
  - climpred=2.2.0=pyhd8ed1ab_0
  - clisops=0.9.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_1
  - curl=7.83.0=h7bff187_0
  - cycler=0.11.0=pyhd8ed1ab_0
  - cytoolz=0.11.2=py38h0a891b7_2
  - dash=2.3.1=pyhd8ed1ab_0
  - dask=2022.1.0=pyhd8ed1ab_0
  - dask-core=2022.1.0=pyhd8ed1ab_0
  - dask-labextension=5.2.0=pyhd8ed1ab_0
  - datashader=0.14.0=pyh6c4a22f_0
  - datashape=0.5.4=py_1
  - dbus=1.13.6=h5008d03_3
  - debugpy=1.6.0=py38hfa26641_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.2=pyhd8ed1ab_0
  - flask-compress=1.12=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.14.0=h8e229c2_0
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - fonttools=4.33.3=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.3.0=pyhd8ed1ab_0
  - funcsigs=1.0.2=py_3
  - future=0.18.2=py38h578d9bd_5
  - g2clib=1.6.3=heb9ad7a_1
  - gcsfs=2022.3.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.6=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=py38h57c428a_3
  - google-resumable-media=2.1.0=pyh6c4a22f_0
  - googleapis-common-protos=1.56.0=py38h578d9bd_0
  - greenlet=1.1.2=py38hfa26641_2
  - 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.5.0=pyhd8ed1ab_0
  - idna=3.3=pyhd8ed1ab_0
  - imagecodecs-lite=2019.12.3=py38h71d37f0_5
  - imageio=2.18.0=pyhcf75d05_0
  - importlib-metadata=4.11.3=py38h578d9bd_1
  - importlib_metadata=4.11.3=hd8ed1ab_1
  - importlib_resources=5.7.1=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.13.0=py38h7f3c49e_0
  - ipyleaflet=0.16.0=pyhd8ed1ab_3
  - ipython=8.3.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_1
  - jinja2=3.1.1=pyhd8ed1ab_0
  - jmespath=1.0.0=pyhd8ed1ab_0
  - joblib=1.1.0=pyhd8ed1ab_0
  - jpeg=9e=h166bdaf_1
  - 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.1=pyhd8ed1ab_0
  - jupyter-dash=0.4.2=pyhd8ed1ab_1
  - jupyter-panel-proxy=0.2.0a2=py_0
  - jupyter-resource-usage=0.5.1=pyhd8ed1ab_0
  - jupyter-server-mathjax=0.2.5=pyhc268e32_0
  - jupyter-server-proxy=3.2.1=pyhd8ed1ab_0
  - jupyter_bokeh=3.0.4=pyhd8ed1ab_0
  - jupyter_client=7.3.0=pyhd8ed1ab_0
  - jupyter_console=6.4.3=pyhd8ed1ab_0
  - jupyter_core=4.9.2=py38h578d9bd_0
  - jupyter_server=1.17.0=pyhd8ed1ab_0
  - jupyter_telemetry=0.1.0=pyhd8ed1ab_1
  - jupyterhub=2.2.2=pyhd8ed1ab_1
  - jupyterhub-base=2.2.2=pyhd8ed1ab_1
  - jupyterlab=3.3.4=pyhd8ed1ab_0
  - jupyterlab-git=0.37.1=pyhd8ed1ab_0
  - jupyterlab-system-monitor=0.8.0=pyhd8ed1ab_1
  - jupyterlab-topbar=0.6.1=pyhd8ed1ab_2
  - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0
  - jupyterlab_server=2.13.0=pyhd8ed1ab_1
  - jupyterlab_widgets=1.1.0=pyhd8ed1ab_0
  - jupytext=1.13.8=pyh4b9bcc7_0
  - kealib=1.4.14=h87e4c3c_3
  - keyutils=1.6.1=h166bdaf_0
  - kiwisolver=1.4.2=py38h43d8883_1
  - krb5=1.19.3=h3790be6_0
  - lazy-object-proxy=1.7.1=py38h0a891b7_1
  - 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=14_linux64_openblas
  - libbrotlicommon=1.0.9=h166bdaf_7
  - libbrotlidec=1.0.9=h166bdaf_7
  - libbrotlienc=1.0.9=h166bdaf_7
  - libcblas=3.9.0=14_linux64_openblas
  - libcdms=3.1.2=h3bdf4ba_117
  - libcf=1.0.3=py38h0c3d773_114
  - libclang=11.1.0=default_ha53f305_1
  - libcrc32c=1.1.2=h9c3ff4c_0
  - libcurl=7.83.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_16
  - libgdal=3.3.3=h356f897_0
  - libgfortran-ng=11.2.0=h69a702a_16
  - libgfortran5=11.2.0=h5c6108e_16
  - libglib=2.70.2=h174f98d_4
  - libglu=9.0.0=he1b5a44_1001
  - libgomp=11.2.0=h1d223b6_16
  - libiconv=1.16=h516909a_0
  - libidn2=2.3.2=h7f98852_0
  - libkml=1.3.0=h238a007_1014
  - liblapack=3.9.0=14_linux64_openblas
  - libllvm11=11.1.0=hf817b99_3
  - libmicrohttpd=0.9.75=h7f98852_0
  - libnetcdf=4.8.1=mpi_mpich_hcdf9059_2
  - libnghttp2=1.47.0=h727a467_0
  - libnsl=2.0.0=h7f98852_0
  - libogg=1.3.4=h7f98852_1
  - libopenblas=0.3.20=pthreads_h78a6416_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_16
  - 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=py38h38d86a4_1
  - locket=1.0.0=pyhd8ed1ab_0
  - loguru=0.6.0=py38h578d9bd_1
  - lxml=4.8.0=py38h0a891b7_2
  - lz4=4.0.0=py38h1bf946c_1
  - lz4-c=1.9.3=h9c3ff4c_1
  - lzo=2.10=h516909a_1000
  - mako=1.2.0=pyhd8ed1ab_1
  - mamba_gator=5.1.2=pyhd8ed1ab_0
  - mapclassify=2.4.3=pyhd8ed1ab_0
  - markdown=3.3.6=pyhd8ed1ab_0
  - markdown-it-py=2.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
  - mdurl=0.1.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=py38h97ac3a3_1
  - mpich=4.0.2=h846660c_100
  - msgpack-python=1.0.3=py38h43d8883_1
  - multidict=6.0.2=py38h0a891b7_1
  - multipledispatch=0.6.0=py_0
  - munch=2.5.0=py_0
  - munkres=1.1.4=pyh9f0ad1d_0
  - mysql-common=8.0.29=haf5c9bc_0
  - mysql-libs=8.0.29=h28c427c_0
  - nbclassic=0.3.7=pyhd8ed1ab_0
  - nbclient=0.5.13=pyhd8ed1ab_0
  - nbconvert=6.5.0=pyhd8ed1ab_0
  - nbconvert-core=6.5.0=pyhd8ed1ab_0
  - nbconvert-pandoc=6.5.0=pyhd8ed1ab_0
  - nbdime=3.1.1=pyhd8ed1ab_0
  - nbformat=5.3.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.5=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.8=pyhd8ed1ab_0
  - nodeenv=1.6.0=pyhd8ed1ab_0
  - nodejs=16.13.1=hb931c9a_0
  - notebook=6.4.11=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.6=py38h1d589f8_0
  - oauthlib=3.2.0=pyhd8ed1ab_0
  - openblas=0.3.20=pthreads_h320a7e8_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.3.5=py38h43a58ef_0
  - pandoc=2.18=ha770c72_0
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - panel=0.13.1a2=py_0
  - param=1.12.1=pyh6c4a22f_0
  - paramiko=2.10.4=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.1.0=py38h0ee0e06_2
  - pint=0.19.2=pyhd8ed1ab_0
  - pip=22.0.4=pyhd8ed1ab_0
  - pixman=0.40.0=h36c2ea0_0
  - platformdirs=2.5.1=pyhd8ed1ab_0
  - plotly=5.7.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.18.1=py38h578d9bd_1
  - proj=8.1.1=h277dcde_2
  - prometheus_client=0.14.1=pyhd8ed1ab_0
  - prompt-toolkit=3.0.29=pyha770c72_0
  - prompt_toolkit=3.0.29=hd8ed1ab_0
  - properscoring=0.1=py_0
  - protobuf=3.20.0=py38hfa26641_4
  - pscript=0.7.5=pyhd3deb0d_0
  - psutil=5.9.0=py38h0a891b7_1
  - 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_1
  - pydantic=1.9.0=py38h0a891b7_1
  - pydap=3.3.0=pyhd8ed1ab_0
  - pygeos=0.10.2=py38hb7fe4a8_0
  - pygments=2.12.0=pyhd8ed1ab_0
  - pyjwt=2.3.0=pyhd8ed1ab_1
  - pynacl=1.5.0=py38h0a891b7_1
  - pyopenssl=22.0.0=pyhd8ed1ab_0
  - pyparsing=3.0.8=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=py38h0a891b7_1
  - pyshp=2.3.0=pyhd8ed1ab_0
  - pysocks=1.7.1=py38h578d9bd_5
  - pytest=7.1.2=py38h578d9bd_0
  - python=3.8.13=h582c2e5_0_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python-eccodes=1.4.0=py38h71d37f0_1
  - python-fastjsonschema=2.15.3=pyhd8ed1ab_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=py38h71d37f0_1
  - pyyaml=6.0=py38h0a891b7_4
  - pyzmq=22.3.0=py38hfc09fa9_2
  - qt=5.12.9=hda022c4_4
  - qtconsole=5.3.0=pyhd8ed1ab_0
  - qtconsole-base=5.3.0=pyhd8ed1ab_0
  - qtpy=2.1.0=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.11.1=pyhd8ed1ab_0
  - roocs-utils=0.6.1=pyh6c4a22f_0
  - rsa=4.8=pyhd8ed1ab_0
  - rtree=1.0.0=py38h02d302b_1
  - ruamel.yaml=0.17.21=py38h0a891b7_1
  - ruamel.yaml.clib=0.2.6=py38h0a891b7_1
  - s3fs=2022.3.0=pyhd8ed1ab_0
  - 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
  - setuptools=59.8.0=py38h578d9bd_1
  - shapely=1.7.1=py38hb7fe4a8_5
  - simpervisor=0.4=pyhd8ed1ab_0
  - siphon=0.9=py38h578d9bd_1
  - six=1.16.0=pyh6c4a22f_0
  - smmap=3.0.5=pyh44b312d_0
  - snappy=1.1.8=he1b5a44_3
  - 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.36=py38h0a891b7_0
  - sqlite=3.38.3=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_1
  - threadpoolctl=3.1.0=pyh8a188c0_0
  - threddsclient=0.4.2=py_0
  - tifffile=2020.6.3=py_0
  - tiledb=2.3.4=he87e0bf_0
  - tinycss2=1.1.1=pyhd8ed1ab_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.64.0=pyhd8ed1ab_0
  - traitlets=5.1.1=pyhd8ed1ab_0
  - traittypes=0.2.1=pyh9f0ad1d_2
  - trio=0.20.0=py38h578d9bd_1
  - trio-websocket=0.9.2=pyhd8ed1ab_0
  - typing-extensions=4.2.0=hd8ed1ab_1
  - typing_extensions=4.2.0=pyha770c72_1
  - tzcode=2022a=h166bdaf_0
  - tzdata=2022a=h191b570_0
  - ukkonen=1.0.1=py38h43d8883_2
  - unicodedata2=14.0.0=py38h0a891b7_1
  - urllib3=1.26.9=pyhd8ed1ab_0
  - virtualenv=20.14.1=py38h578d9bd_0
  - 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.3=py38h0a891b7_0
  - werkzeug=2.1.2=pyhd8ed1ab_0
  - wget=1.20.3=ha56f1ee_1
  - wheel=0.37.1=pyhd8ed1ab_0
  - widgetsnbextension=3.6.0=py38h578d9bd_0
  - wrapt=1.14.1=py38h0a891b7_0
  - wsproto=1.1.0=py38h578d9bd_0
  - xarray=2022.3.0=pyhd8ed1ab_0
  - xclim=0.36.0=pyhd8ed1ab_0
  - xerces-c=3.2.3=h9d8b166_3
  - xesmf=0.6.2=pyhd8ed1ab_0
  - xeus=2.4.1=h70bab47_0
  - xeus-python=0.13.7=py38h9f61dbb_0
  - 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.4.0=pyhd8ed1ab_0
  - xz=5.2.5=h516909a_1
  - yaml=0.2.5=h7f98852_2
  - yarl=1.7.2=py38h0a891b7_2
  - zarr=2.11.3=pyhd8ed1ab_0
  - zeromq=4.3.4=h9c3ff4c_1
  - zict=2.2.0=pyhd8ed1ab_0
  - zipp=3.8.0=pyhd8ed1ab_0
  - 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
    - ipython-blocking==0.3.1
    - jupyterlab-logout==0.5.0
    - jupyternotify==0.1.15
    - pixiedust==1.1.19
    - pymetalink==6.4
    - pytest-tornasync==0.6.0.post2
    - requests-magpie==0.1.1
prefix: /opt/conda/envs/birdy
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants