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
Several fixes for new Jupyter env #281
Conversation
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
@tlvu PR that hopefully fixes jenkins tests |
for more information, see https://pre-commit.ci
Fix the following Jenkins failure: ``` ______ pavics-sdi-master/docs/source/notebooks/WFS_example.ipynb::Cell 4 _______ Notebook cell execution failed Cell 4: Cell outputs differ Input: layers = gpd.read_file(fn) layers.plot() Traceback: mismatch 'text/plain' assert reference_output == test_output failed: '<AxesSubplot:>' == '<Axes: >' - <Axes: > + <AxesSubplot:> ```
To fix the following Jenkins failure: ``` _ pavics-sdi-fix_climex/docs/source/notebooks/eccc-geoapi-xclim.ipynb::Cell 0 __ Notebook cell execution failed Cell 0: Cell outputs differ Input: import cf_xarray as cfxr import geopandas as gpd from urlpath import URL # Compose the request host = URL("https://api.weather.gc.ca/") api = host / "collections" / "climate-daily" / "items" url = api.with_query( { "datetime": "1840-03-01 00:00:00/2021-06-02 00:00:00", "STN_ID": "10761", "sortby": "LOCAL_DATE", } ) # Use geopandas to convert the json output to a GeoDataFrame. gdf = gpd.read_file(str(url)) gdf.head() Traceback: mismatch 'text/plain' assert reference_output == test_output failed: ' ...x 36 columns]' == ' ...x 36 columns]' Skipping 917 identical leading characters in diff, use -v to show - NaN 4.0 ? - ^^ + None 4.0 ? ^^^ - 1 19.6 ... NaN 1.6 ? - ^^ + 1 19.6 ... None 1.6 ? ^^^ - 2 19.1 ... NaN 1.1 ? - ^^ + 2 19.1 ... None 1.1 ? ^^^ - 3 21.7 ... NaN 3.7 ? - ^^ + 3 21.7 ... None 3.7 ? ^^^ - 4 20.9 ... NaN 2.9 ? - ^^ + 4 20.9 ... None 2.9 ? ^^^ COOLING_DEGREE_DAYS_FLAG HEATING_DEGREE_DAYS HEATING_DEGREE_DAYS_FLAG \ - 0 NaN 0.0 NaN ? - ^^ - ^^ + 0 None 0.0 None ? ^^^ ^^^ - 1 NaN 0.0 NaN ? - ^^ - ^^ + 1 None 0.0 None ? ^^^ ^^^ - 2 NaN 0.0 NaN ? - ^^ - ^^ + 2 None 0.0 None ? ^^^ ^^^ - 3 NaN 0.0 NaN ? - ^^ - ^^ + 3 None 0.0 None ? ^^^ ^^^ - 4 NaN 0.0 NaN ? - ^^ - ^^ + 4 None 0.0 None ? ^^^ ^^^ - MIN_REL_HUMIDITY MIN_REL_HUMIDITY_FLAG MAX_REL_HUMIDITY \ ? - + MIN_REL_HUMIDITY MIN_REL_HUMIDITY_FLAG MAX_REL_HUMIDITY \ - 0 NaN NaN NaN - 1 NaN NaN NaN - 2 NaN NaN NaN - 3 NaN NaN NaN - 4 NaN NaN NaN + 0 NaN None NaN + 1 NaN None NaN + 2 NaN None NaN + 3 NaN None NaN + 4 NaN None NaN MAX_REL_HUMIDITY_FLAG geometry - 0 NaN POINT (-73.57917 45.50474) ? - ^^ + 0 None POINT (-73.57917 45.50474) ? ^^^ - 1 NaN POINT (-73.57917 45.50474) ? - ^^ + 1 None POINT (-73.57917 45.50474) ? ^^^ - 2 NaN POINT (-73.57917 45.50474) ? - ^^ + 2 None POINT (-73.57917 45.50474) ? ^^^ - 3 NaN POINT (-73.57917 45.50474) ? - ^^ + 3 None POINT (-73.57917 45.50474) ? ^^^ - 4 NaN POINT (-73.57917 45.50474) ? - ^^ + 4 None POINT (-73.57917 45.50474) ? ^^^ [5 rows x 36 columns] _ pavics-sdi-fix_climex/docs/source/notebooks/eccc-geoapi-xclim.ipynb::Cell 2 __ Notebook cell execution failed Cell 2: Cell outputs differ Input: # Conver the GeoDataFrame to an xarray.Dataset # Different stations are aligned along the `station` dimension ds = preprocessing(gdf) ds Traceback: Missing output fields from running code: {'stderr'} ```
clear_output() was used in other notebooks also and did not recall having to ignore output, this is a bit weird. Possible hypothesis are change of behavior of Jupyter, Dask logging, or clear_output(). Fix the following Jenkins failure: ``` _______ pavics-sdi-fix_climex/docs/source/notebooks/climex.ipynb::Cell 6 _______ Notebook cell execution failed Cell 6: Cell outputs differ Input: # Create a local client with 6 workers processes. dask_kwargs = dict( n_workers=6, threads_per_worker=6, memory_limit="4GB", local_directory="/notebook_dir/writable-workspace/tmp", silence_logs=logging.ERROR, ) with Client(**dask_kwargs) as client: clear_output() display( HTML( f'<div class="alert alert-info"> Consult the client <a href="{client.dashboard_link}" target="_blank"><strong><em><u>Dashboard</u></em></strong></a> or the <strong><em>Dask jupyter sidebar</em></strong> to follow progress ... </div>' ) ) out = xens.ensemble_mean_std_max_min(sdii.to_dataset()) out = out.load() clear_output() Traceback: Unexpected output fields from running code: {'stderr', 'text/plain'} ----------------------------- Captured stdout call ----------------------------- unhandled iopub msg: clear_output unhandled iopub msg: clear_output _______ pavics-sdi-fix_climex/docs/source/notebooks/climex.ipynb::Cell 9 _______ Notebook cell execution failed Cell 9: Cell outputs differ Input: # Compute the annual max 1-day precipitation dask_kwargs = dict( n_workers=6, threads_per_worker=6, memory_limit="4GB", local_directory="/notebook_dir/writable-workspace/tmp", silence_logs=logging.ERROR, ) with Client(**dask_kwargs) as client: # dashboard available at client.dashboard_link clear_output() display( HTML( f'<div class="alert alert-info"> Consult the client <a href="{client.dashboard_link}" target="_blank"><strong><em><u>Dashboard</u></em></strong></a> or the <strong><em>Dask jupyter sidebar</em></strong> to follow progress ... </div>' ) ) out = out.load() clear_output() Traceback: Unexpected output fields from running code: {'stderr', 'text/plain'} ----------------------------- Captured stdout call ----------------------------- unhandled iopub msg: clear_output unhandled iopub msg: clear_output ```
``` DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas: import os os.environ['USE_PYGEOS'] = '0' import geopandas In the next release, GeoPandas will switch to using Shapely by default, even if PyGEOS is installed. If you only have PyGEOS installed to get speed-ups, this switch should be smooth. However, if you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html). import geopandas as gpd ```
for more information, see https://pre-commit.ci
…precationWarning ``` DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas: import os os.environ['USE_PYGEOS'] = '0' import geopandas In the next release, GeoPandas will switch to using Shapely by default, even if PyGEOS is installed. If you only have PyGEOS installed to get speed-ups, this switch should be smooth. However, if you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html). import geopandas as gpd ```
for more information, see https://pre-commit.ci
``` /opt/conda/envs/birdy/lib/python3.10/site-packages/xclim/indices/fire/_cffwis.py:207: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details. def _day_length(lat: int | float, mth: int): # pragma: no cover /opt/conda/envs/birdy/lib/python3.10/site-packages/xclim/indices/fire/_cffwis.py:227: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details. def _day_length_factor(lat: float, mth: int): # pragma: no cover ```
for more information, see https://pre-commit.ci
``` /opt/conda/envs/birdy/lib/python3.10/site-packages/xclim/indices/fire/_cffwis.py:207: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details. def _day_length(lat: int | float, mth: int): # pragma: no cover /opt/conda/envs/birdy/lib/python3.10/site-packages/xclim/indices/fire/_cffwis.py:227: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details. def _day_length_factor(lat: float, mth: int): # pragma: no cover ```
…tribute 'exterior' with upcoming Jupyter env Fix proposed by @huard. See #290 Fix for this error: ``` 15:43:32 ____ pavics-sdi-fix_climex/docs/source/notebooks/regridding.ipynb::Cell 23 _____ 15:43:32 Notebook cell execution failed 15:43:32 Cell 23: Cell execution caused an exception 15:43:32 15:43:32 Input: 15:43:32 # This is only to show the decrease in size 15:43:32 def count_points(elem): 15:43:32 def _count(poly): 15:43:32 return len(poly.exterior.coords) + sum( 15:43:32 len(hole.coords) for hole in poly.interiors 15:43:32 ) 15:43:32 15:43:32 if hasattr(elem, "__len__"): # then it is a MultiPolygon 15:43:32 return sum(_count(poly) for poly in elem) 15:43:32 return _count(elem) 15:43:32 15:43:32 15:43:32 # Count the total number of nodes in the shapes: 15:43:32 print( 15:43:32 "Total number of nodes in the raw shapes : ", 15:43:32 shapes.geometry.apply(count_points).sum(), 15:43:32 ) 15:43:32 15:43:32 min_grid_size = float( 15:43:32 min(abs(ds_in.lat.diff("lat")).min(), abs(ds_in.lon.diff("lon")).min()) 15:43:32 ) 15:43:32 print( 15:43:32 f"Minimal grid size [��] of input ds: {min_grid_size:0.3f}, we will simplify to a tolerance of {min_grid_size / 100:0.5f}" 15:43:32 ) 15:43:32 15:43:32 # Simplify geometries 15:43:32 shapes_simp = shapes.copy() 15:43:32 shapes_simp["geometry"] = shapes.simplify(min_grid_size / 100).buffer(0) 15:43:32 15:43:32 print( 15:43:32 "Total number of nodes in the simplified shapes : ", 15:43:32 shapes_simp.geometry.apply(count_points).sum(), 15:43:32 ) 15:43:32 assert shapes_simp.buffer(0).is_valid.all() 15:43:32 15:43:32 Traceback: 15:43:32 15:43:32 --------------------------------------------------------------------------- 15:43:32 AttributeError Traceback (most recent call last) 15:43:32 Cell In[24], line 16 15:43:32 10 return _count(elem) 15:43:32 13 # Count the total number of nodes in the shapes: 15:43:32 14 print( 15:43:32 15 "Total number of nodes in the raw shapes : ", 15:43:32 ---> 16 shapes.geometry.apply(count_points).sum(), 15:43:32 17 ) 15:43:32 19 min_grid_size = float( 15:43:32 20 min(abs(ds_in.lat.diff("lat")).min(), abs(ds_in.lon.diff("lon")).min()) 15:43:32 21 ) 15:43:32 22 print( 15:43:32 23 f"Minimal grid size [��] of input ds: {min_grid_size:0.3f}, we will simplify to a tolerance of {min_grid_size / 100:0.5f}" 15:43:32 24 ) 15:43:32 15:43:32 File /opt/conda/envs/birdy/lib/python3.10/site-packages/geopandas/geoseries.py:645, in GeoSeries.apply(self, func, convert_dtype, args, **kwargs) 15:43:32 643 @doc(pd.Series) 15:43:32 644 def apply(self, func, convert_dtype=True, args=(), **kwargs): 15:43:32 --> 645 result = super().apply(func, convert_dtype=convert_dtype, args=args, **kwargs) 15:43:32 646 if isinstance(result, GeoSeries): 15:43:32 647 if self.crs is not None: 15:43:32 15:43:32 File /opt/conda/envs/birdy/lib/python3.10/site-packages/pandas/core/series.py:4357, in Series.apply(self, func, convert_dtype, args, **kwargs) 15:43:32 4247 def apply( 15:43:32 4248 self, 15:43:32 4249 func: AggFuncType, 15:43:32 (...) 15:43:32 4252 **kwargs, 15:43:32 4253 ) -> FrameOrSeriesUnion: 15:43:32 4254 """ 15:43:32 4255 Invoke function on values of Series. 15:43:32 4256 15:43:32 (...) 15:43:32 4355 dtype: float64 15:43:32 4356 """ 15:43:32 -> 4357 return SeriesApply(self, func, convert_dtype, args, kwargs).apply() 15:43:32 15:43:32 File /opt/conda/envs/birdy/lib/python3.10/site-packages/pandas/core/apply.py:1043, in SeriesApply.apply(self) 15:43:32 1039 if isinstance(self.f, str): 15:43:32 1040 # if we are a string, try to dispatch 15:43:32 1041 return self.apply_str() 15:43:32 -> 1043 return self.apply_standard() 15:43:32 15:43:32 File /opt/conda/envs/birdy/lib/python3.10/site-packages/pandas/core/apply.py:1098, in SeriesApply.apply_standard(self) 15:43:32 1092 values = obj.astype(object)._values 15:43:32 1093 # error: Argument 2 to "map_infer" has incompatible type 15:43:32 1094 # "Union[Callable[..., Any], str, List[Union[Callable[..., Any], str]], 15:43:32 1095 # Dict[Hashable, Union[Union[Callable[..., Any], str], 15:43:32 1096 # List[Union[Callable[..., Any], str]]]]]"; expected 15:43:32 1097 # "Callable[[Any], Any]" 15:43:32 -> 1098 mapped = lib.map_infer( 15:43:32 1099 values, 15:43:32 1100 f, # type: ignore[arg-type] 15:43:32 1101 convert=self.convert_dtype, 15:43:32 1102 ) 15:43:32 1104 if len(mapped) and isinstance(mapped[0], ABCSeries): 15:43:32 1105 # GH 25959 use pd.array instead of tolist 15:43:32 1106 # so extension arrays can be used 15:43:32 1107 return obj._constructor_expanddim(pd_array(mapped), index=obj.index) 15:43:32 15:43:32 File /opt/conda/envs/birdy/lib/python3.10/site-packages/pandas/_libs/lib.pyx:2859, in pandas._libs.lib.map_infer() 15:43:32 15:43:32 Cell In[24], line 10, in count_points(elem) 15:43:32 8 if hasattr(elem, "__len__"): # then it is a MultiPolygon 15:43:32 9 return sum(_count(poly) for poly in elem) 15:43:32 ---> 10 return _count(elem) 15:43:32 15:43:32 Cell In[24], line 4, in count_points.<locals>._count(poly) 15:43:32 3 def _count(poly): 15:43:32 ----> 4 return len(poly.exterior.coords) + sum( 15:43:32 5 len(hole.coords) for hole in poly.interiors 15:43:32 6 ) 15:43:32 15:43:32 AttributeError: 'MultiPolygon' object has no attribute 'exterior' ```
…response code: 500 with upcoming Jupyter env Fix suggested by @Zeitsperre, see #289 (comment) To fix the follow error: ``` 15:43:32 Traceback: 15:43:32 15:43:32 --------------------------------------------------------------------------- 15:43:32 CPLE_HttpResponseError Traceback (most recent call last) 15:43:32 File fiona/ogrext.pyx:136, in fiona.ogrext.gdal_open_vector() 15:43:32 15:43:32 File fiona/_err.pyx:291, in fiona._err.exc_wrap_pointer() 15:43:32 15:43:32 CPLE_HttpResponseError: HTTP response code: 500 15:43:32 15:43:32 During handling of the above exception, another exception occurred: 15:43:32 15:43:32 DriverError Traceback (most recent call last) 15:43:32 Cell In[1], line 17 15:43:32 8 url = api.with_query( 15:43:32 9 { 15:43:32 10 "datetime": "1840-03-01 00:00:00/2021-06-02 00:00:00", 15:43:32 (...) 15:43:32 13 } 15:43:32 14 ) 15:43:32 16 # Use geopandas to convert the json output to a GeoDataFrame. 15:43:32 ---> 17 gdf = gpd.read_file(str(url)) 15:43:32 18 gdf.head() 15:43:32 15:43:32 File /opt/conda/envs/birdy/lib/python3.10/site-packages/geopandas/io/file.py:248, in _read_file(filename, bbox, mask, rows, engine, **kwargs) 15:43:32 245 else: 15:43:32 246 path_or_bytes = filename 15:43:32 --> 248 return _read_file_fiona( 15:43:32 249 path_or_bytes, from_bytes, bbox=bbox, mask=mask, rows=rows, **kwargs 15:43:32 250 ) 15:43:32 252 else: 15:43:32 253 raise ValueError(f"unknown engine '{engine}'") 15:43:32 15:43:32 File /opt/conda/envs/birdy/lib/python3.10/site-packages/geopandas/io/file.py:289, in _read_file_fiona(path_or_bytes, from_bytes, bbox, mask, rows, where, **kwargs) 15:43:32 286 reader = fiona.open 15:43:32 288 with fiona_env(): 15:43:32 --> 289 with reader(path_or_bytes, **kwargs) as features: 15:43:32 290 crs = features.crs_wkt 15:43:32 291 # attempt to get EPSG code 15:43:32 15:43:32 File /opt/conda/envs/birdy/lib/python3.10/site-packages/fiona/env.py:457, in ensure_env_with_credentials.<locals>.wrapper(*args, **kwds) 15:43:32 454 session = DummySession() 15:43:32 456 with env_ctor(session=session): 15:43:32 --> 457 return f(*args, **kwds) 15:43:32 15:43:32 File /opt/conda/envs/birdy/lib/python3.10/site-packages/fiona/__init__.py:335, in open(fp, mode, driver, schema, crs, encoding, layer, vfs, enabled_drivers, crs_wkt, allow_unsupported_drivers, **kwargs) 15:43:32 332 path = parse_path(fp) 15:43:32 334 if mode in ("a", "r"): 15:43:32 --> 335 colxn = Collection( 15:43:32 336 path, 15:43:32 337 mode, 15:43:32 338 driver=driver, 15:43:32 339 encoding=encoding, 15:43:32 340 layer=layer, 15:43:32 341 enabled_drivers=enabled_drivers, 15:43:32 342 allow_unsupported_drivers=allow_unsupported_drivers, 15:43:32 343 **kwargs 15:43:32 344 ) 15:43:32 345 elif mode == "w": 15:43:32 346 colxn = Collection( 15:43:32 347 path, 15:43:32 348 mode, 15:43:32 (...) 15:43:32 357 **kwargs 15:43:32 358 ) 15:43:32 15:43:32 File /opt/conda/envs/birdy/lib/python3.10/site-packages/fiona/collection.py:234, in Collection.__init__(self, path, mode, driver, schema, crs, encoding, layer, vsi, archive, enabled_drivers, crs_wkt, ignore_fields, ignore_geometry, include_fields, wkt_version, allow_unsupported_drivers, **kwargs) 15:43:32 232 if self.mode == "r": 15:43:32 233 self.session = Session() 15:43:32 --> 234 self.session.start(self, **kwargs) 15:43:32 235 elif self.mode in ("a", "w"): 15:43:32 236 self.session = WritingSession() 15:43:32 15:43:32 File fiona/ogrext.pyx:587, in fiona.ogrext.Session.start() 15:43:32 15:43:32 File fiona/ogrext.pyx:143, in fiona.ogrext.gdal_open_vector() 15:43:32 15:43:32 DriverError: HTTP response code: 500 ```
For this diff: ``` 13:41:51 _______ pavics-sdi-fix_climex/docs/source/notebooks/climex.ipynb::Cell 5 _______ 13:41:51 Notebook cell execution failed 13:41:51 Cell 5: Cell outputs differ 13:41:51 13:41:51 Input: 13:41:51 ds = xr.open_dataset( 13:41:51 url, chunks=dict(realization=1, time=365, rlat=50 * 3, rlon=50 * 3) 13:41:51 ) 13:41:51 xclim.set_options(check_missing="pct", missing_options={"pct": {"tolerance": 0.05}}) 13:41:51 sdii = xclim.atmos.daily_pr_intensity(pr=ds.pr.sel(time="2000")) 13:41:51 sdii 13:41:51 13:41:51 Traceback: 13:41:51 mismatch 'text/plain' 13:41:51 13:41:51 assert reference_output == test_output failed: 13:41:51 13:41:51 '<xarray.Data...nnual aver...' == '<xarray.Data...nnual aver...' 13:41:51 Skipping 428 identical leading characters in diff, use -v to show 13:41:51 Skipping 477 identical trailing characters in diff, use -v to show 13:41:51 l... 13:41:51 - lat (rlat, rlon) float32 dask.array<chunksize=(150, 150), meta=np.ndarray> 13:41:51 ? ^^ 13:41:51 + lon (rlat, rlon) float32 dask.array<chunksize=(150, 150), meta=np.ndarray> 13:41:51 ? ^^ 13:41:51 - lon 13:41:51 + lat 13:41:51 13:41:51 13:41:51 _______ pavics-sdi-fix_climex/docs/source/notebooks/climex.ipynb::Cell 8 _______ 13:41:51 Notebook cell execution failed 13:41:51 Cell 8: Cell outputs differ 13:41:51 13:41:51 Input: 13:41:51 # Subset over the Montreal gridpoint 13:41:51 ds = xr.open_dataset(url, chunks=dict(realization=1, time=365 * 50, rlon=25, rlat=25)) 13:41:51 pt = subset_gridpoint(ds, lon=-73.69, lat=45.50) 13:41:51 print("Input dataset for Montreal :") 13:41:51 display(pt) 13:41:51 out = xclim.atmos.max_1day_precipitation_amount(pr=pt.pr, freq="YS") 13:41:51 print("Maximim 1-day precipitation `lazy` output ..") 13:41:51 out 13:41:51 13:41:51 Traceback: 13:41:51 mismatch 'text/plain' 13:41:51 13:41:51 assert reference_output == test_output failed: 13:41:51 13:41:51 '<xarray.Data...precipitation' == '<xarray.Data...precipitation' 13:41:51 Skipping 160 identical leading characters in diff, use -v to show 13:41:51 Skipping 388 identical trailing characters in diff, use -v to show 13:41:51 es: 13:41:51 - rlat float64 0.365 13:41:51 rlon float64 16.12 13:41:51 - * realization (realization) |S64 b'historical-r1-r10i1p1' ... b'historical... 13:41:51 lat float32 45.45 13:41:51 lon float32 -73.7 13:41:51 + rlat float64 0.365 13:41:51 + * realization (realization) |S64 b'historical-r1-r10i1p1' ... b'historical... 13:41:51 * time ```
…de: 500 with upcoming Jupyter env Fix proposed by @Zeitsperre, see #289 (comment). To fix this error: ``` 13:41:51 _ pavics-sdi-fix_climex/docs/source/notebooks/eccc-geoapi-xclim.ipynb::Cell 0 __ 13:41:51 Notebook cell execution failed 13:41:51 Cell 0: Cell execution caused an exception 13:41:51 13:41:51 Input: 13:41:51 import cf_xarray as cfxr 13:41:51 import geopandas as gpd 13:41:51 from urlpath import URL 13:41:51 13:41:51 # Compose the request 13:41:51 host = URL("https://api.weather.gc.ca/") 13:41:51 api = host / "collections" / "climate-daily" / "items" 13:41:51 url = api.with_query( 13:41:51 { 13:41:51 "datetime": "1840-03-01 00:00:00/2021-06-02 00:00:00", 13:41:51 "STN_ID": "10761", 13:41:51 "sortby": "LOCAL_DATE", 13:41:51 } 13:41:51 ) 13:41:51 13:41:51 # Use geopandas to convert the json output to a GeoDataFrame. 13:41:51 gdf = gpd.read_file(str(url)) 13:41:51 gdf.head() 13:41:51 13:41:51 Traceback: 13:41:51 13:41:51 --------------------------------------------------------------------------- 13:41:51 CPLE_HttpResponseError Traceback (most recent call last) 13:41:51 File fiona/ogrext.pyx:136, in fiona.ogrext.gdal_open_vector() 13:41:51 13:41:51 File fiona/_err.pyx:291, in fiona._err.exc_wrap_pointer() 13:41:51 13:41:51 CPLE_HttpResponseError: HTTP response code: 500 13:41:51 13:41:51 During handling of the above exception, another exception occurred: 13:41:51 13:41:51 DriverError Traceback (most recent call last) 13:41:51 Cell In[1], line 17 13:41:51 8 url = api.with_query( 13:41:51 9 { 13:41:51 10 "datetime": "1840-03-01 00:00:00/2021-06-02 00:00:00", 13:41:51 (...) 13:41:51 13 } 13:41:51 14 ) 13:41:51 16 # Use geopandas to convert the json output to a GeoDataFrame. 13:41:51 ---> 17 gdf = gpd.read_file(str(url)) 13:41:51 18 gdf.head() 13:41:51 13:41:51 File /opt/conda/envs/birdy/lib/python3.10/site-packages/geopandas/io/file.py:248, in _read_file(filename, bbox, mask, rows, engine, **kwargs) 13:41:51 245 else: 13:41:51 246 path_or_bytes = filename 13:41:51 --> 248 return _read_file_fiona( 13:41:51 249 path_or_bytes, from_bytes, bbox=bbox, mask=mask, rows=rows, **kwargs 13:41:51 250 ) 13:41:51 252 else: 13:41:51 253 raise ValueError(f"unknown engine '{engine}'") 13:41:51 13:41:51 File /opt/conda/envs/birdy/lib/python3.10/site-packages/geopandas/io/file.py:289, in _read_file_fiona(path_or_bytes, from_bytes, bbox, mask, rows, where, **kwargs) 13:41:51 286 reader = fiona.open 13:41:51 288 with fiona_env(): 13:41:51 --> 289 with reader(path_or_bytes, **kwargs) as features: 13:41:51 290 crs = features.crs_wkt 13:41:51 291 # attempt to get EPSG code 13:41:51 13:41:51 File /opt/conda/envs/birdy/lib/python3.10/site-packages/fiona/env.py:457, in ensure_env_with_credentials.<locals>.wrapper(*args, **kwds) 13:41:51 454 session = DummySession() 13:41:51 456 with env_ctor(session=session): 13:41:51 --> 457 return f(*args, **kwds) 13:41:51 13:41:51 File /opt/conda/envs/birdy/lib/python3.10/site-packages/fiona/__init__.py:335, in open(fp, mode, driver, schema, crs, encoding, layer, vfs, enabled_drivers, crs_wkt, allow_unsupported_drivers, **kwargs) 13:41:51 332 path = parse_path(fp) 13:41:51 334 if mode in ("a", "r"): 13:41:51 --> 335 colxn = Collection( 13:41:51 336 path, 13:41:51 337 mode, 13:41:51 338 driver=driver, 13:41:51 339 encoding=encoding, 13:41:51 340 layer=layer, 13:41:51 341 enabled_drivers=enabled_drivers, 13:41:51 342 allow_unsupported_drivers=allow_unsupported_drivers, 13:41:51 343 **kwargs 13:41:51 344 ) 13:41:51 345 elif mode == "w": 13:41:51 346 colxn = Collection( 13:41:51 347 path, 13:41:51 348 mode, 13:41:51 (...) 13:41:51 357 **kwargs 13:41:51 358 ) 13:41:51 13:41:51 File /opt/conda/envs/birdy/lib/python3.10/site-packages/fiona/collection.py:234, in Collection.__init__(self, path, mode, driver, schema, crs, encoding, layer, vsi, archive, enabled_drivers, crs_wkt, ignore_fields, ignore_geometry, include_fields, wkt_version, allow_unsupported_drivers, **kwargs) 13:41:51 232 if self.mode == "r": 13:41:51 233 self.session = Session() 13:41:51 --> 234 self.session.start(self, **kwargs) 13:41:51 235 elif self.mode in ("a", "w"): 13:41:51 236 self.session = WritingSession() 13:41:51 13:41:51 File fiona/ogrext.pyx:587, in fiona.ogrext.Session.start() 13:41:51 13:41:51 File fiona/ogrext.pyx:143, in fiona.ogrext.gdal_open_vector() 13:41:51 13:41:51 DriverError: HTTP response code: 500 ```
To avoid this DeprecationWarning: ``` /tmp/ipykernel_688/875513140.py:4: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas: import os os.environ['USE_PYGEOS'] = '0' import geopandas In the next release, GeoPandas will switch to using Shapely by default, even if PyGEOS is installed. If you only have PyGEOS installed to get speed-ups, this switch should be smooth. However, if you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html). import geopandas as gpd ```
…utput NumbaDeprecationWarning: ``` /opt/conda/envs/birdy/lib/python3.10/site-packages/xclim/indices/fire/_cffwis.py:207: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details. def _day_length(lat: int | float, mth: int): # pragma: no cover /opt/conda/envs/birdy/lib/python3.10/site-packages/xclim/indices/fire/_cffwis.py:227: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details. def _day_length_factor(lat: float, mth: int): # pragma: no cover ``` Output change: ``` 09:50:12 _ pavics-sdi-fix_climex/docs/source/notebooks/eccc-geoapi-xclim.ipynb::Cell 0 __ 09:50:12 Notebook cell execution failed 09:50:12 Cell 0: Cell outputs differ 09:50:12 09:50:12 Input: 09:50:12 import os 09:50:12 09:50:12 os.environ["USE_PYGEOS"] = "0" # force use Shapely with GeoPandas 09:50:12 09:50:12 import urllib 09:50:12 09:50:12 import cf_xarray as cfxr 09:50:12 import geopandas as gpd 09:50:12 from urlpath import URL 09:50:12 09:50:12 # Compose the request 09:50:12 host = URL("https://api.weather.gc.ca/") 09:50:12 api = host / "collections" / "climate-daily" / "items" 09:50:12 url = api.with_query( 09:50:12 { 09:50:12 "datetime": "1840-03-01 00:00:00/2021-06-02 00:00:00", 09:50:12 "STN_ID": "10761", 09:50:12 "sortby": "LOCAL_DATE", 09:50:12 } 09:50:12 ) 09:50:12 09:50:12 # Use geopandas to convert the json output to a GeoDataFrame. 09:50:12 with urllib.request.urlopen(url=str(url)) as req: 09:50:12 gdf = gpd.read_file(filename=req, engine="pyogrio") 09:50:12 gdf.head() 09:50:12 09:50:12 Traceback: 09:50:12 mismatch 'text/plain' 09:50:12 09:50:12 assert reference_output == test_output failed: 09:50:12 09:50:12 ' ...x 36 columns]' == ' ...x 36 columns]' 09:50:12 Skipping 917 identical leading characters in diff, use -v to show 09:50:12 - None 4.0 09:50:12 ? ^^^ 09:50:12 + NaN 4.0 09:50:12 ? + ^^ 09:50:12 - 1 19.6 ... None 1.6 09:50:12 ? ^^^ 09:50:12 + 1 19.6 ... NaN 1.6 09:50:12 ? + ^^ 09:50:12 - 2 19.1 ... None 1.1 09:50:12 ? ^^^ 09:50:12 + 2 19.1 ... NaN 1.1 09:50:12 ? + ^^ 09:50:12 - 3 21.7 ... None 3.7 09:50:12 ? ^^^ 09:50:12 + 3 21.7 ... NaN 3.7 09:50:12 ? + ^^ 09:50:12 - 4 20.9 ... None 2.9 09:50:12 ? ^^^ 09:50:12 + 4 20.9 ... NaN 2.9 09:50:12 ? + ^^ 09:50:12 09:50:12 COOLING_DEGREE_DAYS_FLAG HEATING_DEGREE_DAYS HEATING_DEGREE_DAYS_FLAG \ 09:50:12 - 0 None 0.0 None 09:50:12 ? ^^^ ^^^ 09:50:12 + 0 NaN 0.0 NaN 09:50:12 ? + ^^ + ^^ 09:50:12 - 1 None 0.0 None 09:50:12 ? ^^^ ^^^ 09:50:12 + 1 NaN 0.0 NaN 09:50:12 ? + ^^ + ^^ 09:50:12 - 2 None 0.0 None 09:50:12 ? ^^^ ^^^ 09:50:12 + 2 NaN 0.0 NaN 09:50:12 ? + ^^ + ^^ 09:50:12 - 3 None 0.0 None 09:50:12 ? ^^^ ^^^ 09:50:12 + 3 NaN 0.0 NaN 09:50:12 ? + ^^ + ^^ 09:50:12 - 4 None 0.0 None 09:50:12 ? ^^^ ^^^ 09:50:12 + 4 NaN 0.0 NaN 09:50:12 ? + ^^ + ^^ 09:50:12 09:50:12 - MIN_REL_HUMIDITY MIN_REL_HUMIDITY_FLAG MAX_REL_HUMIDITY \ 09:50:12 + MIN_REL_HUMIDITY MIN_REL_HUMIDITY_FLAG MAX_REL_HUMIDITY \ 09:50:12 ? + 09:50:12 - 0 NaN None NaN 09:50:12 - 1 NaN None NaN 09:50:12 - 2 NaN None NaN 09:50:12 - 3 NaN None NaN 09:50:12 - 4 NaN None NaN 09:50:12 + 0 NaN NaN NaN 09:50:12 + 1 NaN NaN NaN 09:50:12 + 2 NaN NaN NaN 09:50:12 + 3 NaN NaN NaN 09:50:12 + 4 NaN NaN NaN 09:50:12 09:50:12 MAX_REL_HUMIDITY_FLAG geometry 09:50:12 - 0 None POINT (-73.57917 45.50474) 09:50:12 ? ^^^ 09:50:12 + 0 NaN POINT (-73.57917 45.50474) 09:50:12 ? + ^^ 09:50:12 - 1 None POINT (-73.57917 45.50474) 09:50:12 ? ^^^ 09:50:12 + 1 NaN POINT (-73.57917 45.50474) 09:50:12 ? + ^^ 09:50:12 - 2 None POINT (-73.57917 45.50474) 09:50:12 ? ^^^ 09:50:12 + 2 NaN POINT (-73.57917 45.50474) 09:50:12 ? + ^^ 09:50:12 - 3 None POINT (-73.57917 45.50474) 09:50:12 ? ^^^ 09:50:12 + 3 NaN POINT (-73.57917 45.50474) 09:50:12 ? + ^^ 09:50:12 - 4 None POINT (-73.57917 45.50474) 09:50:12 ? ^^^ 09:50:12 + 4 NaN POINT (-73.57917 45.50474) 09:50:12 ? + ^^ 09:50:12 09:50:12 [5 rows x 36 columns] ```
@@ -43,6 +43,12 @@ | |||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed in b9c7d24
@@ -43,6 +43,12 @@ | |||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line #7. with urllib.request.urlopen(url=str(url)) as req:
Probably need to adjust the text above. Do we know why the original method stopped working?
Seems to be related to https://github.com/geopandas/geopandas/pull/2796
This seems like a regression.
Reply via ReviewNB
This one OK to merge? |
I think it should be ok @huard any remaining issues here? |
Unclear, but let's merge and fix remaining issues later. |
``` 14:17:33 _ pavics-sdi-fix_climex/docs/source/notebooks/eccc-geoapi-climate-stations.ipynb::Cell 9 _ 14:17:33 Notebook cell execution failed 14:17:33 Cell 9: Cell outputs differ 14:17:33 14:17:33 Input: 14:17:33 url = str( 14:17:33 coll.with_query( 14:17:33 { 14:17:33 "CLIMATE_IDENTIFIER": station_id, 14:17:33 "datetime": "1990-01-01 00:00:00/1991-01-01 00:00:00", 14:17:33 } 14:17:33 ) 14:17:33 ) 14:17:33 print(url) 14:17:33 with urllib.request.urlopen(url=str(url)) as req: 14:17:33 gdf = gpd.read_file(filename=req, engine="pyogrio") 14:17:33 14:17:33 Traceback: 14:17:33 mismatch 'stdout' 14:17:33 14:17:33 assert reference_output == test_output failed: 14:17:33 14:17:33 'https://api....0%3A00%3A00\n' == 'https://api....0%3A00%3A00\n' 14:17:33 - https://api.weather.gc.ca/collections/climate-daily/items?CLIMATE_IDENTIFIER=8201410&datetime=1990-01-01+00%3A00%3A00%2F1991-01-01+00%3A00%3A00 14:17:33 + https://api.weather.gc.ca//collections/climate-daily/items?CLIMATE_IDENTIFIER=8201410&datetime=1990-01-01+00%3A00%3A00%2F1991-01-01+00%3A00%3A00 14:17:33 ? + ```
… and latest of everything else (#115) ## Changes - Jenkins: add RavenPy repo - Re-organize tutorial notebooks on PAVICS: dropped `esgf-compute-api` examples and group all Raven notebooks (RavenWPS and RavenPy) into one folder `raven`. - Jupyter env changes: - Update to python `3.9`, from `3.8` - Adds `esgf-pyclient` for esgf-dap.ipynb (https://github.com/Ouranosinc/pavics-sdi/pull/269) - Adds `xncml` for gen_catalog refactoring (https://github.com/Ouranosinc/pavics-vdb/pull/46) - Adds Globus Personnal Connect to be able to transfer big files in and out of the Jupyter env - Fixes annoying harmless error `ERROR 1: PROJ: proj_create_from_database: Open of /opt/conda/envs/birdy/share/proj failed` - Existing `intake-esm` pin: https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/issues/109 - Shrink image by almost 2G - Relevant changes (alphabetical order): ```diff < - birdy=0.8.1=pyh6c4a22f_1 > - birdy=0.8.4=pyh1a96a4e_0 < - cf_xarray=0.7.5=pyhd8ed1ab_0 > - cf_xarray=0.8.0=pyhd8ed1ab_0 < - clisops=0.9.3=pyh1a96a4e_0 > - clisops=0.9.6=pyh1a96a4e_0 < - dask=2022.11.1=pyhd8ed1ab_0 > - dask=2023.5.1=pyhd8ed1ab_0 < - esmf=8.2.0=mpi_mpich_h5a1934d_102 < - esmpy=8.2.0=mpi_mpich_py38h9147699_101 > - esmf=8.4.0=mpi_mpich_hc592774_104 > - esmpy=8.4.0=mpi_mpich_py39h3088dd8_102 < - fiona=1.8.22=py38h85a5e0f_5 > - fiona=1.9.1=py39hbc5ff6d_0 < - flox=0.6.4=pyhd8ed1ab_0 > - flox=0.7.2=pyhd8ed1ab_0 < - gdal=3.6.0=py38h58634bd_13 > - gdal=3.6.2=py39hc6cd174_6 < - owslib=0.27.2=pyhd8ed1ab_1 > - owslib=0.28.1=pyhd8ed1ab_0 # new > - pyogrio=0.5.1=py39hbc5ff6d_0 < - python=3.8.16=he550d4f_1_cpython > - python=3.9.16=h2782a2a_0_cpython < - raven-hydro=3.0.4.322=ha46ed4c_2 < - ravenpy=0.9.0=pyha21a80b_0 > - raven-hydro=0.2.1=py39h8e2dbb5_1 > - ravenpy=0.12.0=py39hf3d152e_2 < - rioxarray=0.13.1=pyhd8ed1ab_0 > - rioxarray=0.14.1=pyhd8ed1ab_0 < - roocs-utils=0.6.3=pyh1a96a4e_0 > - roocs-utils=0.6.4=pyh1a96a4e_0 # new > - seaborn=0.12.2=hd8ed1ab_0 < - xarray=2022.10.0=pyhd8ed1ab_0 > - xarray=2023.1.0=pyhd8ed1ab_0 < - xclim=0.39.0=pyhd8ed1ab_0 > - xclim=0.43.0=py39hf3d152e_1 < - xesmf=0.6.3=pyhd8ed1ab_1 > - xesmf=0.7.1=pyhd8ed1ab_0 # new > - hsclient==0.3.3 ``` ## Test - Deployed as "beta" image in production for bokeh visualization performance regression testing. - Manual test notebook https://github.com/Ouranosinc/PAVICS-landing/blob/master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb for bokeh visualization performance and it looks fine. - Jenkins build, all passed: [job-PAVICS-e2e-workflow-tests-new-docker-build-198-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621190/job-PAVICS-e2e-workflow-tests-new-docker-build-198-consoleText.txt) [ravenpy-job-PAVICS-e2e-workflow-tests-new-docker-build-200-consoleText.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621191/ravenpy-job-PAVICS-e2e-workflow-tests-new-docker-build-200-consoleText.txt) ## Related Issue / Discussion - Matching notebook fixes: - Pavics-sdi: https://github.com/Ouranosinc/pavics-sdi/pull/281 - Finch: https://github.com/bird-house/finch/pull/275 - PAVICS-landing: https://github.com/Ouranosinc/PAVICS-landing/pull/64 - RavenPy: https://github.com/CSHS-CWRA/RavenPy/pull/287 - Deployment to PAVICS: https://github.com/bird-house/birdhouse-deploy/pull/332 - Jenkins-config changes for new RavenPy notebooks: https://github.com/Ouranosinc/jenkins-config/pull/15 - Other issues found while working on this one - https://github.com/Ouranosinc/PAVICS-landing/issues/66 - https://github.com/Ouranosinc/PAVICS-landing/issues/65 ## Additional Information Full diff conda env export: [221130-update230403-230530-1-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621128/221130-update230403-230530-1-conda-env-export.diff.txt) ```diff 9,11c9,12 < - affine=2.3.1=pyhd8ed1ab_0 < - aiobotocore=2.4.0=pyhd8ed1ab_0 < - aiohttp=3.8.3=py38h0a891b7_1 --- > - affine=2.4.0=pyhd8ed1ab_0 > - aiobotocore=2.5.0=pyhd8ed1ab_0 > - aiofiles=22.1.0=pyhd8ed1ab_0 > - aiohttp=3.8.4=py39h72bdee0_0 14c15,16 < - alembic=1.8.1=pyhd8ed1ab_0 --- > - aiosqlite=0.19.0=pyhd8ed1ab_0 > - alembic=1.11.1=pyhd8ed1ab_0 16,18c18,20 < - altair=4.2.0=pyhd8ed1ab_1 < - ansi2html=1.8.0=py38h578d9bd_1 < - anyio=3.6.2=pyhd8ed1ab_0 --- > - altair=5.0.1=pyhd8ed1ab_0 > - ansi2html=1.8.0=py39hf3d152e_1 > - anyio=3.6.1=pyhd8ed1ab_1 22,23c24 < - argon2-cffi-bindings=21.2.0=py38h0a891b7_3 < - arrow-cpp=11.0.0=ha770c72_9_cpu --- > - argon2-cffi-bindings=21.2.0=py39hb9d737c_3 26c27 < - asttokens=2.2.0=pyhd8ed1ab_0 --- > - asttokens=2.2.1=pyhd8ed1ab_0 30,44c31,45 < - attrs=22.1.0=pyh71513ae_1 < - aws-c-auth=0.6.26=hf365957_1 < - aws-c-cal=0.5.21=h48707d8_2 < - aws-c-common=0.8.14=h0b41bf4_0 < - aws-c-compression=0.2.16=h03acc5a_5 < - aws-c-event-stream=0.2.20=h00877a2_4 < - aws-c-http=0.7.6=hf342b9f_0 < - aws-c-io=0.13.19=h5b20300_3 < - aws-c-mqtt=0.8.6=hc4349f7_12 < - aws-c-s3=0.2.7=h909e904_1 < - aws-c-sdkutils=0.1.8=h03acc5a_0 < - aws-checksums=0.1.14=h03acc5a_5 < - aws-crt-cpp=0.19.8=hf7fbfca_12 < - aws-sdk-cpp=1.10.57=h17c43bd_8 < - babel=2.11.0=pyhd8ed1ab_0 --- > - attrs=23.1.0=pyh71513ae_1 > - aws-c-auth=0.6.27=he072965_1 > - aws-c-cal=0.5.26=hf677bf3_1 > - aws-c-common=0.8.19=hd590300_0 > - aws-c-compression=0.2.16=hbad4bc6_7 > - aws-c-event-stream=0.2.20=hb4b372c_7 > - aws-c-http=0.7.7=h2632f9a_4 > - aws-c-io=0.13.21=h9fef7b8_5 > - aws-c-mqtt=0.8.11=h2282364_1 > - aws-c-s3=0.3.0=hcb5a9b2_2 > - aws-c-sdkutils=0.1.9=hbad4bc6_2 > - aws-checksums=0.1.14=hbad4bc6_7 > - aws-crt-cpp=0.20.2=he0fdcb3_0 > - aws-sdk-cpp=1.10.57=h059227d_13 > - babel=2.12.1=pyhd8ed1ab_1 48d48 < - backports.zoneinfo=0.2.1=py38h0a891b7_7 50,51c50,51 < - bcrypt=3.2.2=py38h0a891b7_1 < - beautifulsoup4=4.11.1=pyha770c72_0 --- > - bcrypt=3.2.2=py39hb9d737c_1 > - beautifulsoup4=4.12.2=pyha770c72_0 53,56c53,56 < - birdy=0.8.1=pyh6c4a22f_1 < - bleach=5.0.1=pyhd8ed1ab_0 < - blinker=1.5=pyhd8ed1ab_0 < - blosc=1.21.3=hafa529b_0 --- > - birdy=0.8.4=pyh1a96a4e_0 > - bleach=6.0.0=pyhd8ed1ab_0 > - blinker=1.6.2=pyhd8ed1ab_0 > - blosc=1.21.4=h0f2a231_0 58,62c58,62 < - boltons=21.0.0=pyhd8ed1ab_0 < - boost-cpp=1.78.0=h75c5d50_1 < - boto3=1.24.59=pyhd8ed1ab_0 < - botocore=1.27.59=pyhd8ed1ab_0 < - bottleneck=1.3.5=py38h26c90d9_1 --- > - boltons=23.0.0=pyhd8ed1ab_0 > - boost-cpp=1.78.0=h5adbc97_2 > - boto3=1.26.76=pyhd8ed1ab_0 > - botocore=1.29.76=pyhd8ed1ab_0 > - bottleneck=1.3.7=py39h389d5f1_0 66,67c66 < - brotli-python=1.0.9=py38hfa26641_8 < - brotlipy=0.7.0=py38h0a891b7_1005 --- > - brotlipy=0.7.0=py39hb9d737c_1005 70,72c69,71 < - c-ares=1.18.1=h7f98852_0 < - c-blosc2=2.5.0=h7a311fb_0 < - ca-certificates=2022.12.7=ha878542_0 --- > - c-ares=1.19.1=hd590300_0 > - c-blosc2=2.9.2=hb4ffafa_0 > - ca-certificates=2023.5.7=hbcca054_0 75c74 < - cachetools=5.2.0=pyhd8ed1ab_0 --- > - cachetools=5.3.0=pyhd8ed1ab_0 77c76 < - cartopy=0.21.0=py38hf6c3373_3 --- > - cartopy=0.21.1=py39h6e7ad6e_0 80,82c79,81 < - cdms2=3.1.5=py38hc1ef740_14 < - cdtime=3.1.4=py38hc54c017_7 < - certifi=2022.12.7=pyhd8ed1ab_0 --- > - cdms2=3.1.5=py39h36de48d_15 > - cdtime=3.1.4=py39he83c29a_7 > - certifi=2023.5.7=pyhd8ed1ab_0 84,86c83,85 < - cf_xarray=0.7.5=pyhd8ed1ab_0 < - cffi=1.15.1=py38h4a40e3a_2 < - cfgrib=0.9.10.3=pyhd8ed1ab_0 --- > - cf_xarray=0.8.0=pyhd8ed1ab_0 > - cffi=1.15.1=py39he91dace_3 > - cfgrib=0.9.10.4=pyhd8ed1ab_0 89,90c88,89 < - cftime=1.6.2=py38h26c90d9_1 < - charls=2.3.4=h9c3ff4c_0 --- > - cftime=1.6.2=py39h2ae25f5_1 > - charls=2.4.2=h59595ed_0 96,97c95,96 < - clisops=0.9.3=pyh1a96a4e_0 < - cloudpickle=2.2.0=pyhd8ed1ab_0 --- > - clisops=0.9.6=pyh1a96a4e_0 > - cloudpickle=2.2.1=pyhd8ed1ab_0 100,105c99,104 < - commonmark=0.9.1=py_0 < - configurable-http-proxy=4.5.3=he2f69ee_3 < - contourpy=1.0.6=py38h43d8883_0 < - coverage=6.5.0=py38h0a891b7_1 < - cryptography=40.0.1=py38h3d167d9_0 < - curl=7.88.1=hdc1c0ab_1 --- > - comm=0.1.3=pyhd8ed1ab_0 > - configurable-http-proxy=4.5.4=he2f69ee_2 > - contourpy=1.0.7=py39h4b4f3f3_0 > - coverage=7.2.7=py39hd1e30aa_0 > - cryptography=40.0.2=py39h079d5ae_0 > - curl=8.1.2=h409715c_0 107,111c106,110 < - cytoolz=0.12.0=py38h0a891b7_1 < - dash=2.7.0=pyhd8ed1ab_0 < - dask=2022.11.1=pyhd8ed1ab_0 < - dask-core=2022.11.1=pyhd8ed1ab_0 < - dask-labextension=6.0.0=pyhd8ed1ab_0 --- > - cytoolz=0.12.0=py39hb9d737c_1 > - dash=2.9.3=pyhd8ed1ab_2 > - dask=2023.5.1=pyhd8ed1ab_0 > - dask-core=2023.5.1=pyhd8ed1ab_0 > - dask-labextension=6.1.0=pyhd8ed1ab_0 113c112 < - datashader=0.14.3=pyh1a96a4e_0 --- > - datashader=0.14.4=pyh1a96a4e_0 115c114 < - dav1d=1.0.0=h166bdaf_1 --- > - dav1d=1.2.0=hd590300_0 117c116 < - debugpy=1.6.4=py38hfa26641_0 --- > - debugpy=1.6.7=py39h227be39_0 122c121 < - distarray=2.12.2=pyhd8ed1ab_2 --- > - distarray=2.12.2=pyh050c7b8_4 124c123 < - distributed=2022.11.1=pyhd8ed1ab_0 --- > - distributed=2023.5.1=pyhd8ed1ab_0 127,128c126,127 < - eccodes=2.27.0=h164a9dd_0 < - elfutils=0.186=he364ef2_0 --- > - eccodes=2.28.0=h7513371_1 > - elfutils=0.189=hde5d1a3_0 133,135c132,135 < - esmf=8.2.0=mpi_mpich_h5a1934d_102 < - esmpy=8.2.0=mpi_mpich_py38h9147699_101 < - exceptiongroup=1.0.4=pyhd8ed1ab_0 --- > - esmf=8.4.0=mpi_mpich_hc592774_104 > - esmpy=8.4.0=mpi_mpich_py39h3088dd8_102 > - exceptiongroup=1.1.1=pyhd8ed1ab_0 > - execnet=1.9.0=pyhd8ed1ab_0 137c137 < - expat=2.5.0=h27087fc_0 --- > - expat=2.5.0=hcb278e6_1 140,148c140,147 < - fftw=3.3.10=nompi_hf0379b8_105 < - filelock=3.8.0=pyhd8ed1ab_0 < - findlibs=0.0.2=pyhd8ed1ab_0 < - fiona=1.8.22=py38h85a5e0f_5 < - flask=2.2.2=pyhd8ed1ab_0 < - flask-compress=1.13=pyhd8ed1ab_0 < - flit-core=3.8.0=pyhd8ed1ab_0 < - flox=0.6.4=pyhd8ed1ab_0 < - folium=0.13.0=pyhd8ed1ab_0 --- > - fftw=3.3.10=nompi_hc118613_107 > - filelock=3.12.0=pyhd8ed1ab_0 > - findlibs=0.0.5=pyhd8ed1ab_0 > - fiona=1.9.1=py39hbc5ff6d_0 > - flask=2.3.2=pyhd8ed1ab_0 > - flit-core=3.9.0=pyhd8ed1ab_0 > - flox=0.7.2=pyhd8ed1ab_0 > - folium=0.14.0=pyhd8ed1ab_0 153c152 < - fontconfig=2.14.1=hc2a2eb6_0 --- > - fontconfig=2.14.2=h14ed4e7_0 156c155 < - fonttools=4.38.0=py38h0a891b7_1 --- > - fonttools=4.39.4=py39hd1e30aa_0 160,161c159,160 < - frozenlist=1.3.3=py38h0a891b7_0 < - fsspec=2022.11.0=pyhd8ed1ab_0 --- > - frozenlist=1.3.3=py39hb9d737c_0 > - fsspec=2023.5.0=pyh1a96a4e_0 163c162 < - future=0.18.2=pyhd8ed1ab_6 --- > - future=0.18.3=pyhd8ed1ab_0 165,167c164,166 < - gcsfs=2022.11.0=pyhd8ed1ab_0 < - gdal=3.6.0=py38h58634bd_13 < - geckodriver=0.32.0=h4b87306_0 --- > - gcsfs=2023.5.0=pyhd8ed1ab_0 > - gdal=3.6.2=py39hc6cd174_6 > - geckodriver=0.33.0=hd2f7af9_0 169,170c168,169 < - geopandas=0.12.1=pyhd8ed1ab_1 < - geopandas-base=0.12.1=pyha770c72_1 --- > - geopandas=0.13.0=pyhd8ed1ab_0 > - geopandas-base=0.13.0=pyha770c72_0 173,175c172,174 < - geotiff=1.7.1=ha76d385_4 < - geoviews=1.9.5=pyhd8ed1ab_0 < - geoviews-core=1.9.5=pyha770c72_0 --- > - geotiff=1.7.1=h7a142b4_6 > - geoviews=1.9.6=pyhd8ed1ab_0 > - geoviews-core=1.9.6=pyha770c72_0 178c177 < - giflib=5.2.1=h36c2ea0_2 --- > - giflib=5.2.1=h0b41bf4_3 180,182c179,181 < - gitpython=3.1.29=pyhd8ed1ab_0 < - glib=2.74.1=h6239696_1 < - glib-tools=2.74.1=h6239696_1 --- > - gitpython=3.1.31=pyhd8ed1ab_0 > - glib=2.76.3=hfc55251_0 > - glib-tools=2.76.3=hfc55251_0 185,187c184,186 < - google-api-core=2.10.2=pyhd8ed1ab_0 < - google-auth=2.14.1=pyh1a96a4e_0 < - google-auth-oauthlib=0.7.1=pyhd8ed1ab_0 --- > - google-api-core=2.11.0=pyhd8ed1ab_0 > - google-auth=2.19.0=pyh1a96a4e_0 > - google-auth-oauthlib=1.0.0=pyhd8ed1ab_0 189,198c188,197 < - google-cloud-storage=2.6.0=pyh1a96a4e_0 < - google-crc32c=1.1.2=py38h57c428a_4 < - google-resumable-media=2.4.0=pyhd8ed1ab_0 < - googleapis-common-protos=1.57.0=pyhd8ed1ab_3 < - greenlet=2.0.1=py38hfa26641_0 < - grpc-cpp=1.51.1=h27aab58_3 < - grpcio=1.51.1=py38h8dc9893_3 < - gst-plugins-base=1.21.2=h3e40eee_0 < - gstreamer=1.21.2=hd4edc92_0 < - gstreamer-orc=0.4.33=h166bdaf_0 --- > - google-cloud-storage=2.9.0=pyh1a96a4e_0 > - google-crc32c=1.1.2=py39h8db88ab_4 > - google-resumable-media=2.5.0=pyhd8ed1ab_0 > - googleapis-common-protos=1.57.1=pyhd8ed1ab_0 > - graphite2=1.3.13=h58526e2_1001 > - greenlet=2.0.2=py39h3d6467e_1 > - grpcio=1.54.2=py39h227be39_2 > - gst-plugins-base=1.22.0=h4243ec0_2 > - gstreamer=1.22.0=h25f0c4b_2 > - gstreamer-orc=0.4.34=hd590300_0 200,202c199,202 < - h5netcdf=1.1.0=pyhd8ed1ab_0 < - h5py=3.7.0=nompi_py38h7927eab_102 < - haversine=2.7.0=pyhd8ed1ab_0 --- > - h5netcdf=1.1.0=pyhd8ed1ab_1 > - h5py=3.8.0=mpi_mpich_py39hadaddcd_0 > - harfbuzz=6.0.0=h8e241bc_0 > - haversine=2.8.0=pyhd8ed1ab_0 205,207c205,206 < - heapdict=1.0.1=py_0 < - holoviews=1.15.2=pyhd8ed1ab_0 < - hvplot=0.8.2=pyhd8ed1ab_0 --- > - holoviews=1.16.0=pyhd8ed1ab_0 > - hvplot=0.8.3=pyhd8ed1ab_0 209c208 < - identify=2.5.9=pyhd8ed1ab_0 --- > - identify=2.5.24=pyhd8ed1ab_0 211,217c210,217 < - imagecodecs=2022.9.26=py38hf74bd01_4 < - imageio=2.22.4=pyhfa7a67d_1 < - importlib-metadata=5.1.0=pyha770c72_0 < - importlib_metadata=5.1.0=hd8ed1ab_0 < - importlib_resources=5.10.0=pyhd8ed1ab_0 < - iniconfig=1.1.1=pyh9f0ad1d_0 < - intake=0.6.6=pyhd8ed1ab_0 --- > - imagecodecs=2023.1.23=py39hd061359_0 > - imageio=2.28.1=pyh24c5eb1_0 > - importlib-metadata=6.6.0=pyha770c72_0 > - importlib-resources=5.12.0=pyhd8ed1ab_0 > - importlib_metadata=6.6.0=hd8ed1ab_0 > - importlib_resources=5.12.0=pyhd8ed1ab_0 > - iniconfig=2.0.0=pyhd8ed1ab_0 > - intake=0.7.0=pyhd8ed1ab_0 221,222c221,222 < - intake-xarray=0.6.1=pyhd8ed1ab_0 < - ipykernel=6.17.1=pyh210e3f2_0 --- > - intake-xarray=0.7.0=pyhd8ed1ab_0 > - ipykernel=6.23.1=pyh210e3f2_0 224c224 < - ipython=8.6.0=pyh41d4057_1 --- > - ipython=8.13.2=pyh41d4057_0 226c226 < - ipywidgets=8.0.2=pyhd8ed1ab_1 --- > - ipywidgets=8.0.6=pyhd8ed1ab_0 228,229c228,229 < - jack=1.9.21=he978b8e_1 < - jasper=2.0.33=ha77e612_0 --- > - jack=1.9.22=h11f4161_0 > - jasper=2.0.33=h0ff4b12_1 234c234 < - jpeg=9e=h166bdaf_2 --- > - jpeg=9e=h0b41bf4_3 239,240c239,240 < - jupyter=1.0.0=py38h578d9bd_7 < - jupyter-archive=3.3.3=pyhd8ed1ab_0 --- > - jupyter=1.0.0=py39hf3d152e_8 > - jupyter-archive=3.3.4=pyhd8ed1ab_1 242,244c242,244 < - jupyter-resource-usage=0.6.4=pyhd8ed1ab_0 < - jupyter-server-mathjax=0.2.6=pyhc268e32_0 < - jupyter-server-proxy=3.2.2=pyhd8ed1ab_0 --- > - jupyter-resource-usage=0.7.1=pyhd8ed1ab_0 > - jupyter-server-mathjax=0.2.6=pyh5bfe37b_1 > - jupyter-server-proxy=4.0.0=pyhd8ed1ab_0 246,249c246,252 < - jupyter_client=7.3.4=pyhd8ed1ab_0 < - jupyter_console=6.4.4=pyhd8ed1ab_0 < - jupyter_core=5.1.0=py38h578d9bd_0 < - jupyter_server=1.23.3=pyhd8ed1ab_0 --- > - jupyter_client=7.4.1=pyhd8ed1ab_0 > - jupyter_console=6.6.3=pyhd8ed1ab_0 > - jupyter_core=5.3.0=py39hf3d152e_0 > - jupyter_events=0.6.3=pyhd8ed1ab_0 > - jupyter_server=1.23.6=pyhd8ed1ab_0 > - jupyter_server_fileid=0.9.0=pyhd8ed1ab_0 > - jupyter_server_ydoc=0.8.0=pyhd8ed1ab_0 251,254c254,258 < - jupyterhub=3.0.0=pyh2a2186d_1 < - jupyterhub-base=3.0.0=pyh2a2186d_1 < - jupyterlab=3.5.0=pyhd8ed1ab_0 < - jupyterlab-git=0.40.1=pyhd8ed1ab_0 --- > - jupyter_ydoc=0.2.3=pyhd8ed1ab_0 > - jupyterhub=4.0.0=pyh2a2186d_0 > - jupyterhub-base=4.0.0=pyh2a2186d_0 > - jupyterlab=3.6.3=pyhd8ed1ab_0 > - jupyterlab-git=0.41.0=pyhd8ed1ab_1 258,260c262,264 < - jupyterlab_server=2.16.3=pyhd8ed1ab_0 < - jupyterlab_widgets=3.0.3=pyhd8ed1ab_0 < - jupytext=1.14.1=pyhd0ecf6b_0 --- > - jupyterlab_server=2.22.1=pyhd8ed1ab_0 > - jupyterlab_widgets=3.0.7=pyhd8ed1ab_1 > - jupytext=1.14.5=pyhcff175f_0 264c268 < - kiwisolver=1.4.4=py38h43d8883_1 --- > - kiwisolver=1.4.4=py39hf939315_1 267,269c271,274 < - lazy-object-proxy=1.8.0=py38h0a891b7_0 < - lcms2=2.14=h6ed2654_0 < - ld_impl_linux-64=2.39=hcc3a1bd_1 --- > - lazy-object-proxy=1.9.0=py39h72bdee0_0 > - lazy_loader=0.2=pyhd8ed1ab_0 > - lcms2=2.15=hfd0df8a_0 > - ld_impl_linux-64=2.40=h41732ed_0 271,275c276,280 < - libabseil=20230125.0=cxx17_hcb278e6_1 < - libaec=1.0.6=h9c3ff4c_0 < - libarchive=3.5.2=hada088e_3 < - libarrow=11.0.0=h33598ff_9_cpu < - libavif=0.11.1=h5cdd6b5_0 --- > - libabseil=20230125.2=cxx17_h59595ed_2 > - libaec=1.0.6=hcb278e6_1 > - libarchive=3.6.2=h3d51595_0 > - libarrow=10.0.1=hf815326_25_cpu > - libavif=0.11.1=hff004cb_1 280c285 < - libcap=2.66=ha37c62d_0 --- > - libcap=2.67=he9d0100_0 282,285c287,290 < - libcdms=3.1.2=h2973bc7_118 < - libcf=1.0.3=py38h0c3d773_115 < - libclang=15.0.6=default_h2e3cab8_0 < - libclang13=15.0.6=default_h3a83d3e_0 --- > - libcdms=3.1.2=hf94f14b_119 > - libcf=1.0.3=py39h6c807ef_115 > - libclang=15.0.7=default_h7634d5b_2 > - libclang13=15.0.7=default_h9986a30_2 288,289c293 < - libcurl=7.88.1=hdc1c0ab_1 < - libdap4=3.20.6=hd7c4107_2 --- > - libcurl=8.1.2=h409715c_0 291c295 < - libdeflate=1.14=h166bdaf_0 --- > - libdeflate=1.17=h0b41bf4_0 297a302 > - libexpat=2.5.0=hcb278e6_1 302c307 < - libgdal=3.6.0=h2f87c3e_13 --- > - libgdal=3.6.2=h8c90c07_6 305c310 < - libglib=2.74.1=h606061b_1 --- > - libglib=2.76.3=hebfc3b9_0 308,310c313,315 < - libgoogle-cloud=2.8.0=h3c06191_0 < - libgpg-error=1.45=hc0c96e0_0 < - libgrpc=1.51.1=hcf146ea_3 --- > - libgoogle-cloud=2.10.1=hac9eb74_1 > - libgpg-error=1.46=h620e276_0 > - libgrpc=1.54.2=hb20ce57_2 315,317c320,323 < - libllvm11=11.1.0=he0ac6c6_5 < - libllvm15=15.0.6=h63197d8_0 < - libmicrohttpd=0.9.75=h2603550_1 --- > - libllvm14=14.0.6=hcd5def8_2 > - libllvm15=15.0.7=hadd5161_1 > - libllvm16=16.0.1=hadd5161_0 > - libmicrohttpd=0.9.76=h87ba234_0 320a327 > - libnuma=2.0.16=h0b41bf4_1 329c336 < - libsndfile=1.1.0=h27087fc_0 --- > - libsndfile=1.2.0=hb75c966_0 332,333c339,340 < - libspatialite=5.0.1=h7c8129e_22 < - libsqlite=3.40.0=h753d276_0 --- > - libspatialite=5.0.1=h221c8f1_23 > - libsqlite=3.42.0=h2797004_0 336c343 < - libsystemd0=252=h2a991cd_0 --- > - libsystemd0=253=h8c4010b_1 338,341c345,348 < - libthrift=0.18.0=h5e4af38_0 < - libtiff=4.4.0=h55922b4_4 < - libtool=2.4.6=h9c3ff4c_1008 < - libudev1=252=h166bdaf_0 --- > - libthrift=0.18.1=h5e4af38_0 > - libtiff=4.5.0=h6adf6a1_2 > - libtool=2.4.7=h27087fc_0 > - libudev1=253=h0b41bf4_1 344c351 < - libuuid=2.32.1=h7f98852_1000 --- > - libuuid=2.38.1=h0b41bf4_0 347c354 < - libwebp-base=1.2.4=h166bdaf_0 --- > - libwebp-base=1.3.0=h0b41bf4_0 349,350c356,357 < - libxkbcommon=1.0.3=he3ba5ed_0 < - libxml2=2.10.3=h7463322_0 --- > - libxkbcommon=1.5.0=h79f4944_1 > - libxml2=2.10.3=hca2bb57_4 355c362,363 < - llvmlite=0.39.1=py38h38d86a4_1 --- > - llvmlite=0.40.0=py39h174d805_0 > - lmoments3=1.0.5=pyhd8ed1ab_0 357,360c365,368 < - loguru=0.6.0=py38h578d9bd_2 < - lxml=4.9.1=py38ha9ef780_1 < - lz4=4.0.2=py38h1bf946c_0 < - lz4-c=1.9.3=h9c3ff4c_1 --- > - loguru=0.7.0=py39hf3d152e_0 > - lxml=4.9.2=py39h14694de_0 > - lz4=4.3.2=py39h724f13c_0 > - lz4-c=1.9.4=hcb278e6_0 363,369c371,377 < - mamba_gator=5.2.0=pyhd8ed1ab_0 < - mapclassify=2.4.3=pyhd8ed1ab_0 < - markdown=3.4.1=pyhd8ed1ab_0 < - markdown-it-py=2.1.0=pyhd8ed1ab_0 < - markupsafe=2.1.1=py38h0a891b7_2 < - matplotlib=3.6.2=py38h578d9bd_0 < - matplotlib-base=3.6.2=py38hb021067_0 --- > - mamba_gator=5.2.1=pyhd8ed1ab_0 > - mapclassify=2.5.0=pyhd8ed1ab_1 > - markdown=3.4.3=pyhd8ed1ab_0 > - markdown-it-py=2.2.0=pyhd8ed1ab_0 > - markupsafe=2.1.2=py39h72bdee0_0 > - matplotlib=3.7.1=py39hf3d152e_0 > - matplotlib-base=3.7.1=py39he190548_0 371c379 < - mdit-py-plugins=0.3.1=pyhd8ed1ab_0 --- > - mdit-py-plugins=0.3.5=pyhd8ed1ab_0 374,376c382,384 < - mesalib=21.2.5=h0e4506f_3 < - mistune=2.0.4=pyhd8ed1ab_0 < - mpg123=1.30.2=h27087fc_1 --- > - mesalib=23.0.2=h3855f93_0 > - mistune=2.0.5=pyhd8ed1ab_0 > - mpg123=1.31.3=hcb278e6_0 378c386 < - mpi4py=3.1.4=py38h97ac3a3_0 --- > - mpi4py=3.1.4=py39h32b9844_0 380,381c388,389 < - msgpack-python=1.0.4=py38h43d8883_1 < - multidict=6.0.2=py38h0a891b7_2 --- > - msgpack-python=1.0.5=py39h4b4f3f3_0 > - multidict=6.0.4=py39h72bdee0_0 383,384c391,392 < - multiprocess=0.70.14=py38h0a891b7_3 < - munch=2.5.0=py_0 --- > - multiprocess=0.70.14=py39hb9d737c_3 > - munch=3.0.0=pyhd8ed1ab_0 387,395c395,403 < - mysql-common=8.0.32=ha901b37_1 < - mysql-libs=8.0.32=hd7da12d_1 < - nbclassic=0.4.8=pyhd8ed1ab_0 < - nbclient=0.7.2=pyhd8ed1ab_0 < - nbconvert=7.2.5=pyhd8ed1ab_0 < - nbconvert-core=7.2.5=pyhd8ed1ab_0 < - nbconvert-pandoc=7.2.5=pyhd8ed1ab_0 < - nbdime=3.1.1=pyhd8ed1ab_0 < - nbformat=5.7.0=pyhd8ed1ab_0 --- > - mysql-common=8.0.32=hf1915f5_2 > - mysql-libs=8.0.32=hca2cd23_2 > - nbclassic=1.0.0=pyhb4ecaf3_1 > - nbclient=0.7.4=pyhd8ed1ab_0 > - nbconvert=7.4.0=pyhd8ed1ab_0 > - nbconvert-core=7.4.0=pyhd8ed1ab_0 > - nbconvert-pandoc=7.4.0=pyhd8ed1ab_0 > - nbdime=3.2.1=pyhd8ed1ab_0 > - nbformat=5.8.0=pyhd8ed1ab_0 402,403c410,411 < - netcdf-fortran=4.6.0=mpi_mpich_hd09bd1e_1 < - netcdf4=1.6.2=nompi_py38h2250339_100 --- > - netcdf-fortran=4.6.0=mpi_mpich_h1e13492_2 > - netcdf4=1.6.2=nompi_py39hfaa66c4_100 405,406c413,414 < - networkx=2.8.8=pyhd8ed1ab_0 < - nodeenv=1.7.0=pyhd8ed1ab_0 --- > - networkx=3.1=pyhd8ed1ab_0 > - nodeenv=1.8.0=pyhd8ed1ab_0 408,409c416,417 < - notebook=6.5.2=pyha770c72_1 < - notebook-shim=0.2.2=pyhd8ed1ab_0 --- > - notebook=6.5.4=pyha770c72_0 > - notebook-shim=0.2.3=pyhd8ed1ab_0 411,415c419,423 < - nss=3.82=he02c5a1_0 < - numba=0.56.4=py38h9a4aae9_0 < - numcodecs=0.10.2=py38hfa26641_0 < - numpy=1.23.5=py38h7042d01_0 < - numpy_groupies=0.9.20=pyhd8ed1ab_0 --- > - nss=3.89=he45b914_0 > - numba=0.57.0=py39hb75a051_0 > - numcodecs=0.11.0=py39h227be39_1 > - numpy=1.23.5=py39h3d75532_0 > - numpy_groupies=0.9.22=pyhd8ed1ab_0 418,421c426,428 < - openjpeg=2.5.0=h7d73246_1 < - openssl=3.1.0=h0b41bf4_0 < - orc=1.8.2=hfdbbad2_2 < - ostrich=21.03.16=h4bd325d_1 --- > - openjpeg=2.5.0=hfec8fc6_2 > - openssl=3.1.1=hd590300_0 > - orc=1.8.3=hfdbbad2_0 423c430 < - owslib=0.27.2=pyhd8ed1ab_1 --- > - owslib=0.28.1=pyhd8ed1ab_0 425c432 < - packaging=21.3=pyhd8ed1ab_0 --- > - packaging=23.1=pyhd8ed1ab_0 427,428c434,435 < - pandas=1.3.5=py38h43a58ef_0 < - pandoc=2.19.2=h32600fe_1 --- > - pandas=1.3.5=py39hde0f152_0 > - pandoc=2.19.2=h32600fe_2 430,433c437,440 < - panel=0.14.1=pyhd8ed1ab_0 < - param=1.12.2=pyh6c4a22f_0 < - paramiko=2.12.0=pyhd8ed1ab_0 < - parquet-cpp=1.5.1=2 --- > - panel=0.14.4=pyhd8ed1ab_0 > - parallelio=2.5.10=mpi_mpich_h862c5c2_100 > - param=1.13.0=pyh1a96a4e_0 > - paramiko=3.2.0=pyhd8ed1ab_0 435c442 < - partd=1.3.0=pyhd8ed1ab_0 --- > - partd=1.4.0=pyhd8ed1ab_0 438d444 < - pcre=8.45=h9c3ff4c_0 442,444c448,450 < - pillow=9.2.0=py38h9eb91d8_3 < - pint=0.20.1=pyhd8ed1ab_0 < - pip=22.3.1=pyhd8ed1ab_0 --- > - pillow=9.4.0=py39h2320bf1_1 > - pint=0.21=pyhd8ed1ab_0 > - pip=23.1.2=pyhd8ed1ab_0 447,448c453,454 < - platformdirs=2.5.2=pyhd8ed1ab_1 < - plotly=5.11.0=pyhd8ed1ab_0 --- > - platformdirs=3.5.1=pyhd8ed1ab_0 > - plotly=5.14.1=pyhd8ed1ab_0 451,453c457,459 < - pooch=1.6.0=pyhd8ed1ab_0 < - poppler=22.11.0=h92391eb_0 < - poppler-data=0.4.11=hd8ed1ab_0 --- > - pooch=1.7.0=pyha770c72_3 > - poppler=23.01.0=h091648b_0 > - poppler-data=0.4.12=hd8ed1ab_0 457,461c463,467 < - pre-commit=2.20.0=py38h578d9bd_1 < - proj=9.1.0=h93bde94_0 < - prometheus_client=0.15.0=pyhd8ed1ab_0 < - prompt-toolkit=3.0.33=pyha770c72_0 < - prompt_toolkit=3.0.33=hd8ed1ab_0 --- > - pre-commit=3.3.2=pyha770c72_0 > - proj=9.1.1=h8ffa02c_2 > - prometheus_client=0.17.0=pyhd8ed1ab_0 > - prompt-toolkit=3.0.38=pyha770c72_0 > - prompt_toolkit=3.0.38=hd8ed1ab_0 463c469 < - protobuf=4.21.12=py38h8dc9893_0 --- > - protobuf=4.21.12=py39h227be39_0 465c471 < - psutil=5.9.4=py38h0a891b7_0 --- > - psutil=5.9.5=py39h72bdee0_0 468c474,476 < - pulseaudio=16.1=h126f2b6_0 --- > - pulseaudio=16.1=hcb278e6_3 > - pulseaudio-client=16.1=h5195f5e_3 > - pulseaudio-daemon=16.1=ha8d29e2_3 470c478 < - pyarrow=11.0.0=py38hf05218d_9_cpu --- > - pyarrow=10.0.1=py39he4327e9_25_cpu 476,478c484,486 < - pycurl=7.45.1=py38he9e1d38_3 < - pydantic=1.10.2=py38h0a891b7_1 < - pydap=3.3.0=pyhd8ed1ab_0 --- > - pycurl=7.45.1=py39h9297c8b_3 > - pydantic=1.10.8=py39hd1e30aa_0 > - pydap=3.4.0=pyhd8ed1ab_0 480,482c488,491 < - pygeos=0.13=py38hafd38ec_2 < - pygments=2.13.0=pyhd8ed1ab_0 < - pyjwt=2.6.0=pyhd8ed1ab_0 --- > - pygeos=0.14=py39hc9151fd_0 > - pygments=2.15.1=pyhd8ed1ab_0 > - pyjwt=2.7.0=pyhd8ed1ab_0 > - pymbolic=2022.2=pyhd8ed1ab_0 485c494,495 < - pynacl=1.5.0=py38h0a891b7_2 --- > - pynacl=1.5.0=py39hb9d737c_2 > - pyogrio=0.5.1=py39hbc5ff6d_0 488,491c498,501 < - pyproj=3.4.0=py38hce0a2d1_2 < - pyqt=5.15.7=py38h7492b6b_2 < - pyqt5-sip=12.11.0=py38hfa26641_2 < - pyrsistent=0.19.2=py38h0a891b7_0 --- > - pyproj=3.5.0=py39hf8a5840_0 > - pyqt=5.15.7=py39h5c7b992_3 > - pyqt5-sip=12.11.0=py39h227be39_3 > - pyrsistent=0.19.3=py39h72bdee0_0 494,497c504,506 < - pyston_lite=2.3.4=py38h0a891b7_1 < - pyston_lite_autoload=2.3.4=pyh44b312d_1 < - pytest=7.2.0=pyhd8ed1ab_2 < - python=3.8.16=he550d4f_1_cpython --- > - pytest=7.3.1=pyhd8ed1ab_0 > - pytest-xdist=3.3.1=pyhd8ed1ab_0 > - python=3.9.16=h2782a2a_0_cpython 499,501c508,510 < - python-eccodes=1.4.2=py38h26c90d9_1 < - python-fastjsonschema=2.16.2=pyhd8ed1ab_0 < - python-json-logger=2.0.1=pyh9f0ad1d_0 --- > - python-eccodes=1.5.1=py39h389d5f1_0 > - python-fastjsonschema=2.17.1=pyhd8ed1ab_0 > - python-json-logger=2.0.7=pyhd8ed1ab_0 503,506c512,515 < - python-tzdata=2022.7=pyhd8ed1ab_0 < - python_abi=3.8=3_cp38 < - pytz=2022.6=pyhd8ed1ab_0 < - pytz-deprecation-shim=0.1.0.post0=py38h578d9bd_3 --- > - python-tzdata=2023.3=pyhd8ed1ab_0 > - python_abi=3.9=3_cp39 > - pytools=2022.1.14=pyhd8ed1ab_0 > - pytz=2023.3=pyhd8ed1ab_0 508,521c517,530 < - pyviz_comms=2.2.1=pyhd8ed1ab_1 < - pywavelets=1.3.0=py38h26c90d9_2 < - pyyaml=6.0=py38h0a891b7_5 < - pyzmq=24.0.1=py38hfc09fa9_1 < - qhull=2020.2=h4bd325d_2 < - qt-main=5.15.6=hf6cd601_5 < - qtconsole=5.4.0=pyhd8ed1ab_0 < - qtconsole-base=5.4.0=pyha770c72_0 < - qtpy=2.3.0=pyhd8ed1ab_0 < - rasterio=1.3.4=py38h485b76c_0 < - raven-hydro=3.0.4.322=ha46ed4c_2 < - ravenpy=0.9.0=pyha21a80b_0 < - re2=2023.02.02=hcb278e6_0 < - readline=8.1.2=h0f457ee_0 --- > - pyviz_comms=2.3.0=pyhd8ed1ab_0 > - pywavelets=1.4.1=py39h389d5f1_0 > - pyyaml=6.0=py39hb9d737c_5 > - pyzmq=25.0.2=py39h0be026e_0 > - qt-main=5.15.8=h5d23da1_6 > - qtconsole=5.4.3=pyhd8ed1ab_0 > - qtconsole-base=5.4.3=pyha770c72_0 > - qtpy=2.3.1=pyhd8ed1ab_0 > - rasterio=1.3.6=py39h09b1985_0 > - raven-hydro=0.2.1=py39h8e2dbb5_1 > - ravenpy=0.12.0=py39hf3d152e_2 > - rdma-core=28.9=h59595ed_1 > - re2=2023.03.02=h8c504da_0 > - readline=8.2=h8228510_1 523c532 < - requests=2.28.1=pyhd8ed1ab_1 --- > - requests=2.31.0=pyhd8ed1ab_0 528,530c537,540 < - rich=12.6.0=pyhd8ed1ab_0 < - rioxarray=0.13.1=pyhd8ed1ab_0 < - roocs-utils=0.6.3=pyh1a96a4e_0 --- > - rfc3339-validator=0.1.4=pyhd8ed1ab_0 > - rfc3986-validator=0.1.1=pyh9f0ad1d_0 > - rioxarray=0.14.1=pyhd8ed1ab_0 > - roocs-utils=0.6.4=pyh1a96a4e_0 532,548c542,560 < - rtree=1.0.1=py38h02d302b_1 < - ruamel.yaml=0.17.21=py38h0a891b7_2 < - ruamel.yaml.clib=0.2.7=py38h0a891b7_0 < - s2n=1.3.41=h3358134_0 < - s3fs=2022.11.0=pyhd8ed1ab_0 < - s3transfer=0.6.0=pyhd8ed1ab_0 < - scikit-image=0.19.3=py38h8f669ce_2 < - scikit-learn=1.1.3=py38h4c4ba11_1 < - scipy=1.8.1=py38h8ce737c_3 < - scp=0.14.4=pyhd8ed1ab_0 < - selenium=4.6.0=pyhd8ed1ab_0 < - semver=2.13.0=pyh9f0ad1d_0 < - send2trash=1.8.0=pyhd8ed1ab_0 < - setuptools=59.8.0=py38h578d9bd_1 < - shapely=1.8.5=py38hafd38ec_2 < - simpervisor=0.4=pyhd8ed1ab_0 < - sip=6.7.5=py38hfa26641_0 --- > - rtree=1.0.1=py39hb102c33_1 > - ruamel.yaml=0.17.30=py39hd1e30aa_0 > - ruamel.yaml.clib=0.2.7=py39h72bdee0_1 > - s2n=1.3.44=h06160fa_0 > - s3fs=2023.5.0=pyhd8ed1ab_0 > - s3transfer=0.6.1=pyhd8ed1ab_0 > - scikit-image=0.20.0=py39h7c7b5a8_1 > - scikit-learn=1.2.2=py39hc236052_2 > - scipy=1.9.1=py39h8ba3f38_0 > - scp=0.14.5=pyhd8ed1ab_0 > - seaborn=0.12.2=hd8ed1ab_0 > - seaborn-base=0.12.2=pyhd8ed1ab_0 > - selenium=4.9.1=pyhd8ed1ab_0 > - semver=3.0.0=pyhd8ed1ab_0 > - send2trash=1.8.2=pyh41d4057_0 > - setuptools=59.8.0=py39hf3d152e_1 > - shapely=2.0.1=py39hc9151fd_0 > - simpervisor=1.0.0=pyhd8ed1ab_0 > - sip=6.7.9=py39h3d6467e_0 552c564 < - snappy=1.1.9=hbd366e4_2 --- > - snappy=1.1.10=h9fff704_0 557,560c569,572 < - sparse=0.13.0=pyhd8ed1ab_0 < - spotpy=1.6.1=pyhd8ed1ab_0 < - sqlalchemy=1.4.44=py38h0a891b7_0 < - sqlite=3.40.0=h4ff8645_0 --- > - sparse=0.14.0=pyhd8ed1ab_0 > - spotpy=1.6.2=pyhd8ed1ab_0 > - sqlalchemy=2.0.15=py39hd1e30aa_0 > - sqlite=3.42.0=h2c6b66d_0 562c574 < - statsmodels=0.13.5=py38h26c90d9_2 --- > - statsmodels=0.14.0=py39h0f8d45d_1 565,566c577,578 < - tenacity=8.1.0=pyhd8ed1ab_0 < - terminado=0.17.0=pyh41d4057_0 --- > - tenacity=8.2.2=pyhd8ed1ab_0 > - terminado=0.17.1=pyh41d4057_0 569c581 < - tifffile=2022.10.10=pyhd8ed1ab_0 --- > - tifffile=2023.4.12=pyhd8ed1ab_0 576,578c588,590 < - tornado=6.1=py38h0a891b7_3 < - tqdm=4.64.1=pyhd8ed1ab_0 < - traitlets=5.6.0=pyhd8ed1ab_0 --- > - tornado=6.3.2=py39hd1e30aa_0 > - tqdm=4.65.0=pyhd8ed1ab_1 > - traitlets=5.9.0=pyhd8ed1ab_0 580,589c592,602 < - trio=0.21.0=py38h578d9bd_0 < - trio-websocket=0.9.2=pyhd8ed1ab_0 < - typing-extensions=4.4.0=hd8ed1ab_0 < - typing_extensions=4.4.0=pyha770c72_0 < - tzcode=2022g=h166bdaf_0 < - tzdata=2022g=h191b570_0 < - tzlocal=4.2=py38h578d9bd_2 < - ujson=5.7.0=py38h8dc9893_0 < - ukkonen=1.0.1=py38h43d8883_3 < - unicodedata2=15.0.0=py38h0a891b7_0 --- > - trio=0.22.0=py39hf3d152e_1 > - trio-websocket=0.10.2=pyhd8ed1ab_0 > - typing-extensions=4.6.2=hd8ed1ab_0 > - typing_extensions=4.6.2=pyha770c72_0 > - tzcode=2023c=h0b41bf4_0 > - tzdata=2023c=h71feb2d_0 > - tzlocal=5.0.1=py39hf3d152e_0 > - ucx=1.14.1=hf587318_1 > - ujson=5.7.0=py39h227be39_0 > - ukkonen=1.0.1=py39hf939315_3 > - unicodedata2=15.0.0=py39hb9d737c_0 591c604 < - urllib3=1.26.13=pyhd8ed1ab_0 --- > - urllib3=1.26.15=pyhd8ed1ab_0 593,594c606,607 < - validators=0.18.2=pyhd3deb0d_0 < - virtualenv=20.17.0=py38h578d9bd_0 --- > - validators=0.20.0=pyhd8ed1ab_0 > - virtualenv=20.23.0=pyhd8ed1ab_0 596,597c609,610 < - watchdog=2.1.9=py38h578d9bd_1 < - wcwidth=0.2.5=pyh9f0ad1d_2 --- > - watchdog=3.0.0=py39hf3d152e_0 > - wcwidth=0.2.6=pyhd8ed1ab_0 600,602c613,615 < - websocket-client=1.4.2=pyhd8ed1ab_0 < - websockets=10.4=py38h0a891b7_1 < - werkzeug=2.2.2=pyhd8ed1ab_0 --- > - websocket-client=1.5.2=pyhd8ed1ab_0 > - websockets=11.0.3=py39hd1e30aa_0 > - werkzeug=2.3.4=pyhd8ed1ab_0 604,606c617,619 < - wheel=0.38.4=pyhd8ed1ab_0 < - widgetsnbextension=4.0.3=pyhd8ed1ab_0 < - wrapt=1.14.1=py38h0a891b7_1 --- > - wheel=0.40.0=pyhd8ed1ab_0 > - widgetsnbextension=4.0.7=pyhd8ed1ab_0 > - wrapt=1.15.0=py39h72bdee0_0 608c621 < - xarray=2022.10.0=pyhd8ed1ab_0 --- > - xarray=2023.1.0=pyhd8ed1ab_0 614c627 < - xclim=0.39.0=pyhd8ed1ab_0 --- > - xclim=0.43.0=py39hf3d152e_1 616c629 < - xesmf=0.6.3=pyhd8ed1ab_1 --- > - xesmf=0.7.1=pyhd8ed1ab_0 618c631 < - xeus-python=0.15.8=py38hfbd4bf9_1 --- > - xeus-python=0.15.9=py39h7633fee_0 621c634 < - xeus-zmq=1.0.2=h0541b36_2 --- > - xeus-zmq=1.0.3=h0541b36_0 622a636 > - xkeyboard-config=2.38=h0b41bf4_0 624c638 < - xlsxwriter=3.0.3=pyhd8ed1ab_0 --- > - xlsxwriter=3.1.2=pyhd8ed1ab_0 630,633c644,647 < - xorg-libice=1.0.10=h7f98852_0 < - xorg-libsm=1.2.3=hd9c2040_1000 < - xorg-libx11=1.7.2=h7f98852_0 < - xorg-libxau=1.0.9=h7f98852_0 --- > - xorg-libice=1.1.1=hd590300_0 > - xorg-libsm=1.2.4=h7391055_0 > - xorg-libx11=1.8.4=h0b41bf4_0 > - xorg-libxau=1.0.11=hd590300_0 636c650 < - xorg-libxext=1.3.4=h7f98852_1 --- > - xorg-libxext=1.3.4=h0b41bf4_2 644c658 < - xorg-xextproto=7.3.0=h7f98852_1002 --- > - xorg-xextproto=7.3.0=h0b41bf4_1003 647c661 < - xrft=1.0.0=pyhd8ed1ab_0 --- > - xrft=1.0.1=pyhd8ed1ab_0 649c663 < - xyzservices=2022.9.0=pyhd8ed1ab_0 --- > - xyzservices=2023.5.0=pyhd8ed1ab_1 650a665 > - y-py=0.5.9=py39h50f1755_0 652,653c667,669 < - yarl=1.8.1=py38h0a891b7_0 < - zarr=2.13.3=pyhd8ed1ab_0 --- > - yarl=1.9.2=py39hd1e30aa_0 > - ypy-websocket=0.8.2=pyhd8ed1ab_0 > - zarr=2.14.2=pyhd8ed1ab_0 656,657c672,673 < - zict=2.2.0=pyhd8ed1ab_0 < - zipp=3.11.0=pyhd8ed1ab_0 --- > - zict=3.0.0=pyhd8ed1ab_0 > - zipp=3.15.0=pyhd8ed1ab_0 659,660c675,676 < - zlib-ng=2.0.6=h166bdaf_0 < - zstd=1.5.2=h6239696_4 --- > - zlib-ng=2.0.7=h0b41bf4_0 > - zstd=1.5.2=h3eb15da_6 662,673c678,701 < - astunparse==1.6.3 < - colour==0.1.5 < - geojson==2.5.0 < - ipython-blocking==0.3.1 < - jupyterlab-logout==0.5.0 < - jupyterlab-tabular-data-editor==1.0.0 < - jupyternotify==0.1.15 < - pixiedust==1.1.19 < - pytest-tornasync==0.6.0.post2 < - xmltodict==0.13.0 < - xncml==0.2 < - xsdata==22.12 --- > - arrow==1.2.3 > - astunparse==1.6.3 > - colour==0.1.5 > - dnspython==2.3.0 > - email-validator==2.0.0.post2 > - fqdn==1.5.1 > - geojson==3.0.1 > - hsclient==0.3.3 > - hsmodels==0.5.5 > - ipython-blocking==0.3.1 > - isodate==0.6.1 > - isoduration==20.11.0 > - jsonpointer==2.3 > - jupyterlab-logout==0.5.0 > - jupyterlab-tabular-data-editor==1.0.0 > - jupyternotify==0.1.15 > - pixiedust==1.1.19 > - pytest-tornasync==0.6.0.post2 > - rdflib==5.0.0 > - uri-template==1.2.0 > - webcolors==1.13 > - xmltodict==0.13.0 > - xncml==0.2 > - xsdata==23.5 ``` Full new conda env export: [230530-1-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621130/230530-1-conda-env-export.yml.txt) ``` name: birdy channels: - cdat - conda-forge - defaults dependencies: - _libgcc_mutex=0.1=conda_forge - _openmp_mutex=4.5=2_gnu - affine=2.4.0=pyhd8ed1ab_0 - aiobotocore=2.5.0=pyhd8ed1ab_0 - aiofiles=22.1.0=pyhd8ed1ab_0 - aiohttp=3.8.4=py39h72bdee0_0 - aioitertools=0.11.0=pyhd8ed1ab_0 - aiosignal=1.3.1=pyhd8ed1ab_0 - aiosqlite=0.19.0=pyhd8ed1ab_0 - alembic=1.11.1=pyhd8ed1ab_0 - alsa-lib=1.2.8=h166bdaf_0 - altair=5.0.1=pyhd8ed1ab_0 - ansi2html=1.8.0=py39hf3d152e_1 - anyio=3.6.1=pyhd8ed1ab_1 - aom=3.5.0=h27087fc_0 - appdirs=1.4.4=pyh9f0ad1d_0 - argon2-cffi=21.3.0=pyhd8ed1ab_0 - argon2-cffi-bindings=21.2.0=py39hb9d737c_3 - asciitree=0.3.3=py_2 - astor=0.8.1=pyh9f0ad1d_0 - asttokens=2.2.1=pyhd8ed1ab_0 - async-timeout=4.0.2=pyhd8ed1ab_0 - async_generator=1.10=py_0 - attr=2.5.1=h166bdaf_1 - attrs=23.1.0=pyh71513ae_1 - aws-c-auth=0.6.27=he072965_1 - aws-c-cal=0.5.26=hf677bf3_1 - aws-c-common=0.8.19=hd590300_0 - aws-c-compression=0.2.16=hbad4bc6_7 - aws-c-event-stream=0.2.20=hb4b372c_7 - aws-c-http=0.7.7=h2632f9a_4 - aws-c-io=0.13.21=h9fef7b8_5 - aws-c-mqtt=0.8.11=h2282364_1 - aws-c-s3=0.3.0=hcb5a9b2_2 - aws-c-sdkutils=0.1.9=hbad4bc6_2 - aws-checksums=0.1.14=hbad4bc6_7 - aws-crt-cpp=0.20.2=he0fdcb3_0 - aws-sdk-cpp=1.10.57=h059227d_13 - babel=2.12.1=pyhd8ed1ab_1 - backcall=0.2.0=pyh9f0ad1d_0 - backports=1.0=pyhd8ed1ab_3 - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0 - base58=2.1.1=pyhd8ed1ab_0 - bcrypt=3.2.2=py39hb9d737c_1 - beautifulsoup4=4.12.2=pyha770c72_0 - bias_correction=0.4=pyhd8ed1ab_0 - birdy=0.8.4=pyh1a96a4e_0 - bleach=6.0.0=pyhd8ed1ab_0 - blinker=1.6.2=pyhd8ed1ab_0 - blosc=1.21.4=h0f2a231_0 - bokeh=2.4.3=pyhd8ed1ab_3 - boltons=23.0.0=pyhd8ed1ab_0 - boost-cpp=1.78.0=h5adbc97_2 - boto3=1.26.76=pyhd8ed1ab_0 - botocore=1.29.76=pyhd8ed1ab_0 - bottleneck=1.3.7=py39h389d5f1_0 - branca=0.6.0=pyhd8ed1ab_0 - brotli=1.0.9=h166bdaf_8 - brotli-bin=1.0.9=h166bdaf_8 - brotlipy=0.7.0=py39hb9d737c_1005 - brunsli=0.1=h9c3ff4c_0 - bzip2=1.0.8=h7f98852_4 - c-ares=1.19.1=hd590300_0 - c-blosc2=2.9.2=hb4ffafa_0 - ca-certificates=2023.5.7=hbcca054_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - cachetools=5.3.0=pyhd8ed1ab_0 - cairo=1.16.0=ha61ee94_1014 - cartopy=0.21.1=py39h6e7ad6e_0 - cattrs=22.2.0=pyhd8ed1ab_0 - cdat_info=8.2.1=pyhd8ed1ab_2 - cdms2=3.1.5=py39h36de48d_15 - cdtime=3.1.4=py39he83c29a_7 - certifi=2023.5.7=pyhd8ed1ab_0 - certipy=0.1.3=py_0 - cf_xarray=0.8.0=pyhd8ed1ab_0 - cffi=1.15.1=py39he91dace_3 - cfgrib=0.9.10.4=pyhd8ed1ab_0 - cfgv=3.3.1=pyhd8ed1ab_0 - cfitsio=4.2.0=hd9d235c_0 - cftime=1.6.2=py39h2ae25f5_1 - charls=2.4.2=h59595ed_0 - charset-normalizer=2.1.1=pyhd8ed1ab_0 - click=8.1.3=unix_pyhd8ed1ab_2 - click-plugins=1.1.1=py_0 - cligj=0.7.2=pyhd8ed1ab_1 - climpred=2.3.0=pyhd8ed1ab_0 - clisops=0.9.6=pyh1a96a4e_0 - cloudpickle=2.2.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_0 - colorcet=3.0.1=pyhd8ed1ab_0 - comm=0.1.3=pyhd8ed1ab_0 - configurable-http-proxy=4.5.4=he2f69ee_2 - contourpy=1.0.7=py39h4b4f3f3_0 - coverage=7.2.7=py39hd1e30aa_0 - cryptography=40.0.2=py39h079d5ae_0 - curl=8.1.2=h409715c_0 - cycler=0.11.0=pyhd8ed1ab_0 - cytoolz=0.12.0=py39hb9d737c_1 - dash=2.9.3=pyhd8ed1ab_2 - dask=2023.5.1=pyhd8ed1ab_0 - dask-core=2023.5.1=pyhd8ed1ab_0 - dask-labextension=6.1.0=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - datashader=0.14.4=pyh1a96a4e_0 - datashape=0.5.4=py_1 - dav1d=1.2.0=hd590300_0 - dbus=1.13.6=h5008d03_3 - debugpy=1.6.7=py39h227be39_0 - decorator=5.1.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - descartes=1.1.0=py_4 - dill=0.3.6=pyhd8ed1ab_1 - distarray=2.12.2=pyh050c7b8_4 - distlib=0.3.6=pyhd8ed1ab_0 - distributed=2023.5.1=pyhd8ed1ab_0 - docopt=0.6.2=py_1 - docrep=0.3.2=pyh44b312d_0 - eccodes=2.28.0=h7513371_1 - elfutils=0.189=hde5d1a3_0 - entrypoints=0.4=pyhd8ed1ab_0 - eofs=1.4.0=py_0 - esgf-compute-api=2.3.9=0_h1234567_ - esgf-pyclient=0.3.1=pyh1a96a4e_2 - esmf=8.4.0=mpi_mpich_hc592774_104 - esmpy=8.4.0=mpi_mpich_py39h3088dd8_102 - exceptiongroup=1.1.1=pyhd8ed1ab_0 - execnet=1.9.0=pyhd8ed1ab_0 - executing=1.2.0=pyhd8ed1ab_0 - expat=2.5.0=hcb278e6_1 - fasteners=0.17.3=pyhd8ed1ab_0 - fastprogress=1.0.3=pyhd8ed1ab_0 - fftw=3.3.10=nompi_hc118613_107 - filelock=3.12.0=pyhd8ed1ab_0 - findlibs=0.0.5=pyhd8ed1ab_0 - fiona=1.9.1=py39hbc5ff6d_0 - flask=2.3.2=pyhd8ed1ab_0 - flit-core=3.9.0=pyhd8ed1ab_0 - flox=0.7.2=pyhd8ed1ab_0 - folium=0.14.0=pyhd8ed1ab_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 - font-ttf-ubuntu=0.83=hab24e00_0 - fontconfig=2.14.2=h14ed4e7_0 - fonts-conda-ecosystem=1=0 - fonts-conda-forge=1=0 - fonttools=4.39.4=py39hd1e30aa_0 - freeglut=3.2.2=h9c3ff4c_1 - freetype=2.12.1=hca18f0e_1 - freexl=1.0.6=h166bdaf_1 - frozenlist=1.3.3=py39hb9d737c_0 - fsspec=2023.5.0=pyh1a96a4e_0 - funcsigs=1.0.2=py_3 - future=0.18.3=pyhd8ed1ab_0 - g2clib=1.6.3=hbecde78_1 - gcsfs=2023.5.0=pyhd8ed1ab_0 - gdal=3.6.2=py39hc6cd174_6 - geckodriver=0.33.0=hd2f7af9_0 - geographiclib=1.52=pyhd8ed1ab_0 - geopandas=0.13.0=pyhd8ed1ab_0 - geopandas-base=0.13.0=pyha770c72_0 - geopy=2.3.0=pyhd8ed1ab_0 - geos=3.11.1=h27087fc_0 - geotiff=1.7.1=h7a142b4_6 - geoviews=1.9.6=pyhd8ed1ab_0 - geoviews-core=1.9.6=pyha770c72_0 - gettext=0.21.1=h27087fc_0 - gflags=2.2.2=he1b5a44_1004 - giflib=5.2.1=h0b41bf4_3 - gitdb=4.0.10=pyhd8ed1ab_0 - gitpython=3.1.31=pyhd8ed1ab_0 - glib=2.76.3=hfc55251_0 - glib-tools=2.76.3=hfc55251_0 - glog=0.6.0=h6f12383_0 - gnutls=3.7.8=hf3e180e_0 - google-api-core=2.11.0=pyhd8ed1ab_0 - google-auth=2.19.0=pyh1a96a4e_0 - google-auth-oauthlib=1.0.0=pyhd8ed1ab_0 - google-cloud-core=2.3.2=pyhd8ed1ab_0 - google-cloud-storage=2.9.0=pyh1a96a4e_0 - google-crc32c=1.1.2=py39h8db88ab_4 - google-resumable-media=2.5.0=pyhd8ed1ab_0 - googleapis-common-protos=1.57.1=pyhd8ed1ab_0 - graphite2=1.3.13=h58526e2_1001 - greenlet=2.0.2=py39h3d6467e_1 - grpcio=1.54.2=py39h227be39_2 - gst-plugins-base=1.22.0=h4243ec0_2 - gstreamer=1.22.0=h25f0c4b_2 - gstreamer-orc=0.4.34=hd590300_0 - h11=0.14.0=pyhd8ed1ab_0 - h5netcdf=1.1.0=pyhd8ed1ab_1 - h5py=3.8.0=mpi_mpich_py39hadaddcd_0 - harfbuzz=6.0.0=h8e241bc_0 - haversine=2.8.0=pyhd8ed1ab_0 - hdf4=4.2.15=h9772cbc_5 - hdf5=1.12.2=mpi_mpich_h5d83325_1 - holoviews=1.16.0=pyhd8ed1ab_0 - hvplot=0.8.3=pyhd8ed1ab_0 - icu=70.1=h27087fc_0 - identify=2.5.24=pyhd8ed1ab_0 - idna=3.4=pyhd8ed1ab_0 - imagecodecs=2023.1.23=py39hd061359_0 - imageio=2.28.1=pyh24c5eb1_0 - importlib-metadata=6.6.0=pyha770c72_0 - importlib-resources=5.12.0=pyhd8ed1ab_0 - importlib_metadata=6.6.0=hd8ed1ab_0 - importlib_resources=5.12.0=pyhd8ed1ab_0 - iniconfig=2.0.0=pyhd8ed1ab_0 - intake=0.7.0=pyhd8ed1ab_0 - intake-esm=2021.8.17=pyhd8ed1ab_0 - intake-geopandas=0.4.0=pyhd8ed1ab_0 - intake-thredds=2022.8.19=pyhd8ed1ab_0 - intake-xarray=0.7.0=pyhd8ed1ab_0 - ipykernel=6.23.1=pyh210e3f2_0 - ipyleaflet=0.17.2=pyhd8ed1ab_0 - ipython=8.13.2=pyh41d4057_0 - ipython_genutils=0.2.0=py_1 - ipywidgets=8.0.6=pyhd8ed1ab_0 - itsdangerous=2.1.2=pyhd8ed1ab_0 - jack=1.9.22=h11f4161_0 - jasper=2.0.33=h0ff4b12_1 - jedi=0.18.2=pyhd8ed1ab_0 - jinja2=3.1.2=pyhd8ed1ab_1 - jmespath=1.0.1=pyhd8ed1ab_0 - joblib=1.2.0=pyhd8ed1ab_0 - jpeg=9e=h0b41bf4_3 - json-c=0.16=hc379101_0 - json5=0.9.5=pyh9f0ad1d_0 - jsonpickle=2.2.0=pyhd8ed1ab_0 - jsonschema=4.17.3=pyhd8ed1ab_0 - jupyter=1.0.0=py39hf3d152e_8 - jupyter-archive=3.3.4=pyhd8ed1ab_1 - jupyter-dash=0.4.2=pyhd8ed1ab_1 - jupyter-resource-usage=0.7.1=pyhd8ed1ab_0 - jupyter-server-mathjax=0.2.6=pyh5bfe37b_1 - jupyter-server-proxy=4.0.0=pyhd8ed1ab_0 - jupyter_bokeh=3.0.5=pyhd8ed1ab_0 - jupyter_client=7.4.1=pyhd8ed1ab_0 - jupyter_console=6.6.3=pyhd8ed1ab_0 - jupyter_core=5.3.0=py39hf3d152e_0 - jupyter_events=0.6.3=pyhd8ed1ab_0 - jupyter_server=1.23.6=pyhd8ed1ab_0 - jupyter_server_fileid=0.9.0=pyhd8ed1ab_0 - jupyter_server_ydoc=0.8.0=pyhd8ed1ab_0 - jupyter_telemetry=0.1.0=pyhd8ed1ab_1 - jupyter_ydoc=0.2.3=pyhd8ed1ab_0 - jupyterhub=4.0.0=pyh2a2186d_0 - jupyterhub-base=4.0.0=pyh2a2186d_0 - jupyterlab=3.6.3=pyhd8ed1ab_0 - jupyterlab-git=0.41.0=pyhd8ed1ab_1 - jupyterlab-system-monitor=0.8.0=pyhd8ed1ab_2 - jupyterlab-topbar=0.6.1=pyhd8ed1ab_2 - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0 - jupyterlab_server=2.22.1=pyhd8ed1ab_0 - jupyterlab_widgets=3.0.7=pyhd8ed1ab_1 - jupytext=1.14.5=pyhcff175f_0 - jxrlib=1.1=h7f98852_2 - kealib=1.5.0=ha7026e8_0 - keyutils=1.6.1=h166bdaf_0 - kiwisolver=1.4.4=py39hf939315_1 - krb5=1.20.1=h81ceb04_0 - lame=3.100=h166bdaf_1003 - lazy-object-proxy=1.9.0=py39h72bdee0_0 - lazy_loader=0.2=pyhd8ed1ab_0 - lcms2=2.15=hfd0df8a_0 - ld_impl_linux-64=2.40=h41732ed_0 - lerc=4.0.0=h27087fc_0 - libabseil=20230125.2=cxx17_h59595ed_2 - libaec=1.0.6=hcb278e6_1 - libarchive=3.6.2=h3d51595_0 - libarrow=10.0.1=hf815326_25_cpu - libavif=0.11.1=hff004cb_1 - libblas=3.9.0=16_linux64_openblas - libbrotlicommon=1.0.9=h166bdaf_8 - libbrotlidec=1.0.9=h166bdaf_8 - libbrotlienc=1.0.9=h166bdaf_8 - libcap=2.67=he9d0100_0 - libcblas=3.9.0=16_linux64_openblas - libcdms=3.1.2=hf94f14b_119 - libcf=1.0.3=py39h6c807ef_115 - libclang=15.0.7=default_h7634d5b_2 - libclang13=15.0.7=default_h9986a30_2 - libcrc32c=1.1.2=h9c3ff4c_0 - libcups=2.3.3=h36d4200_3 - libcurl=8.1.2=h409715c_0 - libdb=6.2.32=h9c3ff4c_0 - libdeflate=1.17=h0b41bf4_0 - libdrm=2.4.114=h166bdaf_0 - libdrs=3.1.2=hf593df3_118 - libdrs_f=3.1.2=h7e76ec7_114 - libedit=3.1.20191231=he28a2e2_2 - libev=4.33=h516909a_1 - libevent=2.1.10=h28343ad_4 - libexpat=2.5.0=hcb278e6_1 - libffi=3.4.2=h7f98852_5 - libflac=1.4.2=h27087fc_0 - libgcc-ng=12.2.0=h65d4601_19 - libgcrypt=1.10.1=h166bdaf_0 - libgdal=3.6.2=h8c90c07_6 - libgfortran-ng=12.2.0=h69a702a_19 - libgfortran5=12.2.0=h337968e_19 - libglib=2.76.3=hebfc3b9_0 - libglu=9.0.0=he1b5a44_1001 - libgomp=12.2.0=h65d4601_19 - libgoogle-cloud=2.10.1=hac9eb74_1 - libgpg-error=1.46=h620e276_0 - libgrpc=1.54.2=hb20ce57_2 - libiconv=1.17=h166bdaf_0 - libidn2=2.3.4=h166bdaf_0 - libkml=1.3.0=h37653c0_1015 - liblapack=3.9.0=16_linux64_openblas - libllvm14=14.0.6=hcd5def8_2 - libllvm15=15.0.7=hadd5161_1 - libllvm16=16.0.1=hadd5161_0 - libmicrohttpd=0.9.76=h87ba234_0 - libnetcdf=4.8.1=mpi_mpich_hcd871d9_6 - libnghttp2=1.52.0=h61bc06f_0 - libnsl=2.0.0=h7f98852_0 - libnuma=2.0.16=h0b41bf4_1 - libogg=1.3.4=h7f98852_1 - libopenblas=0.3.21=pthreads_h78a6416_3 - libopus=1.3.1=h7f98852_1 - libpciaccess=0.17=h166bdaf_0 - libpng=1.6.39=h753d276_0 - libpq=15.2=hb675445_0 - libprotobuf=3.21.12=h3eb15da_0 - librttopo=1.1.0=ha49c73b_12 - libsndfile=1.2.0=hb75c966_0 - libsodium=1.0.18=h36c2ea0_1 - libspatialindex=1.9.3=h9c3ff4c_4 - libspatialite=5.0.1=h221c8f1_23 - libsqlite=3.42.0=h2797004_0 - libssh2=1.10.0=hf14f497_3 - libstdcxx-ng=12.2.0=h46fd767_19 - libsystemd0=253=h8c4010b_1 - libtasn1=4.19.0=h166bdaf_0 - libthrift=0.18.1=h5e4af38_0 - libtiff=4.5.0=h6adf6a1_2 - libtool=2.4.7=h27087fc_0 - libudev1=253=h0b41bf4_1 - libunistring=0.9.10=h7f98852_0 - libutf8proc=2.8.0=h166bdaf_0 - libuuid=2.38.1=h0b41bf4_0 - libuv=1.44.2=h166bdaf_0 - libvorbis=1.3.7=h9c3ff4c_0 - libwebp-base=1.3.0=h0b41bf4_0 - libxcb=1.13=h7f98852_1004 - libxkbcommon=1.5.0=h79f4944_1 - libxml2=2.10.3=hca2bb57_4 - libxslt=1.1.37=h873f0b0_0 - libzip=1.9.2=hc929e4a_1 - libzlib=1.2.13=h166bdaf_4 - libzopfli=1.0.3=h9c3ff4c_0 - llvmlite=0.40.0=py39h174d805_0 - lmoments3=1.0.5=pyhd8ed1ab_0 - locket=1.0.0=pyhd8ed1ab_0 - loguru=0.7.0=py39hf3d152e_0 - lxml=4.9.2=py39h14694de_0 - lz4=4.3.2=py39h724f13c_0 - lz4-c=1.9.4=hcb278e6_0 - lzo=2.10=h516909a_1000 - mako=1.2.4=pyhd8ed1ab_0 - mamba_gator=5.2.1=pyhd8ed1ab_0 - mapclassify=2.5.0=pyhd8ed1ab_1 - markdown=3.4.3=pyhd8ed1ab_0 - markdown-it-py=2.2.0=pyhd8ed1ab_0 - markupsafe=2.1.2=py39h72bdee0_0 - matplotlib=3.7.1=py39hf3d152e_0 - matplotlib-base=3.7.1=py39he190548_0 - matplotlib-inline=0.1.6=pyhd8ed1ab_0 - mdit-py-plugins=0.3.5=pyhd8ed1ab_0 - mdurl=0.1.0=pyhd8ed1ab_0 - memory_profiler=0.61.0=pyhd8ed1ab_0 - mesalib=23.0.2=h3855f93_0 - mistune=2.0.5=pyhd8ed1ab_0 - mpg123=1.31.3=hcb278e6_0 - mpi=1.0=mpich - mpi4py=3.1.4=py39h32b9844_0 - mpich=4.0.3=h846660c_100 - msgpack-python=1.0.5=py39h4b4f3f3_0 - multidict=6.0.4=py39h72bdee0_0 - multipledispatch=0.6.0=py_0 - multiprocess=0.70.14=py39hb9d737c_3 - munch=3.0.0=pyhd8ed1ab_0 - munkres=1.1.4=pyh9f0ad1d_0 - myproxyclient=2.1.0=pyhd8ed1ab_2 - mysql-common=8.0.32=hf1915f5_2 - mysql-libs=8.0.32=hca2cd23_2 - nbclassic=1.0.0=pyhb4ecaf3_1 - nbclient=0.7.4=pyhd8ed1ab_0 - nbconvert=7.4.0=pyhd8ed1ab_0 - nbconvert-core=7.4.0=pyhd8ed1ab_0 - nbconvert-pandoc=7.4.0=pyhd8ed1ab_0 - nbdime=3.2.1=pyhd8ed1ab_0 - nbformat=5.8.0=pyhd8ed1ab_0 - nbresuse=0.4.0=pyhd8ed1ab_0 - nbval=0.9.6=pyh9f0ad1d_0 - nc-time-axis=1.4.1=pyhd8ed1ab_0 - ncurses=6.3=h27087fc_1 - nest-asyncio=1.5.6=pyhd8ed1ab_0 - nested_dict=1.61=pyhd3deb0d_0 - netcdf-fortran=4.6.0=mpi_mpich_h1e13492_2 - netcdf4=1.6.2=nompi_py39hfaa66c4_100 - nettle=3.8.1=hc379101_1 - networkx=3.1=pyhd8ed1ab_0 - nodeenv=1.8.0=pyhd8ed1ab_0 - nodejs=18.15.0=h8d033a5_0 - notebook=6.5.4=pyha770c72_0 - notebook-shim=0.2.3=pyhd8ed1ab_0 - nspr=4.35=h27087fc_0 - nss=3.89=he45b914_0 - numba=0.57.0=py39hb75a051_0 - numcodecs=0.11.0=py39h227be39_1 - numpy=1.23.5=py39h3d75532_0 - numpy_groupies=0.9.22=pyhd8ed1ab_0 - oauthlib=3.2.2=pyhd8ed1ab_0 - openblas=0.3.21=pthreads_h320a7e8_3 - openjpeg=2.5.0=hfec8fc6_2 - openssl=3.1.1=hd590300_0 - orc=1.8.3=hfdbbad2_0 - outcome=1.2.0=pyhd8ed1ab_0 - owslib=0.28.1=pyhd8ed1ab_0 - p11-kit=0.24.1=hc5aa10d_0 - packaging=23.1=pyhd8ed1ab_0 - pamela=1.0.0=py_0 - pandas=1.3.5=py39hde0f152_0 - pandoc=2.19.2=h32600fe_2 - pandocfilters=1.5.0=pyhd8ed1ab_0 - panel=0.14.4=pyhd8ed1ab_0 - parallelio=2.5.10=mpi_mpich_h862c5c2_100 - param=1.13.0=pyh1a96a4e_0 - paramiko=3.2.0=pyhd8ed1ab_0 - parso=0.8.3=pyhd8ed1ab_0 - partd=1.4.0=pyhd8ed1ab_0 - pathos=0.3.0=pyhd8ed1ab_0 - patsy=0.5.3=pyhd8ed1ab_0 - pcre2=10.40=hc3806b6_0 - pexpect=4.8.0=pyh1a96a4e_2 - pickleshare=0.7.5=py_1003 - pillow=9.4.0=py39h2320bf1_1 - pint=0.21=pyhd8ed1ab_0 - pip=23.1.2=pyhd8ed1ab_0 - pixman=0.40.0=h36c2ea0_0 - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_0 - platformdirs=3.5.1=pyhd8ed1ab_0 - plotly=5.14.1=pyhd8ed1ab_0 - pluggy=1.0.0=pyhd8ed1ab_5 - ply=3.11=py_1 - pooch=1.7.0=pyha770c72_3 - poppler=23.01.0=h091648b_0 - poppler-data=0.4.12=hd8ed1ab_0 - postgresql=15.2=h3248436_0 - pox=0.3.2=pyhd8ed1ab_0 - ppft=1.7.6.6=pyhd8ed1ab_0 - pre-commit=3.3.2=pyha770c72_0 - proj=9.1.1=h8ffa02c_2 - prometheus_client=0.17.0=pyhd8ed1ab_0 - prompt-toolkit=3.0.38=pyha770c72_0 - prompt_toolkit=3.0.38=hd8ed1ab_0 - properscoring=0.1=py_0 - protobuf=4.21.12=py39h227be39_0 - pscript=0.7.7=pyhd8ed1ab_0 - psutil=5.9.5=py39h72bdee0_0 - pthread-stubs=0.4=h36c2ea0_1001 - ptyprocess=0.7.0=pyhd3deb0d_0 - pulseaudio=16.1=hcb278e6_3 - pulseaudio-client=16.1=h5195f5e_3 - pulseaudio-daemon=16.1=ha8d29e2_3 - pure_eval=0.2.2=pyhd8ed1ab_0 - pyarrow=10.0.1=py39he4327e9_25_cpu - pyasn1=0.4.8=py_0 - pyasn1-modules=0.2.7=py_0 - pycparser=2.21=pyhd8ed1ab_0 - pyct=0.4.6=py_0 - pyct-core=0.4.6=py_0 - pycurl=7.45.1=py39h9297c8b_3 - pydantic=1.10.8=py39hd1e30aa_0 - pydap=3.4.0=pyhd8ed1ab_0 - pydeck=0.8.0=pyhd8ed1ab_0 - pygeos=0.14=py39hc9151fd_0 - pygments=2.15.1=pyhd8ed1ab_0 - pyjwt=2.7.0=pyhd8ed1ab_0 - pymbolic=2022.2=pyhd8ed1ab_0 - pymetalink=6.4=pyhd8ed1ab_0 - pympler=1.0.1=pyhd8ed1ab_0 - pynacl=1.5.0=py39hb9d737c_2 - pyogrio=0.5.1=py39hbc5ff6d_0 - pyopenssl=23.1.1=pyhd8ed1ab_0 - pyparsing=3.0.9=pyhd8ed1ab_0 - pyproj=3.5.0=py39hf8a5840_0 - pyqt=5.15.7=py39h5c7b992_3 - pyqt5-sip=12.11.0=py39h227be39_3 - pyrsistent=0.19.3=py39h72bdee0_0 - pyshp=2.3.1=pyhd8ed1ab_0 - pysocks=1.7.1=pyha2e5f31_6 - pytest=7.3.1=pyhd8ed1ab_0 - pytest-xdist=3.3.1=pyhd8ed1ab_0 - python=3.9.16=h2782a2a_0_cpython - python-dateutil=2.8.2=pyhd8ed1ab_0 - python-eccodes=1.5.1=py39h389d5f1_0 - python-fastjsonschema=2.17.1=pyhd8ed1ab_0 - python-json-logger=2.0.7=pyhd8ed1ab_0 - python-pptx=0.6.21=pyhd8ed1ab_0 - python-tzdata=2023.3=pyhd8ed1ab_0 - python_abi=3.9=3_cp39 - pytools=2022.1.14=pyhd8ed1ab_0 - pytz=2023.3=pyhd8ed1ab_0 - pyu2f=0.1.5=pyhd8ed1ab_0 - pyviz_comms=2.3.0=pyhd8ed1ab_0 - pywavelets=1.4.1=py39h389d5f1_0 - pyyaml=6.0=py39hb9d737c_5 - pyzmq=25.0.2=py39h0be026e_0 - qt-main=5.15.8=h5d23da1_6 - qtconsole=5.4.3=pyhd8ed1ab_0 - qtconsole-base=5.4.3=pyha770c72_0 - qtpy=2.3.1=pyhd8ed1ab_0 - rasterio=1.3.6=py39h09b1985_0 - raven-hydro=0.2.1=py39h8e2dbb5_1 - ravenpy=0.12.0=py39hf3d152e_2 - rdma-core=28.9=h59595ed_1 - re2=2023.03.02=h8c504da_0 - readline=8.2=h8228510_1 - regionmask=0.9.0=pyhd8ed1ab_0 - requests=2.31.0=pyhd8ed1ab_0 - requests-cache=1.0.1=pyhd8ed1ab_0 - requests-magpie=0.2.0=pyhd8ed1ab_0 - requests-oauthlib=1.3.1=pyhd8ed1ab_0 - retrying=1.3.3=py_2 - rfc3339-validator=0.1.4=pyhd8ed1ab_0 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rioxarray=0.14.1=pyhd8ed1ab_0 - roocs-utils=0.6.4=pyh1a96a4e_0 - rsa=4.9=pyhd8ed1ab_0 - rtree=1.0.1=py39hb102c33_1 - ruamel.yaml=0.17.30=py39hd1e30aa_0 - ruamel.yaml.clib=0.2.7=py39h72bdee0_1 - s2n=1.3.44=h06160fa_0 - s3fs=2023.5.0=pyhd8ed1ab_0 - s3transfer=0.6.1=pyhd8ed1ab_0 - scikit-image=0.20.0=py39h7c7b5a8_1 - scikit-learn=1.2.2=py39hc236052_2 - scipy=1.9.1=py39h8ba3f38_0 - scp=0.14.5=pyhd8ed1ab_0 - seaborn=0.12.2=hd8ed1ab_0 - seaborn-base=0.12.2=pyhd8ed1ab_0 - selenium=4.9.1=pyhd8ed1ab_0 - semver=3.0.0=pyhd8ed1ab_0 - send2trash=1.8.2=pyh41d4057_0 - setuptools=59.8.0=py39hf3d152e_1 - shapely=2.0.1=py39hc9151fd_0 - simpervisor=1.0.0=pyhd8ed1ab_0 - sip=6.7.9=py39h3d6467e_0 - siphon=0.9=pyhd8ed1ab_2 - six=1.16.0=pyh6c4a22f_0 - smmap=3.0.5=pyh44b312d_0 - snappy=1.1.10=h9fff704_0 - sniffio=1.3.0=pyhd8ed1ab_0 - snuggs=1.4.7=py_0 - sortedcontainers=2.4.0=pyhd8ed1ab_0 - soupsieve=2.3.2.post1=pyhd8ed1ab_0 - sparse=0.14.0=pyhd8ed1ab_0 - spotpy=1.6.2=pyhd8ed1ab_0 - sqlalchemy=2.0.15=py39hd1e30aa_0 - sqlite=3.42.0=h2c6b66d_0 - stack_data=0.6.2=pyhd8ed1ab_0 - statsmodels=0.14.0=py39h0f8d45d_1 - streamlit=1.8.0=pyhd8ed1ab_0 - tblib=1.7.0=pyhd8ed1ab_0 - tenacity=8.2.2=pyhd8ed1ab_0 - terminado=0.17.1=pyh41d4057_0 - threadpoolctl=3.1.0=pyh8a188c0_0 - threddsclient=0.4.2=py_0 - tifffile=2023.4.12=pyhd8ed1ab_0 - tiledb=2.13.2=hd532e3d_0 - tinycss2=1.2.1=pyhd8ed1ab_0 - tk=8.6.12=h27826a3_0 - toml=0.10.2=pyhd8ed1ab_0 - tomli=2.0.1=pyhd8ed1ab_0 - toolz=0.12.0=pyhd8ed1ab_0 - tornado=6.3.2=py39hd1e30aa_0 - tqdm=4.65.0=pyhd8ed1ab_1 - traitlets=5.9.0=pyhd8ed1ab_0 - traittypes=0.2.1=pyh9f0ad1d_2 - trio=0.22.0=py39hf3d152e_1 - trio-websocket=0.10.2=pyhd8ed1ab_0 - typing-extensions=4.6.2=hd8ed1ab_0 - typing_extensions=4.6.2=pyha770c72_0 - tzcode=2023c=h0b41bf4_0 - tzdata=2023c=h71feb2d_0 - tzlocal=5.0.1=py39hf3d152e_0 - ucx=1.14.1=hf587318_1 - ujson=5.7.0=py39h227be39_0 - ukkonen=1.0.1=py39hf939315_3 - unicodedata2=15.0.0=py39hb9d737c_0 - url-normalize=1.4.3=pyhd8ed1ab_0 - urllib3=1.26.15=pyhd8ed1ab_0 - urlpath=1.2.0=pyhd8ed1ab_0 - validators=0.20.0=pyhd8ed1ab_0 - virtualenv=20.23.0=pyhd8ed1ab_0 - voila=0.4.0=pyhd8ed1ab_0 - watchdog=3.0.0=py39hf3d152e_0 - wcwidth=0.2.6=pyhd8ed1ab_0 - webencodings=0.5.1=py_1 - webob=1.8.7=pyhd8ed1ab_0 - websocket-client=1.5.2=pyhd8ed1ab_0 - websockets=11.0.3=py39hd1e30aa_0 - werkzeug=2.3.4=pyhd8ed1ab_0 - wget=1.20.3=ha35d2d1_1 - wheel=0.40.0=pyhd8ed1ab_0 - widgetsnbextension=4.0.7=pyhd8ed1ab_0 - wrapt=1.15.0=py39h72bdee0_0 - wsproto=1.2.0=pyhd8ed1ab_0 - xarray=2023.1.0=pyhd8ed1ab_0 - xcb-util=0.4.0=h516909a_0 - xcb-util-image=0.4.0=h166bdaf_0 - xcb-util-keysyms=0.4.0=h516909a_0 - xcb-util-renderutil=0.3.9=h166bdaf_0 - xcb-util-wm=0.4.1=h516909a_0 - xclim=0.43.0=py39hf3d152e_1 - xerces-c=3.2.4=h55805fa_1 - xesmf=0.7.1=pyhd8ed1ab_0 - xeus=3.0.5=hac2b420_1 - xeus-python=0.15.9=py39h7633fee_0 - xeus-python-shell=0.5.0=pyhd8ed1ab_0 - xeus-python-shell-raw=0.5.0=pyhd8ed1ab_0 - xeus-zmq=1.0.3=h0541b36_0 - xhistogram=0.3.2=pyhd8ed1ab_0 - xkeyboard-config=2.38=h0b41bf4_0 - xlrd=2.0.1=pyhd8ed1ab_3 - xlsxwriter=3.1.2=pyhd8ed1ab_0 - xorg-damageproto=1.2.1=h7f98852_1002 - xorg-fixesproto=5.0=h7f98852_1002 - xorg-glproto=1.4.17=h7f98852_1002 - xorg-inputproto=2.3.2=h7f98852_1002 - xorg-kbproto=1.0.7=h7f98852_1002 - xorg-libice=1.1.1=hd590300_0 - xorg-libsm=1.2.4=h7391055_0 - xorg-libx11=1.8.4=h0b41bf4_0 - xorg-libxau=1.0.11=hd590300_0 - xorg-libxdamage=1.1.5=h7f98852_1 - xorg-libxdmcp=1.1.3=h7f98852_0 - xorg-libxext=1.3.4=h0b41bf4_2 - xorg-libxfixes=5.0.3=h7f98852_1004 - xorg-libxi=1.7.10=h7f98852_0 - xorg-libxrandr=1.5.2=h7f98852_1 - xorg-libxrender=0.9.10=h7f98852_1003 - xorg-randrproto=1.5.0=h7f98852_1001 - xorg-renderproto=0.11.1=h7f98852_1002 - xorg-util-macros=1.19.3=h7f98852_0 - xorg-xextproto=7.3.0=h0b41bf4_1003 - xorg-xf86vidmodeproto=2.3.1=h7f98852_1002 - xorg-xproto=7.0.31=h7f98852_1007 - xrft=1.0.1=pyhd8ed1ab_0 - xskillscore=0.0.24=pyhd8ed1ab_0 - xyzservices=2023.5.0=pyhd8ed1ab_1 - xz=5.2.6=h166bdaf_0 - y-py=0.5.9=py39h50f1755_0 - yaml=0.2.5=h7f98852_2 - yarl=1.9.2=py39hd1e30aa_0 - ypy-websocket=0.8.2=pyhd8ed1ab_0 - zarr=2.14.2=pyhd8ed1ab_0 - zeromq=4.3.4=h9c3ff4c_1 - zfp=1.0.0=h27087fc_3 - zict=3.0.0=pyhd8ed1ab_0 - zipp=3.15.0=pyhd8ed1ab_0 - zlib=1.2.13=h166bdaf_4 - zlib-ng=2.0.7=h0b41bf4_0 - zstd=1.5.2=h3eb15da_6 - pip: - arrow==1.2.3 - astunparse==1.6.3 - colour==0.1.5 - dnspython==2.3.0 - email-validator==2.0.0.post2 - fqdn==1.5.1 - geojson==3.0.1 - hsclient==0.3.3 - hsmodels==0.5.5 - ipython-blocking==0.3.1 - isodate==0.6.1 - isoduration==20.11.0 - jsonpointer==2.3 - jupyterlab-logout==0.5.0 - jupyterlab-tabular-data-editor==1.0.0 - jupyternotify==0.1.15 - pixiedust==1.1.19 - pytest-tornasync==0.6.0.post2 - rdflib==5.0.0 - uri-template==1.2.0 - webcolors==1.13 - xmltodict==0.13.0 - xncml==0.2 - xsdata==23.5 prefix: /opt/conda/envs/birdy ``` Docker build log [230530-1-buildlogs.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/11621136/230530-1-buildlogs.txt) ``` Sending build context to Docker daemon 22.02kB Step 1/18 : FROM continuumio/miniconda3 ---> fbedfde8d058 Step 2/18 : RUN conda update conda -n base && conda install mamba -n base -c conda-forge -c defaults && conda clean --all --yes && conda config --set channel_priority strict && wget -qO- https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -C /usr/local -xvj bin/micromamba ---> Using cache ---> 418cc0c03798 Step 3/18 : ENV MAMBA_ROOT_PREFIX="/opt/conda" ---> Using cache ---> cf727f7e31d9 Step 4/18 : RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y git mercurial gcc unzip patch fonts-humor-sans firefox-esr x11-utils && apt-get clean ---> Using cache ---> c1929f372dc2 Step 5/18 : RUN groupadd --gid 1000 jenkins && useradd --uid 1000 --gid jenkins --create-home jenkins && chmod -R a+rwX /opt/conda ---> Using cache ---> 85378190e665 Step 6/18 : COPY environment.yml /environment.yml ---> c06bfdb4ac56 Step 7/18 : RUN umask 0000 && mamba create --name birdy --channel conda-forge --channel defaults xclim ravenpy python=3.9 --yes && mamba env update --name birdy --file /environment.yml && mamba clean --all --yes ---> Running in 95270a0111d6 Transaction Prefix: /opt/conda/envs/birdy Updating specs: - xclim - ravenpy - python=3.9 Package Version Build Channel Size ────────────────────────────────────────────────────────────────────────────────────────────────────────────── Install: ────────────────────────────────────────────────────────────────────────────────────────────────────────────── + _libgcc_mutex 0.1 conda_forge conda-forge/linux-64 3kB + _openmp_mutex 4.5 2_gnu conda-forge/linux-64 24kB + affine 2.4.0 pyhd8ed1ab_0 conda-forge/noarch 19kB + appdirs 1.4.4 pyh9f0ad1d_0 conda-forge/noarch 13kB + asttokens 2.2.1 pyhd8ed1ab_0 conda-forge/noarch 28kB + attrs 23.1.0 pyh71513ae_1 conda-forge/noarch 55kB + aws-c-auth 0.6.27 he072965_1 conda-forge/linux-64 102kB + aws-c-cal 0.5.26 hf677bf3_1 conda-forge/linux-64 50kB + aws-c-common 0.8.19 hd590300_0 conda-forge/linux-64 196kB + aws-c-compression 0.2.16 hbad4bc6_7 conda-forge/linux-64 19kB + aws-c-event-stream 0.2.20 hb4b372c_7 conda-forge/linux-64 54kB + aws-c-http 0.7.7 h2632f9a_4 conda-forge/linux-64 192kB + aws-c-io 0.13.21 h9fef7b8_5 conda-forge/linux-64 140kB + aws-c-mqtt 0.8.11 h2282364_1 conda-forge/linux-64 148kB + aws-c-s3 0.3.0 hcb5a9b2_2 conda-forge/linux-64 76kB + aws-c-sdkutils 0.1.9 hbad4bc6_2 conda-forge/linux-64 54kB + aws-checksums 0.1.14 hbad4bc6_7 conda-forge/linux-64 50kB + aws-crt-cpp 0.20.2 he0fdcb3_0 conda-forge/linux-64 319kB + aws-sdk-cpp 1.10.57 h059227d_13 conda-forge/linux-64 4MB + backcall 0.2.0 pyh9f0ad1d_0 conda-forge/noarch 14kB + backports 1.0 pyhd8ed1ab_3 conda-forge/noarch 6kB + backports.functools_lru_cache 1.6.4 pyhd8ed1ab_0 conda-forge/noarch 9kB + bias_correction 0.4 pyhd8ed1ab_0 conda-forge/noarch 8kB + blosc 1.21.4 h0f2a231_0 conda-forge/linux-64 49kB + bokeh 3.1.1 pyhd8ed1ab_0 conda-forge/noarch 6MB + boltons 23.0.0 pyhd8ed1ab_0 conda-forge/noarch 303kB + boost-cpp 1.78.0 h5adbc97_2 conda-forge/linux-64 16MB + bottleneck 1.3.7 py39h389d5f1_0 conda-forge/linux-64 122kB + branca 0.6.0 pyhd8ed1ab_0 conda-forge/noarch 28kB + brotli 1.0.9 h166bdaf_8 conda-forge/linux-64 19kB + brotli-bin 1.0.9 h166bdaf_8 conda-forge/linux-64 20kB + bzip2 1.0.8 h7f98852_4 conda-forge/linux-64 496kB + c-ares 1.19.1 hd590300_0 conda-forge/linux-64 113kB + ca-certificates 2023.5.7 hbcca054_0 conda-forge/linux-64 Cached + cairo 1.16.0 ha61ee94_1014 conda-forge/linux-64 2MB + certifi 2023.5.7 pyhd8ed1ab_0 conda-forge/noarch Cached + cf_xarray 0.8.1 pyhd8ed1ab_0 conda-forge/noarch 52kB + cfitsio 4.2.0 hd9d235c_0 …
Several fixes for new Jupyter env in Ouranosinc/PAVICS-e2e-workflow-tests#115
Fixes #290, fixes #289