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

Make debugging of Jupyter Panel Preview easier #3440

Closed
MarcSkovMadsen opened this issue Apr 22, 2022 · 15 comments · Fixed by #4773
Closed

Make debugging of Jupyter Panel Preview easier #3440

MarcSkovMadsen opened this issue Apr 22, 2022 · 15 comments · Fixed by #4773
Labels
type: enhancement Minor feature or improvement to an existing feature
Milestone

Comments

@MarcSkovMadsen
Copy link
Collaborator

I've experienced it many times and also seen others struggle with the Jupyter Panel Preview.

If the jupyter panel preview just displays a blank screen you have no way of finding the cause as you cannot find the server logs any where.

Here is an example of a user struggling https://discourse.holoviz.org/t/how-to-customize-the-display-url-from-panel-serve-for-use-behind-jupyterhub-with-jupyter-server-proxy/3571/5?u=marc. I'm trying to help but have no chance to find the root cause.

I don't know what the solution is but

  • If the log exists somewhere then document how to find it.
  • If no log exist then create one by writing to a file. Document where to find that file.
  • If no log exist then make a general feature request to jupyter and maybe help them implement
@MarcSkovMadsen MarcSkovMadsen added the type: enhancement Minor feature or improvement to an existing feature label Apr 22, 2022
@MarcSkovMadsen MarcSkovMadsen added this to the Wishlist milestone Apr 22, 2022
@tlvu
Copy link
Contributor

tlvu commented Apr 27, 2022

I launched the docker image in https://discourse.holoviz.org/t/how-to-customize-the-display-url-from-panel-serve-for-use-behind-jupyterhub-with-jupyter-server-proxy/3571/ directly on my machine and I got this error when trying to launch the Panel preview:

ServerApp - ERROR - Uncaught exception GET /panel-preview/render/workdir/PAVICS-e2e-workflow-tests/binder/test-notebooks/TEST-panel-servable.ipynb (10.10.10.7)
HTTPServerRequest(protocol='http', host='lvu.ouranos.ca:8890', method='GET', uri='/panel-preview/render/workdir/PAVICS-e2e-workflow-tests/binder/test-notebooks/TEST-panel-servable.ipynb', version='HTTP/1.1', remote_ip='10.10.10.7')
Traceback (most recent call last):
  File "/opt/conda/envs/birdy/lib/python3.8/site-packages/tornado/web.py", line 1704, in _execute
    result = await result
  File "/opt/conda/envs/birdy/lib/python3.8/site-packages/panel/io/jupyter_server_extension.py", line 116, in get
    page = server_html_page_for_session(
  File "/opt/conda/envs/birdy/lib/python3.8/site-packages/bokeh/embed/server.py", line 255, in server_html_page_for_session
    bundle = bundle_for_objs_and_resources(None, resources)
  File "/opt/conda/envs/birdy/lib/python3.8/site-packages/bokeh/embed/bundle.py", line 211, in bundle_for_objs_and_resources
    js_files.extend(js_resources.js_files)
  File "/opt/conda/envs/birdy/lib/python3.8/site-packages/panel/io/resources.py", line 299, in js_files
    dist_dir = self.dist_dir
  File "/opt/conda/envs/birdy/lib/python3.8/site-packages/panel/io/resources.py", line 259, in dist_dir
    if self.absolute:
AttributeError: 'Resources' object has no attribute 'absolute'

@hoxbro
Copy link
Member

hoxbro commented Apr 27, 2022

@tlvu This should be fixed in the next patch release. If you can't wait, you can install it with pip install panel --pre or conda install -c pyviz/label/dev -c conda-forge "panel=0.13.1a2" .

tlvu added a commit to Ouranosinc/PAVICS-e2e-workflow-tests that referenced this issue Apr 27, 2022
…blem

See comment holoviz/panel#3440 (comment)

To hopefully fix this error:
```
ServerApp - ERROR - Uncaught exception GET
/panel-preview/render/workdir/PAVICS-e2e-workflow-tests/binder/test-notebooks/TEST-panel-servable.ipynb
(10.10.10.7)
HTTPServerRequest(protocol='http', host='lvu.ouranos.ca:8890',
method='GET',
uri='/panel-preview/render/workdir/PAVICS-e2e-workflow-tests/binder/test-notebooks/TEST-panel-servable.ipynb',
version='HTTP/1.1', remote_ip='10.10.10.7')
Traceback (most recent call last):
  File
"/opt/conda/envs/birdy/lib/python3.8/site-packages/tornado/web.py", line
1704, in _execute
    result = await result
  File
"/opt/conda/envs/birdy/lib/python3.8/site-packages/panel/io/jupyter_server_extension.py",
line 116, in get
    page = server_html_page_for_session(
  File
"/opt/conda/envs/birdy/lib/python3.8/site-packages/bokeh/embed/server.py",
line 255, in server_html_page_for_session
    bundle = bundle_for_objs_and_resources(None, resources)
  File
"/opt/conda/envs/birdy/lib/python3.8/site-packages/bokeh/embed/bundle.py",
line 211, in bundle_for_objs_and_resources
    js_files.extend(js_resources.js_files)
  File
"/opt/conda/envs/birdy/lib/python3.8/site-packages/panel/io/resources.py",
line 299, in js_files
    dist_dir = self.dist_dir
  File
"/opt/conda/envs/birdy/lib/python3.8/site-packages/panel/io/resources.py",
line 259, in dist_dir
    if self.absolute:
AttributeError: 'Resources' object has no attribute 'absolute'
```
@tlvu
Copy link
Contributor

tlvu commented Apr 27, 2022

@hoxbro Tried panel=0.13.1a2, Panel preview green icon gives blank page.

  ! conda env export -n birdy | grep -i -e panel -e proxy -e bokeh -e cpython

  - bokeh=2.4.2=py38h578d9bd_1
  - configurable-http-proxy=4.5.0=node16_h3b247e2_2
  - jupyter-panel-proxy=0.2.0a2=py_0
  - jupyter-server-proxy=3.2.1=pyhd8ed1ab_0
  - jupyter_bokeh=3.0.4=pyhd8ed1ab_0
  - lazy-object-proxy=1.7.1=py38h0a891b7_1
  - panel=0.13.1a2=py_0
  - python=3.8.13=h582c2e5_0_cpython

Clicking on the Panel preview green icon gives a blank page with this error on STDOUT:

[W 2022-04-27 14:50:55.477 ServerApp] Notebook home/lvu/repos/PAVICS-e2e-workflow-tests/binder/test-notebooks/TEST-panel-servable.ipynb is not trusted
[I 2022-04-27 14:50:55.968 ServerApp] Kernel started: c119bf68-0b9b-4ef7-9bf9-31a5f53ad8b3                                                            
[IPKernelApp] ERROR | No such comm target registered: jupyter.widget.control                                                                          
[IPKernelApp] WARNING | No such comm: 536c392f-ad19-4e6b-aa0a-2c68853ecd2e
[I 2022-04-27 14:50:59.131 ServerApp] Saving TEST-panel-servable.ipynb 

To reproduce:

@hoxbro
Copy link
Member

hoxbro commented Apr 27, 2022

I can recreate your problem - but I have no idea why it doesn't work. I would suggest you try to remove some of the complexity and see if that helps.

I tried to set up a simple docker container which did work.

FROM mambaorg/micromamba

RUN micromamba install -y -n base -c pyviz/label/dev -c conda-forge python=3.9 jupyterlab=3 "panel=0.13.1a2"
RUN micromamba clean --all --yes

EXPOSE 8888
CMD ["/bin/bash", "-c", "jupyter lab --ip '*'"]
  1. docker build . -t "test"
  2. docker run -p 8888:8888 test

@tlvu
Copy link
Contributor

tlvu commented Apr 27, 2022

I can recreate your problem - but I have no idea why it doesn't work. I would suggest you try to remove some of the complexity and see if that helps.

@hoxbro Yes that JupyterLab docker image is huge since it is the image that powers this site https://pavics.ouranos.ca/.

Is there any logging/tracing we can enable to debug this problem? Sorry if it's a beginner question, I am new at debugging JupyterLab plugin issues. Any generic JupyterLab plugins debugging technique and any specific to Panel is appreciated.

@MarcSkovMadsen
Copy link
Collaborator Author

MarcSkovMadsen commented Apr 28, 2022

I can confirm that upgrading to panel=0.13.1a2 makes the Jupyter Panel Preview work for me.

@hoxbro
Copy link
Member

hoxbro commented Apr 28, 2022

I would simply run a Dockerfile like the following and remove dependencies from environment.yml to see what causes the problem.

FROM mambaorg/micromamba

COPY docker/environment.yml ./
RUN micromamba install -y -n base -f environment.yml
RUN micromamba clean --all --yes

EXPOSE 8888
CMD ["/bin/bash", "-c", "jupyter lab --ip '*'"]

@hoxbro
Copy link
Member

hoxbro commented Apr 28, 2022

The problem seems to be related to handcalcs.

This works:

FROM mambaorg/micromamba

RUN micromamba install -y -n base -c pyviz/label/dev -c conda-forge jupyterlab=3 "panel=0.13.1a2"
RUN micromamba clean --all --yes

EXPOSE 8888
CMD ["/bin/bash", "-c", "jupyter lab --ip '*'"]

This does not:

FROM mambaorg/micromamba

RUN micromamba install -y -n base -c pyviz/label/dev -c conda-forge jupyterlab=3 "panel=0.13.1a2" handcalcs
RUN micromamba clean --all --yes

EXPOSE 8888
CMD ["/bin/bash", "-c", "jupyter lab --ip '*'"]

tlvu added a commit to Ouranosinc/PAVICS-e2e-workflow-tests that referenced this issue Apr 28, 2022
@tlvu
Copy link
Contributor

tlvu commented Apr 28, 2022

The problem seems to be related to handcalcs.

@hoxbro Wow spot on. Tested with a new build on my side with handcalcs removed and the Preview panel green button worked. How did you suspect handcalcs in the numerous jupyter plugins we installed in our JupyterLab image?!

By the way the same error [IPKernelApp] ERROR | No such comm target registered: jupyter.widget.control appeared again on STDOUT even when it works so basically there are nothing useful on STDOUT.

So it works when I launch the docker image standalone. It gives 500: Internal Server Error when launched by JupyterHub using DockerSpawner. Here is my jupyterhub config https://github.com/bird-house/birdhouse-deploy/blob/d5d2332580a1682b43c697fcc232aacf347a2a92/birdhouse/config/jupyterhub/jupyterhub_config.py.template. Do you happen to see anything fishy in that config?

When launched by DockerSpawner I also do not have the STDOUT, very annoying since if there are traceback I can not see it ! Will try to get STDOUT from the container launched by DockerSpawner.

@tlvu
Copy link
Contributor

tlvu commented Apr 28, 2022

So it works when I launch the docker image standalone. It gives 500: Internal Server Error when launched by JupyterHub using DockerSpawner.

@hoxbro

I think I found the cause of my problem and a new bug with the Panel preview green button: when looking up for the file on disk, it forgot to prepend the value of --notebook-dir:

[D 2022-04-28 19:40:03.697 ServerApp] Saving /home/lvu/repos/PAVICS-e2e-workflow-tests/binder/test-notebooks/TEST-panel-servable.ipynb
ServerApp - ERROR - Uncaught exception GET /panel-preview/render/test-notebooks/TEST-panel-servable.ipynb (10.10.10.12)
HTTPServerRequest(protocol='http', host='[lvu.ouranos.ca:8890](http://lvu.ouranos.ca:8890/)', method='GET', uri='/panel-preview/render/test-notebooks/TEST-panel-servable.ipynb', ver
sion='HTTP/1.1', remote_ip='10.10.10.12')
Traceback (most recent call last):
File "/opt/conda/envs/birdy/lib/python3.8/site-packages/tornado/[web.py](http://web.py/)", line 1704, in _execute
result = await result
File "/opt/conda/envs/birdy/lib/python3.8/site-packages/panel/io/jupyter_server_extension.py", line 107, in get
app = build_single_handler_application(path)
File "/opt/conda/envs/birdy/lib/python3.8/site-packages/bokeh/command/[util.py](http://util.py/)", line 135, in build_single_handler_application
raise ValueError("Path for Bokeh server application does not exist: %s" % path)
ValueError: Path for Bokeh server application does not exist: /test-notebooks/TEST-panel-servable.ipynb

It complains path /test-notebooks/TEST-panel-servable.ipynb not found and that's because the real path on disk is /home/lvu/repos/PAVICS-e2e-workflow-tests/binder/test-notebooks/TEST-panel-servable.ipynb (arg --notebook-dir=/home/lvu/repos/PAVICS-e2e-workflow-tests/binder given to jupyter lab) !

That error is reproducible when I make this change to my launchnotebook script

$ git diff
diff --git a/launchnotebook b/launchnotebook
index a3dcc0f..828afe2 100755
--- a/launchnotebook
+++ b/launchnotebook
@@ -26,4 +26,4 @@ docker run --rm --name $CONTAINER_NAME \
              usermod -u $UID jenkins; \
              echo 'ENV_PATH PATH=/usr/local/envs/birdy/bin:/opt/conda/bin:/usr/local/bin:/usr/bin:/bin' >> /etc/login.defs; \
              su jenkins -s /bin/bash -c \
-                 'jupyter lab --ip=0.0.0.0 --port=$PORT --no-browser'"
+                 'jupyter lab --ip=0.0.0.0 --port=$PORT --no-browser --notebook-dir=`pwd`/binder'"

Should I open a new bug?

@tlvu
Copy link
Contributor

tlvu commented Apr 28, 2022

I think I found the cause of my problem and a new bug with the Panel preview green button: when looking up for the file on disk, it forgot to prepend the value of --notebook-dir:

Looks like similar to #3170

@tlvu
Copy link
Contributor

tlvu commented Apr 29, 2022

I attempted a fix in PR #3469 but something weird happens when I test on the same test env I've been using to debug this issue.

Maybe it's late and I am tired but it seems the JupyterLab server restart each time I save the notebook to test the "Render on Save" checkbox. Is this a known issue?

@hoxbro
Copy link
Member

hoxbro commented Apr 30, 2022

@hoxbro Wow spot on. Tested with a new build on my side with handcalcs removed and the Preview panel green button worked. How did you suspect handcalcs in the numerous jupyter plugins we installed in our JupyterLab image?!

Just like I said, by removing dependencies from the environment file. There was no magic fix just manual work.

@tlvu
Copy link
Contributor

tlvu commented May 2, 2022

Just a recap that a way to debug the Jupyter Panel Preview would be immensely useful. Right now there is absolutely no logs anywhere.

I had 2 problems breaking Jupyter Panel Preview on my JupyterLab environment. I had package handcalcs that somehow interfere with it. Thanks @hoxbro for finding out by removing dependencies from the environment.yml file. I found out --notebook-dir had a regression and fixed it with my PR #3469. This was pure luck because I wanted to set --notebook-dir to save me time to navigate to the test notebook, it did not expect it to expose the regression.

Basically all the debugging technique currently are either guess work (handcalcs) or pure luck (--notebook-dir regression). A more "formal" approach would be much more helpful.

I also currently have trouble capturing the STDOUT from JupyterLab image (when launched by JupyterHub via DockerSpawner). If launch by Binder, same issue, no access to STDOUT.

I would suggest, if possible, the logging goes to the browser console would be best for accessibility.

tlvu added a commit to Ouranosinc/PAVICS-e2e-workflow-tests that referenced this issue 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
```
@kuatroka
Copy link

kuatroka commented Dec 8, 2022

Just a recap that a way to debug the Jupyter Panel Preview would be immensely useful. Right now there is absolutely no logs anywhere.

+1. I'm on version '0.14.1', no mentioned extensions and still no panel preview

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: enhancement Minor feature or improvement to an existing feature
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants