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

New conda library requests #88

Closed
Zeitsperre opened this issue Aug 19, 2021 · 7 comments · Fixed by #89
Closed

New conda library requests #88

Zeitsperre opened this issue Aug 19, 2021 · 7 comments · Fixed by #89
Assignees
Labels
enhancement New feature or request

Comments

@Zeitsperre
Copy link
Collaborator

Zeitsperre commented Aug 19, 2021

We recently received an email from one of our collaborators wondering if we could add the following to our PAVCIS user images:

nested_dict (https://anaconda.org/conda-forge/nested_dict)
paramiko (https://anaconda.org/conda-forge/paramiko)
python-scp (https://anaconda.org/conda-forge/scp)

I feel like Paramiko and SCP would be very useful additions (streamlines file transfer via Python API - great for moving processed data off of images). Nested_dict is a nice implementation of default_dict with nesting (not specifically useful for PAVICS).

Thoughts @tlvu ?

@Zeitsperre Zeitsperre added the enhancement New feature or request label Aug 19, 2021
@tlvu
Copy link
Contributor

tlvu commented Sep 1, 2021

@Zeitsperre no objections. Assigned this to myself so I remember to add those next time I rebuild the Jupyter env.

@tlvu tlvu self-assigned this Sep 1, 2021
@tlvu
Copy link
Contributor

tlvu commented Sep 1, 2021

Note to self: try also to add the following packages that allow png export from a bokeh plot. Note these might bloat up a lot the image so it's a go only if not too big.

  - selenium
  - firefox
  - geckodriver

Demo code for testing export to png (export to html already works without these 3 extra packages)

import panel as pn
import numpy as np
import xarray as xr
import hvplot
import hvplot.xarray
import panel as pn
import holoviews as hv
pn.extension()
xy = xr.merge((xr.DataArray(np.random.rand(100,1), name='x'),xr.DataArray(np.random.rand(100,1), name='y')))
test = pn.Column(pn.pane.Markdown("## CUSTOM TITLE"),xy.hvplot.scatter(x='x',y='y'))
display(test)
test.save('test.html')
test.save('test.png')

FYI @tlogan2000

@tlogan2000
Copy link
Collaborator

tlogan2000 commented Sep 2, 2021

semi related question : I just built a new local conda env using https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/blob/master/docker/environment.yml and clisops is not available? @Zeitsperre Is this because it has been removed from RavenPY? We would need to include explicitly in the environment.yml in this case I guess

@Zeitsperre
Copy link
Collaborator Author

Yes, that's correct. Clisops and RavenPy don't mix all that well at the moment. If you absolutely need it, I would pin it at the version before xesmf was integrated for the time being. The ROOCS team is looking into the segfault issues now.

tlvu added a commit that referenced this issue Sep 2, 2021
See #88 (comment)

Adding these do not bloat the image too much.

```
The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    firefox-91.0.2             |       h9c3ff4c_0        72.5 MB  conda-forge
    geckodriver-0.29.1         |       h3146498_0         3.0 MB  conda-forge
    openssl-1.1.1k             |       h7f98852_1         2.1 MB  conda-forge
    selenium-3.141.0           |py37h5e8e339_1002         870 KB  conda-forge
    ------------------------------------------------------------
                                           Total:        78.4 MB
```
@tlvu
Copy link
Contributor

tlvu commented Sep 8, 2021

Note to self: try also to add the following packages that allow png export from a bokeh plot. Note these might bloat up a lot the image so it's a go only if not too big.

  - selenium
  - firefox
  - geckodriver

Demo code for testing export to png (export to html already works without these 3 extra packages)

import panel as pn
import numpy as np
import xarray as xr
import hvplot
import hvplot.xarray
import panel as pn
import holoviews as hv
pn.extension()
xy = xr.merge((xr.DataArray(np.random.rand(100,1), name='x'),xr.DataArray(np.random.rand(100,1), name='y')))
test = pn.Column(pn.pane.Markdown("## CUSTOM TITLE"),xy.hvplot.scatter(x='x',y='y'))
display(test)
test.save('test.html')
test.save('test.png')

@tlogan2000 Just installing firefox from conda do not work I think. I find the installation surprising small since it does not pull any X libraries. But firefox is basically a desktop apps, most likely it will need X libraries, hence it did not work even if installed in the container since there is no X libraries in the container.

test.save('test.png')

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
/tmp/ipykernel_7610/981553047.py in <module>
----> 1 test.save('test.png')

/opt/conda/envs/birdy/lib/python3.7/site-packages/panel/viewable.py in save(self, filename, title, resources, template, template_variables, embed, max_states, max_opts, embed_json, json_prefix, save_path, load_path, progress, embed_states, **kwargs)
    767                     template_variables, embed, max_states, max_opts,
    768                     embed_json, json_prefix, save_path, load_path,
--> 769                     progress, embed_states, **kwargs)
    770 
    771     def server_doc(self, doc=None, title=None, location=True):

/opt/conda/envs/birdy/lib/python3.7/site-packages/panel/io/save.py in save(panel, filename, title, resources, template, template_variables, embed, max_states, max_opts, embed_json, json_prefix, save_path, load_path, progress, embed_states, **kwargs)
    236         return save_png(
    237             model, resources=resources, filename=filename, template=template,
--> 238             template_variables=template_variables, **kwargs
    239         )
    240     elif isinstance(filename, string_types) and not filename.endswith('.html'):

/opt/conda/envs/birdy/lib/python3.7/site-packages/panel/io/save.py in save_png(model, filename, resources, template, template_variables, timeout)
     63     from bokeh.io.webdriver import webdriver_control
     64     if not state.webdriver:
---> 65         state.webdriver = webdriver_control.create()
     66 
     67     webdriver = state.webdriver

/opt/conda/envs/birdy/lib/python3.7/site-packages/bokeh/io/webdriver.py in create(self, kind)
    151 
    152     def create(self, kind: Optional[DriverKind] = None) -> WebDriver:
--> 153         driver = self._create(kind)
    154         self._drivers.add(driver)
    155         return driver

/opt/conda/envs/birdy/lib/python3.7/site-packages/bokeh/io/webdriver.py in _create(self, kind)
    169                 return driver
    170 
--> 171             raise RuntimeError("Neither firefox and geckodriver nor a variant of chromium browser and " \
    172                                "chromedriver are available on system PATH. You can install the former " \
    173                                "with 'conda install -c conda-forge firefox geckodriver'.")

RuntimeError: Neither firefox and geckodriver nor a variant of chromium browser and chromedriver are available on system PATH. You can install the former with 'conda install -c conda-forge firefox geckodriver'.


from shutil import which
which("firefox")

'/opt/conda/envs/birdy/bin/firefox'

@tlvu
Copy link
Contributor

tlvu commented Sep 9, 2021

@tlogan2000 as suspected, firefox installed by conda was missing all the X-libraries and that's why it did not work.

! firefox --version

XPCOMGlueLoad error for file /opt/conda/envs/birdy/bin/FirefoxApp/libmozgtk.so:
libgtk-3.so.0: cannot open shared object file: No such file or directory
Couldn't load XPCOM.

Installing firefox using apt-get will pull all the missing X-libraries but will bloat the docker image by roughly 750MB !

So the question is ... will our users make a lot of use of the png export feature to make it worth it?

@tlvu
Copy link
Contributor

tlvu commented Sep 9, 2021

@tlogan2000 finally got firefox to work properly inside the docker container. Medus has it, check it out.

tlvu added a commit that referenced this issue Sep 9, 2021
…or bokeh png export

The `firefox` install by `conda` was missing all the X-libraries so did not work:

```
! firefox --version

XPCOMGlueLoad error for file /opt/conda/envs/birdy/bin/FirefoxApp/libmozgtk.so:
libgtk-3.so.0: cannot open shared object file: No such file or directory
Couldn't load XPCOM.
```

See #88 (comment)
tlvu added a commit that referenced this issue Sep 9, 2021
Error when only `firefox-esr` is installed by `apt-get`:
```
! firefox --version

XPCOMGlueLoad error for file
/opt/conda/envs/birdy/bin/FirefoxApp/libxul.so:
libXt.so.6: cannot open shared object file: No such file or directory
Couldn't load XPCOM.
```

See #88 (comment)
@tlvu tlvu closed this as completed in #89 Sep 10, 2021
tlvu added a commit that referenced this issue Sep 10, 2021
…her-and-latest-of-everything-else

docker: new jupyter for ravenpy and other new additions

Biggest feature is support for bokeh png export by installing a full blown firefox and all needed X-libraries into the docker image.  The image size went from 7.44GB to 7.97GB.

Deployed to https://medus.ouranos.ca/jupyter for testing.

Other noticeable changes:
```diff
<   - ravenpy=0.7.0=pyh1bb2064_0
>   - ravenpy=0.7.4=pyh7f9bfb9_0

<   - xclim=0.28.0=pyhd8ed1ab_0
>   - xclim=0.28.1=pyhd8ed1ab_0

>   - geckodriver=0.29.1=h3146498_0
>   - selenium=3.141.0=py37h5e8e339_1002
>   - nested_dict=1.61=pyhd3deb0d_0
>   - paramiko=2.7.2=pyh9f0ad1d_0
>   - scp=0.14.0=pyhd8ed1ab_0
>   - s3fs=2021.8.1=pyhd8ed1ab_0

# Downgrade !
<   - pandas=1.3.1=py37h219a48f_0
>   - pandas=1.2.5=py37h219a48f_0

<   - owslib=0.24.1=pyhd8ed1ab_0
>   - owslib=0.25.0=pyhd8ed1ab_0

<   - cf_xarray=0.6.0=pyh6c4a22f_0
>   - cf_xarray=0.6.1=pyh6c4a22f_0

<   - rioxarray=0.5.0=pyhd8ed1ab_0
>   - rioxarray=0.7.0=pyhd8ed1ab_0

<   - climpred=2.1.4=pyhd8ed1ab_0
>   - climpred=2.1.5.post1=pyhd8ed1ab_0

<   - dask=2021.7.1=pyhd8ed1ab_0
>   - dask=2021.9.0=pyhd8ed1ab_0
```

Fixes #88 Fixes Ouranosinc/raven#402

Matching PR to deploy to PAVICS: bird-house/birdhouse-deploy#194

Jenkins build, only known error: http://jenkins.ouranos.ca/job/PAVICS-e2e-workflow-tests/job/new-jupyter-for-ravenpy-and-other-and-latest-of-everything-else/3/console

Jenkins all passed for Raven notebooks: http://jenkins.ouranos.ca/job/PAVICS-e2e-workflow-tests/job/new-jupyter-for-ravenpy-and-other-and-latest-of-everything-else/4/console

Full diff of `conda env export`:
[210728-210908-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/7138453/210728-210908-conda-env-export.diff.txt)
```
9a10
>   - aiobotocore=1.4.0=pyhd8ed1ab_0
11c12,13
<   - alembic=1.6.5=pyhd8ed1ab_0
---
>   - aioitertools=0.8.0=pyhd8ed1ab_0
>   - alembic=1.7.1=pyhd8ed1ab_0
15a18
>   - argcomplete=1.12.3=pyhd8ed1ab_2
25c28,30
<   - beautifulsoup4=4.9.3=pyhb0f4dca_0
---
>   - bcrypt=3.2.0=py37h5e8e339_1
>   - beautifulsoup4=4.10.0=pyha770c72_0
>   - bias_correction=0.4=pyhd8ed1ab_0
27c32
<   - bleach=3.3.1=pyhd8ed1ab_0
---
>   - bleach=4.1.0=pyhd8ed1ab_0
33c38,39
<   - bottleneck=1.3.2=py37h902c9e0_3
---
>   - botocore=1.20.106=pyhd8ed1ab_0
>   - bottleneck=1.3.2=py37hb1e94ed_4
41c47
<   - c-ares=1.17.1=h7f98852_1
---
>   - c-ares=1.17.2=h7f98852_0
47c53
<   - cartopy=0.19.0.post1=py37h0c48da3_0
---
>   - cartopy=0.19.0.post1=py37h0c48da3_1
53c59
<   - cf_xarray=0.6.0=pyh6c4a22f_0
---
>   - cf_xarray=0.6.1=pyh6c4a22f_0
60d65
<   - charset-normalizer=2.0.0=pyhd8ed1ab_0
64c69
<   - climpred=2.1.4=pyhd8ed1ab_0
---
>   - climpred=2.1.5.post1=pyhd8ed1ab_0
80,82c85,87
<   - dask=2021.7.1=pyhd8ed1ab_0
<   - dask-core=2021.7.1=pyhd8ed1ab_0
<   - dataclasses=0.8=pyhc8e2a94_1
---
>   - dask=2021.9.0=pyhd8ed1ab_0
>   - dask-core=2021.9.0=pyhd8ed1ab_0
>   - dataclasses=0.8=pyhc8e2a94_3
91c96
<   - distributed=2021.7.1=py37h89c1867_0
---
>   - distributed=2021.9.0=py37h89c1867_0
111c116
<   - fsspec=2021.7.0=pyhd8ed1ab_0
---
>   - fsspec=2021.8.1=pyhd8ed1ab_0
115c120
<   - gcsfs=2021.7.0=pyhd8ed1ab_0
---
>   - gcsfs=2021.8.1=pyhd8ed1ab_0
116a122
>   - geckodriver=0.29.1=h3146498_0
122,123c128,129
<   - geoviews=1.9.1=pyhd8ed1ab_0
<   - geoviews-core=1.9.1=pyha770c72_0
---
>   - geoviews=1.9.1=pyhd8ed1ab_1
>   - geoviews-core=1.9.1=pyha770c72_1
128,130c134,136
<   - gitpython=3.1.20=pyhd8ed1ab_0
<   - glib=2.68.3=h9c3ff4c_0
<   - glib-tools=2.68.3=h9c3ff4c_0
---
>   - gitpython=3.1.18=pyhd8ed1ab_0
>   - glib=2.68.4=h9c3ff4c_0
>   - glib-tools=2.68.4=h9c3ff4c_0
133,135c139,141
<   - google-auth=1.33.1=pyh6c4a22f_0
<   - google-auth-oauthlib=0.4.4=pyhd8ed1ab_0
<   - greenlet=1.1.0=py37hcd2ae1e_0
---
>   - google-auth=2.0.2=pyh6c4a22f_0
>   - google-auth-oauthlib=0.4.6=pyhd8ed1ab_0
>   - greenlet=1.1.1=py37hcd2ae1e_0
140c146
<   - haversine=2.3.1=pyhd8ed1ab_0
---
>   - haversine=2.5.1=pyhd8ed1ab_0
147c153
<   - idna=3.1=pyhd3deb0d_0
---
>   - idna=2.10=pyh9f0ad1d_0
150,152c156,158
<   - importlib-metadata=4.6.1=py37h89c1867_0
<   - importlib_metadata=4.6.1=hd8ed1ab_0
<   - importlib_resources=5.2.0=pyhd8ed1ab_0
---
>   - importlib-metadata=4.8.1=py37h89c1867_0
>   - importlib_metadata=4.8.1=hd8ed1ab_0
>   - importlib_resources=5.2.2=pyhd8ed1ab_0
154,156c160,162
<   - intake=0.6.2=pyhd8ed1ab_0
<   - intake-esm=2021.1.15=pyhd8ed1ab_0
<   - intake-geopandas=0.2.4=pyhd8ed1ab_0
---
>   - intake=0.6.3=pyhd8ed1ab_0
>   - intake-esm=2021.8.17=pyhd8ed1ab_0
>   - intake-geopandas=0.3.0=pyhd8ed1ab_0
159c165
<   - ipykernel=5.5.5=py37h085eea5_0
---
>   - ipykernel=6.3.1=py37h6531663_0
161c167
<   - ipython=7.25.0=py37h085eea5_1
---
>   - ipython=7.27.0=py37h6531663_0
163c169
<   - ipywidgets=7.6.3=pyhd3deb0d_0
---
>   - ipywidgets=7.6.4=pyhd8ed1ab_0
167a174
>   - jmespath=0.10.0=pyh9f0ad1d_0
175c182
<   - jupyter-archive=3.0.1=pyhd8ed1ab_0
---
>   - jupyter-archive=3.0.3=pyhd8ed1ab_0
183c190
<   - jupyter_server=1.10.1=pyhd8ed1ab_0
---
>   - jupyter_server=1.10.2=pyhd8ed1ab_0
187,188c194,195
<   - jupyterlab=3.1.0=pyhd8ed1ab_0
<   - jupyterlab-git=0.31.0=pyhd8ed1ab_0
---
>   - jupyterlab=3.1.11=pyhd8ed1ab_0
>   - jupyterlab-git=0.32.2=pyhd8ed1ab_0
192,194c199,201
<   - jupyterlab_server=2.6.1=pyhd8ed1ab_0
<   - jupyterlab_widgets=1.0.0=pyhd8ed1ab_1
<   - jupytext=1.11.4=pyhd0ecf6b_0
---
>   - jupyterlab_server=2.8.1=pyhd8ed1ab_0
>   - jupyterlab_widgets=1.0.1=pyhd8ed1ab_0
>   - jupytext=1.11.5=pyh6002c4b_0
197c204
<   - kiwisolver=1.3.1=py37h2527ec5_1
---
>   - kiwisolver=1.3.2=py37h2527ec5_0
222c229
<   - libgcc-ng=11.1.0=hc902ee8_2
---
>   - libgcc-ng=11.1.0=hc902ee8_8
224,227c231,234
<   - libgfortran-ng=11.1.0=h69a702a_0
<   - libgfortran5=11.1.0=h6c583b3_0
<   - libglib=2.68.3=h3e27bee_0
<   - libgomp=11.1.0=hc902ee8_2
---
>   - libgfortran-ng=11.1.0=h69a702a_8
>   - libgfortran5=11.1.0=h6c583b3_8
>   - libglib=2.68.4=h3e27bee_0
>   - libgomp=11.1.0=hc902ee8_8
246,247c253,254
<   - libssh2=1.9.0=ha56f1ee_6
<   - libstdcxx-ng=11.1.0=h56837e0_2
---
>   - libssh2=1.10.0=ha56f1ee_0
>   - libstdcxx-ng=11.1.0=h56837e0_8
253c260
<   - libwebp-base=1.2.0=h7f98852_2
---
>   - libwebp-base=1.2.1=h7f98852_0
262,264c269,271
<   - lz4-c=1.9.3=h9c3ff4c_0
<   - mako=1.1.4=pyh44b312d_0
<   - mamba_gator=5.1.1=pyhd8ed1ab_0
---
>   - lz4-c=1.9.3=h9c3ff4c_1
>   - mako=1.1.5=pyhd8ed1ab_0
>   - mamba_gator=5.1.2=pyhd8ed1ab_0
269,271c276,278
<   - matplotlib=3.4.2=py37h89c1867_0
<   - matplotlib-base=3.4.2=py37hdd32ed1_0
<   - matplotlib-inline=0.1.2=pyhd8ed1ab_2
---
>   - matplotlib=3.4.3=py37h89c1867_0
>   - matplotlib-base=3.4.3=py37h1058ff1_0
>   - matplotlib-inline=0.1.3=pyhd8ed1ab_0
277c284
<   - more-itertools=8.8.0=pyhd8ed1ab_0
---
>   - more-itertools=8.9.0=pyhd8ed1ab_0
285c292
<   - nbclient=0.5.3=pyhd8ed1ab_0
---
>   - nbclient=0.5.4=pyhd8ed1ab_0
293a301
>   - nested_dict=1.61=pyhd3deb0d_0
299c307
<   - notebook=6.4.0=pyha770c72_0
---
>   - notebook=6.4.3=pyha770c72_0
301c309
<   - nss=3.67=hb5efdd6_0
---
>   - nss=3.69=hb5efdd6_0
303,304c311,312
<   - numcodecs=0.8.0=py37hcd2ae1e_0
<   - numpy=1.21.1=py37h038b26d_0
---
>   - numcodecs=0.9.1=py37hcd2ae1e_0
>   - numpy=1.21.2=py37h31617e3_0
310c318
<   - openssl=1.1.1k=h7f98852_0
---
>   - openssl=1.1.1l=h7f98852_0
312c320
<   - owslib=0.24.1=pyhd8ed1ab_0
---
>   - owslib=0.25.0=pyhd8ed1ab_0
315,316c323,324
<   - pandas=1.3.1=py37h219a48f_0
<   - pandoc=2.14.1=h7f98852_0
---
>   - pandas=1.2.5=py37h219a48f_0
>   - pandoc=2.14.2=h7f98852_0
318c326
<   - panel=0.12.0=pyhd8ed1ab_0
---
>   - panel=0.12.1=pyhd8ed1ab_0
319a328
>   - paramiko=2.7.2=pyh9f0ad1d_0
327,328c336,337
<   - pint=0.17=pyhd8ed1ab_0
<   - pip=21.2.1=pyhd8ed1ab_0
---
>   - pint=0.17=pyhd8ed1ab_1
>   - pip=21.2.4=pyhd8ed1ab_0
330c339
<   - plotly=5.1.0=pyhd8ed1ab_1
---
>   - plotly=5.3.1=pyhd8ed1ab_0
332c341
<   - pooch=1.4.0=pyhd8ed1ab_0
---
>   - pooch=1.5.1=pyhd8ed1ab_0
334c343
<   - poppler-data=0.4.10=0
---
>   - poppler-data=0.4.11=hd8ed1ab_0
338,339c347,348
<   - prompt-toolkit=3.0.19=pyha770c72_0
<   - prompt_toolkit=3.0.19=hd8ed1ab_0
---
>   - prompt-toolkit=3.0.20=pyha770c72_0
>   - prompt_toolkit=3.0.20=hd8ed1ab_0
352c361
<   - pycurl=7.43.0.6=py37h88a64d2_1
---
>   - pycurl=7.44.1=py37h88a64d2_0
355,356c364,365
<   - pygeos=0.10.1=py37h2d1e849_0
<   - pygments=2.9.0=pyhd8ed1ab_0
---
>   - pygeos=0.10.2=py37h48c49eb_0
>   - pygments=2.10.0=pyhd8ed1ab_0
357a367
>   - pynacl=1.4.0=py37h5e8e339_2
369c379
<   - pytest=6.2.4=py37h89c1867_0
---
>   - pytest=6.2.5=py37h89c1867_0
373d382
<   - python-editor=1.0.4=py_0
379,381c388,390
<   - pywavelets=1.1.1=py37h902c9e0_3
<   - pyyaml=5.4.1=py37h5e8e339_0
<   - pyzmq=22.1.0=py37h336d617_0
---
>   - pywavelets=1.1.1=py37hb1e94ed_3
>   - pyyaml=5.4.1=py37h5e8e339_1
>   - pyzmq=22.2.1=py37h336d617_0
384c393
<   - qtpy=1.9.0=py_0
---
>   - qtpy=1.11.0=pyhd8ed1ab_0
387c396
<   - ravenpy=0.7.0=pyh1bb2064_0
---
>   - ravenpy=0.7.4=pyh7f9bfb9_0
389,390c398,399
<   - regionmask=0.7.0=pyhd8ed1ab_0
<   - requests=2.26.0=pyhd8ed1ab_0
---
>   - regionmask=0.8.0=pyhd8ed1ab_0
>   - requests=2.25.1=pyhd3deb0d_0
394c403
<   - rioxarray=0.5.0=pyhd8ed1ab_0
---
>   - rioxarray=0.7.0=pyhd8ed1ab_0
398c407
<   - ruamel.yaml=0.17.10=py37h5e8e339_0
---
>   - ruamel.yaml=0.17.16=py37h5e8e339_0
400,405c409,417
<   - scikit-image=0.18.2=py37h219a48f_0
<   - scikit-learn=0.24.2=py37h18a542f_0
<   - scipy=1.7.0=py37h29e03ee_1
<   - send2trash=1.7.1=pyhd8ed1ab_0
<   - setuptools=49.6.0=py37h89c1867_3
<   - shapely=1.7.1=py37h2d1e849_5
---
>   - s3fs=2021.8.1=pyhd8ed1ab_0
>   - scikit-image=0.18.3=py37he8f5f7f_0
>   - scikit-learn=0.24.2=py37hf0f1638_1
>   - scipy=1.7.1=py37hf2a6cf1_0
>   - scp=0.14.0=pyhd8ed1ab_0
>   - selenium=3.141.0=py37h5e8e339_1002
>   - send2trash=1.8.0=pyhd8ed1ab_0
>   - setuptools=58.0.3=py37h89c1867_0
>   - shapely=1.7.1=py37h48c49eb_5
414c426
<   - sqlalchemy=1.4.22=py37h5e8e339_0
---
>   - sqlalchemy=1.4.23=py37h5e8e339_0
416c428
<   - statsmodels=0.12.2=py37h902c9e0_0
---
>   - statsmodels=0.12.2=py37hb1e94ed_0
419c431
<   - terminado=0.10.1=py37h89c1867_0
---
>   - terminado=0.12.1=py37h89c1867_0
425c437
<   - tk=8.6.10=h21135ba_1
---
>   - tk=8.6.11=h27826a3_1
429,430c441,442
<   - tqdm=4.61.2=pyhd8ed1ab_1
<   - traitlets=5.0.5=py_0
---
>   - tqdm=4.62.2=pyhd8ed1ab_0
>   - traitlets=5.1.0=pyhd8ed1ab_0
436c448
<   - udunits2=2.2.27.27=h975c496_1
---
>   - udunits2=2.2.27.27=hc3e0081_2
439c451
<   - voila=0.2.10=pyhd8ed1ab_0
---
>   - voila=0.2.11=pyhd8ed1ab_1
447c459
<   - wheel=0.36.2=pyhd3deb0d_0
---
>   - wheel=0.37.0=pyhd8ed1ab_1
452c464
<   - xclim=0.28.0=pyhd8ed1ab_0
---
>   - xclim=0.28.1=pyhd8ed1ab_0
469,470c481,482
<   - xrft=0.3.0=pyhd8ed1ab_0
<   - xskillscore=0.0.22=pyhd8ed1ab_0
---
>   - xrft=0.3.1=pyhd8ed1ab_0
>   - xskillscore=0.0.23=pyhd8ed1ab_0
474,476c486,488
<   - zarr=2.8.3=pyhd8ed1ab_0
<   - zeromq=4.3.4=h9c3ff4c_0
<   - zfp=0.5.5=h9c3ff4c_5
---
>   - zarr=2.9.5=pyhd8ed1ab_0
>   - zeromq=4.3.4=h9c3ff4c_1
>   - zfp=0.5.5=h9c3ff4c_6
488c500
<     - ipython-blocking==0.2.1
---
>     - ipython-blocking==0.3.1
```

Full new `conda env export`:
[210908-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/7138455/210908-conda-env-export.yml.txt)
```
name: birdy
channels:
  - cdat
  - conda-forge
  - defaults
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=1_gnu
  - affine=2.3.0=py_0
  - aiobotocore=1.4.0=pyhd8ed1ab_0
  - aiohttp=3.7.4.post0=py37h5e8e339_0
  - aioitertools=0.8.0=pyhd8ed1ab_0
  - alembic=1.7.1=pyhd8ed1ab_0
  - alsa-lib=1.2.3=h516909a_0
  - ansi2html=1.6.0=py37h89c1867_1
  - anyio=3.3.0=py37h89c1867_0
  - appdirs=1.4.4=pyh9f0ad1d_0
  - argcomplete=1.12.3=pyhd8ed1ab_2
  - argon2-cffi=20.1.0=py37h5e8e339_2
  - asciitree=0.3.3=py_2
  - async-timeout=3.0.1=py_1000
  - async_generator=1.10=py_0
  - attrs=21.2.0=pyhd8ed1ab_0
  - babel=2.9.1=pyh44b312d_0
  - backcall=0.2.0=pyh9f0ad1d_0
  - backports=1.0=py_2
  - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
  - bcrypt=3.2.0=py37h5e8e339_1
  - beautifulsoup4=4.10.0=pyha770c72_0
  - bias_correction=0.4=pyhd8ed1ab_0
  - birdy=v0.8.0=pyh6c4a22f_1
  - bleach=4.1.0=pyhd8ed1ab_0
  - blinker=1.4=py_1
  - blosc=1.21.0=h9c3ff4c_0
  - bokeh=2.3.3=py37h89c1867_0
  - boltons=21.0.0=pyhd8ed1ab_0
  - boost-cpp=1.74.0=hc6e9bd1_3
  - botocore=1.20.106=pyhd8ed1ab_0
  - bottleneck=1.3.2=py37hb1e94ed_4
  - branca=0.4.2=pyhd8ed1ab_0
  - brotli=1.0.9=h7f98852_5
  - brotli-bin=1.0.9=h7f98852_5
  - brotli-python=1.0.9=py37hcd2ae1e_5
  - brotlipy=0.7.0=py37h5e8e339_1001
  - brunsli=0.1=h9c3ff4c_0
  - bzip2=1.0.8=h7f98852_4
  - c-ares=1.17.2=h7f98852_0
  - ca-certificates=2021.5.30=ha878542_0
  - cached-property=1.5.2=hd8ed1ab_1
  - cached_property=1.5.2=pyha770c72_1
  - cachetools=4.2.2=pyhd8ed1ab_0
  - cairo=1.16.0=h6cf1ce9_1008
  - cartopy=0.19.0.post1=py37h0c48da3_1
  - cdat_info=8.2.1=pyh9f0ad1d_1
  - cdtime=3.1.4=py37h5ad02f4_2
  - cdutil=8.2.1=pyh9f0ad1d_0
  - certifi=2021.5.30=py37h89c1867_0
  - certipy=0.1.3=py_0
  - cf_xarray=0.6.1=pyh6c4a22f_0
  - cffi=1.14.6=py37hc58025e_0
  - cfgrib=0.9.9.0=pyhd8ed1ab_1
  - cfitsio=3.470=hb418390_7
  - cftime=1.5.0=py37h6f94858_0
  - chardet=4.0.0=py37h89c1867_1
  - charls=2.2.0=h9c3ff4c_0
  - click=7.1.2=pyh9f0ad1d_0
  - click-plugins=1.1.1=py_0
  - cligj=0.7.2=pyhd8ed1ab_0
  - climpred=2.1.5.post1=pyhd8ed1ab_0
  - clisops=0.6.5=pyh6c4a22f_0
  - cloudpickle=1.6.0=py_0
  - colorama=0.4.4=pyh9f0ad1d_0
  - colorcet=2.0.6=pyhd8ed1ab_0
  - configurable-http-proxy=4.5.0=node15_he6ea98c_0
  - coverage=5.5=py37h5e8e339_0
  - cryptography=3.4.7=py37h5d9358c_0
  - curl=7.78.0=hea6ffbf_0
  - cycler=0.10.0=py_2
  - cytoolz=0.11.0=py37h5e8e339_3
  - dash=1.21.0=pyhd8ed1ab_0
  - dash-core-components=1.17.1=pyhd8ed1ab_0
  - dash-html-components=1.1.4=pyhd8ed1ab_0
  - dash-renderer=1.9.1=pyhd8ed1ab_0
  - dash-table=4.12.0=pyhd8ed1ab_0
  - dask=2021.9.0=pyhd8ed1ab_0
  - dask-core=2021.9.0=pyhd8ed1ab_0
  - dataclasses=0.8=pyhc8e2a94_3
  - datashader=0.13.0=pyh6c4a22f_0
  - datashape=0.5.4=py_1
  - dbus=1.13.6=h48d8840_2
  - debugpy=1.4.1=py37hcd2ae1e_0
  - decorator=5.0.9=pyhd8ed1ab_0
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - descartes=1.1.0=py_4
  - distarray=2.12.2=pyhd8ed1ab_2
  - distributed=2021.9.0=py37h89c1867_0
  - docopt=0.6.2=py_1
  - docrep=0.3.2=pyh44b312d_0
  - dv3d=8.2.1=pyh9f0ad1d_0
  - eccodes=2.21.0=ha0e6eb6_0
  - entrypoints=0.3=pyhd8ed1ab_1003
  - eofs=1.4.0=py_0
  - esgf-compute-api=2.3.9=0_h1234567_
  - esmf=8.1.0=nompi_hed08645_0
  - esmpy=8.1.0=nompi_py37hff16fce_0
  - expat=2.4.1=h9c3ff4c_0
  - fasteners=0.16=pyhd8ed1ab_0
  - fastprogress=1.0.0=py_0
  - ffmpeg=4.2.3=h167e202_0
  - fiona=1.8.18=py37h527b4ca_0
  - flask=2.0.1=pyhd8ed1ab_0
  - flask-compress=1.10.1=pyhd8ed1ab_0
  - fontconfig=2.13.1=hba837de_1005
  - freetype=2.10.4=h0708190_1
  - freexl=1.0.6=h7f98852_0
  - fsspec=2021.8.1=pyhd8ed1ab_0
  - funcsigs=1.0.2=py_3
  - future=0.18.2=py37h89c1867_3
  - g2clib=1.6.3=hdfa6d74_0
  - gcsfs=2021.8.1=pyhd8ed1ab_0
  - gdal=3.1.4=py37h2ec2946_8
  - geckodriver=0.29.1=h3146498_0
  - genutil=8.2.1=py37h161383b_1
  - geopandas=0.9.0=pyhd8ed1ab_1
  - geopandas-base=0.9.0=pyhd8ed1ab_1
  - geos=3.9.1=h9c3ff4c_2
  - geotiff=1.6.0=h2b14fbe_4
  - geoviews=1.9.1=pyhd8ed1ab_1
  - geoviews-core=1.9.1=pyha770c72_1
  - gettext=0.19.8.1=h0b5b191_1005
  - ghostscript=9.54.0=h9c3ff4c_1
  - giflib=5.2.1=h36c2ea0_2
  - gitdb=4.0.7=pyhd8ed1ab_0
  - gitpython=3.1.18=pyhd8ed1ab_0
  - glib=2.68.4=h9c3ff4c_0
  - glib-tools=2.68.4=h9c3ff4c_0
  - gmp=6.2.1=h58526e2_0
  - gnutls=3.6.13=h85f3911_1
  - google-auth=2.0.2=pyh6c4a22f_0
  - google-auth-oauthlib=0.4.6=pyhd8ed1ab_0
  - greenlet=1.1.1=py37hcd2ae1e_0
  - gst-plugins-base=1.18.4=hf529b03_2
  - gstreamer=1.18.4=h76c114f_2
  - h5netcdf=0.11.0=pyhd8ed1ab_0
  - h5py=3.3.0=nompi_py37ha3df211_100
  - haversine=2.5.1=pyhd8ed1ab_0
  - hdf4=4.2.15=h10796ff_3
  - hdf5=1.10.6=nompi_h6a2412b_1114
  - heapdict=1.0.1=py_0
  - holoviews=1.14.5=pyhd8ed1ab_0
  - hvplot=0.7.3=pyh6c4a22f_0
  - icu=68.1=h58526e2_0
  - idna=2.10=pyh9f0ad1d_0
  - imagecodecs=2021.3.31=py37haf4b6ec_0
  - imageio=2.9.0=py_0
  - importlib-metadata=4.8.1=py37h89c1867_0
  - importlib_metadata=4.8.1=hd8ed1ab_0
  - importlib_resources=5.2.2=pyhd8ed1ab_0
  - iniconfig=1.1.1=pyh9f0ad1d_0
  - intake=0.6.3=pyhd8ed1ab_0
  - intake-esm=2021.8.17=pyhd8ed1ab_0
  - intake-geopandas=0.3.0=pyhd8ed1ab_0
  - intake-thredds=2021.6.16=pyhd8ed1ab_0
  - intake-xarray=0.5.0=pyhd8ed1ab_0
  - ipykernel=6.3.1=py37h6531663_0
  - ipyleaflet=0.14.0=pyhd8ed1ab_1
  - ipython=7.27.0=py37h6531663_0
  - ipython_genutils=0.2.0=py_1
  - ipywidgets=7.6.4=pyhd8ed1ab_0
  - itsdangerous=2.0.1=pyhd8ed1ab_0
  - jasper=1.900.1=h07fcdf6_1006
  - jedi=0.18.0=py37h89c1867_2
  - jinja2=3.0.1=pyhd8ed1ab_0
  - jmespath=0.10.0=pyh9f0ad1d_0
  - joblib=1.0.1=pyhd8ed1ab_0
  - jpeg=9d=h36c2ea0_0
  - json-c=0.15=h98cffda_0
  - json5=0.9.5=pyh9f0ad1d_0
  - jsonpickle=2.0.0=pyhd8ed1ab_0
  - jsonschema=3.2.0=pyhd8ed1ab_3
  - jupyter=1.0.0=py37h89c1867_6
  - jupyter-archive=3.0.3=pyhd8ed1ab_0
  - jupyter-dash=0.4.0=pyhd8ed1ab_0
  - jupyter-resource-usage=0.5.1=pyhd8ed1ab_0
  - jupyter-server-mathjax=0.2.3=pyhd8ed1ab_0
  - jupyter_bokeh=3.0.2=pyhd8ed1ab_0
  - jupyter_client=6.1.12=pyhd8ed1ab_0
  - jupyter_console=6.4.0=pyhd8ed1ab_0
  - jupyter_core=4.7.1=py37h89c1867_0
  - jupyter_server=1.10.2=pyhd8ed1ab_0
  - jupyter_telemetry=0.1.0=pyhd8ed1ab_1
  - jupyterhub=1.4.2=py37h89c1867_0
  - jupyterhub-base=1.4.2=py37h89c1867_0
  - jupyterlab=3.1.11=pyhd8ed1ab_0
  - jupyterlab-git=0.32.2=pyhd8ed1ab_0
  - jupyterlab-system-monitor=0.8.0=pyhd8ed1ab_1
  - jupyterlab-topbar=0.6.1=pyhd8ed1ab_2
  - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
  - jupyterlab_server=2.8.1=pyhd8ed1ab_0
  - jupyterlab_widgets=1.0.1=pyhd8ed1ab_0
  - jupytext=1.11.5=pyh6002c4b_0
  - jxrlib=1.1=h7f98852_2
  - kealib=1.4.14=hcc255d8_2
  - kiwisolver=1.3.2=py37h2527ec5_0
  - krb5=1.19.2=hcc1bbae_0
  - lame=3.100=h7f98852_1001
  - lazy-object-proxy=1.6.0=py37h5e8e339_0
  - lcms2=2.12=hddcbb42_0
  - ld_impl_linux-64=2.36.1=hea4e1c9_2
  - lerc=2.2.1=h9c3ff4c_0
  - libaec=1.0.5=h9c3ff4c_0
  - libblas=3.8.0=17_openblas
  - libbrotlicommon=1.0.9=h7f98852_5
  - libbrotlidec=1.0.9=h7f98852_5
  - libbrotlienc=1.0.9=h7f98852_5
  - libcblas=3.8.0=17_openblas
  - libcdms=3.1.2=h981a4fd_113
  - libcf=1.0.3=py37heda41dd_109
  - libclang=11.1.0=default_ha53f305_1
  - libcurl=7.78.0=h2574ce0_0
  - libdap4=3.20.6=hd7c4107_2
  - libdeflate=1.7=h7f98852_5
  - libdrs=3.1.2=h7918d09_113
  - libdrs_f=3.1.2=h5026c31_111
  - libedit=3.1.20191231=he28a2e2_2
  - libev=4.33=h516909a_1
  - libevent=2.1.10=hcdb4288_3
  - libffi=3.3=h58526e2_2
  - libgcc-ng=11.1.0=hc902ee8_8
  - libgdal=3.1.4=h38ff51b_8
  - libgfortran-ng=11.1.0=h69a702a_8
  - libgfortran5=11.1.0=h6c583b3_8
  - libglib=2.68.4=h3e27bee_0
  - libgomp=11.1.0=hc902ee8_8
  - libiconv=1.16=h516909a_0
  - libidn2=2.3.2=h7f98852_0
  - libkml=1.3.0=h238a007_1014
  - liblapack=3.8.0=17_openblas
  - libllvm10=10.0.1=he513fc3_3
  - libllvm11=11.1.0=hf817b99_2
  - libnetcdf=4.7.4=nompi_h56d31a8_107
  - libnghttp2=1.43.0=h812cca2_0
  - libogg=1.3.4=h7f98852_1
  - libopenblas=0.3.10=pthreads_h4812303_5
  - libopus=1.3.1=h7f98852_1
  - libpng=1.6.37=h21135ba_2
  - libpq=13.3=hd57d9b9_0
  - libprotobuf=3.17.2=h780b84a_1
  - librttopo=1.1.0=h1185371_6
  - libsodium=1.0.18=h36c2ea0_1
  - libspatialindex=1.9.3=h9c3ff4c_4
  - libspatialite=5.0.1=he52d314_3
  - libssh2=1.10.0=ha56f1ee_0
  - libstdcxx-ng=11.1.0=h56837e0_8
  - libtiff=4.2.0=hbd63e13_2
  - libunistring=0.9.10=h7f98852_0
  - libuuid=2.32.1=h7f98852_1000
  - libuv=1.41.1=h7f98852_0
  - libvorbis=1.3.7=h9c3ff4c_0
  - libwebp-base=1.2.1=h7f98852_0
  - libxcb=1.13=h7f98852_1003
  - libxkbcommon=1.0.3=he3ba5ed_0
  - libxml2=2.9.12=h72842e0_0
  - libxslt=1.1.33=h15afd5d_2
  - libzopfli=1.0.3=h9c3ff4c_0
  - llvmlite=0.36.0=py37h9d7f4d0_0
  - locket=0.2.0=py_2
  - lxml=4.6.3=py37h77fd288_0
  - lz4-c=1.9.3=h9c3ff4c_1
  - mako=1.1.5=pyhd8ed1ab_0
  - mamba_gator=5.1.2=pyhd8ed1ab_0
  - mapclassify=2.4.3=pyhd8ed1ab_0
  - markdown=3.3.4=pyhd8ed1ab_0
  - markdown-it-py=1.1.0=pyhd8ed1ab_0
  - markupsafe=2.0.1=py37h5e8e339_0
  - matplotlib=3.4.3=py37h89c1867_0
  - matplotlib-base=3.4.3=py37h1058ff1_0
  - matplotlib-inline=0.1.3=pyhd8ed1ab_0
  - mdit-py-plugins=0.2.8=pyhd8ed1ab_0
  - memory_profiler=0.58.0=py_0
  - mesalib=18.3.1=h590aaf7_0
  - mistune=0.8.4=py37h5e8e339_1004
  - monotonic=1.5=py_0
  - more-itertools=8.9.0=pyhd8ed1ab_0
  - msgpack-python=1.0.2=py37h2527ec5_1
  - multidict=5.1.0=py37h5e8e339_1
  - multipledispatch=0.6.0=py_0
  - munch=2.5.0=py_0
  - mysql-common=8.0.25=ha770c72_0
  - mysql-libs=8.0.25=h935591d_0
  - nbclassic=0.3.1=pyhd8ed1ab_1
  - nbclient=0.5.4=pyhd8ed1ab_0
  - nbconvert=6.1.0=py37h89c1867_0
  - nbdime=3.1.0=pyhd8ed1ab_0
  - nbformat=5.1.3=pyhd8ed1ab_0
  - nbresuse=0.4.0=pyhd8ed1ab_0
  - nbval=0.9.6=pyh9f0ad1d_0
  - nc-time-axis=1.3.1=pyhd8ed1ab_2
  - ncurses=6.2=h58526e2_4
  - nest-asyncio=1.5.1=pyhd8ed1ab_0
  - nested_dict=1.61=pyhd3deb0d_0
  - netcdf-fortran=4.5.3=nompi_h996563d_103
  - netcdf4=1.5.6=nompi_py37hf7b6e46_102
  - nettle=3.6=he412f7d_0
  - networkx=2.5=py_0
  - nodejs=15.14.0=h92b4a50_0
  - notebook=6.4.3=pyha770c72_0
  - nspr=4.30=h9c3ff4c_0
  - nss=3.69=hb5efdd6_0
  - numba=0.53.1=py37hb11d6e1_1
  - numcodecs=0.9.1=py37hcd2ae1e_0
  - numpy=1.21.2=py37h31617e3_0
  - oauthlib=3.1.1=pyhd8ed1ab_0
  - olefile=0.46=pyh9f0ad1d_1
  - openblas=0.3.10=pthreads_h04b7a96_5
  - openh264=2.1.1=h780b84a_0
  - openjpeg=2.4.0=hb52868f_1
  - openssl=1.1.1l=h7f98852_0
  - ostrich=21.03.16=h4bd325d_1
  - owslib=0.25.0=pyhd8ed1ab_0
  - packaging=21.0=pyhd8ed1ab_0
  - pamela=1.0.0=py_0
  - pandas=1.2.5=py37h219a48f_0
  - pandoc=2.14.2=h7f98852_0
  - pandocfilters=1.4.2=py_1
  - panel=0.12.1=pyhd8ed1ab_0
  - param=1.11.1=pyh6c4a22f_0
  - paramiko=2.7.2=pyh9f0ad1d_0
  - parso=0.8.2=pyhd8ed1ab_0
  - partd=1.2.0=pyhd8ed1ab_0
  - patsy=0.5.1=py_0
  - pcre=8.45=h9c3ff4c_0
  - pexpect=4.8.0=pyh9f0ad1d_2
  - pickleshare=0.7.5=py_1003
  - pillow=8.2.0=py37h4600e1f_1
  - pint=0.17=pyhd8ed1ab_1
  - pip=21.2.4=pyhd8ed1ab_0
  - pixman=0.40.0=h36c2ea0_0
  - plotly=5.3.1=pyhd8ed1ab_0
  - pluggy=0.13.1=py37h89c1867_4
  - pooch=1.5.1=pyhd8ed1ab_0
  - poppler=0.89.0=h2de54a5_5
  - poppler-data=0.4.11=hd8ed1ab_0
  - postgresql=13.3=h2510834_0
  - proj=7.2.0=h277dcde_2
  - prometheus_client=0.11.0=pyhd8ed1ab_0
  - prompt-toolkit=3.0.20=pyha770c72_0
  - prompt_toolkit=3.0.20=hd8ed1ab_0
  - properscoring=0.1=py_0
  - protobuf=3.17.2=py37hcd2ae1e_0
  - pscript=0.7.5=pyhd3deb0d_0
  - psutil=5.8.0=py37h5e8e339_1
  - pthread-stubs=0.4=h36c2ea0_1001
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - py=1.10.0=pyhd3deb0d_0
  - pyasn1=0.4.8=py_0
  - pyasn1-modules=0.2.7=py_0
  - pycparser=2.20=pyh9f0ad1d_2
  - pyct=0.4.6=py_0
  - pyct-core=0.4.6=py_0
  - pycurl=7.44.1=py37h88a64d2_0
  - pydantic=1.8.2=py37h5e8e339_0
  - pydap=3.2.2=pyh9f0ad1d_1001
  - pygeos=0.10.2=py37h48c49eb_0
  - pygments=2.10.0=pyhd8ed1ab_0
  - pyjwt=2.1.0=pyhd8ed1ab_0
  - pynacl=1.4.0=py37h5e8e339_2
  - pyopenssl=20.0.1=pyhd8ed1ab_0
  - pyparsing=2.4.7=pyh9f0ad1d_0
  - pyproj=3.1.0=py37h20b8899_3
  - pyqt=5.12.3=py37h89c1867_7
  - pyqt-impl=5.12.3=py37he336c9b_7
  - pyqt5-sip=4.19.18=py37hcd2ae1e_7
  - pyqtchart=5.12=py37he336c9b_7
  - pyqtwebengine=5.12.1=py37he336c9b_7
  - pyrsistent=0.17.3=py37h5e8e339_2
  - pyshp=2.1.3=pyh44b312d_0
  - pysocks=1.7.1=py37h89c1867_3
  - pytest=6.2.5=py37h89c1867_0
  - python=3.7.10=hffdb5ce_100_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python-eccodes=2021.03.0=py37h6f94858_1
  - python-json-logger=2.0.1=pyh9f0ad1d_0
  - python_abi=3.7=2_cp37m
  - pytz=2021.1=pyhd8ed1ab_0
  - pyu2f=0.1.5=pyhd8ed1ab_0
  - pyviz_comms=2.1.0=pyhd8ed1ab_0
  - pywavelets=1.1.1=py37hb1e94ed_3
  - pyyaml=5.4.1=py37h5e8e339_1
  - pyzmq=22.2.1=py37h336d617_0
  - qt=5.12.9=hda022c4_4
  - qtconsole=5.1.1=pyhd8ed1ab_0
  - qtpy=1.11.0=pyhd8ed1ab_0
  - rasterio=1.2.1=py37ha549118_0
  - raven-hydro=3.0.4.322=h516393e_0
  - ravenpy=0.7.4=pyh7f9bfb9_0
  - readline=8.1=h46c0cb4_0
  - regionmask=0.8.0=pyhd8ed1ab_0
  - requests=2.25.1=pyhd3deb0d_0
  - requests-oauthlib=1.3.0=pyh9f0ad1d_0
  - requests-unixsocket=0.2.0=py_0
  - retrying=1.3.3=py_2
  - rioxarray=0.7.0=pyhd8ed1ab_0
  - roocs-utils=0.4.2=pyh6c4a22f_0
  - rsa=4.7.2=pyh44b312d_0
  - rtree=0.9.7=py37h0b55af0_2
  - ruamel.yaml=0.17.16=py37h5e8e339_0
  - ruamel.yaml.clib=0.2.2=py37h5e8e339_2
  - s3fs=2021.8.1=pyhd8ed1ab_0
  - scikit-image=0.18.3=py37he8f5f7f_0
  - scikit-learn=0.24.2=py37hf0f1638_1
  - scipy=1.7.1=py37hf2a6cf1_0
  - scp=0.14.0=pyhd8ed1ab_0
  - selenium=3.141.0=py37h5e8e339_1002
  - send2trash=1.8.0=pyhd8ed1ab_0
  - setuptools=58.0.3=py37h89c1867_0
  - shapely=1.7.1=py37h48c49eb_5
  - siphon=0.9=py37h89c1867_0
  - six=1.16.0=pyh6c4a22f_0
  - smmap=3.0.5=pyh44b312d_0
  - snappy=1.1.8=he1b5a44_3
  - sniffio=1.2.0=py37h89c1867_1
  - snuggs=1.4.7=py_0
  - sortedcontainers=2.4.0=pyhd8ed1ab_0
  - soupsieve=2.0.1=py_1
  - sqlalchemy=1.4.23=py37h5e8e339_0
  - sqlite=3.36.0=h9cd32fc_0
  - statsmodels=0.12.2=py37hb1e94ed_0
  - tblib=1.7.0=pyhd8ed1ab_0
  - tenacity=8.0.1=pyhd8ed1ab_0
  - terminado=0.12.1=py37h89c1867_0
  - testpath=0.5.0=pyhd8ed1ab_0
  - threadpoolctl=2.2.0=pyh8a188c0_0
  - threddsclient=0.4.2=py_0
  - tifffile=2021.4.8=pyhd8ed1ab_0
  - tiledb=2.2.9=h91fcb0e_0
  - tk=8.6.11=h27826a3_1
  - toml=0.10.2=pyhd8ed1ab_0
  - toolz=0.11.1=py_0
  - tornado=6.1=py37h5e8e339_1
  - tqdm=4.62.2=pyhd8ed1ab_0
  - traitlets=5.1.0=pyhd8ed1ab_0
  - traittypes=0.2.1=pyh9f0ad1d_2
  - typing-extensions=3.10.0.0=hd8ed1ab_0
  - typing_extensions=3.10.0.0=pyha770c72_0
  - tzcode=2021a=h7f98852_2
  - tzdata=2021a=he74cb21_1
  - udunits2=2.2.27.27=hc3e0081_2
  - urllib3=1.26.6=pyhd8ed1ab_0
  - vcs=8.2.1=pyh9f0ad1d_0
  - voila=0.2.11=pyhd8ed1ab_1
  - vtk-cdat=8.2.0.8.2=py37_mesalibhead77ed_0
  - wcwidth=0.2.5=pyh9f0ad1d_2
  - webencodings=0.5.1=py_1
  - webob=1.8.7=pyhd8ed1ab_0
  - websocket-client=0.57.0=py37h89c1867_4
  - werkzeug=2.0.1=pyhd8ed1ab_0
  - wget=1.20.3=ha56f1ee_0
  - wheel=0.37.0=pyhd8ed1ab_1
  - widgetsnbextension=3.5.1=py37h89c1867_4
  - wrapt=1.12.1=py37h5e8e339_3
  - x264=1!152.20180806=h14c3975_0
  - xarray=0.19.0=pyhd8ed1ab_1
  - xclim=0.28.1=pyhd8ed1ab_0
  - xerces-c=3.2.3=h9d8b166_2
  - xesmf=0.6.0=pyhd8ed1ab_0
  - xeus=1.0.4=h7d0c39e_0
  - xeus-python=0.12.5=py37h4b46df4_2
  - xhistogram=0.3.0=pyhd8ed1ab_0
  - 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-libxdmcp=1.1.3=h7f98852_0
  - xorg-libxext=1.3.4=h7f98852_1
  - xorg-libxrender=0.9.10=h7f98852_1003
  - xorg-renderproto=0.11.1=h7f98852_1002
  - xorg-xextproto=7.3.0=h7f98852_1002
  - xorg-xproto=7.0.31=h7f98852_1007
  - xrft=0.3.1=pyhd8ed1ab_0
  - xskillscore=0.0.23=pyhd8ed1ab_0
  - xz=5.2.5=h516909a_1
  - yaml=0.2.5=h516909a_0
  - yarl=1.6.3=py37h5e8e339_2
  - zarr=2.9.5=pyhd8ed1ab_0
  - zeromq=4.3.4=h9c3ff4c_1
  - zfp=0.5.5=h9c3ff4c_6
  - zict=2.0.0=py_0
  - zipp=3.5.0=pyhd8ed1ab_0
  - zlib=1.2.11=h516909a_1010
  - zstd=1.4.9=ha95c52a_0
  - pip:
    - astunparse==1.6.3
    - cdms2==3.1.5
    - colour==0.1.5
    - geojson==2.5.0
    - handcalcs==1.4.1
    - innerscope==0.5.0
    - ipython-blocking==0.3.1
    - jupyterlab-logout==0.5.0
    - jupyternotify==0.1.15
    - pixiedust==1.1.19
    - pymetalink==6.2
    - pytest-tornasync==0.6.0.post2
    - regrid2==3.1.5
    - 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
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants