Skip to content

Commit 3191ff5

Browse files
authored
Jupyter docker: new build for xclim, ravenpy, globus personal connect and latest of everything else (#115)
## Changes - Jenkins: add RavenPy repo - Re-organize tutorial notebooks on PAVICS: dropped `esgf-compute-api` examples and group all Raven notebooks (RavenWPS and RavenPy) into one folder `raven`. - Jupyter env changes: - Update to python `3.9`, from `3.8` - Adds `esgf-pyclient` for esgf-dap.ipynb (https://github.com/Ouranosinc/pavics-sdi/pull/269) - Adds `xncml` for gen_catalog refactoring (https://github.com/Ouranosinc/pavics-vdb/pull/46) - Adds Globus Personnal Connect to be able to transfer big files in and out of the Jupyter env - Fixes annoying harmless error `ERROR 1: PROJ: proj_create_from_database: Open of /opt/conda/envs/birdy/share/proj failed` - Existing `intake-esm` pin: https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/issues/109 - Shrink image by almost 2G - Relevant changes (alphabetical order): ```diff < - birdy=0.8.1=pyh6c4a22f_1 > - birdy=0.8.4=pyh1a96a4e_0 < - cf_xarray=0.7.5=pyhd8ed1ab_0 > - cf_xarray=0.8.0=pyhd8ed1ab_0 < - clisops=0.9.3=pyh1a96a4e_0 > - clisops=0.9.6=pyh1a96a4e_0 < - dask=2022.11.1=pyhd8ed1ab_0 > - dask=2023.5.1=pyhd8ed1ab_0 < - esmf=8.2.0=mpi_mpich_h5a1934d_102 < - esmpy=8.2.0=mpi_mpich_py38h9147699_101 > - esmf=8.4.0=mpi_mpich_hc592774_104 > - esmpy=8.4.0=mpi_mpich_py39h3088dd8_102 < - fiona=1.8.22=py38h85a5e0f_5 > - fiona=1.9.1=py39hbc5ff6d_0 < - flox=0.6.4=pyhd8ed1ab_0 > - flox=0.7.2=pyhd8ed1ab_0 < - gdal=3.6.0=py38h58634bd_13 > - gdal=3.6.2=py39hc6cd174_6 < - owslib=0.27.2=pyhd8ed1ab_1 > - owslib=0.28.1=pyhd8ed1ab_0 # new > - pyogrio=0.5.1=py39hbc5ff6d_0 < - python=3.8.16=he550d4f_1_cpython > - python=3.9.16=h2782a2a_0_cpython < - raven-hydro=3.0.4.322=ha46ed4c_2 < - ravenpy=0.9.0=pyha21a80b_0 > - raven-hydro=0.2.1=py39h8e2dbb5_1 > - ravenpy=0.12.0=py39hf3d152e_2 < - rioxarray=0.13.1=pyhd8ed1ab_0 > - rioxarray=0.14.1=pyhd8ed1ab_0 < - roocs-utils=0.6.3=pyh1a96a4e_0 > - roocs-utils=0.6.4=pyh1a96a4e_0 # new > - seaborn=0.12.2=hd8ed1ab_0 < - xarray=2022.10.0=pyhd8ed1ab_0 > - xarray=2023.1.0=pyhd8ed1ab_0 < - xclim=0.39.0=pyhd8ed1ab_0 > - xclim=0.43.0=py39hf3d152e_1 < - xesmf=0.6.3=pyhd8ed1ab_1 > - xesmf=0.7.1=pyhd8ed1ab_0 # new > - hsclient==0.3.3 ``` ## Test - Deployed as "beta" image in production for bokeh visualization performance regression testing. - Manual test notebook https://github.com/Ouranosinc/PAVICS-landing/blob/master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb for bokeh visualization performance and it looks fine. - Jenkins build, all passed: [job-PAVICS-e2e-workflow-tests-new-docker-build-198-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621190/job-PAVICS-e2e-workflow-tests-new-docker-build-198-consoleText.txt) [ravenpy-job-PAVICS-e2e-workflow-tests-new-docker-build-200-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621191/ravenpy-job-PAVICS-e2e-workflow-tests-new-docker-build-200-consoleText.txt) ## Related Issue / Discussion - Matching notebook fixes: - Pavics-sdi: https://github.com/Ouranosinc/pavics-sdi/pull/281 - Finch: https://github.com/bird-house/finch/pull/275 - PAVICS-landing: https://github.com/Ouranosinc/PAVICS-landing/pull/64 - RavenPy: https://github.com/CSHS-CWRA/RavenPy/pull/287 - Deployment to PAVICS: https://github.com/bird-house/birdhouse-deploy/pull/332 - Jenkins-config changes for new RavenPy notebooks: https://github.com/Ouranosinc/jenkins-config/pull/15 - Other issues found while working on this one - https://github.com/Ouranosinc/PAVICS-landing/issues/66 - https://github.com/Ouranosinc/PAVICS-landing/issues/65 ## Additional Information Full diff conda env export: [221130-update230403-230530-1-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621128/221130-update230403-230530-1-conda-env-export.diff.txt) ```diff 9,11c9,12 < - affine=2.3.1=pyhd8ed1ab_0 < - aiobotocore=2.4.0=pyhd8ed1ab_0 < - aiohttp=3.8.3=py38h0a891b7_1 --- > - affine=2.4.0=pyhd8ed1ab_0 > - aiobotocore=2.5.0=pyhd8ed1ab_0 > - aiofiles=22.1.0=pyhd8ed1ab_0 > - aiohttp=3.8.4=py39h72bdee0_0 14c15,16 < - alembic=1.8.1=pyhd8ed1ab_0 --- > - aiosqlite=0.19.0=pyhd8ed1ab_0 > - alembic=1.11.1=pyhd8ed1ab_0 16,18c18,20 < - altair=4.2.0=pyhd8ed1ab_1 < - ansi2html=1.8.0=py38h578d9bd_1 < - anyio=3.6.2=pyhd8ed1ab_0 --- > - altair=5.0.1=pyhd8ed1ab_0 > - ansi2html=1.8.0=py39hf3d152e_1 > - anyio=3.6.1=pyhd8ed1ab_1 22,23c24 < - argon2-cffi-bindings=21.2.0=py38h0a891b7_3 < - arrow-cpp=11.0.0=ha770c72_9_cpu --- > - argon2-cffi-bindings=21.2.0=py39hb9d737c_3 26c27 < - asttokens=2.2.0=pyhd8ed1ab_0 --- > - asttokens=2.2.1=pyhd8ed1ab_0 30,44c31,45 < - attrs=22.1.0=pyh71513ae_1 < - aws-c-auth=0.6.26=hf365957_1 < - aws-c-cal=0.5.21=h48707d8_2 < - aws-c-common=0.8.14=h0b41bf4_0 < - aws-c-compression=0.2.16=h03acc5a_5 < - aws-c-event-stream=0.2.20=h00877a2_4 < - aws-c-http=0.7.6=hf342b9f_0 < - aws-c-io=0.13.19=h5b20300_3 < - aws-c-mqtt=0.8.6=hc4349f7_12 < - aws-c-s3=0.2.7=h909e904_1 < - aws-c-sdkutils=0.1.8=h03acc5a_0 < - aws-checksums=0.1.14=h03acc5a_5 < - aws-crt-cpp=0.19.8=hf7fbfca_12 < - aws-sdk-cpp=1.10.57=h17c43bd_8 < - babel=2.11.0=pyhd8ed1ab_0 --- > - attrs=23.1.0=pyh71513ae_1 > - aws-c-auth=0.6.27=he072965_1 > - aws-c-cal=0.5.26=hf677bf3_1 > - aws-c-common=0.8.19=hd590300_0 > - aws-c-compression=0.2.16=hbad4bc6_7 > - aws-c-event-stream=0.2.20=hb4b372c_7 > - aws-c-http=0.7.7=h2632f9a_4 > - aws-c-io=0.13.21=h9fef7b8_5 > - aws-c-mqtt=0.8.11=h2282364_1 > - aws-c-s3=0.3.0=hcb5a9b2_2 > - aws-c-sdkutils=0.1.9=hbad4bc6_2 > - aws-checksums=0.1.14=hbad4bc6_7 > - aws-crt-cpp=0.20.2=he0fdcb3_0 > - aws-sdk-cpp=1.10.57=h059227d_13 > - babel=2.12.1=pyhd8ed1ab_1 48d48 < - backports.zoneinfo=0.2.1=py38h0a891b7_7 50,51c50,51 < - bcrypt=3.2.2=py38h0a891b7_1 < - beautifulsoup4=4.11.1=pyha770c72_0 --- > - bcrypt=3.2.2=py39hb9d737c_1 > - beautifulsoup4=4.12.2=pyha770c72_0 53,56c53,56 < - birdy=0.8.1=pyh6c4a22f_1 < - bleach=5.0.1=pyhd8ed1ab_0 < - blinker=1.5=pyhd8ed1ab_0 < - blosc=1.21.3=hafa529b_0 --- > - birdy=0.8.4=pyh1a96a4e_0 > - bleach=6.0.0=pyhd8ed1ab_0 > - blinker=1.6.2=pyhd8ed1ab_0 > - blosc=1.21.4=h0f2a231_0 58,62c58,62 < - boltons=21.0.0=pyhd8ed1ab_0 < - boost-cpp=1.78.0=h75c5d50_1 < - boto3=1.24.59=pyhd8ed1ab_0 < - botocore=1.27.59=pyhd8ed1ab_0 < - bottleneck=1.3.5=py38h26c90d9_1 --- > - boltons=23.0.0=pyhd8ed1ab_0 > - boost-cpp=1.78.0=h5adbc97_2 > - boto3=1.26.76=pyhd8ed1ab_0 > - botocore=1.29.76=pyhd8ed1ab_0 > - bottleneck=1.3.7=py39h389d5f1_0 66,67c66 < - brotli-python=1.0.9=py38hfa26641_8 < - brotlipy=0.7.0=py38h0a891b7_1005 --- > - brotlipy=0.7.0=py39hb9d737c_1005 70,72c69,71 < - c-ares=1.18.1=h7f98852_0 < - c-blosc2=2.5.0=h7a311fb_0 < - ca-certificates=2022.12.7=ha878542_0 --- > - c-ares=1.19.1=hd590300_0 > - c-blosc2=2.9.2=hb4ffafa_0 > - ca-certificates=2023.5.7=hbcca054_0 75c74 < - cachetools=5.2.0=pyhd8ed1ab_0 --- > - cachetools=5.3.0=pyhd8ed1ab_0 77c76 < - cartopy=0.21.0=py38hf6c3373_3 --- > - cartopy=0.21.1=py39h6e7ad6e_0 80,82c79,81 < - cdms2=3.1.5=py38hc1ef740_14 < - cdtime=3.1.4=py38hc54c017_7 < - certifi=2022.12.7=pyhd8ed1ab_0 --- > - cdms2=3.1.5=py39h36de48d_15 > - cdtime=3.1.4=py39he83c29a_7 > - certifi=2023.5.7=pyhd8ed1ab_0 84,86c83,85 < - cf_xarray=0.7.5=pyhd8ed1ab_0 < - cffi=1.15.1=py38h4a40e3a_2 < - cfgrib=0.9.10.3=pyhd8ed1ab_0 --- > - cf_xarray=0.8.0=pyhd8ed1ab_0 > - cffi=1.15.1=py39he91dace_3 > - cfgrib=0.9.10.4=pyhd8ed1ab_0 89,90c88,89 < - cftime=1.6.2=py38h26c90d9_1 < - charls=2.3.4=h9c3ff4c_0 --- > - cftime=1.6.2=py39h2ae25f5_1 > - charls=2.4.2=h59595ed_0 96,97c95,96 < - clisops=0.9.3=pyh1a96a4e_0 < - cloudpickle=2.2.0=pyhd8ed1ab_0 --- > - clisops=0.9.6=pyh1a96a4e_0 > - cloudpickle=2.2.1=pyhd8ed1ab_0 100,105c99,104 < - commonmark=0.9.1=py_0 < - configurable-http-proxy=4.5.3=he2f69ee_3 < - contourpy=1.0.6=py38h43d8883_0 < - coverage=6.5.0=py38h0a891b7_1 < - cryptography=40.0.1=py38h3d167d9_0 < - curl=7.88.1=hdc1c0ab_1 --- > - comm=0.1.3=pyhd8ed1ab_0 > - configurable-http-proxy=4.5.4=he2f69ee_2 > - contourpy=1.0.7=py39h4b4f3f3_0 > - coverage=7.2.7=py39hd1e30aa_0 > - cryptography=40.0.2=py39h079d5ae_0 > - curl=8.1.2=h409715c_0 107,111c106,110 < - cytoolz=0.12.0=py38h0a891b7_1 < - dash=2.7.0=pyhd8ed1ab_0 < - dask=2022.11.1=pyhd8ed1ab_0 < - dask-core=2022.11.1=pyhd8ed1ab_0 < - dask-labextension=6.0.0=pyhd8ed1ab_0 --- > - cytoolz=0.12.0=py39hb9d737c_1 > - dash=2.9.3=pyhd8ed1ab_2 > - dask=2023.5.1=pyhd8ed1ab_0 > - dask-core=2023.5.1=pyhd8ed1ab_0 > - dask-labextension=6.1.0=pyhd8ed1ab_0 113c112 < - datashader=0.14.3=pyh1a96a4e_0 --- > - datashader=0.14.4=pyh1a96a4e_0 115c114 < - dav1d=1.0.0=h166bdaf_1 --- > - dav1d=1.2.0=hd590300_0 117c116 < - debugpy=1.6.4=py38hfa26641_0 --- > - debugpy=1.6.7=py39h227be39_0 122c121 < - distarray=2.12.2=pyhd8ed1ab_2 --- > - distarray=2.12.2=pyh050c7b8_4 124c123 < - distributed=2022.11.1=pyhd8ed1ab_0 --- > - distributed=2023.5.1=pyhd8ed1ab_0 127,128c126,127 < - eccodes=2.27.0=h164a9dd_0 < - elfutils=0.186=he364ef2_0 --- > - eccodes=2.28.0=h7513371_1 > - elfutils=0.189=hde5d1a3_0 133,135c132,135 < - esmf=8.2.0=mpi_mpich_h5a1934d_102 < - esmpy=8.2.0=mpi_mpich_py38h9147699_101 < - exceptiongroup=1.0.4=pyhd8ed1ab_0 --- > - esmf=8.4.0=mpi_mpich_hc592774_104 > - esmpy=8.4.0=mpi_mpich_py39h3088dd8_102 > - exceptiongroup=1.1.1=pyhd8ed1ab_0 > - execnet=1.9.0=pyhd8ed1ab_0 137c137 < - expat=2.5.0=h27087fc_0 --- > - expat=2.5.0=hcb278e6_1 140,148c140,147 < - fftw=3.3.10=nompi_hf0379b8_105 < - filelock=3.8.0=pyhd8ed1ab_0 < - findlibs=0.0.2=pyhd8ed1ab_0 < - fiona=1.8.22=py38h85a5e0f_5 < - flask=2.2.2=pyhd8ed1ab_0 < - flask-compress=1.13=pyhd8ed1ab_0 < - flit-core=3.8.0=pyhd8ed1ab_0 < - flox=0.6.4=pyhd8ed1ab_0 < - folium=0.13.0=pyhd8ed1ab_0 --- > - fftw=3.3.10=nompi_hc118613_107 > - filelock=3.12.0=pyhd8ed1ab_0 > - findlibs=0.0.5=pyhd8ed1ab_0 > - fiona=1.9.1=py39hbc5ff6d_0 > - flask=2.3.2=pyhd8ed1ab_0 > - flit-core=3.9.0=pyhd8ed1ab_0 > - flox=0.7.2=pyhd8ed1ab_0 > - folium=0.14.0=pyhd8ed1ab_0 153c152 < - fontconfig=2.14.1=hc2a2eb6_0 --- > - fontconfig=2.14.2=h14ed4e7_0 156c155 < - fonttools=4.38.0=py38h0a891b7_1 --- > - fonttools=4.39.4=py39hd1e30aa_0 160,161c159,160 < - frozenlist=1.3.3=py38h0a891b7_0 < - fsspec=2022.11.0=pyhd8ed1ab_0 --- > - frozenlist=1.3.3=py39hb9d737c_0 > - fsspec=2023.5.0=pyh1a96a4e_0 163c162 < - future=0.18.2=pyhd8ed1ab_6 --- > - future=0.18.3=pyhd8ed1ab_0 165,167c164,166 < - gcsfs=2022.11.0=pyhd8ed1ab_0 < - gdal=3.6.0=py38h58634bd_13 < - geckodriver=0.32.0=h4b87306_0 --- > - gcsfs=2023.5.0=pyhd8ed1ab_0 > - gdal=3.6.2=py39hc6cd174_6 > - geckodriver=0.33.0=hd2f7af9_0 169,170c168,169 < - geopandas=0.12.1=pyhd8ed1ab_1 < - geopandas-base=0.12.1=pyha770c72_1 --- > - geopandas=0.13.0=pyhd8ed1ab_0 > - geopandas-base=0.13.0=pyha770c72_0 173,175c172,174 < - geotiff=1.7.1=ha76d385_4 < - geoviews=1.9.5=pyhd8ed1ab_0 < - geoviews-core=1.9.5=pyha770c72_0 --- > - geotiff=1.7.1=h7a142b4_6 > - geoviews=1.9.6=pyhd8ed1ab_0 > - geoviews-core=1.9.6=pyha770c72_0 178c177 < - giflib=5.2.1=h36c2ea0_2 --- > - giflib=5.2.1=h0b41bf4_3 180,182c179,181 < - gitpython=3.1.29=pyhd8ed1ab_0 < - glib=2.74.1=h6239696_1 < - glib-tools=2.74.1=h6239696_1 --- > - gitpython=3.1.31=pyhd8ed1ab_0 > - glib=2.76.3=hfc55251_0 > - glib-tools=2.76.3=hfc55251_0 185,187c184,186 < - google-api-core=2.10.2=pyhd8ed1ab_0 < - google-auth=2.14.1=pyh1a96a4e_0 < - google-auth-oauthlib=0.7.1=pyhd8ed1ab_0 --- > - google-api-core=2.11.0=pyhd8ed1ab_0 > - google-auth=2.19.0=pyh1a96a4e_0 > - google-auth-oauthlib=1.0.0=pyhd8ed1ab_0 189,198c188,197 < - google-cloud-storage=2.6.0=pyh1a96a4e_0 < - google-crc32c=1.1.2=py38h57c428a_4 < - google-resumable-media=2.4.0=pyhd8ed1ab_0 < - googleapis-common-protos=1.57.0=pyhd8ed1ab_3 < - greenlet=2.0.1=py38hfa26641_0 < - grpc-cpp=1.51.1=h27aab58_3 < - grpcio=1.51.1=py38h8dc9893_3 < - gst-plugins-base=1.21.2=h3e40eee_0 < - gstreamer=1.21.2=hd4edc92_0 < - gstreamer-orc=0.4.33=h166bdaf_0 --- > - google-cloud-storage=2.9.0=pyh1a96a4e_0 > - google-crc32c=1.1.2=py39h8db88ab_4 > - google-resumable-media=2.5.0=pyhd8ed1ab_0 > - googleapis-common-protos=1.57.1=pyhd8ed1ab_0 > - graphite2=1.3.13=h58526e2_1001 > - greenlet=2.0.2=py39h3d6467e_1 > - grpcio=1.54.2=py39h227be39_2 > - gst-plugins-base=1.22.0=h4243ec0_2 > - gstreamer=1.22.0=h25f0c4b_2 > - gstreamer-orc=0.4.34=hd590300_0 200,202c199,202 < - h5netcdf=1.1.0=pyhd8ed1ab_0 < - h5py=3.7.0=nompi_py38h7927eab_102 < - haversine=2.7.0=pyhd8ed1ab_0 --- > - h5netcdf=1.1.0=pyhd8ed1ab_1 > - h5py=3.8.0=mpi_mpich_py39hadaddcd_0 > - harfbuzz=6.0.0=h8e241bc_0 > - haversine=2.8.0=pyhd8ed1ab_0 205,207c205,206 < - heapdict=1.0.1=py_0 < - holoviews=1.15.2=pyhd8ed1ab_0 < - hvplot=0.8.2=pyhd8ed1ab_0 --- > - holoviews=1.16.0=pyhd8ed1ab_0 > - hvplot=0.8.3=pyhd8ed1ab_0 209c208 < - identify=2.5.9=pyhd8ed1ab_0 --- > - identify=2.5.24=pyhd8ed1ab_0 211,217c210,217 < - imagecodecs=2022.9.26=py38hf74bd01_4 < - imageio=2.22.4=pyhfa7a67d_1 < - importlib-metadata=5.1.0=pyha770c72_0 < - importlib_metadata=5.1.0=hd8ed1ab_0 < - importlib_resources=5.10.0=pyhd8ed1ab_0 < - iniconfig=1.1.1=pyh9f0ad1d_0 < - intake=0.6.6=pyhd8ed1ab_0 --- > - imagecodecs=2023.1.23=py39hd061359_0 > - imageio=2.28.1=pyh24c5eb1_0 > - importlib-metadata=6.6.0=pyha770c72_0 > - importlib-resources=5.12.0=pyhd8ed1ab_0 > - importlib_metadata=6.6.0=hd8ed1ab_0 > - importlib_resources=5.12.0=pyhd8ed1ab_0 > - iniconfig=2.0.0=pyhd8ed1ab_0 > - intake=0.7.0=pyhd8ed1ab_0 221,222c221,222 < - intake-xarray=0.6.1=pyhd8ed1ab_0 < - ipykernel=6.17.1=pyh210e3f2_0 --- > - intake-xarray=0.7.0=pyhd8ed1ab_0 > - ipykernel=6.23.1=pyh210e3f2_0 224c224 < - ipython=8.6.0=pyh41d4057_1 --- > - ipython=8.13.2=pyh41d4057_0 226c226 < - ipywidgets=8.0.2=pyhd8ed1ab_1 --- > - ipywidgets=8.0.6=pyhd8ed1ab_0 228,229c228,229 < - jack=1.9.21=he978b8e_1 < - jasper=2.0.33=ha77e612_0 --- > - jack=1.9.22=h11f4161_0 > - jasper=2.0.33=h0ff4b12_1 234c234 < - jpeg=9e=h166bdaf_2 --- > - jpeg=9e=h0b41bf4_3 239,240c239,240 < - jupyter=1.0.0=py38h578d9bd_7 < - jupyter-archive=3.3.3=pyhd8ed1ab_0 --- > - jupyter=1.0.0=py39hf3d152e_8 > - jupyter-archive=3.3.4=pyhd8ed1ab_1 242,244c242,244 < - jupyter-resource-usage=0.6.4=pyhd8ed1ab_0 < - jupyter-server-mathjax=0.2.6=pyhc268e32_0 < - jupyter-server-proxy=3.2.2=pyhd8ed1ab_0 --- > - jupyter-resource-usage=0.7.1=pyhd8ed1ab_0 > - jupyter-server-mathjax=0.2.6=pyh5bfe37b_1 > - jupyter-server-proxy=4.0.0=pyhd8ed1ab_0 246,249c246,252 < - jupyter_client=7.3.4=pyhd8ed1ab_0 < - jupyter_console=6.4.4=pyhd8ed1ab_0 < - jupyter_core=5.1.0=py38h578d9bd_0 < - jupyter_server=1.23.3=pyhd8ed1ab_0 --- > - jupyter_client=7.4.1=pyhd8ed1ab_0 > - jupyter_console=6.6.3=pyhd8ed1ab_0 > - jupyter_core=5.3.0=py39hf3d152e_0 > - jupyter_events=0.6.3=pyhd8ed1ab_0 > - jupyter_server=1.23.6=pyhd8ed1ab_0 > - jupyter_server_fileid=0.9.0=pyhd8ed1ab_0 > - jupyter_server_ydoc=0.8.0=pyhd8ed1ab_0 251,254c254,258 < - jupyterhub=3.0.0=pyh2a2186d_1 < - jupyterhub-base=3.0.0=pyh2a2186d_1 < - jupyterlab=3.5.0=pyhd8ed1ab_0 < - jupyterlab-git=0.40.1=pyhd8ed1ab_0 --- > - jupyter_ydoc=0.2.3=pyhd8ed1ab_0 > - jupyterhub=4.0.0=pyh2a2186d_0 > - jupyterhub-base=4.0.0=pyh2a2186d_0 > - jupyterlab=3.6.3=pyhd8ed1ab_0 > - jupyterlab-git=0.41.0=pyhd8ed1ab_1 258,260c262,264 < - jupyterlab_server=2.16.3=pyhd8ed1ab_0 < - jupyterlab_widgets=3.0.3=pyhd8ed1ab_0 < - jupytext=1.14.1=pyhd0ecf6b_0 --- > - jupyterlab_server=2.22.1=pyhd8ed1ab_0 > - jupyterlab_widgets=3.0.7=pyhd8ed1ab_1 > - jupytext=1.14.5=pyhcff175f_0 264c268 < - kiwisolver=1.4.4=py38h43d8883_1 --- > - kiwisolver=1.4.4=py39hf939315_1 267,269c271,274 < - lazy-object-proxy=1.8.0=py38h0a891b7_0 < - lcms2=2.14=h6ed2654_0 < - ld_impl_linux-64=2.39=hcc3a1bd_1 --- > - lazy-object-proxy=1.9.0=py39h72bdee0_0 > - lazy_loader=0.2=pyhd8ed1ab_0 > - lcms2=2.15=hfd0df8a_0 > - ld_impl_linux-64=2.40=h41732ed_0 271,275c276,280 < - libabseil=20230125.0=cxx17_hcb278e6_1 < - libaec=1.0.6=h9c3ff4c_0 < - libarchive=3.5.2=hada088e_3 < - libarrow=11.0.0=h33598ff_9_cpu < - libavif=0.11.1=h5cdd6b5_0 --- > - libabseil=20230125.2=cxx17_h59595ed_2 > - libaec=1.0.6=hcb278e6_1 > - libarchive=3.6.2=h3d51595_0 > - libarrow=10.0.1=hf815326_25_cpu > - libavif=0.11.1=hff004cb_1 280c285 < - libcap=2.66=ha37c62d_0 --- > - libcap=2.67=he9d0100_0 282,285c287,290 < - libcdms=3.1.2=h2973bc7_118 < - libcf=1.0.3=py38h0c3d773_115 < - libclang=15.0.6=default_h2e3cab8_0 < - libclang13=15.0.6=default_h3a83d3e_0 --- > - libcdms=3.1.2=hf94f14b_119 > - libcf=1.0.3=py39h6c807ef_115 > - libclang=15.0.7=default_h7634d5b_2 > - libclang13=15.0.7=default_h9986a30_2 288,289c293 < - libcurl=7.88.1=hdc1c0ab_1 < - libdap4=3.20.6=hd7c4107_2 --- > - libcurl=8.1.2=h409715c_0 291c295 < - libdeflate=1.14=h166bdaf_0 --- > - libdeflate=1.17=h0b41bf4_0 297a302 > - libexpat=2.5.0=hcb278e6_1 302c307 < - libgdal=3.6.0=h2f87c3e_13 --- > - libgdal=3.6.2=h8c90c07_6 305c310 < - libglib=2.74.1=h606061b_1 --- > - libglib=2.76.3=hebfc3b9_0 308,310c313,315 < - libgoogle-cloud=2.8.0=h3c06191_0 < - libgpg-error=1.45=hc0c96e0_0 < - libgrpc=1.51.1=hcf146ea_3 --- > - libgoogle-cloud=2.10.1=hac9eb74_1 > - libgpg-error=1.46=h620e276_0 > - libgrpc=1.54.2=hb20ce57_2 315,317c320,323 < - libllvm11=11.1.0=he0ac6c6_5 < - libllvm15=15.0.6=h63197d8_0 < - libmicrohttpd=0.9.75=h2603550_1 --- > - libllvm14=14.0.6=hcd5def8_2 > - libllvm15=15.0.7=hadd5161_1 > - libllvm16=16.0.1=hadd5161_0 > - libmicrohttpd=0.9.76=h87ba234_0 320a327 > - libnuma=2.0.16=h0b41bf4_1 329c336 < - libsndfile=1.1.0=h27087fc_0 --- > - libsndfile=1.2.0=hb75c966_0 332,333c339,340 < - libspatialite=5.0.1=h7c8129e_22 < - libsqlite=3.40.0=h753d276_0 --- > - libspatialite=5.0.1=h221c8f1_23 > - libsqlite=3.42.0=h2797004_0 336c343 < - libsystemd0=252=h2a991cd_0 --- > - libsystemd0=253=h8c4010b_1 338,341c345,348 < - libthrift=0.18.0=h5e4af38_0 < - libtiff=4.4.0=h55922b4_4 < - libtool=2.4.6=h9c3ff4c_1008 < - libudev1=252=h166bdaf_0 --- > - libthrift=0.18.1=h5e4af38_0 > - libtiff=4.5.0=h6adf6a1_2 > - libtool=2.4.7=h27087fc_0 > - libudev1=253=h0b41bf4_1 344c351 < - libuuid=2.32.1=h7f98852_1000 --- > - libuuid=2.38.1=h0b41bf4_0 347c354 < - libwebp-base=1.2.4=h166bdaf_0 --- > - libwebp-base=1.3.0=h0b41bf4_0 349,350c356,357 < - libxkbcommon=1.0.3=he3ba5ed_0 < - libxml2=2.10.3=h7463322_0 --- > - libxkbcommon=1.5.0=h79f4944_1 > - libxml2=2.10.3=hca2bb57_4 355c362,363 < - llvmlite=0.39.1=py38h38d86a4_1 --- > - llvmlite=0.40.0=py39h174d805_0 > - lmoments3=1.0.5=pyhd8ed1ab_0 357,360c365,368 < - loguru=0.6.0=py38h578d9bd_2 < - lxml=4.9.1=py38ha9ef780_1 < - lz4=4.0.2=py38h1bf946c_0 < - lz4-c=1.9.3=h9c3ff4c_1 --- > - loguru=0.7.0=py39hf3d152e_0 > - lxml=4.9.2=py39h14694de_0 > - lz4=4.3.2=py39h724f13c_0 > - lz4-c=1.9.4=hcb278e6_0 363,369c371,377 < - mamba_gator=5.2.0=pyhd8ed1ab_0 < - mapclassify=2.4.3=pyhd8ed1ab_0 < - markdown=3.4.1=pyhd8ed1ab_0 < - markdown-it-py=2.1.0=pyhd8ed1ab_0 < - markupsafe=2.1.1=py38h0a891b7_2 < - matplotlib=3.6.2=py38h578d9bd_0 < - matplotlib-base=3.6.2=py38hb021067_0 --- > - mamba_gator=5.2.1=pyhd8ed1ab_0 > - mapclassify=2.5.0=pyhd8ed1ab_1 > - markdown=3.4.3=pyhd8ed1ab_0 > - markdown-it-py=2.2.0=pyhd8ed1ab_0 > - markupsafe=2.1.2=py39h72bdee0_0 > - matplotlib=3.7.1=py39hf3d152e_0 > - matplotlib-base=3.7.1=py39he190548_0 371c379 < - mdit-py-plugins=0.3.1=pyhd8ed1ab_0 --- > - mdit-py-plugins=0.3.5=pyhd8ed1ab_0 374,376c382,384 < - mesalib=21.2.5=h0e4506f_3 < - mistune=2.0.4=pyhd8ed1ab_0 < - mpg123=1.30.2=h27087fc_1 --- > - mesalib=23.0.2=h3855f93_0 > - mistune=2.0.5=pyhd8ed1ab_0 > - mpg123=1.31.3=hcb278e6_0 378c386 < - mpi4py=3.1.4=py38h97ac3a3_0 --- > - mpi4py=3.1.4=py39h32b9844_0 380,381c388,389 < - msgpack-python=1.0.4=py38h43d8883_1 < - multidict=6.0.2=py38h0a891b7_2 --- > - msgpack-python=1.0.5=py39h4b4f3f3_0 > - multidict=6.0.4=py39h72bdee0_0 383,384c391,392 < - multiprocess=0.70.14=py38h0a891b7_3 < - munch=2.5.0=py_0 --- > - multiprocess=0.70.14=py39hb9d737c_3 > - munch=3.0.0=pyhd8ed1ab_0 387,395c395,403 < - mysql-common=8.0.32=ha901b37_1 < - mysql-libs=8.0.32=hd7da12d_1 < - nbclassic=0.4.8=pyhd8ed1ab_0 < - nbclient=0.7.2=pyhd8ed1ab_0 < - nbconvert=7.2.5=pyhd8ed1ab_0 < - nbconvert-core=7.2.5=pyhd8ed1ab_0 < - nbconvert-pandoc=7.2.5=pyhd8ed1ab_0 < - nbdime=3.1.1=pyhd8ed1ab_0 < - nbformat=5.7.0=pyhd8ed1ab_0 --- > - mysql-common=8.0.32=hf1915f5_2 > - mysql-libs=8.0.32=hca2cd23_2 > - nbclassic=1.0.0=pyhb4ecaf3_1 > - nbclient=0.7.4=pyhd8ed1ab_0 > - nbconvert=7.4.0=pyhd8ed1ab_0 > - nbconvert-core=7.4.0=pyhd8ed1ab_0 > - nbconvert-pandoc=7.4.0=pyhd8ed1ab_0 > - nbdime=3.2.1=pyhd8ed1ab_0 > - nbformat=5.8.0=pyhd8ed1ab_0 402,403c410,411 < - netcdf-fortran=4.6.0=mpi_mpich_hd09bd1e_1 < - netcdf4=1.6.2=nompi_py38h2250339_100 --- > - netcdf-fortran=4.6.0=mpi_mpich_h1e13492_2 > - netcdf4=1.6.2=nompi_py39hfaa66c4_100 405,406c413,414 < - networkx=2.8.8=pyhd8ed1ab_0 < - nodeenv=1.7.0=pyhd8ed1ab_0 --- > - networkx=3.1=pyhd8ed1ab_0 > - nodeenv=1.8.0=pyhd8ed1ab_0 408,409c416,417 < - notebook=6.5.2=pyha770c72_1 < - notebook-shim=0.2.2=pyhd8ed1ab_0 --- > - notebook=6.5.4=pyha770c72_0 > - notebook-shim=0.2.3=pyhd8ed1ab_0 411,415c419,423 < - nss=3.82=he02c5a1_0 < - numba=0.56.4=py38h9a4aae9_0 < - numcodecs=0.10.2=py38hfa26641_0 < - numpy=1.23.5=py38h7042d01_0 < - numpy_groupies=0.9.20=pyhd8ed1ab_0 --- > - nss=3.89=he45b914_0 > - numba=0.57.0=py39hb75a051_0 > - numcodecs=0.11.0=py39h227be39_1 > - numpy=1.23.5=py39h3d75532_0 > - numpy_groupies=0.9.22=pyhd8ed1ab_0 418,421c426,428 < - openjpeg=2.5.0=h7d73246_1 < - openssl=3.1.0=h0b41bf4_0 < - orc=1.8.2=hfdbbad2_2 < - ostrich=21.03.16=h4bd325d_1 --- > - openjpeg=2.5.0=hfec8fc6_2 > - openssl=3.1.1=hd590300_0 > - orc=1.8.3=hfdbbad2_0 423c430 < - owslib=0.27.2=pyhd8ed1ab_1 --- > - owslib=0.28.1=pyhd8ed1ab_0 425c432 < - packaging=21.3=pyhd8ed1ab_0 --- > - packaging=23.1=pyhd8ed1ab_0 427,428c434,435 < - pandas=1.3.5=py38h43a58ef_0 < - pandoc=2.19.2=h32600fe_1 --- > - pandas=1.3.5=py39hde0f152_0 > - pandoc=2.19.2=h32600fe_2 430,433c437,440 < - panel=0.14.1=pyhd8ed1ab_0 < - param=1.12.2=pyh6c4a22f_0 < - paramiko=2.12.0=pyhd8ed1ab_0 < - parquet-cpp=1.5.1=2 --- > - panel=0.14.4=pyhd8ed1ab_0 > - parallelio=2.5.10=mpi_mpich_h862c5c2_100 > - param=1.13.0=pyh1a96a4e_0 > - paramiko=3.2.0=pyhd8ed1ab_0 435c442 < - partd=1.3.0=pyhd8ed1ab_0 --- > - partd=1.4.0=pyhd8ed1ab_0 438d444 < - pcre=8.45=h9c3ff4c_0 442,444c448,450 < - pillow=9.2.0=py38h9eb91d8_3 < - pint=0.20.1=pyhd8ed1ab_0 < - pip=22.3.1=pyhd8ed1ab_0 --- > - pillow=9.4.0=py39h2320bf1_1 > - pint=0.21=pyhd8ed1ab_0 > - pip=23.1.2=pyhd8ed1ab_0 447,448c453,454 < - platformdirs=2.5.2=pyhd8ed1ab_1 < - plotly=5.11.0=pyhd8ed1ab_0 --- > - platformdirs=3.5.1=pyhd8ed1ab_0 > - plotly=5.14.1=pyhd8ed1ab_0 451,453c457,459 < - pooch=1.6.0=pyhd8ed1ab_0 < - poppler=22.11.0=h92391eb_0 < - poppler-data=0.4.11=hd8ed1ab_0 --- > - pooch=1.7.0=pyha770c72_3 > - poppler=23.01.0=h091648b_0 > - poppler-data=0.4.12=hd8ed1ab_0 457,461c463,467 < - pre-commit=2.20.0=py38h578d9bd_1 < - proj=9.1.0=h93bde94_0 < - prometheus_client=0.15.0=pyhd8ed1ab_0 < - prompt-toolkit=3.0.33=pyha770c72_0 < - prompt_toolkit=3.0.33=hd8ed1ab_0 --- > - pre-commit=3.3.2=pyha770c72_0 > - proj=9.1.1=h8ffa02c_2 > - prometheus_client=0.17.0=pyhd8ed1ab_0 > - prompt-toolkit=3.0.38=pyha770c72_0 > - prompt_toolkit=3.0.38=hd8ed1ab_0 463c469 < - protobuf=4.21.12=py38h8dc9893_0 --- > - protobuf=4.21.12=py39h227be39_0 465c471 < - psutil=5.9.4=py38h0a891b7_0 --- > - psutil=5.9.5=py39h72bdee0_0 468c474,476 < - pulseaudio=16.1=h126f2b6_0 --- > - pulseaudio=16.1=hcb278e6_3 > - pulseaudio-client=16.1=h5195f5e_3 > - pulseaudio-daemon=16.1=ha8d29e2_3 470c478 < - pyarrow=11.0.0=py38hf05218d_9_cpu --- > - pyarrow=10.0.1=py39he4327e9_25_cpu 476,478c484,486 < - pycurl=7.45.1=py38he9e1d38_3 < - pydantic=1.10.2=py38h0a891b7_1 < - pydap=3.3.0=pyhd8ed1ab_0 --- > - pycurl=7.45.1=py39h9297c8b_3 > - pydantic=1.10.8=py39hd1e30aa_0 > - pydap=3.4.0=pyhd8ed1ab_0 480,482c488,491 < - pygeos=0.13=py38hafd38ec_2 < - pygments=2.13.0=pyhd8ed1ab_0 < - pyjwt=2.6.0=pyhd8ed1ab_0 --- > - pygeos=0.14=py39hc9151fd_0 > - pygments=2.15.1=pyhd8ed1ab_0 > - pyjwt=2.7.0=pyhd8ed1ab_0 > - pymbolic=2022.2=pyhd8ed1ab_0 485c494,495 < - pynacl=1.5.0=py38h0a891b7_2 --- > - pynacl=1.5.0=py39hb9d737c_2 > - pyogrio=0.5.1=py39hbc5ff6d_0 488,491c498,501 < - pyproj=3.4.0=py38hce0a2d1_2 < - pyqt=5.15.7=py38h7492b6b_2 < - pyqt5-sip=12.11.0=py38hfa26641_2 < - pyrsistent=0.19.2=py38h0a891b7_0 --- > - pyproj=3.5.0=py39hf8a5840_0 > - pyqt=5.15.7=py39h5c7b992_3 > - pyqt5-sip=12.11.0=py39h227be39_3 > - pyrsistent=0.19.3=py39h72bdee0_0 494,497c504,506 < - pyston_lite=2.3.4=py38h0a891b7_1 < - pyston_lite_autoload=2.3.4=pyh44b312d_1 < - pytest=7.2.0=pyhd8ed1ab_2 < - python=3.8.16=he550d4f_1_cpython --- > - pytest=7.3.1=pyhd8ed1ab_0 > - pytest-xdist=3.3.1=pyhd8ed1ab_0 > - python=3.9.16=h2782a2a_0_cpython 499,501c508,510 < - python-eccodes=1.4.2=py38h26c90d9_1 < - python-fastjsonschema=2.16.2=pyhd8ed1ab_0 < - python-json-logger=2.0.1=pyh9f0ad1d_0 --- > - python-eccodes=1.5.1=py39h389d5f1_0 > - python-fastjsonschema=2.17.1=pyhd8ed1ab_0 > - python-json-logger=2.0.7=pyhd8ed1ab_0 503,506c512,515 < - python-tzdata=2022.7=pyhd8ed1ab_0 < - python_abi=3.8=3_cp38 < - pytz=2022.6=pyhd8ed1ab_0 < - pytz-deprecation-shim=0.1.0.post0=py38h578d9bd_3 --- > - python-tzdata=2023.3=pyhd8ed1ab_0 > - python_abi=3.9=3_cp39 > - pytools=2022.1.14=pyhd8ed1ab_0 > - pytz=2023.3=pyhd8ed1ab_0 508,521c517,530 < - pyviz_comms=2.2.1=pyhd8ed1ab_1 < - pywavelets=1.3.0=py38h26c90d9_2 < - pyyaml=6.0=py38h0a891b7_5 < - pyzmq=24.0.1=py38hfc09fa9_1 < - qhull=2020.2=h4bd325d_2 < - qt-main=5.15.6=hf6cd601_5 < - qtconsole=5.4.0=pyhd8ed1ab_0 < - qtconsole-base=5.4.0=pyha770c72_0 < - qtpy=2.3.0=pyhd8ed1ab_0 < - rasterio=1.3.4=py38h485b76c_0 < - raven-hydro=3.0.4.322=ha46ed4c_2 < - ravenpy=0.9.0=pyha21a80b_0 < - re2=2023.02.02=hcb278e6_0 < - readline=8.1.2=h0f457ee_0 --- > - pyviz_comms=2.3.0=pyhd8ed1ab_0 > - pywavelets=1.4.1=py39h389d5f1_0 > - pyyaml=6.0=py39hb9d737c_5 > - pyzmq=25.0.2=py39h0be026e_0 > - qt-main=5.15.8=h5d23da1_6 > - qtconsole=5.4.3=pyhd8ed1ab_0 > - qtconsole-base=5.4.3=pyha770c72_0 > - qtpy=2.3.1=pyhd8ed1ab_0 > - rasterio=1.3.6=py39h09b1985_0 > - raven-hydro=0.2.1=py39h8e2dbb5_1 > - ravenpy=0.12.0=py39hf3d152e_2 > - rdma-core=28.9=h59595ed_1 > - re2=2023.03.02=h8c504da_0 > - readline=8.2=h8228510_1 523c532 < - requests=2.28.1=pyhd8ed1ab_1 --- > - requests=2.31.0=pyhd8ed1ab_0 528,530c537,540 < - rich=12.6.0=pyhd8ed1ab_0 < - rioxarray=0.13.1=pyhd8ed1ab_0 < - roocs-utils=0.6.3=pyh1a96a4e_0 --- > - rfc3339-validator=0.1.4=pyhd8ed1ab_0 > - rfc3986-validator=0.1.1=pyh9f0ad1d_0 > - rioxarray=0.14.1=pyhd8ed1ab_0 > - roocs-utils=0.6.4=pyh1a96a4e_0 532,548c542,560 < - rtree=1.0.1=py38h02d302b_1 < - ruamel.yaml=0.17.21=py38h0a891b7_2 < - ruamel.yaml.clib=0.2.7=py38h0a891b7_0 < - s2n=1.3.41=h3358134_0 < - s3fs=2022.11.0=pyhd8ed1ab_0 < - s3transfer=0.6.0=pyhd8ed1ab_0 < - scikit-image=0.19.3=py38h8f669ce_2 < - scikit-learn=1.1.3=py38h4c4ba11_1 < - scipy=1.8.1=py38h8ce737c_3 < - scp=0.14.4=pyhd8ed1ab_0 < - selenium=4.6.0=pyhd8ed1ab_0 < - semver=2.13.0=pyh9f0ad1d_0 < - send2trash=1.8.0=pyhd8ed1ab_0 < - setuptools=59.8.0=py38h578d9bd_1 < - shapely=1.8.5=py38hafd38ec_2 < - simpervisor=0.4=pyhd8ed1ab_0 < - sip=6.7.5=py38hfa26641_0 --- > - rtree=1.0.1=py39hb102c33_1 > - ruamel.yaml=0.17.30=py39hd1e30aa_0 > - ruamel.yaml.clib=0.2.7=py39h72bdee0_1 > - s2n=1.3.44=h06160fa_0 > - s3fs=2023.5.0=pyhd8ed1ab_0 > - s3transfer=0.6.1=pyhd8ed1ab_0 > - scikit-image=0.20.0=py39h7c7b5a8_1 > - scikit-learn=1.2.2=py39hc236052_2 > - scipy=1.9.1=py39h8ba3f38_0 > - scp=0.14.5=pyhd8ed1ab_0 > - seaborn=0.12.2=hd8ed1ab_0 > - seaborn-base=0.12.2=pyhd8ed1ab_0 > - selenium=4.9.1=pyhd8ed1ab_0 > - semver=3.0.0=pyhd8ed1ab_0 > - send2trash=1.8.2=pyh41d4057_0 > - setuptools=59.8.0=py39hf3d152e_1 > - shapely=2.0.1=py39hc9151fd_0 > - simpervisor=1.0.0=pyhd8ed1ab_0 > - sip=6.7.9=py39h3d6467e_0 552c564 < - snappy=1.1.9=hbd366e4_2 --- > - snappy=1.1.10=h9fff704_0 557,560c569,572 < - sparse=0.13.0=pyhd8ed1ab_0 < - spotpy=1.6.1=pyhd8ed1ab_0 < - sqlalchemy=1.4.44=py38h0a891b7_0 < - sqlite=3.40.0=h4ff8645_0 --- > - sparse=0.14.0=pyhd8ed1ab_0 > - spotpy=1.6.2=pyhd8ed1ab_0 > - sqlalchemy=2.0.15=py39hd1e30aa_0 > - sqlite=3.42.0=h2c6b66d_0 562c574 < - statsmodels=0.13.5=py38h26c90d9_2 --- > - statsmodels=0.14.0=py39h0f8d45d_1 565,566c577,578 < - tenacity=8.1.0=pyhd8ed1ab_0 < - terminado=0.17.0=pyh41d4057_0 --- > - tenacity=8.2.2=pyhd8ed1ab_0 > - terminado=0.17.1=pyh41d4057_0 569c581 < - tifffile=2022.10.10=pyhd8ed1ab_0 --- > - tifffile=2023.4.12=pyhd8ed1ab_0 576,578c588,590 < - tornado=6.1=py38h0a891b7_3 < - tqdm=4.64.1=pyhd8ed1ab_0 < - traitlets=5.6.0=pyhd8ed1ab_0 --- > - tornado=6.3.2=py39hd1e30aa_0 > - tqdm=4.65.0=pyhd8ed1ab_1 > - traitlets=5.9.0=pyhd8ed1ab_0 580,589c592,602 < - trio=0.21.0=py38h578d9bd_0 < - trio-websocket=0.9.2=pyhd8ed1ab_0 < - typing-extensions=4.4.0=hd8ed1ab_0 < - typing_extensions=4.4.0=pyha770c72_0 < - tzcode=2022g=h166bdaf_0 < - tzdata=2022g=h191b570_0 < - tzlocal=4.2=py38h578d9bd_2 < - ujson=5.7.0=py38h8dc9893_0 < - ukkonen=1.0.1=py38h43d8883_3 < - unicodedata2=15.0.0=py38h0a891b7_0 --- > - trio=0.22.0=py39hf3d152e_1 > - trio-websocket=0.10.2=pyhd8ed1ab_0 > - typing-extensions=4.6.2=hd8ed1ab_0 > - typing_extensions=4.6.2=pyha770c72_0 > - tzcode=2023c=h0b41bf4_0 > - tzdata=2023c=h71feb2d_0 > - tzlocal=5.0.1=py39hf3d152e_0 > - ucx=1.14.1=hf587318_1 > - ujson=5.7.0=py39h227be39_0 > - ukkonen=1.0.1=py39hf939315_3 > - unicodedata2=15.0.0=py39hb9d737c_0 591c604 < - urllib3=1.26.13=pyhd8ed1ab_0 --- > - urllib3=1.26.15=pyhd8ed1ab_0 593,594c606,607 < - validators=0.18.2=pyhd3deb0d_0 < - virtualenv=20.17.0=py38h578d9bd_0 --- > - validators=0.20.0=pyhd8ed1ab_0 > - virtualenv=20.23.0=pyhd8ed1ab_0 596,597c609,610 < - watchdog=2.1.9=py38h578d9bd_1 < - wcwidth=0.2.5=pyh9f0ad1d_2 --- > - watchdog=3.0.0=py39hf3d152e_0 > - wcwidth=0.2.6=pyhd8ed1ab_0 600,602c613,615 < - websocket-client=1.4.2=pyhd8ed1ab_0 < - websockets=10.4=py38h0a891b7_1 < - werkzeug=2.2.2=pyhd8ed1ab_0 --- > - websocket-client=1.5.2=pyhd8ed1ab_0 > - websockets=11.0.3=py39hd1e30aa_0 > - werkzeug=2.3.4=pyhd8ed1ab_0 604,606c617,619 < - wheel=0.38.4=pyhd8ed1ab_0 < - widgetsnbextension=4.0.3=pyhd8ed1ab_0 < - wrapt=1.14.1=py38h0a891b7_1 --- > - wheel=0.40.0=pyhd8ed1ab_0 > - widgetsnbextension=4.0.7=pyhd8ed1ab_0 > - wrapt=1.15.0=py39h72bdee0_0 608c621 < - xarray=2022.10.0=pyhd8ed1ab_0 --- > - xarray=2023.1.0=pyhd8ed1ab_0 614c627 < - xclim=0.39.0=pyhd8ed1ab_0 --- > - xclim=0.43.0=py39hf3d152e_1 616c629 < - xesmf=0.6.3=pyhd8ed1ab_1 --- > - xesmf=0.7.1=pyhd8ed1ab_0 618c631 < - xeus-python=0.15.8=py38hfbd4bf9_1 --- > - xeus-python=0.15.9=py39h7633fee_0 621c634 < - xeus-zmq=1.0.2=h0541b36_2 --- > - xeus-zmq=1.0.3=h0541b36_0 622a636 > - xkeyboard-config=2.38=h0b41bf4_0 624c638 < - xlsxwriter=3.0.3=pyhd8ed1ab_0 --- > - xlsxwriter=3.1.2=pyhd8ed1ab_0 630,633c644,647 < - xorg-libice=1.0.10=h7f98852_0 < - xorg-libsm=1.2.3=hd9c2040_1000 < - xorg-libx11=1.7.2=h7f98852_0 < - xorg-libxau=1.0.9=h7f98852_0 --- > - xorg-libice=1.1.1=hd590300_0 > - xorg-libsm=1.2.4=h7391055_0 > - xorg-libx11=1.8.4=h0b41bf4_0 > - xorg-libxau=1.0.11=hd590300_0 636c650 < - xorg-libxext=1.3.4=h7f98852_1 --- > - xorg-libxext=1.3.4=h0b41bf4_2 644c658 < - xorg-xextproto=7.3.0=h7f98852_1002 --- > - xorg-xextproto=7.3.0=h0b41bf4_1003 647c661 < - xrft=1.0.0=pyhd8ed1ab_0 --- > - xrft=1.0.1=pyhd8ed1ab_0 649c663 < - xyzservices=2022.9.0=pyhd8ed1ab_0 --- > - xyzservices=2023.5.0=pyhd8ed1ab_1 650a665 > - y-py=0.5.9=py39h50f1755_0 652,653c667,669 < - yarl=1.8.1=py38h0a891b7_0 < - zarr=2.13.3=pyhd8ed1ab_0 --- > - yarl=1.9.2=py39hd1e30aa_0 > - ypy-websocket=0.8.2=pyhd8ed1ab_0 > - zarr=2.14.2=pyhd8ed1ab_0 656,657c672,673 < - zict=2.2.0=pyhd8ed1ab_0 < - zipp=3.11.0=pyhd8ed1ab_0 --- > - zict=3.0.0=pyhd8ed1ab_0 > - zipp=3.15.0=pyhd8ed1ab_0 659,660c675,676 < - zlib-ng=2.0.6=h166bdaf_0 < - zstd=1.5.2=h6239696_4 --- > - zlib-ng=2.0.7=h0b41bf4_0 > - zstd=1.5.2=h3eb15da_6 662,673c678,701 < - astunparse==1.6.3 < - colour==0.1.5 < - geojson==2.5.0 < - ipython-blocking==0.3.1 < - jupyterlab-logout==0.5.0 < - jupyterlab-tabular-data-editor==1.0.0 < - jupyternotify==0.1.15 < - pixiedust==1.1.19 < - pytest-tornasync==0.6.0.post2 < - xmltodict==0.13.0 < - xncml==0.2 < - xsdata==22.12 --- > - arrow==1.2.3 > - astunparse==1.6.3 > - colour==0.1.5 > - dnspython==2.3.0 > - email-validator==2.0.0.post2 > - fqdn==1.5.1 > - geojson==3.0.1 > - hsclient==0.3.3 > - hsmodels==0.5.5 > - ipython-blocking==0.3.1 > - isodate==0.6.1 > - isoduration==20.11.0 > - jsonpointer==2.3 > - jupyterlab-logout==0.5.0 > - jupyterlab-tabular-data-editor==1.0.0 > - jupyternotify==0.1.15 > - pixiedust==1.1.19 > - pytest-tornasync==0.6.0.post2 > - rdflib==5.0.0 > - uri-template==1.2.0 > - webcolors==1.13 > - xmltodict==0.13.0 > - xncml==0.2 > - xsdata==23.5 ``` Full new conda env export: [230530-1-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621130/230530-1-conda-env-export.yml.txt) ``` name: birdy channels: - cdat - conda-forge - defaults dependencies: - _libgcc_mutex=0.1=conda_forge - _openmp_mutex=4.5=2_gnu - affine=2.4.0=pyhd8ed1ab_0 - aiobotocore=2.5.0=pyhd8ed1ab_0 - aiofiles=22.1.0=pyhd8ed1ab_0 - aiohttp=3.8.4=py39h72bdee0_0 - aioitertools=0.11.0=pyhd8ed1ab_0 - aiosignal=1.3.1=pyhd8ed1ab_0 - aiosqlite=0.19.0=pyhd8ed1ab_0 - alembic=1.11.1=pyhd8ed1ab_0 - alsa-lib=1.2.8=h166bdaf_0 - altair=5.0.1=pyhd8ed1ab_0 - ansi2html=1.8.0=py39hf3d152e_1 - anyio=3.6.1=pyhd8ed1ab_1 - aom=3.5.0=h27087fc_0 - appdirs=1.4.4=pyh9f0ad1d_0 - argon2-cffi=21.3.0=pyhd8ed1ab_0 - argon2-cffi-bindings=21.2.0=py39hb9d737c_3 - asciitree=0.3.3=py_2 - astor=0.8.1=pyh9f0ad1d_0 - asttokens=2.2.1=pyhd8ed1ab_0 - async-timeout=4.0.2=pyhd8ed1ab_0 - async_generator=1.10=py_0 - attr=2.5.1=h166bdaf_1 - attrs=23.1.0=pyh71513ae_1 - aws-c-auth=0.6.27=he072965_1 - aws-c-cal=0.5.26=hf677bf3_1 - aws-c-common=0.8.19=hd590300_0 - aws-c-compression=0.2.16=hbad4bc6_7 - aws-c-event-stream=0.2.20=hb4b372c_7 - aws-c-http=0.7.7=h2632f9a_4 - aws-c-io=0.13.21=h9fef7b8_5 - aws-c-mqtt=0.8.11=h2282364_1 - aws-c-s3=0.3.0=hcb5a9b2_2 - aws-c-sdkutils=0.1.9=hbad4bc6_2 - aws-checksums=0.1.14=hbad4bc6_7 - aws-crt-cpp=0.20.2=he0fdcb3_0 - aws-sdk-cpp=1.10.57=h059227d_13 - babel=2.12.1=pyhd8ed1ab_1 - backcall=0.2.0=pyh9f0ad1d_0 - backports=1.0=pyhd8ed1ab_3 - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0 - base58=2.1.1=pyhd8ed1ab_0 - bcrypt=3.2.2=py39hb9d737c_1 - beautifulsoup4=4.12.2=pyha770c72_0 - bias_correction=0.4=pyhd8ed1ab_0 - birdy=0.8.4=pyh1a96a4e_0 - bleach=6.0.0=pyhd8ed1ab_0 - blinker=1.6.2=pyhd8ed1ab_0 - blosc=1.21.4=h0f2a231_0 - bokeh=2.4.3=pyhd8ed1ab_3 - boltons=23.0.0=pyhd8ed1ab_0 - boost-cpp=1.78.0=h5adbc97_2 - boto3=1.26.76=pyhd8ed1ab_0 - botocore=1.29.76=pyhd8ed1ab_0 - bottleneck=1.3.7=py39h389d5f1_0 - branca=0.6.0=pyhd8ed1ab_0 - brotli=1.0.9=h166bdaf_8 - brotli-bin=1.0.9=h166bdaf_8 - brotlipy=0.7.0=py39hb9d737c_1005 - brunsli=0.1=h9c3ff4c_0 - bzip2=1.0.8=h7f98852_4 - c-ares=1.19.1=hd590300_0 - c-blosc2=2.9.2=hb4ffafa_0 - ca-certificates=2023.5.7=hbcca054_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - cachetools=5.3.0=pyhd8ed1ab_0 - cairo=1.16.0=ha61ee94_1014 - cartopy=0.21.1=py39h6e7ad6e_0 - cattrs=22.2.0=pyhd8ed1ab_0 - cdat_info=8.2.1=pyhd8ed1ab_2 - cdms2=3.1.5=py39h36de48d_15 - cdtime=3.1.4=py39he83c29a_7 - certifi=2023.5.7=pyhd8ed1ab_0 - certipy=0.1.3=py_0 - cf_xarray=0.8.0=pyhd8ed1ab_0 - cffi=1.15.1=py39he91dace_3 - cfgrib=0.9.10.4=pyhd8ed1ab_0 - cfgv=3.3.1=pyhd8ed1ab_0 - cfitsio=4.2.0=hd9d235c_0 - cftime=1.6.2=py39h2ae25f5_1 - charls=2.4.2=h59595ed_0 - charset-normalizer=2.1.1=pyhd8ed1ab_0 - click=8.1.3=unix_pyhd8ed1ab_2 - click-plugins=1.1.1=py_0 - cligj=0.7.2=pyhd8ed1ab_1 - climpred=2.3.0=pyhd8ed1ab_0 - clisops=0.9.6=pyh1a96a4e_0 - cloudpickle=2.2.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_0 - colorcet=3.0.1=pyhd8ed1ab_0 - comm=0.1.3=pyhd8ed1ab_0 - configurable-http-proxy=4.5.4=he2f69ee_2 - contourpy=1.0.7=py39h4b4f3f3_0 - coverage=7.2.7=py39hd1e30aa_0 - cryptography=40.0.2=py39h079d5ae_0 - curl=8.1.2=h409715c_0 - cycler=0.11.0=pyhd8ed1ab_0 - cytoolz=0.12.0=py39hb9d737c_1 - dash=2.9.3=pyhd8ed1ab_2 - dask=2023.5.1=pyhd8ed1ab_0 - dask-core=2023.5.1=pyhd8ed1ab_0 - dask-labextension=6.1.0=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - datashader=0.14.4=pyh1a96a4e_0 - datashape=0.5.4=py_1 - dav1d=1.2.0=hd590300_0 - dbus=1.13.6=h5008d03_3 - debugpy=1.6.7=py39h227be39_0 - decorator=5.1.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - descartes=1.1.0=py_4 - dill=0.3.6=pyhd8ed1ab_1 - distarray=2.12.2=pyh050c7b8_4 - distlib=0.3.6=pyhd8ed1ab_0 - distributed=2023.5.1=pyhd8ed1ab_0 - docopt=0.6.2=py_1 - docrep=0.3.2=pyh44b312d_0 - eccodes=2.28.0=h7513371_1 - elfutils=0.189=hde5d1a3_0 - entrypoints=0.4=pyhd8ed1ab_0 - eofs=1.4.0=py_0 - esgf-compute-api=2.3.9=0_h1234567_ - esgf-pyclient=0.3.1=pyh1a96a4e_2 - esmf=8.4.0=mpi_mpich_hc592774_104 - esmpy=8.4.0=mpi_mpich_py39h3088dd8_102 - exceptiongroup=1.1.1=pyhd8ed1ab_0 - execnet=1.9.0=pyhd8ed1ab_0 - executing=1.2.0=pyhd8ed1ab_0 - expat=2.5.0=hcb278e6_1 - fasteners=0.17.3=pyhd8ed1ab_0 - fastprogress=1.0.3=pyhd8ed1ab_0 - fftw=3.3.10=nompi_hc118613_107 - filelock=3.12.0=pyhd8ed1ab_0 - findlibs=0.0.5=pyhd8ed1ab_0 - fiona=1.9.1=py39hbc5ff6d_0 - flask=2.3.2=pyhd8ed1ab_0 - flit-core=3.9.0=pyhd8ed1ab_0 - flox=0.7.2=pyhd8ed1ab_0 - folium=0.14.0=pyhd8ed1ab_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 - font-ttf-ubuntu=0.83=hab24e00_0 - fontconfig=2.14.2=h14ed4e7_0 - fonts-conda-ecosystem=1=0 - fonts-conda-forge=1=0 - fonttools=4.39.4=py39hd1e30aa_0 - freeglut=3.2.2=h9c3ff4c_1 - freetype=2.12.1=hca18f0e_1 - freexl=1.0.6=h166bdaf_1 - frozenlist=1.3.3=py39hb9d737c_0 - fsspec=2023.5.0=pyh1a96a4e_0 - funcsigs=1.0.2=py_3 - future=0.18.3=pyhd8ed1ab_0 - g2clib=1.6.3=hbecde78_1 - gcsfs=2023.5.0=pyhd8ed1ab_0 - gdal=3.6.2=py39hc6cd174_6 - geckodriver=0.33.0=hd2f7af9_0 - geographiclib=1.52=pyhd8ed1ab_0 - geopandas=0.13.0=pyhd8ed1ab_0 - geopandas-base=0.13.0=pyha770c72_0 - geopy=2.3.0=pyhd8ed1ab_0 - geos=3.11.1=h27087fc_0 - geotiff=1.7.1=h7a142b4_6 - geoviews=1.9.6=pyhd8ed1ab_0 - geoviews-core=1.9.6=pyha770c72_0 - gettext=0.21.1=h27087fc_0 - gflags=2.2.2=he1b5a44_1004 - giflib=5.2.1=h0b41bf4_3 - gitdb=4.0.10=pyhd8ed1ab_0 - gitpython=3.1.31=pyhd8ed1ab_0 - glib=2.76.3=hfc55251_0 - glib-tools=2.76.3=hfc55251_0 - glog=0.6.0=h6f12383_0 - gnutls=3.7.8=hf3e180e_0 - google-api-core=2.11.0=pyhd8ed1ab_0 - google-auth=2.19.0=pyh1a96a4e_0 - google-auth-oauthlib=1.0.0=pyhd8ed1ab_0 - google-cloud-core=2.3.2=pyhd8ed1ab_0 - google-cloud-storage=2.9.0=pyh1a96a4e_0 - google-crc32c=1.1.2=py39h8db88ab_4 - google-resumable-media=2.5.0=pyhd8ed1ab_0 - googleapis-common-protos=1.57.1=pyhd8ed1ab_0 - graphite2=1.3.13=h58526e2_1001 - greenlet=2.0.2=py39h3d6467e_1 - grpcio=1.54.2=py39h227be39_2 - gst-plugins-base=1.22.0=h4243ec0_2 - gstreamer=1.22.0=h25f0c4b_2 - gstreamer-orc=0.4.34=hd590300_0 - h11=0.14.0=pyhd8ed1ab_0 - h5netcdf=1.1.0=pyhd8ed1ab_1 - h5py=3.8.0=mpi_mpich_py39hadaddcd_0 - harfbuzz=6.0.0=h8e241bc_0 - haversine=2.8.0=pyhd8ed1ab_0 - hdf4=4.2.15=h9772cbc_5 - hdf5=1.12.2=mpi_mpich_h5d83325_1 - holoviews=1.16.0=pyhd8ed1ab_0 - hvplot=0.8.3=pyhd8ed1ab_0 - icu=70.1=h27087fc_0 - identify=2.5.24=pyhd8ed1ab_0 - idna=3.4=pyhd8ed1ab_0 - imagecodecs=2023.1.23=py39hd061359_0 - imageio=2.28.1=pyh24c5eb1_0 - importlib-metadata=6.6.0=pyha770c72_0 - importlib-resources=5.12.0=pyhd8ed1ab_0 - importlib_metadata=6.6.0=hd8ed1ab_0 - importlib_resources=5.12.0=pyhd8ed1ab_0 - iniconfig=2.0.0=pyhd8ed1ab_0 - intake=0.7.0=pyhd8ed1ab_0 - intake-esm=2021.8.17=pyhd8ed1ab_0 - intake-geopandas=0.4.0=pyhd8ed1ab_0 - intake-thredds=2022.8.19=pyhd8ed1ab_0 - intake-xarray=0.7.0=pyhd8ed1ab_0 - ipykernel=6.23.1=pyh210e3f2_0 - ipyleaflet=0.17.2=pyhd8ed1ab_0 - ipython=8.13.2=pyh41d4057_0 - ipython_genutils=0.2.0=py_1 - ipywidgets=8.0.6=pyhd8ed1ab_0 - itsdangerous=2.1.2=pyhd8ed1ab_0 - jack=1.9.22=h11f4161_0 - jasper=2.0.33=h0ff4b12_1 - jedi=0.18.2=pyhd8ed1ab_0 - jinja2=3.1.2=pyhd8ed1ab_1 - jmespath=1.0.1=pyhd8ed1ab_0 - joblib=1.2.0=pyhd8ed1ab_0 - jpeg=9e=h0b41bf4_3 - json-c=0.16=hc379101_0 - json5=0.9.5=pyh9f0ad1d_0 - jsonpickle=2.2.0=pyhd8ed1ab_0 - jsonschema=4.17.3=pyhd8ed1ab_0 - jupyter=1.0.0=py39hf3d152e_8 - jupyter-archive=3.3.4=pyhd8ed1ab_1 - jupyter-dash=0.4.2=pyhd8ed1ab_1 - jupyter-resource-usage=0.7.1=pyhd8ed1ab_0 - jupyter-server-mathjax=0.2.6=pyh5bfe37b_1 - jupyter-server-proxy=4.0.0=pyhd8ed1ab_0 - jupyter_bokeh=3.0.5=pyhd8ed1ab_0 - jupyter_client=7.4.1=pyhd8ed1ab_0 - jupyter_console=6.6.3=pyhd8ed1ab_0 - jupyter_core=5.3.0=py39hf3d152e_0 - jupyter_events=0.6.3=pyhd8ed1ab_0 - jupyter_server=1.23.6=pyhd8ed1ab_0 - jupyter_server_fileid=0.9.0=pyhd8ed1ab_0 - jupyter_server_ydoc=0.8.0=pyhd8ed1ab_0 - jupyter_telemetry=0.1.0=pyhd8ed1ab_1 - jupyter_ydoc=0.2.3=pyhd8ed1ab_0 - jupyterhub=4.0.0=pyh2a2186d_0 - jupyterhub-base=4.0.0=pyh2a2186d_0 - jupyterlab=3.6.3=pyhd8ed1ab_0 - jupyterlab-git=0.41.0=pyhd8ed1ab_1 - jupyterlab-system-monitor=0.8.0=pyhd8ed1ab_2 - jupyterlab-topbar=0.6.1=pyhd8ed1ab_2 - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0 - jupyterlab_server=2.22.1=pyhd8ed1ab_0 - jupyterlab_widgets=3.0.7=pyhd8ed1ab_1 - jupytext=1.14.5=pyhcff175f_0 - jxrlib=1.1=h7f98852_2 - kealib=1.5.0=ha7026e8_0 - keyutils=1.6.1=h166bdaf_0 - kiwisolver=1.4.4=py39hf939315_1 - krb5=1.20.1=h81ceb04_0 - lame=3.100=h166bdaf_1003 - lazy-object-proxy=1.9.0=py39h72bdee0_0 - lazy_loader=0.2=pyhd8ed1ab_0 - lcms2=2.15=hfd0df8a_0 - ld_impl_linux-64=2.40=h41732ed_0 - lerc=4.0.0=h27087fc_0 - libabseil=20230125.2=cxx17_h59595ed_2 - libaec=1.0.6=hcb278e6_1 - libarchive=3.6.2=h3d51595_0 - libarrow=10.0.1=hf815326_25_cpu - libavif=0.11.1=hff004cb_1 - libblas=3.9.0=16_linux64_openblas - libbrotlicommon=1.0.9=h166bdaf_8 - libbrotlidec=1.0.9=h166bdaf_8 - libbrotlienc=1.0.9=h166bdaf_8 - libcap=2.67=he9d0100_0 - libcblas=3.9.0=16_linux64_openblas - libcdms=3.1.2=hf94f14b_119 - libcf=1.0.3=py39h6c807ef_115 - libclang=15.0.7=default_h7634d5b_2 - libclang13=15.0.7=default_h9986a30_2 - libcrc32c=1.1.2=h9c3ff4c_0 - libcups=2.3.3=h36d4200_3 - libcurl=8.1.2=h409715c_0 - libdb=6.2.32=h9c3ff4c_0 - libdeflate=1.17=h0b41bf4_0 - libdrm=2.4.114=h166bdaf_0 - libdrs=3.1.2=hf593df3_118 - libdrs_f=3.1.2=h7e76ec7_114 - libedit=3.1.20191231=he28a2e2_2 - libev=4.33=h516909a_1 - libevent=2.1.10=h28343ad_4 - libexpat=2.5.0=hcb278e6_1 - libffi=3.4.2=h7f98852_5 - libflac=1.4.2=h27087fc_0 - libgcc-ng=12.2.0=h65d4601_19 - libgcrypt=1.10.1=h166bdaf_0 - libgdal=3.6.2=h8c90c07_6 - libgfortran-ng=12.2.0=h69a702a_19 - libgfortran5=12.2.0=h337968e_19 - libglib=2.76.3=hebfc3b9_0 - libglu=9.0.0=he1b5a44_1001 - libgomp=12.2.0=h65d4601_19 - libgoogle-cloud=2.10.1=hac9eb74_1 - libgpg-error=1.46=h620e276_0 - libgrpc=1.54.2=hb20ce57_2 - libiconv=1.17=h166bdaf_0 - libidn2=2.3.4=h166bdaf_0 - libkml=1.3.0=h37653c0_1015 - liblapack=3.9.0=16_linux64_openblas - libllvm14=14.0.6=hcd5def8_2 - libllvm15=15.0.7=hadd5161_1 - libllvm16=16.0.1=hadd5161_0 - libmicrohttpd=0.9.76=h87ba234_0 - libnetcdf=4.8.1=mpi_mpich_hcd871d9_6 - libnghttp2=1.52.0=h61bc06f_0 - libnsl=2.0.0=h7f98852_0 - libnuma=2.0.16=h0b41bf4_1 - libogg=1.3.4=h7f98852_1 - libopenblas=0.3.21=pthreads_h78a6416_3 - libopus=1.3.1=h7f98852_1 - libpciaccess=0.17=h166bdaf_0 - libpng=1.6.39=h753d276_0 - libpq=15.2=hb675445_0 - libprotobuf=3.21.12=h3eb15da_0 - librttopo=1.1.0=ha49c73b_12 - libsndfile=1.2.0=hb75c966_0 - libsodium=1.0.18=h36c2ea0_1 - libspatialindex=1.9.3=h9c3ff4c_4 - libspatialite=5.0.1=h221c8f1_23 - libsqlite=3.42.0=h2797004_0 - libssh2=1.10.0=hf14f497_3 - libstdcxx-ng=12.2.0=h46fd767_19 - libsystemd0=253=h8c4010b_1 - libtasn1=4.19.0=h166bdaf_0 - libthrift=0.18.1=h5e4af38_0 - libtiff=4.5.0=h6adf6a1_2 - libtool=2.4.7=h27087fc_0 - libudev1=253=h0b41bf4_1 - libunistring=0.9.10=h7f98852_0 - libutf8proc=2.8.0=h166bdaf_0 - libuuid=2.38.1=h0b41bf4_0 - libuv=1.44.2=h166bdaf_0 - libvorbis=1.3.7=h9c3ff4c_0 - libwebp-base=1.3.0=h0b41bf4_0 - libxcb=1.13=h7f98852_1004 - libxkbcommon=1.5.0=h79f4944_1 - libxml2=2.10.3=hca2bb57_4 - libxslt=1.1.37=h873f0b0_0 - libzip=1.9.2=hc929e4a_1 - libzlib=1.2.13=h166bdaf_4 - libzopfli=1.0.3=h9c3ff4c_0 - llvmlite=0.40.0=py39h174d805_0 - lmoments3=1.0.5=pyhd8ed1ab_0 - locket=1.0.0=pyhd8ed1ab_0 - loguru=0.7.0=py39hf3d152e_0 - lxml=4.9.2=py39h14694de_0 - lz4=4.3.2=py39h724f13c_0 - lz4-c=1.9.4=hcb278e6_0 - lzo=2.10=h516909a_1000 - mako=1.2.4=pyhd8ed1ab_0 - mamba_gator=5.2.1=pyhd8ed1ab_0 - mapclassify=2.5.0=pyhd8ed1ab_1 - markdown=3.4.3=pyhd8ed1ab_0 - markdown-it-py=2.2.0=pyhd8ed1ab_0 - markupsafe=2.1.2=py39h72bdee0_0 - matplotlib=3.7.1=py39hf3d152e_0 - matplotlib-base=3.7.1=py39he190548_0 - matplotlib-inline=0.1.6=pyhd8ed1ab_0 - mdit-py-plugins=0.3.5=pyhd8ed1ab_0 - mdurl=0.1.0=pyhd8ed1ab_0 - memory_profiler=0.61.0=pyhd8ed1ab_0 - mesalib=23.0.2=h3855f93_0 - mistune=2.0.5=pyhd8ed1ab_0 - mpg123=1.31.3=hcb278e6_0 - mpi=1.0=mpich - mpi4py=3.1.4=py39h32b9844_0 - mpich=4.0.3=h846660c_100 - msgpack-python=1.0.5=py39h4b4f3f3_0 - multidict=6.0.4=py39h72bdee0_0 - multipledispatch=0.6.0=py_0 - multiprocess=0.70.14=py39hb9d737c_3 - munch=3.0.0=pyhd8ed1ab_0 - munkres=1.1.4=pyh9f0ad1d_0 - myproxyclient=2.1.0=pyhd8ed1ab_2 - mysql-common=8.0.32=hf1915f5_2 - mysql-libs=8.0.32=hca2cd23_2 - nbclassic=1.0.0=pyhb4ecaf3_1 - nbclient=0.7.4=pyhd8ed1ab_0 - nbconvert=7.4.0=pyhd8ed1ab_0 - nbconvert-core=7.4.0=pyhd8ed1ab_0 - nbconvert-pandoc=7.4.0=pyhd8ed1ab_0 - nbdime=3.2.1=pyhd8ed1ab_0 - nbformat=5.8.0=pyhd8ed1ab_0 - nbresuse=0.4.0=pyhd8ed1ab_0 - nbval=0.9.6=pyh9f0ad1d_0 - nc-time-axis=1.4.1=pyhd8ed1ab_0 - ncurses=6.3=h27087fc_1 - nest-asyncio=1.5.6=pyhd8ed1ab_0 - nested_dict=1.61=pyhd3deb0d_0 - netcdf-fortran=4.6.0=mpi_mpich_h1e13492_2 - netcdf4=1.6.2=nompi_py39hfaa66c4_100 - nettle=3.8.1=hc379101_1 - networkx=3.1=pyhd8ed1ab_0 - nodeenv=1.8.0=pyhd8ed1ab_0 - nodejs=18.15.0=h8d033a5_0 - notebook=6.5.4=pyha770c72_0 - notebook-shim=0.2.3=pyhd8ed1ab_0 - nspr=4.35=h27087fc_0 - nss=3.89=he45b914_0 - numba=0.57.0=py39hb75a051_0 - numcodecs=0.11.0=py39h227be39_1 - numpy=1.23.5=py39h3d75532_0 - numpy_groupies=0.9.22=pyhd8ed1ab_0 - oauthlib=3.2.2=pyhd8ed1ab_0 - openblas=0.3.21=pthreads_h320a7e8_3 - openjpeg=2.5.0=hfec8fc6_2 - openssl=3.1.1=hd590300_0 - orc=1.8.3=hfdbbad2_0 - outcome=1.2.0=pyhd8ed1ab_0 - owslib=0.28.1=pyhd8ed1ab_0 - p11-kit=0.24.1=hc5aa10d_0 - packaging=23.1=pyhd8ed1ab_0 - pamela=1.0.0=py_0 - pandas=1.3.5=py39hde0f152_0 - pandoc=2.19.2=h32600fe_2 - pandocfilters=1.5.0=pyhd8ed1ab_0 - panel=0.14.4=pyhd8ed1ab_0 - parallelio=2.5.10=mpi_mpich_h862c5c2_100 - param=1.13.0=pyh1a96a4e_0 - paramiko=3.2.0=pyhd8ed1ab_0 - parso=0.8.3=pyhd8ed1ab_0 - partd=1.4.0=pyhd8ed1ab_0 - pathos=0.3.0=pyhd8ed1ab_0 - patsy=0.5.3=pyhd8ed1ab_0 - pcre2=10.40=hc3806b6_0 - pexpect=4.8.0=pyh1a96a4e_2 - pickleshare=0.7.5=py_1003 - pillow=9.4.0=py39h2320bf1_1 - pint=0.21=pyhd8ed1ab_0 - pip=23.1.2=pyhd8ed1ab_0 - pixman=0.40.0=h36c2ea0_0 - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_0 - platformdirs=3.5.1=pyhd8ed1ab_0 - plotly=5.14.1=pyhd8ed1ab_0 - pluggy=1.0.0=pyhd8ed1ab_5 - ply=3.11=py_1 - pooch=1.7.0=pyha770c72_3 - poppler=23.01.0=h091648b_0 - poppler-data=0.4.12=hd8ed1ab_0 - postgresql=15.2=h3248436_0 - pox=0.3.2=pyhd8ed1ab_0 - ppft=1.7.6.6=pyhd8ed1ab_0 - pre-commit=3.3.2=pyha770c72_0 - proj=9.1.1=h8ffa02c_2 - prometheus_client=0.17.0=pyhd8ed1ab_0 - prompt-toolkit=3.0.38=pyha770c72_0 - prompt_toolkit=3.0.38=hd8ed1ab_0 - properscoring=0.1=py_0 - protobuf=4.21.12=py39h227be39_0 - pscript=0.7.7=pyhd8ed1ab_0 - psutil=5.9.5=py39h72bdee0_0 - pthread-stubs=0.4=h36c2ea0_1001 - ptyprocess=0.7.0=pyhd3deb0d_0 - pulseaudio=16.1=hcb278e6_3 - pulseaudio-client=16.1=h5195f5e_3 - pulseaudio-daemon=16.1=ha8d29e2_3 - pure_eval=0.2.2=pyhd8ed1ab_0 - pyarrow=10.0.1=py39he4327e9_25_cpu - pyasn1=0.4.8=py_0 - pyasn1-modules=0.2.7=py_0 - pycparser=2.21=pyhd8ed1ab_0 - pyct=0.4.6=py_0 - pyct-core=0.4.6=py_0 - pycurl=7.45.1=py39h9297c8b_3 - pydantic=1.10.8=py39hd1e30aa_0 - pydap=3.4.0=pyhd8ed1ab_0 - pydeck=0.8.0=pyhd8ed1ab_0 - pygeos=0.14=py39hc9151fd_0 - pygments=2.15.1=pyhd8ed1ab_0 - pyjwt=2.7.0=pyhd8ed1ab_0 - pymbolic=2022.2=pyhd8ed1ab_0 - pymetalink=6.4=pyhd8ed1ab_0 - pympler=1.0.1=pyhd8ed1ab_0 - pynacl=1.5.0=py39hb9d737c_2 - pyogrio=0.5.1=py39hbc5ff6d_0 - pyopenssl=23.1.1=pyhd8ed1ab_0 - pyparsing=3.0.9=pyhd8ed1ab_0 - pyproj=3.5.0=py39hf8a5840_0 - pyqt=5.15.7=py39h5c7b992_3 - pyqt5-sip=12.11.0=py39h227be39_3 - pyrsistent=0.19.3=py39h72bdee0_0 - pyshp=2.3.1=pyhd8ed1ab_0 - pysocks=1.7.1=pyha2e5f31_6 - pytest=7.3.1=pyhd8ed1ab_0 - pytest-xdist=3.3.1=pyhd8ed1ab_0 - python=3.9.16=h2782a2a_0_cpython - python-dateutil=2.8.2=pyhd8ed1ab_0 - python-eccodes=1.5.1=py39h389d5f1_0 - python-fastjsonschema=2.17.1=pyhd8ed1ab_0 - python-json-logger=2.0.7=pyhd8ed1ab_0 - python-pptx=0.6.21=pyhd8ed1ab_0 - python-tzdata=2023.3=pyhd8ed1ab_0 - python_abi=3.9=3_cp39 - pytools=2022.1.14=pyhd8ed1ab_0 - pytz=2023.3=pyhd8ed1ab_0 - pyu2f=0.1.5=pyhd8ed1ab_0 - pyviz_comms=2.3.0=pyhd8ed1ab_0 - pywavelets=1.4.1=py39h389d5f1_0 - pyyaml=6.0=py39hb9d737c_5 - pyzmq=25.0.2=py39h0be026e_0 - qt-main=5.15.8=h5d23da1_6 - qtconsole=5.4.3=pyhd8ed1ab_0 - qtconsole-base=5.4.3=pyha770c72_0 - qtpy=2.3.1=pyhd8ed1ab_0 - rasterio=1.3.6=py39h09b1985_0 - raven-hydro=0.2.1=py39h8e2dbb5_1 - ravenpy=0.12.0=py39hf3d152e_2 - rdma-core=28.9=h59595ed_1 - re2=2023.03.02=h8c504da_0 - readline=8.2=h8228510_1 - regionmask=0.9.0=pyhd8ed1ab_0 - requests=2.31.0=pyhd8ed1ab_0 - requests-cache=1.0.1=pyhd8ed1ab_0 - requests-magpie=0.2.0=pyhd8ed1ab_0 - requests-oauthlib=1.3.1=pyhd8ed1ab_0 - retrying=1.3.3=py_2 - rfc3339-validator=0.1.4=pyhd8ed1ab_0 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rioxarray=0.14.1=pyhd8ed1ab_0 - roocs-utils=0.6.4=pyh1a96a4e_0 - rsa=4.9=pyhd8ed1ab_0 - rtree=1.0.1=py39hb102c33_1 - ruamel.yaml=0.17.30=py39hd1e30aa_0 - ruamel.yaml.clib=0.2.7=py39h72bdee0_1 - s2n=1.3.44=h06160fa_0 - s3fs=2023.5.0=pyhd8ed1ab_0 - s3transfer=0.6.1=pyhd8ed1ab_0 - scikit-image=0.20.0=py39h7c7b5a8_1 - scikit-learn=1.2.2=py39hc236052_2 - scipy=1.9.1=py39h8ba3f38_0 - scp=0.14.5=pyhd8ed1ab_0 - seaborn=0.12.2=hd8ed1ab_0 - seaborn-base=0.12.2=pyhd8ed1ab_0 - selenium=4.9.1=pyhd8ed1ab_0 - semver=3.0.0=pyhd8ed1ab_0 - send2trash=1.8.2=pyh41d4057_0 - setuptools=59.8.0=py39hf3d152e_1 - shapely=2.0.1=py39hc9151fd_0 - simpervisor=1.0.0=pyhd8ed1ab_0 - sip=6.7.9=py39h3d6467e_0 - siphon=0.9=pyhd8ed1ab_2 - six=1.16.0=pyh6c4a22f_0 - smmap=3.0.5=pyh44b312d_0 - snappy=1.1.10=h9fff704_0 - sniffio=1.3.0=pyhd8ed1ab_0 - snuggs=1.4.7=py_0 - sortedcontainers=2.4.0=pyhd8ed1ab_0 - soupsieve=2.3.2.post1=pyhd8ed1ab_0 - sparse=0.14.0=pyhd8ed1ab_0 - spotpy=1.6.2=pyhd8ed1ab_0 - sqlalchemy=2.0.15=py39hd1e30aa_0 - sqlite=3.42.0=h2c6b66d_0 - stack_data=0.6.2=pyhd8ed1ab_0 - statsmodels=0.14.0=py39h0f8d45d_1 - streamlit=1.8.0=pyhd8ed1ab_0 - tblib=1.7.0=pyhd8ed1ab_0 - tenacity=8.2.2=pyhd8ed1ab_0 - terminado=0.17.1=pyh41d4057_0 - threadpoolctl=3.1.0=pyh8a188c0_0 - threddsclient=0.4.2=py_0 - tifffile=2023.4.12=pyhd8ed1ab_0 - tiledb=2.13.2=hd532e3d_0 - tinycss2=1.2.1=pyhd8ed1ab_0 - tk=8.6.12=h27826a3_0 - toml=0.10.2=pyhd8ed1ab_0 - tomli=2.0.1=pyhd8ed1ab_0 - toolz=0.12.0=pyhd8ed1ab_0 - tornado=6.3.2=py39hd1e30aa_0 - tqdm=4.65.0=pyhd8ed1ab_1 - traitlets=5.9.0=pyhd8ed1ab_0 - traittypes=0.2.1=pyh9f0ad1d_2 - trio=0.22.0=py39hf3d152e_1 - trio-websocket=0.10.2=pyhd8ed1ab_0 - typing-extensions=4.6.2=hd8ed1ab_0 - typing_extensions=4.6.2=pyha770c72_0 - tzcode=2023c=h0b41bf4_0 - tzdata=2023c=h71feb2d_0 - tzlocal=5.0.1=py39hf3d152e_0 - ucx=1.14.1=hf587318_1 - ujson=5.7.0=py39h227be39_0 - ukkonen=1.0.1=py39hf939315_3 - unicodedata2=15.0.0=py39hb9d737c_0 - url-normalize=1.4.3=pyhd8ed1ab_0 - urllib3=1.26.15=pyhd8ed1ab_0 - urlpath=1.2.0=pyhd8ed1ab_0 - validators=0.20.0=pyhd8ed1ab_0 - virtualenv=20.23.0=pyhd8ed1ab_0 - voila=0.4.0=pyhd8ed1ab_0 - watchdog=3.0.0=py39hf3d152e_0 - wcwidth=0.2.6=pyhd8ed1ab_0 - webencodings=0.5.1=py_1 - webob=1.8.7=pyhd8ed1ab_0 - websocket-client=1.5.2=pyhd8ed1ab_0 - websockets=11.0.3=py39hd1e30aa_0 - werkzeug=2.3.4=pyhd8ed1ab_0 - wget=1.20.3=ha35d2d1_1 - wheel=0.40.0=pyhd8ed1ab_0 - widgetsnbextension=4.0.7=pyhd8ed1ab_0 - wrapt=1.15.0=py39h72bdee0_0 - wsproto=1.2.0=pyhd8ed1ab_0 - xarray=2023.1.0=pyhd8ed1ab_0 - xcb-util=0.4.0=h516909a_0 - xcb-util-image=0.4.0=h166bdaf_0 - xcb-util-keysyms=0.4.0=h516909a_0 - xcb-util-renderutil=0.3.9=h166bdaf_0 - xcb-util-wm=0.4.1=h516909a_0 - xclim=0.43.0=py39hf3d152e_1 - xerces-c=3.2.4=h55805fa_1 - xesmf=0.7.1=pyhd8ed1ab_0 - xeus=3.0.5=hac2b420_1 - xeus-python=0.15.9=py39h7633fee_0 - xeus-python-shell=0.5.0=pyhd8ed1ab_0 - xeus-python-shell-raw=0.5.0=pyhd8ed1ab_0 - xeus-zmq=1.0.3=h0541b36_0 - xhistogram=0.3.2=pyhd8ed1ab_0 - xkeyboard-config=2.38=h0b41bf4_0 - xlrd=2.0.1=pyhd8ed1ab_3 - xlsxwriter=3.1.2=pyhd8ed1ab_0 - xorg-damageproto=1.2.1=h7f98852_1002 - xorg-fixesproto=5.0=h7f98852_1002 - xorg-glproto=1.4.17=h7f98852_1002 - xorg-inputproto=2.3.2=h7f98852_1002 - xorg-kbproto=1.0.7=h7f98852_1002 - xorg-libice=1.1.1=hd590300_0 - xorg-libsm=1.2.4=h7391055_0 - xorg-libx11=1.8.4=h0b41bf4_0 - xorg-libxau=1.0.11=hd590300_0 - xorg-libxdamage=1.1.5=h7f98852_1 - xorg-libxdmcp=1.1.3=h7f98852_0 - xorg-libxext=1.3.4=h0b41bf4_2 - xorg-libxfixes=5.0.3=h7f98852_1004 - xorg-libxi=1.7.10=h7f98852_0 - xorg-libxrandr=1.5.2=h7f98852_1 - xorg-libxrender=0.9.10=h7f98852_1003 - xorg-randrproto=1.5.0=h7f98852_1001 - xorg-renderproto=0.11.1=h7f98852_1002 - xorg-util-macros=1.19.3=h7f98852_0 - xorg-xextproto=7.3.0=h0b41bf4_1003 - xorg-xf86vidmodeproto=2.3.1=h7f98852_1002 - xorg-xproto=7.0.31=h7f98852_1007 - xrft=1.0.1=pyhd8ed1ab_0 - xskillscore=0.0.24=pyhd8ed1ab_0 - xyzservices=2023.5.0=pyhd8ed1ab_1 - xz=5.2.6=h166bdaf_0 - y-py=0.5.9=py39h50f1755_0 - yaml=0.2.5=h7f98852_2 - yarl=1.9.2=py39hd1e30aa_0 - ypy-websocket=0.8.2=pyhd8ed1ab_0 - zarr=2.14.2=pyhd8ed1ab_0 - zeromq=4.3.4=h9c3ff4c_1 - zfp=1.0.0=h27087fc_3 - zict=3.0.0=pyhd8ed1ab_0 - zipp=3.15.0=pyhd8ed1ab_0 - zlib=1.2.13=h166bdaf_4 - zlib-ng=2.0.7=h0b41bf4_0 - zstd=1.5.2=h3eb15da_6 - pip: - arrow==1.2.3 - astunparse==1.6.3 - colour==0.1.5 - dnspython==2.3.0 - email-validator==2.0.0.post2 - fqdn==1.5.1 - geojson==3.0.1 - hsclient==0.3.3 - hsmodels==0.5.5 - ipython-blocking==0.3.1 - isodate==0.6.1 - isoduration==20.11.0 - jsonpointer==2.3 - jupyterlab-logout==0.5.0 - jupyterlab-tabular-data-editor==1.0.0 - jupyternotify==0.1.15 - pixiedust==1.1.19 - pytest-tornasync==0.6.0.post2 - rdflib==5.0.0 - uri-template==1.2.0 - webcolors==1.13 - xmltodict==0.13.0 - xncml==0.2 - xsdata==23.5 prefix: /opt/conda/envs/birdy ``` Docker build log [230530-1-buildlogs.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621136/230530-1-buildlogs.txt) ``` Sending build context to Docker daemon 22.02kB Step 1/18 : FROM continuumio/miniconda3 ---> fbedfde8d058 Step 2/18 : RUN conda update conda -n base && conda install mamba -n base -c conda-forge -c defaults && conda clean --all --yes && conda config --set channel_priority strict && wget -qO- https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -C /usr/local -xvj bin/micromamba ---> Using cache ---> 418cc0c03798 Step 3/18 : ENV MAMBA_ROOT_PREFIX="/opt/conda" ---> Using cache ---> cf727f7e31d9 Step 4/18 : RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y git mercurial gcc unzip patch fonts-humor-sans firefox-esr x11-utils && apt-get clean ---> Using cache ---> c1929f372dc2 Step 5/18 : RUN groupadd --gid 1000 jenkins && useradd --uid 1000 --gid jenkins --create-home jenkins && chmod -R a+rwX /opt/conda ---> Using cache ---> 85378190e665 Step 6/18 : COPY environment.yml /environment.yml ---> c06bfdb4ac56 Step 7/18 : RUN umask 0000 && mamba create --name birdy --channel conda-forge --channel defaults xclim ravenpy python=3.9 --yes && mamba env update --name birdy --file /environment.yml && mamba clean --all --yes ---> Running in 95270a0111d6 Transaction Prefix: /opt/conda/envs/birdy Updating specs: - xclim - ravenpy - python=3.9 Package Version Build Channel Size ────────────────────────────────────────────────────────────────────────────────────────────────────────────── Install: ────────────────────────────────────────────────────────────────────────────────────────────────────────────── + _libgcc_mutex 0.1 conda_forge conda-forge/linux-64 3kB + _openmp_mutex 4.5 2_gnu conda-forge/linux-64 24kB + affine 2.4.0 pyhd8ed1ab_0 conda-forge/noarch 19kB + appdirs 1.4.4 pyh9f0ad1d_0 conda-forge/noarch 13kB + asttokens 2.2.1 pyhd8ed1ab_0 conda-forge/noarch 28kB + attrs 23.1.0 pyh71513ae_1 conda-forge/noarch 55kB + aws-c-auth 0.6.27 he072965_1 conda-forge/linux-64 102kB + aws-c-cal 0.5.26 hf677bf3_1 conda-forge/linux-64 50kB + aws-c-common 0.8.19 hd590300_0 conda-forge/linux-64 196kB + aws-c-compression 0.2.16 hbad4bc6_7 conda-forge/linux-64 19kB + aws-c-event-stream 0.2.20 hb4b372c_7 conda-forge/linux-64 54kB + aws-c-http 0.7.7 h2632f9a_4 conda-forge/linux-64 192kB + aws-c-io 0.13.21 h9fef7b8_5 conda-forge/linux-64 140kB + aws-c-mqtt 0.8.11 h2282364_1 conda-forge/linux-64 148kB + aws-c-s3 0.3.0 hcb5a9b2_2 conda-forge/linux-64 76kB + aws-c-sdkutils 0.1.9 hbad4bc6_2 conda-forge/linux-64 54kB + aws-checksums 0.1.14 hbad4bc6_7 conda-forge/linux-64 50kB + aws-crt-cpp 0.20.2 he0fdcb3_0 conda-forge/linux-64 319kB + aws-sdk-cpp 1.10.57 h059227d_13 conda-forge/linux-64 4MB + backcall 0.2.0 pyh9f0ad1d_0 conda-forge/noarch 14kB + backports 1.0 pyhd8ed1ab_3 conda-forge/noarch 6kB + backports.functools_lru_cache 1.6.4 pyhd8ed1ab_0 conda-forge/noarch 9kB + bias_correction 0.4 pyhd8ed1ab_0 conda-forge/noarch 8kB + blosc 1.21.4 h0f2a231_0 conda-forge/linux-64 49kB + bokeh 3.1.1 pyhd8ed1ab_0 conda-forge/noarch 6MB + boltons 23.0.0 pyhd8ed1ab_0 conda-forge/noarch 303kB + boost-cpp 1.78.0 h5adbc97_2 conda-forge/linux-64 16MB + bottleneck 1.3.7 py39h389d5f1_0 conda-forge/linux-64 122kB + branca 0.6.0 pyhd8ed1ab_0 conda-forge/noarch 28kB + brotli 1.0.9 h166bdaf_8 conda-forge/linux-64 19kB + brotli-bin 1.0.9 h166bdaf_8 conda-forge/linux-64 20kB + bzip2 1.0.8 h7f98852_4 conda-forge/linux-64 496kB + c-ares 1.19.1 hd590300_0 conda-forge/linux-64 113kB + ca-certificates 2023.5.7 hbcca054_0 …
2 parents 597529c + 9f372ec commit 3191ff5

File tree

12 files changed

+130
-35
lines changed

12 files changed

+130
-35
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
pavics-sdi-*/
1313
finch-*/
1414
raven-*/
15+
RavenPy-*/
1516
esgf-compute-api-*/
1617
PAVICS-landing-*/
1718

Jenkinsfile

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pipeline {
1010
// https://jenkins.io/doc/book/pipeline/syntax/
1111
agent {
1212
docker {
13-
image "pavics/workflow-tests:221130-update230403"
13+
image "pavics/workflow-tests:230530-1"
1414
label 'linux && docker'
1515
}
1616
}
@@ -66,14 +66,20 @@ Requires 'weaver' component to be active on the target 'PAVICS_HOST' server
6666
description: 'RAVEN_REPO branch to test against.', trim: true)
6767
string(name: 'RAVEN_REPO', defaultValue: 'Ouranosinc/raven',
6868
description: 'https://github.com/Ouranosinc/raven repo or fork to test against.', trim: true)
69+
booleanParam(name: 'TEST_RAVENPY_REPO', defaultValue: false,
70+
description: 'Check the box to test RavenPy repo.')
71+
string(name: 'RAVENPY_BRANCH', defaultValue: 'master',
72+
description: 'RAVENPY_REPO branch to test against.', trim: true)
73+
string(name: 'RAVENPY_REPO', defaultValue: 'CSHS-CWRA/RavenPy',
74+
description: 'https://github.com/CSHS-CWRA/RavenPy repo or fork to test against.', trim: true)
6975
booleanParam(name: 'TEST_ESGF_COMPUTE_API_REPO', defaultValue: false,
7076
description: 'Check the box to test esgf-compute-api repo.')
7177
string(name: 'ESGF_COMPUTE_API_BRANCH', defaultValue: 'devel',
7278
description: 'ESGF_COMPUTE_API_REPO branch to test against.', trim: true)
7379
string(name: 'ESGF_COMPUTE_API_REPO', defaultValue: 'ESGF/esgf-compute-api',
7480
description: 'https://github.com/ESGF/esgf-compute-api repo or fork to test against.', trim: true)
75-
string(name: 'PYTEST_EXTRA_OPTS', defaultValue: '',
76-
description: 'Extra options to pass to pytest, ex: --nbval-lax', trim: true)
81+
string(name: 'PYTEST_EXTRA_OPTS', defaultValue: '--dist=loadscope --numprocesses=0',
82+
description: 'Extra options to pass to pytest, ex: --nbval-lax --dist=loadscope --numprocesses=0', trim: true)
7783
string(name: 'EXTRA_TEST_ENV_VAR', defaultValue: '',
7884
description: 'Extra environment variables for the various tests, ex: "TEST_RUNS=50 TEST_WPS_BIRDS=finch,raven,flyingpigeon TEST_NO_USE_PROD_DATA=1"', trim: true)
7985
booleanParam(name: 'TEST_LOCAL_NOTEBOOKS', defaultValue: true,
@@ -101,6 +107,16 @@ Note this is another run, will double the time and no guaranty to have same erro
101107
variable: 'ESGF_AUTH_TOKEN'), // Kept old env var name for backward compat
102108
string(credentialsId: 'esgf_auth_token',
103109
variable: 'COMPUTE_TOKEN'), // ESGF expect this env var name
110+
// For RavenPy HydroShare_integration.ipynb once a token is really required.
111+
// Not enable immediately to not force all existing Jenkins deployments
112+
// to add theses new credentials.
113+
// See required Jenkins config change
114+
// https://github.com/Ouranosinc/jenkins-config/commit/c6b36cfb761b5093375225a121ef5ec04684e84b
115+
// https://github.com/Ouranosinc/jenkins-config/pull/15
116+
// string(credentialsId: 'hydroshare_auth_client_id',
117+
// variable: 'HYDROSHARE_AUTH_CLIENT_ID'),
118+
// string(credentialsId: 'hydroshare_auth_token',
119+
// variable: 'HYDROSHARE_AUTH_TOKEN'),
104120
]) {
105121
sh("VERIFY_SSL=${params.VERIFY_SSL} \
106122
SAVE_RESULTING_NOTEBOOK=${params.SAVE_RESULTING_NOTEBOOK} \
@@ -118,6 +134,7 @@ Note this is another run, will double the time and no guaranty to have same erro
118134
archiveArtifacts(artifacts: 'pavics-sdi-*/docs/source/notebook-components/*.ipynb', fingerprint: true)
119135
archiveArtifacts(artifacts: 'finch-*/docs/source/notebooks/*.ipynb', fingerprint: true)
120136
archiveArtifacts(artifacts: 'raven-*/docs/source/notebooks/*.ipynb', fingerprint: true)
137+
archiveArtifacts(artifacts: 'RavenPy-*/docs/notebooks/*.ipynb', fingerprint: true)
121138
archiveArtifacts(artifacts: 'esgf-compute-api-*/examples/*.ipynb', fingerprint: true)
122139
archiveArtifacts(artifacts: 'PAVICS-landing-*/content/notebooks/climate_indicators/*.ipynb', fingerprint: true)
123140
archiveArtifacts(artifacts: 'buildout/*.output.ipynb', fingerprint: true, allowEmptyArchive: true)

binder/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM pavics/workflow-tests:221130-update230403
1+
FROM pavics/workflow-tests:230530-1
22

33
USER root
44

binder/reorg-notebooks

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@
55

66
# if name clash, last command wins
77

8-
mv -v esgf-compute-api-$ESGF_COMPUTE_API_BRANCH/examples ./esgf-compute-api-examples-$ESGF_COMPUTE_API_BRANCH
9-
rm -rfv esgf-compute-api-$ESGF_COMPUTE_API_BRANCH
8+
rm -r esgf-compute-api-$ESGF_COMPUTE_API_BRANCH
9+
10+
mkdir raven
11+
mv -v raven-${RAVEN_BRANCH}/docs/source/notebooks/*.ipynb ./raven/
12+
mv -v RavenPy-${RAVENPY_BRANCH}/docs/notebooks/*.ipynb ./raven/
13+
rm -r raven-${RAVEN_BRANCH} RavenPy-${RAVENPY_BRANCH}
1014

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

2024
mv -v pavics-sdi-$PAVICS_SDI_BRANCH/docs/source/notebooks/*.ipynb ./
21-
rm -rfv pavics-sdi-$PAVICS_SDI_BRANCH
25+
rm -r pavics-sdi-$PAVICS_SDI_BRANCH
2226

2327
mv -v finch-$FINCH_BRANCH/docs/source/notebooks/*.ipynb ./
24-
rm -rfv finch-$FINCH_BRANCH
28+
rm -r finch-$FINCH_BRANCH

default_build_params

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,27 @@ else
8484
echo "RAVEN_REPO has been set to '$RAVEN_REPO'"
8585
fi
8686

87+
if [ -z "$TEST_RAVENPY_REPO" ]; then
88+
TEST_RAVENPY_REPO=false
89+
echo "TEST_RAVENPY_REPO not set, default to '$TEST_RAVENPY_REPO'"
90+
else
91+
echo "TEST_RAVENPY_REPO has been set to '$TEST_RAVENPY_REPO'"
92+
fi
93+
94+
if [ -z "$RAVENPY_BRANCH" ]; then
95+
RAVENPY_BRANCH=master
96+
echo "RAVENPY_BRANCH not set, default to '$RAVENPY_BRANCH'"
97+
else
98+
echo "RAVENPY_BRANCH has been set to '$RAVENPY_BRANCH'"
99+
fi
100+
101+
if [ -z "$RAVENPY_REPO" ]; then
102+
RAVENPY_REPO='CSHS-CWRA/RavenPy'
103+
echo "RAVENPY_REPO not set, default to '$RAVENPY_REPO'"
104+
else
105+
echo "RAVENPY_REPO has been set to '$RAVENPY_REPO'"
106+
fi
107+
87108
if [ -z "$TEST_ESGF_COMPUTE_API_REPO" ]; then
88109
TEST_ESGF_COMPUTE_API_REPO=false
89110
echo "TEST_ESGF_COMPUTE_API_REPO not set, default to '$TEST_ESGF_COMPUTE_API_REPO'"

docker/Dockerfile

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ FROM continuumio/miniconda3
44
# The 'channel_priority strict' did help conda but it was not enough.
55
RUN conda update conda -n base && \
66
conda install mamba -n base -c conda-forge -c defaults && \
7+
conda clean --all --yes && \
78
conda config --set channel_priority strict && \
89
wget -qO- https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -C /usr/local -xvj bin/micromamba
910

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

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

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

113+
# For import xesmf since esmf-8.4.0, see
114+
# https://github.com/conda-forge/esmf-feedstock/issues/91
115+
ENV ESMFMKFILE="/opt/conda/envs/birdy/lib/esmf.mk"
116+
117+
# To avoid error "PROJ: proj_create_from_database: Open of
118+
# /opt/conda/envs/birdy/share/proj failed"
119+
# This simulates a real `conda activate birdy`.
120+
ENV PROJ_DATA="/opt/conda/envs/birdy/share/proj"
121+
109122
# problem running start-notebook.sh when being root
110123
# the jupyter/base-notebook image also do not default to root user so we do the same here
111124
USER jenkins

docker/Dockerfile.testing

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
# For testing quickly without having to do a full rebuild.
22

3-
FROM pavics/workflow-tests:221130
3+
FROM pavics/workflow-tests:230526-1
44

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

99
USER root
1010

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

19+
#RUN umask 0000 \
20+
# && python -m pip install --upgrade --force-reinstall --no-deps --no-cache-dir netcdf4==1.6.0 --no-binary netcdf4
2121
# RUN apt-get update && \
2222
# DEBIAN_FRONTEND=noninteractive apt-get install -y unzip && \
2323
# apt-get clean && \

docker/environment.yml

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ channels:
55
- cdat
66
- bokeh
77
- plotly # for jupyter-dash
8-
- pyston
8+
# - pyston
99
- pyviz/label/dev # for jupyter-panel-proxy, panel
1010
- defaults
1111

@@ -19,8 +19,8 @@ dependencies:
1919

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

2525
#- dask # from xclim and ravenpy
2626
#- distributed
@@ -32,9 +32,17 @@ dependencies:
3232
- matplotlib
3333
# - xarray # from xclim and ravenpy
3434
# - numpy # from xclim and ravenpy
35+
# TODO: unpin numpy, pinned for hvplot.quadmesh(rasterize=True)
36+
# datashade=True is an alias
37+
# See https://github.com/holoviz/hvplot/issues/1073
38+
- numpy <= 1.23.5
39+
# TODO: unpin cf_xarray due to https://github.com/xarray-contrib/cf-xarray/issues/442
40+
- cf_xarray != 0.8.1
3541
- birdy
3642
# - owslib>=0.23.0 # from ravenpy
3743
# - netcdf4 # from ravenpy
44+
# TODO: remove libnetcdf PIN because https://github.com/Ouranosinc/PAVICS-landing/issues/66
45+
- libnetcdf <= 4.8.1
3846
# https://github.com/ecmwf/cfgrib
3947
# Python interface to map GRIB files to the Unidata's Common Data Model v4
4048
# following the CF Conventions.
@@ -47,6 +55,9 @@ dependencies:
4755
# - geopandas # from ravenpy
4856
# - pandas # from xclim and ravenpy
4957
# - rioxarray # from ravenpy
58+
# https://anaconda.org/conda-forge/pyogrio
59+
# Vectorized vector I/O using GDAL
60+
- pyogrio
5061
- scikit-image
5162
- ipyleaflet
5263
- threddsclient
@@ -56,11 +67,12 @@ dependencies:
5667
- jupyter_bokeh
5768
- pscript
5869
- h5netcdf
59-
- panel >= 0.13.1a3
70+
# TODO: remove panel pin when Analogues dashboard works
71+
- panel <= 0.14.4
6072
# https://github.com/holoviz/panel
6173
- pyviz_comms # (was labextension pyviz/jupyterlab_pyviz in jupyterlab v2)
6274
- holoviews
63-
- geoviews
75+
- geoviews >= 1.9.6
6476
# this might still be relevant https://github.com/holoviz/hvplot/issues/498
6577
# (violin plot not working with hvplot 0.6.0).
6678
# Per this comment
@@ -70,6 +82,9 @@ dependencies:
7082
# https://streamlit.io/
7183
# https://anaconda.org/conda-forge/streamlit
7284
- streamlit
85+
# https://anaconda.org/conda-forge/seaborn
86+
# Statistical data visualization
87+
- seaborn
7388
# python-pptx is a Python library for creating and updating PowerPoint (.pptx) files.
7489
# https://python-pptx.readthedocs.io/en/latest/
7590
# https://anaconda.org/conda-forge/python-pptx
@@ -120,6 +135,8 @@ dependencies:
120135
- memory_profiler
121136
# for esgf notebooks
122137
- esgf-compute-api
138+
# https://anaconda.org/conda-forge/esgf-pyclient (for pavics-sdi esgf-dap.ipynb)
139+
- esgf-pyclient
123140
- cdms2
124141
# Disable vcs because it was forcing python downgrade to below 3.9.
125142
# See https://github.com/CDAT/vcs/issues/457
@@ -129,6 +146,7 @@ dependencies:
129146
- mesalib
130147
# tests
131148
- pytest
149+
- pytest-xdist
132150
- nbval
133151
# to edit .ipynb
134152
- jupyter
@@ -187,11 +205,20 @@ dependencies:
187205
- geckodriver
188206
- xlrd
189207
- pre-commit
208+
# pyston_lite_autoload blocked us from using newer Python than 3.8
209+
# package pyston_lite_autoload-2.3.4-pyh44b312d_0 requires pyston_lite
210+
# 2.3.4 py38h0a891b7_0, but none of the providers can be installed
190211
# https://github.com/pyston/pyston/
191-
- pyston_lite_autoload
212+
# - pyston_lite_autoload
192213
# for pip packages
193214
- pip
194215
- pip:
216+
# https://pypi.org/project/xncml/
217+
# Tools for manipulating and opening NCML (NetCDF Markup) files with/for xarray
218+
- xncml
219+
# https://pypi.org/project/hsclient/
220+
# A python client for managing HydroShare resources, replaces hs_restclient
221+
- hsclient
195222
# visual debugger for Jupyter Notebook, not working with JupyterLab at this moment
196223
- pixiedust
197224
# block execution of 'run_all_cells' until user input finished

downloadrepos

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ if [ -z "$1" ]; then
2929
downloadgithubrepos $FINCH_REPO $FINCH_BRANCH
3030
downloadgithubrepos $PAVICS_LANDING_REPO $PAVICS_LANDING_BRANCH
3131
downloadgithubrepos $RAVEN_REPO $RAVEN_BRANCH
32+
downloadgithubrepos $RAVENPY_REPO $RAVENPY_BRANCH
3233
downloadgithubrepos $ESGF_COMPUTE_API_REPO $ESGF_COMPUTE_API_BRANCH
3334
else
3435
set -x

launchcontainer

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/sh -x
22

33
if [ -z "$DOCKER_IMAGE" ]; then
4-
DOCKER_IMAGE="pavics/workflow-tests:221130-update230403"
4+
DOCKER_IMAGE="pavics/workflow-tests:230530-1"
55
fi
66

77
if [ -z "$CONTAINER_NAME" ]; then

0 commit comments

Comments
 (0)