From e7c5cd5ace443e727b0bc208c763c8ddc3ec1451 Mon Sep 17 00:00:00 2001 From: Greg Munday <100290135+mo-gregmunday@users.noreply.github.com> Date: Thu, 20 Jun 2024 09:43:58 +0100 Subject: [PATCH 01/16] CMIP6 climate patterns (#2785) Co-authored-by: Jon Lillis Co-authored-by: Emma Hogan --- .zenodo.json | 5 + CITATION.cff | 5 + .../figures/climate_patterns/patterns.png | Bin 0 -> 184589 bytes doc/sphinx/source/recipes/index.rst | 1 + .../recipes/recipe_climate_patterns.rst | 107 +++ esmvaltool/config-references.yml | 5 + .../climate_patterns/climate_patterns.py | 658 ++++++++++++++++++ .../diag_scripts/climate_patterns/plotting.py | 128 ++++ .../climate_patterns/sub_functions.py | 267 +++++++ .../recipes/recipe_climate_patterns.yml | 249 +++++++ .../references/huntingford2000climdyn.bibtex | 14 + esmvaltool/references/mathison2024gmd.bibtex | 10 + 12 files changed, 1449 insertions(+) create mode 100644 doc/sphinx/source/recipes/figures/climate_patterns/patterns.png create mode 100644 doc/sphinx/source/recipes/recipe_climate_patterns.rst create mode 100644 esmvaltool/diag_scripts/climate_patterns/climate_patterns.py create mode 100644 esmvaltool/diag_scripts/climate_patterns/plotting.py create mode 100644 esmvaltool/diag_scripts/climate_patterns/sub_functions.py create mode 100644 esmvaltool/recipes/recipe_climate_patterns.yml create mode 100644 esmvaltool/references/huntingford2000climdyn.bibtex create mode 100644 esmvaltool/references/mathison2024gmd.bibtex diff --git a/.zenodo.json b/.zenodo.json index c6a731981f..89a81326cb 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -380,6 +380,11 @@ "affiliation": "DLR, Germany", "name": "Bonnet, Pauline", "orcid": "0000-0003-3780-0784" + }, + { + "affiliation": "MetOffice, UK", + "name": "Munday, Gregory", + "orcid": "0000-0003-4750-9923" } ], "description": "ESMValTool: A community diagnostic and performance metrics tool for routine evaluation of Earth system models in CMIP.", diff --git a/CITATION.cff b/CITATION.cff index cd621538b7..7ed624d1d7 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -391,6 +391,11 @@ authors: family-names: Bonnet given-names: Pauline orcid: "https://orcid.org/0000-0003-3780-0784" + - + affiliation: "MetOffice, UK" + family-names: Munday + given-names: Gregory + orcid: "https://orcid.org/0000-0003-4750-9923" cff-version: 1.2.0 date-released: 2023-12-20 diff --git a/doc/sphinx/source/recipes/figures/climate_patterns/patterns.png b/doc/sphinx/source/recipes/figures/climate_patterns/patterns.png new file mode 100644 index 0000000000000000000000000000000000000000..396fd788302f32393bb3fc4e29ef6ee4812d3b5c GIT binary patch literal 184589 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

H)5r+ngrV+ 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 5: + axis[x_pos, y_pos].set_xlabel("Time") + + # January patterns + plt.subplot(3, 3, j + 1) + qplt.pcolormesh(cube[0]) + + plt.tight_layout() + plt.savefig(os.path.join(plot_path, "Patterns"), dpi=300) + plt.close() + + fig.tight_layout() + fig.savefig(os.path.join(plot_path, "Patterns Timeseries"), dpi=300) + + +def plot_timeseries(cubelist, plot_path, title, save_name): + """Plot timeseries and maps of climatologies, anomalies and patterns. + + Parameters + ---------- + cubelist : cubelist + input cubelist for plotting per variable + plot_path : path + path to plot_dir + title: str + title for the figure + save_name: str + name for the saved figure + + Returns + ------- + None + """ + fig, axs = plt.subplots(3, 3, figsize=(14, 12), sharex=True) + fig.suptitle(f"{title}", fontsize=18, y=0.98) + + for j, cube in enumerate(cubelist): + # determining plot positions + x_pos, y_pos = subplot_positions(j) + yrs = (1850 + np.arange(cube.shape[0])).astype("float") + months = np.arange(1, 13) + + # anomaly timeseries + avg_cube = area_statistics(cube, 'mean').data + if save_name == "Climatologies": + axs[x_pos, y_pos].plot(months, avg_cube) + else: + axs[x_pos, y_pos].plot(yrs, avg_cube) + axs[x_pos, + y_pos].set_ylabel(cube.long_name + " / " + str(cube.units)) + if j > 5: + axs[x_pos, y_pos].set_xlabel("Time") + + fig.tight_layout() + fig.savefig(os.path.join(plot_path, f"{save_name}"), dpi=300) diff --git a/esmvaltool/diag_scripts/climate_patterns/sub_functions.py b/esmvaltool/diag_scripts/climate_patterns/sub_functions.py new file mode 100644 index 0000000000..4b3fe00141 --- /dev/null +++ b/esmvaltool/diag_scripts/climate_patterns/sub_functions.py @@ -0,0 +1,267 @@ +# (C) Crown Copyright 2022-2024, Met Office. +"""Script containing relevant sub-functions for driving scripts. + +Author +------ +Gregory Munday (Met Office, UK) +""" + +import logging +import multiprocessing as mp +import os +from functools import partial +from pathlib import Path + +import iris +import iris.analysis.cartography +import iris.coord_categorisation +import dask as da + +logger = logging.getLogger(Path(__file__).stem) + + +def load_cube(filename): + """Load cube, remove any dimensions of length: 1. + + Parameters + ---------- + filename : path + path to load cube file + + Returns + ------- + cube : cube + a cube + """ + logger.debug("Loading %s", filename) + cube = iris.load_cube(filename) + cube = iris.util.squeeze(cube) + + return cube + + +def ocean_fraction_calc(sftlf): + """Calculate gridded land and ocean fractions. + + Parameters + ---------- + sftlf: cube + land-fraction cube from piControl experiment + + Returns + ------- + ocean_frac: cube + ocean_fraction cube for area-weights + land_frac: cube + land_fraction cube for area-weights + """ + sftlf.coord("latitude").coord_system = iris.coord_systems.GeogCS( + 6371229.0 + ) + sftlf.coord("longitude").coord_system = iris.coord_systems.GeogCS( + 6371229.0 + ) + sftof = 100 - sftlf + + ocean_frac = sftof / 100 + land_frac = sftlf / 100 + + return ocean_frac, land_frac + + +def area_avg_landsea(cube, + ocean_frac, + land_frac, + land=True, + return_cube=False): + """Calculate the global mean of a variable in a cube. + + Parameters + ---------- + cube : cube + input cube + ocean_frac : cube + ocean fraction cube, found from sftlf + land_frac : cube + land fraction cube, sftlf + land : bool + option to weight be land or ocean + return_cube : bool + option to return a cube or array + + Returns + ------- + cube2 : cube + cube with collapsed lat-lons, global mean over time + cube2.data : arr + array with collapsed lat-lons, global mean over time + """ + if not cube.coord("latitude").has_bounds(): + cube.coord("latitude").guess_bounds() + if not cube.coord("longitude").has_bounds(): + cube.coord("longitude").guess_bounds() + + global_weights = iris.analysis.cartography.area_weights( + cube, + normalize=False + ) + + if land is False: + ocean_frac.data = da.array.ma.masked_less(ocean_frac.core_data(), 0.01) + weights = iris.analysis.cartography.area_weights( + ocean_frac, + normalize=False + ) + ocean_area = ( + ocean_frac.collapsed( + ["latitude", "longitude"], iris.analysis.SUM, weights=weights + ) + / 1e12 + ) + cube2 = cube * global_weights * ocean_frac + + cube2 = ( + cube2.collapsed(["latitude", "longitude"], iris.analysis.SUM) + / 1e12 + / ocean_area + ) + + if land: + land_frac.data = da.array.ma.masked_less(land_frac.core_data(), 0.01) + weights = iris.analysis.cartography.area_weights( + land_frac, + normalize=False + ) + land_area = ( + land_frac.collapsed( + ["latitude", "longitude"], iris.analysis.SUM, weights=weights + ) + / 1e12 + ) + + # Iris is too strict so we need to use core_data in this calculation + cube2 = cube * global_weights * land_frac.core_data() + cube2 = ( + cube2.collapsed(["latitude", "longitude"], iris.analysis.SUM) + / 1e12 + / land_area + ) + + if return_cube: + return cube2 + + return cube2.data + + +def make_model_dirs(cfg, model): + """Create directories for each input model for saving. + + Parameters + ---------- + cfg: dict + Dictionary passed in by ESMValTool preprocessors + model : str + model name + + Returns + ------- + model_work_dir : path + path to specific model directory in work_dir + model_plot_dir : path + path to specific plot directory in plot_dir + """ + work_path = cfg["work_dir"] + plot_path = cfg["plot_dir"] + model_work_dir = os.path.join(work_path, model) + model_plot_dir = os.path.join(plot_path, model) + + if not os.path.exists(model_work_dir): + os.mkdir(model_work_dir) + if not os.path.exists(model_plot_dir): + os.mkdir(model_plot_dir) + + return model_work_dir, model_plot_dir + + +def rename_variables(cube, has_orig_vars=True, new_extension=""): + """Rename variables and a coord to fit in JULES framework. + + Parameters + ---------- + cube : cube + input cube + has_orig_vars : bool + if True, rename to new var names with correct extension + new_extension : str + extension to add to variable names + + Returns + ------- + cube : cube + cube with renamed variables + """ + original_var_names = ["tas", "range_tl1", "huss", "pr", + "sfcWind", "ps", "rsds", "rlds"] + new_var_names = ["tl1", "range_tl1", "ql1", "precip", + "wind", "pstar", "swdown", "lwdown"] + long_var_names = [ + "Air Temperature", + "Diurnal Range", + "Specific Humidity", + "Precipitation", + "Wind Speed", + "Surface Pressure", + "Surface Downwelling Shortwave Radiation", + "Surface Downwelling Longwave Radiation" + ] + for orig_var, new_var, long_var in zip( + original_var_names, new_var_names, long_var_names + ): + if has_orig_vars: + if cube.var_name == orig_var: + cube.var_name = f"{new_var}{new_extension}" + cube.coord("month_number").rename("imogen_drive") + return cube + else: + if cube.var_name == f"{new_var}_anom": + cube.rename(long_var) + cube.var_name = f"{new_var}_patt" + return cube + if cube.var_name == f"{new_var}_patt": + cube.rename(long_var) + cube.var_name = orig_var + cube.coord("imogen_drive").rename("month_number") + return cube + + return None + + +def parallelise(function, processes=None): + """Parallelise any function, by George Ford, Met Office. + + Parameters + ---------- + function : function + function to be parallelised + processes : int + number of threads to be used in parallelisation + + Returns + ------- + result : any + results of parallelised elements + """ + if processes is None: + processes = max(1, mp.cpu_count() - 1) + if processes <= 0: + processes = 1 + + def easy_parallise(func, sequence, cfg): + with mp.Pool(processes=processes) as pool: + config_wrapper = partial(func, cfg=cfg) + result = pool.map_async(config_wrapper, sequence).get() + pool.close() + pool.join() + return result + + return partial(easy_parallise, function) diff --git a/esmvaltool/recipes/recipe_climate_patterns.yml b/esmvaltool/recipes/recipe_climate_patterns.yml new file mode 100644 index 0000000000..08e0c51779 --- /dev/null +++ b/esmvaltool/recipes/recipe_climate_patterns.yml @@ -0,0 +1,249 @@ +# ESMValTool +# recipe_climate_patterns.yml +--- +documentation: + description: Generating climate patterns from CMIP6 models. + title: Generating Climate Patterns + + authors: + - munday_gregory + + maintainer: + - munday_gregory + + references: + - mathison2024gmd + - huntingford2000climdyn + +preprocessors: + global_mean_monthly: + monthly_statistics: + operator: mean + + regrid: + target_grid: {start_longitude: -180, end_longitude: 176.25, step_longitude: 3.75, + start_latitude: -55, end_latitude: 82.5, step_latitude: 2.5} + scheme: linear + + downscale_sftlf: + regrid: + target_grid: {start_longitude: -180, end_longitude: 176.25, step_longitude: 3.75, + start_latitude: -55, end_latitude: 82.5, step_latitude: 2.5} + scheme: linear + +monthly_global_settings: &monthly_global_settings + mip: Amon + project: CMIP6 + preprocessor: global_mean_monthly + +monthly_global_settings_day: &monthly_global_settings_day + mip: day + project: CMIP6 + preprocessor: global_mean_monthly + + +CMIP6_landfrac: &cmip6_landfrac + - {dataset: ACCESS-CM2, exp: piControl, ensemble: r1i1p1f1, grid: gn, institute: CSIRO-ARCCSS} + - {dataset: ACCESS-ESM1-5, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: AWI-CM-1-1-MR, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: BCC-CSM2-MR, exp: hist-resIPO,ensemble: r1i1p1f1, grid: gn} + - {dataset: CanESM5, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: CanESM5-CanOE, exp: piControl, ensemble: r1i1p2f1, grid: gn} + - {dataset: CanESM5-1, exp: piControl, ensemble: r1i1p1f1, grid: gn, institute: CCCma} + # - {dataset: CAS-ESM2-0, exp: piControl, ensemble: r1i1p1f1, grid: gn} # Global only + - {dataset: CMCC-ESM2, exp: piControl, ensemble: r1i1p1f1, grid: gn} + # - {dataset: CMCC-CM2-SR5, exp: piControl, ensemble: r1i1p1f1, grid: gn} # No tasmin/tasmax + - {dataset: CNRM-CM6-1, exp: piControl, ensemble: r1i1p1f2, grid: gr} + - {dataset: CNRM-CM6-1-HR, exp: piControl, ensemble: r1i1p1f2, grid: gr} + - {dataset: CNRM-ESM2-1, exp: piControl, ensemble: r1i1p1f2, grid: gr} + # - {dataset: E3SM-1-0, exp: piControl, ensemble: r1i1p1f1, grid: gr} # Tasmax == tasmin + - {dataset: EC-Earth3, exp: piControl, ensemble: r1i1p1f1, grid: gr} + # - {dataset: EC-Earth3-CC, exp: piControl, ensemble: r1i1p1f1, grid: gr} # Global only + - {dataset: EC-Earth3-Veg, exp: piControl, ensemble: r1i1p1f1, grid: gr} + # - {dataset: FGOALS-f3-L, exp: historical, ensemble: r1i1p1f1, grid: gr} # No tasmin/tasmax + - {dataset: FGOALS-g3, exp: piControl, ensemble: r1i1p1f1, grid: gn} + # - {dataset: FIO-ESM-2-0, exp: piControl, ensemble: r1i1p1f1, grid: gn} # Global only + - {dataset: GFDL-CM4, exp: piControl, ensemble: r1i1p1f1, grid: gr1} + - {dataset: GFDL-ESM4, exp: ssp370, ensemble: r1i1p1f1, grid: gr1} + - {dataset: GISS-E2-1-H, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: GISS-E2-1-G, exp: piControl, ensemble: r1i1p5f1, grid: gn} + - {dataset: GISS-E2-2-G, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: HadGEM3-GC31-LL, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: HadGEM3-GC31-MM, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: INM-CM4-8, exp: piControl, ensemble: r1i1p1f1, grid: gr1} + - {dataset: INM-CM5-0, exp: abrupt-4xCO2, ensemble: r1i1p1f1, grid: gr1} + - {dataset: IPSL-CM6A-LR, exp: piControl, ensemble: r1i1p1f1, grid: gr} + # - {dataset: KACE-1-0-G, exp: piControl, ensemble: r1i1p1f1, grid: gr} # Global only, weird tasmin/tasmax + # - {dataset: KIOST-ESM, exp: piControl, ensemble: r1i1p1f1, grid: gr} # Global only + - {dataset: MIROC6, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: MIROC-ES2L, exp: piControl, ensemble: r1i1p1f2, grid: gn} + - {dataset: MIROC-ES2H, exp: piControl, ensemble: r1i1p4f2, grid: gn} + - {dataset: MPI-ESM1-2-HR, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: MPI-ESM1-2-LR, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: MRI-ESM2-0, exp: piControl, ensemble: r1i1p1f1, grid: gn} + # - {dataset: NorESM2-LM, exp: piControl, ensemble: r1i1p1f1, grid: gn} # Global only, tasmax == tasmin + - {dataset: NorESM2-MM, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: TaiESM1, exp: piControl, ensemble: r1i1p1f1, grid: gn} + - {dataset: UKESM1-0-LL, exp: piControl, ensemble: r1i1p1f2, grid: gn} + +CMIP6_no_tasmax: &cmip6_no_tasmax + # - {dataset: E3SM-1-0, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr, start_year: 1850, end_year: 2099} # bad tasmin/tasmax + # - {dataset: NorESM2-LM, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} # bad tasmin/tasmax + - {dataset: NorESM2-MM, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: TaiESM1, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + +CMIP6_DAY: &cmip6_day + # - {dataset: E3SM-1-0, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr, start_year: 1850, end_year: 2099} # bad tasmin/tasmax + # - {dataset: NorESM2-LM, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} # bad tasmin/tasmax + - {dataset: NorESM2-MM, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: TaiESM1, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + +CMIP6_FULL: &cmip6_full + - {dataset: ACCESS-CM2, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100, institute: CSIRO-ARCCSS} + - {dataset: ACCESS-ESM1-5, exp: [historical, ssp585], ensemble: r3i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: AWI-CM-1-1-MR, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: BCC-CSM2-MR, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: CanESM5, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: CanESM5-1, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100, institute: CCCma} # optional extra + - {dataset: CanESM5-CanOE, exp: [historical, ssp585], ensemble: r1i1p2f1, grid: gn, start_year: 1850, end_year: 2100} + # - {dataset: CAS-ESM2-0, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} # Global only + - {dataset: CMCC-ESM2, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + # - {dataset: CMCC-CM2-SR5, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} # No tasmin/tasmax + - {dataset: CNRM-CM6-1, exp: [historical, ssp585], ensemble: r1i1p1f2, grid: gr, start_year: 1850, end_year: 2100} + - {dataset: CNRM-CM6-1-HR, exp: [historical, ssp585], ensemble: r1i1p1f2, grid: gr, start_year: 1850, end_year: 2100} + - {dataset: CNRM-ESM2-1, exp: [historical, ssp585], ensemble: r1i1p1f2, grid: gr, start_year: 1850, end_year: 2100} + - {dataset: EC-Earth3, exp: [historical, ssp585], ensemble: r11i1p1f1, grid: gr, start_year: 1850, end_year: 2100} + # - {dataset: EC-Earth3-CC, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr, start_year: 1850, end_year: 2100} # Global only + - {dataset: EC-Earth3-Veg, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr, start_year: 1850, end_year: 2100} + # - {dataset: FGOALS-f3-L, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr, start_year: 1850, end_year: 2100} # No tasmin/tasmax + - {dataset: FGOALS-g3, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + # - {dataset: FIO-ESM-2-0, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} # Global only + - {dataset: GFDL-CM4, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr1, start_year: 1850, end_year: 2100} + - {dataset: GFDL-ESM4, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr1, start_year: 1850, end_year: 2100} + - {dataset: GISS-E2-1-H, exp: [historical, ssp585], ensemble: r3i1p1f2, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: GISS-E2-1-G, exp: [historical, ssp585], ensemble: r1i1p5f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: GISS-E2-2-G, exp: [historical, ssp585], ensemble: r1i1p3f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: HadGEM3-GC31-LL, exp: [historical, ssp585], ensemble: r1i1p1f3, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: HadGEM3-GC31-MM, exp: [historical, ssp585], ensemble: r1i1p1f3, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: INM-CM4-8, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr1, start_year: 1850, end_year: 2100} + - {dataset: INM-CM5-0, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr1, start_year: 1850, end_year: 2100} + - {dataset: IPSL-CM6A-LR, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr, start_year: 1850, end_year: 2100} + # - {dataset: KACE-1-0-G, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr, start_year: 1850, end_year: 2100} # bad tasmin/tasmax + # - {dataset: KIOST-ESM, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gr, start_year: 1850, end_year: 2100} # optional extra + - {dataset: MIROC6, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: MIROC-ES2L, exp: [historical, ssp585], ensemble: r1i1p1f2, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: MIROC-ES2H, exp: [historical, ssp585], ensemble: r1i1p4f2, grid: gn, start_year: 1850, end_year: 2100} # optional extra + - {dataset: MPI-ESM1-2-HR, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: MPI-ESM1-2-LR, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: MRI-ESM2-0, exp: [historical, ssp585], ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 2100} + - {dataset: UKESM1-0-LL, exp: [historical, ssp585], ensemble: r1i1p1f2, grid: gn, start_year: 1850, end_year: 2100} + +diagnostics: + monthly_timeseries: + description: Mean monthly variables + + variables: + + # sftlf: + # short_name: sftlf + # mip: fx + # project: CMIP6 + # preprocessor: downscale_sftlf + # additional_datasets: *cmip6_landfrac + + tasmax_585: + short_name: tasmax + <<: *monthly_global_settings + additional_datasets: *cmip6_full + + tasmin_585: + short_name: tasmin + <<: *monthly_global_settings + additional_datasets: *cmip6_full + + tas_585: + short_name: tas + <<: *monthly_global_settings + additional_datasets: *cmip6_full + + huss_585: + short_name: huss + <<: *monthly_global_settings + additional_datasets: *cmip6_full + + pr_585: + short_name: pr + <<: *monthly_global_settings + additional_datasets: *cmip6_full + + sfcWind_585: + short_name: sfcWind + <<: *monthly_global_settings + additional_datasets: *cmip6_full + + ps_585: + short_name: ps + <<: *monthly_global_settings + additional_datasets: *cmip6_full + + rsds_585: + short_name: rsds + <<: *monthly_global_settings + additional_datasets: *cmip6_full + + rlds_585: + short_name: rlds + <<: *monthly_global_settings + additional_datasets: *cmip6_full + + tasmax_585_day: + short_name: tasmax + <<: *monthly_global_settings_day + additional_datasets: *cmip6_day + + tasmin_585_day: + short_name: tasmin + <<: *monthly_global_settings_day + additional_datasets: *cmip6_day + + tas_585_no_tasmax: + short_name: tas + <<: *monthly_global_settings + additional_datasets: *cmip6_no_tasmax + + huss_585_no_tasmax: + short_name: huss + <<: *monthly_global_settings + additional_datasets: *cmip6_no_tasmax + + pr_585_no_tasmax: + short_name: pr + <<: *monthly_global_settings + additional_datasets: *cmip6_no_tasmax + + sfcWind_585_no_tasmax: + short_name: sfcWind + <<: *monthly_global_settings + additional_datasets: *cmip6_no_tasmax + + ps_585_no_tasmax: + short_name: ps + <<: *monthly_global_settings + additional_datasets: *cmip6_no_tasmax + + rsds_585_no_tasmax: + short_name: rsds + <<: *monthly_global_settings + additional_datasets: *cmip6_no_tasmax + + rlds_585_no_tasmax: + short_name: rlds + <<: *monthly_global_settings + additional_datasets: *cmip6_no_tasmax + + scripts: + climate_patterns_script: + script: climate_patterns/climate_patterns.py + jules_mode: false # options: true, false + parallelise: false # options: true, false + area: global # options global, land. If land, uncomment landfrac recipe settings diff --git a/esmvaltool/references/huntingford2000climdyn.bibtex b/esmvaltool/references/huntingford2000climdyn.bibtex new file mode 100644 index 0000000000..69bc072d49 --- /dev/null +++ b/esmvaltool/references/huntingford2000climdyn.bibtex @@ -0,0 +1,14 @@ +@article{huntingford2000, + title = {An analogue model to derive additional climate change scenarios from existing {GCM} simulations}, + volume = {16}, + issn = {1432-0894}, + url = {https://doi.org/10.1007/s003820000067}, + doi = {10.1007/s003820000067}, + abstract = {Changes in land surface driving variables, predicted by GCM transient climate change experiments, are confirmed to exhibit linearity in the global mean land temperature anomaly, ΔTl. The associated constants of proportionality retain spatial and seasonal characteristics of the GCM output, whilst ΔTlis related to radiative forcing anomalies. The resultant analogue model is shown to be robust between GCM runs and as such provides a computationally efficient technique of extending existing GCM experiments to a large range of climate change scenarios. As an example impacts study, the analogue model is used to drive a terrestrial ecosystem model, and predicted changes in terrestrial carbon are found to be similar to those when using GCM anomalies directly.}, + number = {8}, + journal = {Climate Dynamics}, + author = {Huntingford, C. and Cox, P. M.}, + month = aug, + year = {2000}, + pages = {575--586}, +} diff --git a/esmvaltool/references/mathison2024gmd.bibtex b/esmvaltool/references/mathison2024gmd.bibtex new file mode 100644 index 0000000000..a6090db6c7 --- /dev/null +++ b/esmvaltool/references/mathison2024gmd.bibtex @@ -0,0 +1,10 @@ +@Article{mathison2024, + AUTHOR = {Mathison, C. T. and Burke, E. and Kovacs, E. and Munday, G. and Huntingford, C. and Jones, C. and Smith, C. and Steinert, N. and Wiltshire, A. and Gohar, L. and Varney, R.}, + TITLE = {A rapid application emissions-to-impacts tool for scenario assessment: Probabilistic Regional Impacts from Model patterns and Emissions (PRIME)}, + JOURNAL = {EGUsphere}, + VOLUME = {2024}, + YEAR = {2024}, + PAGES = {1--28}, + URL = {https://egusphere.copernicus.org/preprints/2024/egusphere-2023-2932/}, + DOI = {10.5194/egusphere-2023-2932} +} From 304d38b8e1bdf5106714a436c74cec39dc6dd6ee Mon Sep 17 00:00:00 2001 From: Ed <146008263+mo-gill@users.noreply.github.com> Date: Thu, 20 Jun 2024 16:07:12 +0100 Subject: [PATCH 02/16] Improve the formatting of the recipe documentation template (#3652) --- doc/sphinx/source/recipes/recipe_seaborn.rst | 4 ++-- doc/sphinx/source/recipes/recipe_template.rst.template | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/sphinx/source/recipes/recipe_seaborn.rst b/doc/sphinx/source/recipes/recipe_seaborn.rst index 3c8fa64357..4eb3c6571c 100644 --- a/doc/sphinx/source/recipes/recipe_seaborn.rst +++ b/doc/sphinx/source/recipes/recipe_seaborn.rst @@ -16,11 +16,11 @@ Available recipes and diagnostics Recipes are stored in recipes/ - * recipe_seaborn.yml +* recipe_seaborn.yml Diagnostics are stored in diag_scripts/ - * :ref:`seaborn_diag.py ` +* :ref:`seaborn_diag.py ` Variables diff --git a/doc/sphinx/source/recipes/recipe_template.rst.template b/doc/sphinx/source/recipes/recipe_template.rst.template index 55e28ddf7e..6c248ed5d7 100644 --- a/doc/sphinx/source/recipes/recipe_template.rst.template +++ b/doc/sphinx/source/recipes/recipe_template.rst.template @@ -14,11 +14,11 @@ Available recipes and diagnostics Recipes are stored in esmvaltool/recipes/ - * recipe_.yml +* recipe_.yml Diagnostics are stored in esmvaltool/diag_scripts// - * : one line scription +* : one line scription User settings in recipe From 967589c5eda541694e7090770a141632995a4ecf Mon Sep 17 00:00:00 2001 From: Lisa Bock Date: Fri, 21 Jun 2024 14:39:27 +0200 Subject: [PATCH 03/16] Fix recipe_check_obs to be aligned with DKRZ (#3673) --- .../recipes/examples/recipe_check_obs.yml | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/esmvaltool/recipes/examples/recipe_check_obs.yml b/esmvaltool/recipes/examples/recipe_check_obs.yml index bfc6639bc9..10504a3692 100644 --- a/esmvaltool/recipes/examples/recipe_check_obs.yml +++ b/esmvaltool/recipes/examples/recipe_check_obs.yml @@ -23,7 +23,7 @@ diagnostics: variables: pr: additional_datasets: - - {project: OBS6, dataset: AGCD, mip: Amon, tier: 3, + - {project: OBS6, dataset: AGCD, mip: Amon, tier: 2, type: ground, version: v2-0-1} scripts: null @@ -539,7 +539,7 @@ diagnostics: rsutcs: additional_datasets: - {dataset: JRA-25, project: OBS6, mip: Amon, tier: 2, - type: reanaly, version: 1, start_year: 1979, end_year: 2013} + type: reanaly, version: 1, start_year: 1979, end_year: 2007} scripts: null Kadow2020: @@ -932,7 +932,7 @@ diagnostics: variables: od440aer: additional_datasets: - - {dataset: AERONET, project: OBS6, mip: AERmon, tier: 3, type: atmos, version: 20231021} + - {dataset: AERONET, project: OBS6, mip: AERmon, tier: 3, type: atmos, version: 20240406} scripts: null ANUClimate: @@ -1481,10 +1481,10 @@ diagnostics: short_name: rlns mip: E1hr frequency: 1hr - rlus_E1hr: - short_name: rlus - mip: E1hr - frequency: 1hr + #rlus_E1hr: + # short_name: rlus + # mip: E1hr + # frequency: 1hr rsds_E1hr: short_name: rsds mip: E1hr @@ -1495,10 +1495,10 @@ diagnostics: short_name: rsns mip: E1hr frequency: 1hr - rsus_E1hr: - short_name: rsus - mip: E1hr - frequency: 1hr + #rsus_E1hr: + # short_name: rsus + # mip: E1hr + # frequency: 1hr rss_E1hr: short_name: rss mip: E1hr @@ -1565,9 +1565,9 @@ diagnostics: rlns_Amon: short_name: rlns mip: Amon - rlus_Amon: - short_name: rlus - mip: Amon + #rlus_Amon: + # short_name: rlus + # mip: Amon rsds_Amon: short_name: rsds mip: Amon @@ -1577,9 +1577,9 @@ diagnostics: rsns_Amon: short_name: rsns mip: Amon - rsus_Amon: - short_name: rsus - mip: Amon + #rsus_Amon: + # short_name: rsus + # mip: Amon rss_Amon: short_name: rss mip: Amon From ba18b0498e22f8cf1391d35dcee13c8e9792094c Mon Sep 17 00:00:00 2001 From: Lisa Bock Date: Mon, 24 Jun 2024 07:50:58 +0200 Subject: [PATCH 04/16] Fix recipe_bock20jgr_fig_8-10.yml (#3665) --- esmvaltool/recipes/bock20jgr/recipe_bock20jgr_fig_8-10.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/esmvaltool/recipes/bock20jgr/recipe_bock20jgr_fig_8-10.yml b/esmvaltool/recipes/bock20jgr/recipe_bock20jgr_fig_8-10.yml index a01020e709..bc277209d7 100644 --- a/esmvaltool/recipes/bock20jgr/recipe_bock20jgr_fig_8-10.yml +++ b/esmvaltool/recipes/bock20jgr/recipe_bock20jgr_fig_8-10.yml @@ -434,6 +434,8 @@ diagnostics: exp: historical ensemble: r1i1p1 mip: Amon + modeling_realm: atmos + frequency: mon additional_datasets: *cmip5_all fig_9_cmip6: @@ -446,6 +448,8 @@ diagnostics: exp: historical ensemble: r1i1p1f1 mip: Amon + modeling_realm: atmos + frequency: mon grid: gr additional_datasets: *cmip6_all From a9ba8e59d507a77e5ea707387801c028160ec5c1 Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Mon, 24 Jun 2024 09:37:19 +0200 Subject: [PATCH 05/16] Add introduction material on the main documentation page (#3628) --- doc/sphinx/source/index.rst | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/doc/sphinx/source/index.rst b/doc/sphinx/source/index.rst index 9975172bc4..ac9b177fa9 100644 --- a/doc/sphinx/source/index.rst +++ b/doc/sphinx/source/index.rst @@ -6,6 +6,26 @@ Welcome to ESMValTool's documentation! ====================================== +To get a first impression of what ESMValTool and ESMValCore can do for you, +have a look at our blog posts +`Analysis-ready climate data with ESMValCore `_ +and +`ESMValTool: Recipes for solid climate science `_. + +A tutorial is available on https://tutorial.esmvaltool.org. + +A series of video lectures has been created by `ACCESS-NRI `_. +While these are tailored for ACCESS users, they are still very informative. + +.. raw:: html + + + +| +For more detailed information, the documentation is available below. + +Get in touch! Contact information is available :ref:`here `. + .. include:: _sidebar.rst.inc Indices and tables @@ -13,4 +33,3 @@ Indices and tables * :ref:`genindex` * :ref:`search` - From 6f3e3b5b44b588624ad1a2091e901f7cbb05e3a5 Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Mon, 24 Jun 2024 10:23:23 +0200 Subject: [PATCH 06/16] Avoid warning in documentation build (#3675) --- doc/sphinx/source/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/sphinx/source/index.rst b/doc/sphinx/source/index.rst index ac9b177fa9..136c2eba08 100644 --- a/doc/sphinx/source/index.rst +++ b/doc/sphinx/source/index.rst @@ -22,6 +22,7 @@ While these are tailored for ACCESS users, they are still very informative. | + For more detailed information, the documentation is available below. Get in touch! Contact information is available :ref:`here `. From b946c9b5b8f17cc9477f5b033c227dfbc6536ada Mon Sep 17 00:00:00 2001 From: Emma Hogan Date: Mon, 24 Jun 2024 17:24:54 +0100 Subject: [PATCH 07/16] Use `importlib` as the import mode for `pytest` (#3672) --- .../aerosols/aod_aeronet_assess.py | 2 +- .../climate_patterns/climate_patterns.py | 16 ++++++++-------- esmvaltool/diag_scripts/ensclus/ens_anom.py | 11 +++++++++-- .../diag_scripts/ensclus/ens_eof_kmeans.py | 4 ++-- esmvaltool/diag_scripts/ensclus/ens_plots.py | 4 ++-- esmvaltool/diag_scripts/ensclus/ensclus.py | 17 +++++++++++------ esmvaltool/diag_scripts/examples/correlate.py | 2 +- .../iht_toa/single_model_diagnostics.py | 2 +- esmvaltool/diag_scripts/mpqb/mpqb_lineplot.py | 2 +- .../diag_scripts/mpqb/mpqb_lineplot_anncyc.py | 2 +- .../mpqb/mpqb_lineplot_growthrate.py | 2 +- .../weighting/climwip/calibrate_sigmas.py | 16 ++++++++-------- .../diag_scripts/weighting/climwip/main.py | 18 ++++++++++-------- .../diag_scripts/weighting/plot_utilities.py | 3 ++- .../weighting/weighted_temperature_graph.py | 5 ++++- .../weighting/weighted_temperature_map.py | 5 ++++- esmvaltool/diag_scripts/zmnam/zmnam.py | 9 ++++++--- setup.cfg | 1 + 18 files changed, 73 insertions(+), 48 deletions(-) diff --git a/esmvaltool/diag_scripts/aerosols/aod_aeronet_assess.py b/esmvaltool/diag_scripts/aerosols/aod_aeronet_assess.py index 27ab6b2714..3866e3c51a 100644 --- a/esmvaltool/diag_scripts/aerosols/aod_aeronet_assess.py +++ b/esmvaltool/diag_scripts/aerosols/aod_aeronet_assess.py @@ -11,10 +11,10 @@ import matplotlib.pyplot as plt import numpy as np import scipy -from aero_utils import add_bounds, extract_pt from matplotlib import colors, gridspec from numpy import ma +from esmvaltool.diag_scripts.aerosols.aero_utils import add_bounds, extract_pt from esmvaltool.diag_scripts.shared import group_metadata, run_diagnostic from esmvaltool.diag_scripts.shared._base import get_plot_filename diff --git a/esmvaltool/diag_scripts/climate_patterns/climate_patterns.py b/esmvaltool/diag_scripts/climate_patterns/climate_patterns.py index 7fdb98a293..bc265cda00 100644 --- a/esmvaltool/diag_scripts/climate_patterns/climate_patterns.py +++ b/esmvaltool/diag_scripts/climate_patterns/climate_patterns.py @@ -28,24 +28,24 @@ """ import logging -from pathlib import Path import os +from pathlib import Path import iris import iris.coord_categorisation import iris.cube import numpy as np import sklearn.linear_model - -import sub_functions as sf -from plotting import ( - plot_timeseries, - plot_patterns -) from esmvalcore.preprocessor import ( area_statistics, + climate_statistics, extract_time, - climate_statistics +) + +import esmvaltool.diag_scripts.climate_patterns.sub_functions as sf +from esmvaltool.diag_scripts.climate_patterns.plotting import ( + plot_patterns, + plot_timeseries, ) from esmvaltool.diag_scripts.shared import run_diagnostic diff --git a/esmvaltool/diag_scripts/ensclus/ens_anom.py b/esmvaltool/diag_scripts/ensclus/ens_anom.py index a3b664d11a..ef9c303786 100644 --- a/esmvaltool/diag_scripts/ensclus/ens_anom.py +++ b/esmvaltool/diag_scripts/ensclus/ens_anom.py @@ -1,12 +1,19 @@ """Computation of ensemble anomalies based on a desired value.""" import os + import numpy as np from scipy import stats # User-defined packages -from read_netcdf import read_iris, save_n_2d_fields -from sel_season_area import sel_area, sel_season +from esmvaltool.diag_scripts.ensclus.read_netcdf import ( + read_iris, + save_n_2d_fields, +) +from esmvaltool.diag_scripts.ensclus.sel_season_area import ( + sel_area, + sel_season, +) def ens_anom(filenames, dir_output, name_outputs, varname, numens, season, diff --git a/esmvaltool/diag_scripts/ensclus/ens_eof_kmeans.py b/esmvaltool/diag_scripts/ensclus/ens_eof_kmeans.py index 2be17195b0..940af71278 100644 --- a/esmvaltool/diag_scripts/ensclus/ens_eof_kmeans.py +++ b/esmvaltool/diag_scripts/ensclus/ens_eof_kmeans.py @@ -10,8 +10,8 @@ from sklearn.cluster import KMeans # User-defined libraries -from eof_tool import eof_computation -from read_netcdf import read_n_2d_fields +from esmvaltool.diag_scripts.ensclus.eof_tool import eof_computation +from esmvaltool.diag_scripts.ensclus.read_netcdf import read_n_2d_fields def ens_eof_kmeans(dir_output, name_outputs, numens, numpcs, perc, numclus): diff --git a/esmvaltool/diag_scripts/ensclus/ens_plots.py b/esmvaltool/diag_scripts/ensclus/ens_plots.py index 55ad420b08..1b06acd671 100644 --- a/esmvaltool/diag_scripts/ensclus/ens_plots.py +++ b/esmvaltool/diag_scripts/ensclus/ens_plots.py @@ -3,12 +3,12 @@ import math import os +import cartopy.crs as ccrs import matplotlib.pyplot as plt import numpy as np -import cartopy.crs as ccrs # User-defined libraries -from read_netcdf import read_n_2d_fields +from esmvaltool.diag_scripts.ensclus.read_netcdf import read_n_2d_fields def ens_plots(dir_output, dir_plot, name_outputs, numclus, diff --git a/esmvaltool/diag_scripts/ensclus/ensclus.py b/esmvaltool/diag_scripts/ensclus/ensclus.py index a669a9a02d..df06ea411c 100644 --- a/esmvaltool/diag_scripts/ensclus/ensclus.py +++ b/esmvaltool/diag_scripts/ensclus/ensclus.py @@ -13,16 +13,21 @@ 20170710-mavilia_irene: routines written. """ -import os import logging +import os + import numpy as np -from esmvaltool.diag_scripts.shared import group_metadata, run_diagnostic -from esmvaltool.diag_scripts.shared import ProvenanceLogger, sorted_metadata # Import user diagnostic routines -from ens_anom import ens_anom -from ens_eof_kmeans import ens_eof_kmeans -from ens_plots import ens_plots +from esmvaltool.diag_scripts.ensclus.ens_anom import ens_anom +from esmvaltool.diag_scripts.ensclus.ens_eof_kmeans import ens_eof_kmeans +from esmvaltool.diag_scripts.ensclus.ens_plots import ens_plots +from esmvaltool.diag_scripts.shared import ( + ProvenanceLogger, + group_metadata, + run_diagnostic, + sorted_metadata, +) logger = logging.getLogger(os.path.basename(__file__)) diff --git a/esmvaltool/diag_scripts/examples/correlate.py b/esmvaltool/diag_scripts/examples/correlate.py index 171a24a51f..052f3d2bdc 100644 --- a/esmvaltool/diag_scripts/examples/correlate.py +++ b/esmvaltool/diag_scripts/examples/correlate.py @@ -6,7 +6,7 @@ from iris.analysis import MEAN from iris.analysis.stats import pearsonr -from diagnostic import plot_diagnostic +from esmvaltool.diag_scripts.examples.diagnostic import plot_diagnostic from esmvaltool.diag_scripts.shared import group_metadata, run_diagnostic logger = logging.getLogger(os.path.basename(__file__)) diff --git a/esmvaltool/diag_scripts/iht_toa/single_model_diagnostics.py b/esmvaltool/diag_scripts/iht_toa/single_model_diagnostics.py index fc917a8aa5..e56240c67a 100644 --- a/esmvaltool/diag_scripts/iht_toa/single_model_diagnostics.py +++ b/esmvaltool/diag_scripts/iht_toa/single_model_diagnostics.py @@ -16,8 +16,8 @@ import numpy as np from iris import NameConstraint from matplotlib import gridspec, rcParams -from poisson_solver import SphericalPoisson +from esmvaltool.diag_scripts.iht_toa.poisson_solver import SphericalPoisson from esmvaltool.diag_scripts.shared import ( group_metadata, run_diagnostic, diff --git a/esmvaltool/diag_scripts/mpqb/mpqb_lineplot.py b/esmvaltool/diag_scripts/mpqb/mpqb_lineplot.py index fe4cf2deb0..b08a2cd012 100644 --- a/esmvaltool/diag_scripts/mpqb/mpqb_lineplot.py +++ b/esmvaltool/diag_scripts/mpqb/mpqb_lineplot.py @@ -7,9 +7,9 @@ import iris import matplotlib.dates as mdates import matplotlib.pyplot as plt -from mpqb_utils import get_mpqb_cfg import esmvaltool.diag_scripts.shared.iris_helpers as ih +from esmvaltool.diag_scripts.mpqb.mpqb_utils import get_mpqb_cfg from esmvaltool.diag_scripts.shared import group_metadata, run_diagnostic from esmvaltool.diag_scripts.shared._base import ( ProvenanceLogger, diff --git a/esmvaltool/diag_scripts/mpqb/mpqb_lineplot_anncyc.py b/esmvaltool/diag_scripts/mpqb/mpqb_lineplot_anncyc.py index e2a5a662b2..d087499d60 100644 --- a/esmvaltool/diag_scripts/mpqb/mpqb_lineplot_anncyc.py +++ b/esmvaltool/diag_scripts/mpqb/mpqb_lineplot_anncyc.py @@ -6,8 +6,8 @@ import iris import matplotlib.pyplot as plt -from mpqb_utils import get_mpqb_cfg +from esmvaltool.diag_scripts.mpqb.mpqb_utils import get_mpqb_cfg from esmvaltool.diag_scripts.shared import group_metadata, run_diagnostic from esmvaltool.diag_scripts.shared._base import ( ProvenanceLogger, diff --git a/esmvaltool/diag_scripts/mpqb/mpqb_lineplot_growthrate.py b/esmvaltool/diag_scripts/mpqb/mpqb_lineplot_growthrate.py index a6ec136966..90662be72b 100644 --- a/esmvaltool/diag_scripts/mpqb/mpqb_lineplot_growthrate.py +++ b/esmvaltool/diag_scripts/mpqb/mpqb_lineplot_growthrate.py @@ -8,9 +8,9 @@ import matplotlib.dates as mdates import matplotlib.pyplot as plt import numpy as np -from mpqb_utils import get_mpqb_cfg import esmvaltool.diag_scripts.shared.iris_helpers as ih +from esmvaltool.diag_scripts.mpqb.mpqb_utils import get_mpqb_cfg from esmvaltool.diag_scripts.shared import group_metadata, run_diagnostic from esmvaltool.diag_scripts.shared._base import ( ProvenanceLogger, diff --git a/esmvaltool/diag_scripts/weighting/climwip/calibrate_sigmas.py b/esmvaltool/diag_scripts/weighting/climwip/calibrate_sigmas.py index 0998346b22..1d85e1f95a 100644 --- a/esmvaltool/diag_scripts/weighting/climwip/calibrate_sigmas.py +++ b/esmvaltool/diag_scripts/weighting/climwip/calibrate_sigmas.py @@ -6,7 +6,13 @@ import matplotlib.pyplot as plt import numpy as np import xarray as xr -from core_functions import ( +from scipy.optimize import brute + +from esmvaltool.diag_scripts.shared import ( + get_diagnostic_filename, + get_plot_filename, +) +from esmvaltool.diag_scripts.weighting.climwip.core_functions import ( area_weighted_mean, calculate_model_distances, calculate_weights, @@ -14,17 +20,11 @@ compute_overall_mean, weighted_quantile, ) -from io_functions import ( +from esmvaltool.diag_scripts.weighting.climwip.io_functions import ( read_metadata, read_model_data, read_model_data_ancestor, ) -from scipy.optimize import brute - -from esmvaltool.diag_scripts.shared import ( - get_diagnostic_filename, - get_plot_filename, -) logger = logging.getLogger(os.path.basename(__file__)) diff --git a/esmvaltool/diag_scripts/weighting/climwip/main.py b/esmvaltool/diag_scripts/weighting/climwip/main.py index 6b22399547..f46db62090 100644 --- a/esmvaltool/diag_scripts/weighting/climwip/main.py +++ b/esmvaltool/diag_scripts/weighting/climwip/main.py @@ -10,15 +10,22 @@ import numpy as np import seaborn as sns import xarray as xr -from calibrate_sigmas import calibrate_performance_sigma -from core_functions import ( + +from esmvaltool.diag_scripts.shared import ( + get_diagnostic_filename, + get_plot_filename, + run_diagnostic, +) +from esmvaltool.diag_scripts.weighting.climwip.calibrate_sigmas import ( + calibrate_performance_sigma, ) +from esmvaltool.diag_scripts.weighting.climwip.core_functions import ( area_weighted_mean, calculate_model_distances, calculate_weights, combine_ensemble_members, compute_overall_mean, ) -from io_functions import ( +from esmvaltool.diag_scripts.weighting.climwip.io_functions import ( log_provenance, read_metadata, read_model_data, @@ -27,11 +34,6 @@ read_observation_data_ancestor, ) -from esmvaltool.diag_scripts.shared import ( - get_diagnostic_filename, - get_plot_filename, - run_diagnostic, -) logger = logging.getLogger(os.path.basename(__file__)) diff --git a/esmvaltool/diag_scripts/weighting/plot_utilities.py b/esmvaltool/diag_scripts/weighting/plot_utilities.py index 706dfd64c9..a071a3c7f0 100644 --- a/esmvaltool/diag_scripts/weighting/plot_utilities.py +++ b/esmvaltool/diag_scripts/weighting/plot_utilities.py @@ -3,7 +3,8 @@ import xarray as xr -from climwip.core_functions import weighted_quantile +from esmvaltool.diag_scripts.weighting.climwip.core_functions import ( + weighted_quantile, ) def read_weights(filename: str) -> dict: diff --git a/esmvaltool/diag_scripts/weighting/weighted_temperature_graph.py b/esmvaltool/diag_scripts/weighting/weighted_temperature_graph.py index 5b871283d7..f5f1086e1e 100644 --- a/esmvaltool/diag_scripts/weighting/weighted_temperature_graph.py +++ b/esmvaltool/diag_scripts/weighting/weighted_temperature_graph.py @@ -10,13 +10,16 @@ import matplotlib.pyplot as plt import numpy as np import xarray as xr -from climwip.io_functions import log_provenance, read_model_data from esmvaltool.diag_scripts.shared import ( get_diagnostic_filename, get_plot_filename, run_diagnostic, ) +from esmvaltool.diag_scripts.weighting.climwip.io_functions import ( + log_provenance, + read_model_data, +) from esmvaltool.diag_scripts.weighting.plot_utilities import ( calculate_percentiles, read_metadata, diff --git a/esmvaltool/diag_scripts/weighting/weighted_temperature_map.py b/esmvaltool/diag_scripts/weighting/weighted_temperature_map.py index 7a161d2535..667a382d94 100644 --- a/esmvaltool/diag_scripts/weighting/weighted_temperature_map.py +++ b/esmvaltool/diag_scripts/weighting/weighted_temperature_map.py @@ -11,13 +11,16 @@ import matplotlib.pyplot as plt import numpy as np from cartopy.mpl.ticker import LatitudeFormatter, LongitudeFormatter -from climwip.io_functions import log_provenance, read_model_data from esmvaltool.diag_scripts.shared import ( get_diagnostic_filename, get_plot_filename, run_diagnostic, ) +from esmvaltool.diag_scripts.weighting.climwip.io_functions import ( + log_provenance, + read_model_data, +) from esmvaltool.diag_scripts.weighting.plot_utilities import ( calculate_percentiles, read_metadata, diff --git a/esmvaltool/diag_scripts/zmnam/zmnam.py b/esmvaltool/diag_scripts/zmnam/zmnam.py index d86ee48458..c0450c117a 100644 --- a/esmvaltool/diag_scripts/zmnam/zmnam.py +++ b/esmvaltool/diag_scripts/zmnam/zmnam.py @@ -20,9 +20,12 @@ from esmvaltool.diag_scripts.shared import ProvenanceLogger, run_diagnostic # Import zmnam diagnostic routines -from zmnam_calc import zmnam_calc -from zmnam_plot import zmnam_plot -from zmnam_preproc import (zmnam_preproc, zmnam_preproc_clean) +from esmvaltool.diag_scripts.zmnam.zmnam_calc import zmnam_calc +from esmvaltool.diag_scripts.zmnam.zmnam_plot import zmnam_plot +from esmvaltool.diag_scripts.zmnam.zmnam_preproc import ( + zmnam_preproc, + zmnam_preproc_clean, +) logger = logging.getLogger(__name__) diff --git a/setup.cfg b/setup.cfg index c738c5d716..e28f8079a0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,6 @@ [tool:pytest] addopts = + --import-mode=importlib --doctest-modules --ignore=doc/sphinx/source/conf.py --cov=esmvaltool From 0c323e4a4ecc5304f075a97168f10294b0da41a9 Mon Sep 17 00:00:00 2001 From: Manuel Schlund <32543114+schlunma@users.noreply.github.com> Date: Tue, 25 Jun 2024 15:37:20 +0200 Subject: [PATCH 08/16] Prevent overlapping time axis tick labels in monitoring recipe (#3682) --- .../diag_scripts/monitor/multi_datasets.py | 90 ++++++++++--------- .../monitor/recipe_monitor_with_refs.yml | 6 +- 2 files changed, 54 insertions(+), 42 deletions(-) diff --git a/esmvaltool/diag_scripts/monitor/multi_datasets.py b/esmvaltool/diag_scripts/monitor/multi_datasets.py index a760a312f6..c87fd26cac 100644 --- a/esmvaltool/diag_scripts/monitor/multi_datasets.py +++ b/esmvaltool/diag_scripts/monitor/multi_datasets.py @@ -138,12 +138,12 @@ pyplot_kwargs: dict, optional Optional calls to functions of :mod:`matplotlib.pyplot`. Dictionary keys are functions of :mod:`matplotlib.pyplot`. Dictionary values are used as - single argument for these functions. String arguments can include facets in - curly brackets which will be derived from the datasets plotted in the - corresponding plot, e.g., ``{short_name}``, ``{exp}``. Facets like - ``{project}`` that vary between the different datasets will be transformed - to something like ``ambiguous_project``. Examples: ``title: 'Awesome Plot - of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. + argument(s) for these functions (if values are dictionaries, these are + interpreted as keyword arguments; otherwise a single argument is assumed). + String arguments can include facets in curly brackets which will be derived + from the corresponding dataset, e.g., ``{project}``, ``{short_name}``, + ``{exp}``. Examples: ``title: 'Awesome Plot of {long_name}'``, ``xlabel: + '{short_name}'``, ``xlim: [0, 5]``. time_format: str, optional (default: None) :func:`~datetime.datetime.strftime` format string that is used to format the time axis using :class:`matplotlib.dates.DateFormatter`. If ``None``, @@ -171,12 +171,12 @@ pyplot_kwargs: dict, optional Optional calls to functions of :mod:`matplotlib.pyplot`. Dictionary keys are functions of :mod:`matplotlib.pyplot`. Dictionary values are used as - single argument for these functions. String arguments can include facets in - curly brackets which will be derived from the datasets plotted in the - corresponding plot, e.g., ``{short_name}``, ``{exp}``. Facets like - ``{project}`` that vary between the different datasets will be transformed - to something like ``ambiguous_project``. Examples: ``title: 'Awesome Plot - of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. + argument(s) for these functions (if values are dictionaries, these are + interpreted as keyword arguments; otherwise a single argument is assumed). + String arguments can include facets in curly brackets which will be derived + from the corresponding dataset, e.g., ``{project}``, ``{short_name}``, + ``{exp}``. Examples: ``title: 'Awesome Plot of {long_name}'``, ``xlabel: + '{short_name}'``, ``xlim: [0, 5]``. Configuration options for plot type ``map`` ------------------------------------------- @@ -247,10 +247,12 @@ pyplot_kwargs: dict, optional Optional calls to functions of :mod:`matplotlib.pyplot`. Dictionary keys are functions of :mod:`matplotlib.pyplot`. Dictionary values are used as - single argument for these functions. String arguments can include facets in - curly brackets which will be derived from the corresponding dataset, e.g., - ``{project}``, ``{short_name}``, ``{exp}``. Examples: ``title: 'Awesome - Plot of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. + argument(s) for these functions (if values are dictionaries, these are + interpreted as keyword arguments; otherwise a single argument is assumed). + String arguments can include facets in curly brackets which will be derived + from the corresponding dataset, e.g., ``{project}``, ``{short_name}``, + ``{exp}``. Examples: ``title: 'Awesome Plot of {long_name}'``, ``xlabel: + '{short_name}'``, ``xlim: [0, 5]``. rasterize: bool, optional (default: True) If ``True``, use rasterization_ for map plots to produce smaller files. This is only relevant for vector graphics (e.g., ``output_file_type: @@ -326,10 +328,12 @@ pyplot_kwargs: dict, optional Optional calls to functions of :mod:`matplotlib.pyplot`. Dictionary keys are functions of :mod:`matplotlib.pyplot`. Dictionary values are used as - single argument for these functions. String arguments can include facets in - curly brackets which will be derived from the corresponding dataset, e.g., - ``{project}``, ``{short_name}``, ``{exp}``. Examples: ``title: 'Awesome - Plot of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. + argument(s) for these functions (if values are dictionaries, these are + interpreted as keyword arguments; otherwise a single argument is assumed). + String arguments can include facets in curly brackets which will be derived + from the corresponding dataset, e.g., ``{project}``, ``{short_name}``, + ``{exp}``. Examples: ``title: 'Awesome Plot of {long_name}'``, ``xlabel: + '{short_name}'``, ``xlim: [0, 5]``. rasterize: bool, optional (default: True) If ``True``, use rasterization_ for profile plots to produce smaller files. This is only relevant for vector graphics (e.g., ``output_file_type: @@ -378,12 +382,12 @@ pyplot_kwargs: dict, optional Optional calls to functions of :mod:`matplotlib.pyplot`. Dictionary keys are functions of :mod:`matplotlib.pyplot`. Dictionary values are used as - single argument for these functions. String arguments can include facets in - curly brackets which will be derived from the datasets plotted in the - corresponding plot, e.g., ``{short_name}``, ``{exp}``. Facets like - ``{project}`` that vary between the different datasets will be transformed - to something like ``ambiguous_project``. Examples: ``title: 'Awesome Plot - of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. + argument(s) for these functions (if values are dictionaries, these are + interpreted as keyword arguments; otherwise a single argument is assumed). + String arguments can include facets in curly brackets which will be derived + from the corresponding dataset, e.g., ``{project}``, ``{short_name}``, + ``{exp}``. Examples: ``title: 'Awesome Plot of {long_name}'``, ``xlabel: + '{short_name}'``, ``xlim: [0, 5]``. show_y_minor_ticklabels: bool, optional (default: False) Show tick labels for the minor ticks on the Y axis. @@ -409,12 +413,12 @@ pyplot_kwargs: dict, optional Optional calls to functions of :mod:`matplotlib.pyplot`. Dictionary keys are functions of :mod:`matplotlib.pyplot`. Dictionary values are used as - single argument for these functions. String arguments can include facets in - curly brackets which will be derived from the datasets plotted in the - corresponding plot, e.g., ``{short_name}``, ``{exp}``. Facets like - ``{project}`` that vary between the different datasets will be transformed - to something like ``ambiguous_project``. Examples: ``title: 'Awesome Plot - of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. + argument(s) for these functions (if values are dictionaries, these are + interpreted as keyword arguments; otherwise a single argument is assumed). + String arguments can include facets in curly brackets which will be derived + from the corresponding dataset, e.g., ``{project}``, ``{short_name}``, + ``{exp}``. Examples: ``title: 'Awesome Plot of {long_name}'``, ``xlabel: + '{short_name}'``, ``xlim: [0, 5]``. Configuration options for plot type ``hovmoeller_z_vs_time`` ------------------------------------------------------------ @@ -476,10 +480,12 @@ pyplot_kwargs: dict, optional Optional calls to functions of :mod:`matplotlib.pyplot`. Dictionary keys are functions of :mod:`matplotlib.pyplot`. Dictionary values are used as - single argument for these functions. String arguments can include facets in - curly brackets which will be derived from the corresponding dataset, e.g., - ``{project}``, ``{short_name}``, ``{exp}``. Examples: ``title: 'Awesome - Plot of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. + argument(s) for these functions (if values are dictionaries, these are + interpreted as keyword arguments; otherwise a single argument is assumed). + String arguments can include facets in curly brackets which will be derived + from the corresponding dataset, e.g., ``{project}``, ``{short_name}``, + ``{exp}``. Examples: ``title: 'Awesome Plot of {long_name}'``, ``xlabel: + '{short_name}'``, ``xlim: [0, 5]``. rasterize: bool, optional (default: True) If ``True``, use rasterization_ for profile plots to produce smaller files. This is only relevant for vector graphics (e.g., ``output_file_type: @@ -559,10 +565,12 @@ pyplot_kwargs: dict, optional Optional calls to functions of :mod:`matplotlib.pyplot`. Dictionary keys are functions of :mod:`matplotlib.pyplot`. Dictionary values are used as - single argument for these functions. String arguments can include facets in - curly brackets which will be derived from the corresponding dataset, e.g., - ``{project}``, ``{short_name}``, ``{exp}``. Examples: ``title: 'Awesome - Plot of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. + argument(s) for these functions (if values are dictionaries, these are + interpreted as keyword arguments; otherwise a single argument is assumed). + String arguments can include facets in curly brackets which will be derived + from the corresponding dataset, e.g., ``{project}``, ``{short_name}``, + ``{exp}``. Examples: ``title: 'Awesome Plot of {long_name}'``, ``xlabel: + '{short_name}'``, ``xlim: [0, 5]``. rasterize: bool, optional (default: True) If ``True``, use rasterization_ for profile plots to produce smaller files. This is only relevant for vector graphics (e.g., ``output_file_type: @@ -1791,6 +1799,8 @@ def _process_pyplot_kwargs(self, plot_type, dataset): ) if arg is None: getattr(plt, func)() + elif isinstance(arg, dict): + getattr(plt, func)(**arg) else: getattr(plt, func)(arg) diff --git a/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml b/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml index 681277310c..48c5153287 100644 --- a/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml +++ b/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml @@ -225,7 +225,7 @@ diagnostics: ta: preprocessor: global_mean_extract_levels mip: Amon - timerange: '2000/2004' + timerange: '2000/2005' scripts: plot: <<: *plot_multi_dataset_default @@ -238,6 +238,8 @@ diagnostics: log_y: false pyplot_kwargs: ylim: [0, 20000] + xticks: + rotation: 25 plot_time_vs_lat_with_references: description: Plot Hovmoeller time vs. latitude including reference datasets. @@ -245,7 +247,7 @@ diagnostics: tas: mip: Amon preprocessor: zonal_mean_2d - timerange: '2000/2004' + timerange: '2000/2005' scripts: plot: <<: *plot_multi_dataset_default From baa34009a6332e9e3ca4c9e2a09e385394dca1e2 Mon Sep 17 00:00:00 2001 From: Emma Hogan Date: Thu, 27 Jun 2024 16:51:54 +0100 Subject: [PATCH 09/16] Pin R <4.3.0 (#3689) --- environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environment.yml b/environment.yml index c3d746f34f..7f37b52448 100644 --- a/environment.yml +++ b/environment.yml @@ -103,7 +103,7 @@ dependencies: # R and dependencies - cdo - - r-base >=3.5 + - r-base >=3.5,<4.3.0 - r-abind - r-akima - r-climdex.pcic From bc25f8723634a8f57f43fd89646c8da1f78ba8cd Mon Sep 17 00:00:00 2001 From: Emma Hogan Date: Tue, 2 Jul 2024 10:00:49 +0100 Subject: [PATCH 10/16] Update `scipy.integrate.simps` import (#3704) --- esmvaltool/diag_scripts/emergent_constraints/__init__.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/esmvaltool/diag_scripts/emergent_constraints/__init__.py b/esmvaltool/diag_scripts/emergent_constraints/__init__.py index 545a07d9b5..5a03750bbe 100644 --- a/esmvaltool/diag_scripts/emergent_constraints/__init__.py +++ b/esmvaltool/diag_scripts/emergent_constraints/__init__.py @@ -9,10 +9,16 @@ import matplotlib.pyplot as plt import numpy as np import pandas as pd +import scipy import seaborn as sns import yaml +from packaging.version import Version from scipy import integrate from scipy.stats import linregress +if Version(scipy.version.version) < Version('1.14.0'): + from scipy.integrate import simps as simpson +else: + from scipy.integrate import simpson from esmvaltool.diag_scripts.shared import ( ProvenanceLogger, @@ -1673,7 +1679,7 @@ def cdf(data, pdf): """ idx_range = range(1, len(data) + 1) - cum_dens = [integrate.simps(pdf[:idx], data[:idx]) for idx in idx_range] + cum_dens = [simpson(pdf[:idx], x=data[:idx]) for idx in idx_range] return np.array(cum_dens) From 45442c2c072e8bb645edce3264d32b35eea57579 Mon Sep 17 00:00:00 2001 From: Ed <146008263+mo-gill@users.noreply.github.com> Date: Wed, 3 Jul 2024 12:35:49 +0100 Subject: [PATCH 11/16] Update all pre-commit versions (#3678) Co-authored-by: Emma Hogan --- .pre-commit-config.yaml | 14 +++++++------- environment.yml | 18 ++++++++---------- environment_osx.yml | 14 +++++++------- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f13cea8c72..f3ac440f05 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,7 +8,7 @@ exclude: | ^esmvaltool/diag_scripts/cvdp/ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.6.0 hooks: - id: check-added-large-files - id: check-ast @@ -19,7 +19,7 @@ repos: - id: trailing-whitespace args: [--markdown-linebreak-ext=md] - repo: https://github.com/adrienverge/yamllint - rev: 'v1.31.0' + rev: 'v1.35.1' hooks: - id: yamllint - repo: local # nclcodestyle is installed alongside ESMValTool @@ -30,16 +30,16 @@ repos: language: system files: '\.(ncl|NCL)$' - repo: https://github.com/lorenzwalthert/precommit/ # Checks for R - rev: 'v0.3.2.9007' + rev: 'v0.4.2' hooks: - id: style-files # styler - id: lintr - repo: https://github.com/codespell-project/codespell - rev: 'v2.2.4' + rev: 'v2.3.0' hooks: - id: codespell - repo: https://github.com/PyCQA/isort - rev: '5.12.0' + rev: '5.13.2' hooks: - id: isort - repo: https://github.com/pre-commit/mirrors-yapf @@ -49,10 +49,10 @@ repos: additional_dependencies: - 'toml' - repo: https://github.com/myint/docformatter - rev: 'v1.6.5' + rev: 'v1.7.5' hooks: - id: docformatter - repo: https://github.com/pycqa/flake8 - rev: '6.0.0' + rev: '5.0.4' hooks: - id: flake8 diff --git a/environment.yml b/environment.yml index 7f37b52448..0d9d82a5c9 100644 --- a/environment.yml +++ b/environment.yml @@ -70,7 +70,7 @@ dependencies: - xlsxwriter - zarr # Python packages needed for unit testing - - flake8 + - flake8 ==5.0.4 - pytest >=3.9,!=6.0.0rc1,!=6.0.0 - pytest-cov - pytest-env @@ -84,16 +84,16 @@ dependencies: - sphinx >=6.1.3 - pydata-sphinx-theme # Python packages needed for development - - codespell - - docformatter + - codespell ==2.3.0 + - docformatter ==1.7.5 - imagehash - - isort + - isort ==5.13.2 - pre-commit - prospector - pyroma # - vprof not on conda-forge - - yamllint - - yapf + - yamllint ==1.35.1 + - yapf ==0.32.0 # NCL and dependencies - ncl @@ -113,7 +113,6 @@ dependencies: - r-functional - r-ggplot2 - r-gridextra - - r-lintr - r-logging - r-mapproj - r-maps @@ -127,13 +126,12 @@ dependencies: - r-s2dverification - r-snow - r-spei - - r-styler - r-udunits2 - r-yaml # R packages needed for development - r-git2r # dependency of lintr - - r-lintr - - r-styler + - r-lintr ==3.1.2 + - r-styler ==1.10.3 # Julia (dependencies installed by separate script) - julia diff --git a/environment_osx.yml b/environment_osx.yml index 92eb9fed93..049017a30c 100644 --- a/environment_osx.yml +++ b/environment_osx.yml @@ -24,8 +24,8 @@ dependencies: - esmpy >=8.6.0 # github.com/SciTools-incubator/iris-esmf-regrid/pull/342 - esmvalcore 2.10.* - fiona - - fsspec - fire + - fsspec - gdal - iris >=3.6.1 - iris-esmf-regrid >=0.10.0 # github.com/SciTools-incubator/iris-esmf-regrid/pull/342 @@ -70,7 +70,7 @@ dependencies: - xlsxwriter - zarr # Python packages needed for unit testing - - flake8 + - flake8 ==5.0.4 - pytest >=3.9,!=6.0.0rc1,!=6.0.0 - pytest-cov - pytest-env @@ -84,13 +84,13 @@ dependencies: - sphinx >=6.1.3 - pydata-sphinx-theme # Python packages needed for development - - codespell - - docformatter + - codespell ==2.3.0 + - docformatter ==1.7.5 - imagehash - - isort + - isort ==5.13.2 - pre-commit - prospector - pyroma # - vprof not on conda-forge - - yamllint - - yapf + - yamllint ==1.35.1 + - yapf ==0.32.0 From 5f72637a57b4767097be439f914ee5632274c19b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 3 Jul 2024 13:13:03 +0100 Subject: [PATCH 12/16] [Condalock] Update Linux condalock file (#3698) Co-authored-by: valeriupredoi --- conda-linux-64.lock | 536 ++++++++++++++++++++++---------------------- 1 file changed, 270 insertions(+), 266 deletions(-) diff --git a/conda-linux-64.lock b/conda-linux-64.lock index c7670dd5cd..200d0023c2 100644 --- a/conda-linux-64.lock +++ b/conda-linux-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 6b13b0874631d4e45248b978f87b5b87d49cf73206e43bd1989bedfb09b60743 +# input_hash: 754e4bbbc79880492aef3ffa7778e09114b9822be948dbbc8a449432b636e284 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/_py-xgboost-mutex-2.0-gpu_0.tar.bz2#7702188077361f43a4d61e64c694f850 @@ -12,144 +12,132 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed3 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda#cbbe59391138ea5ad3658c76912e147f https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_17.conda#d731b543793afc0433c4fd593e693fce -https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_3.conda#7c1062eaa78dec4ea8a9a988dbda6045 -https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.85.0-ha770c72_1.conda#012455a6eddcbf487ef0ddd1715f0b80 -https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.2.0-hceb6213_107.conda#2cc37ba482c6321237ce72329e1aaea2 -https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.2.0-hceb6213_107.conda#2b409e9645fb3d69115d04496d1219cc -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-hc0a3c3a_7.conda#53ebd4c833fa01cb2c6353e99f905406 -https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.2-ha770c72_0.conda#8c924f0b7f3e064b1c954a08e7c32fba +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda#b80f2f396ca2c28b8c14c437a4ed1e74 +https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.85.0-ha770c72_2.conda#a685407e4876ad2327fcfc0024b5e204 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.2.1-ha770c72_0.conda#b39b12d3809e4042f832b76192e0e7e8 https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda#d8d7293c5b37f39b2ac32940621c6592 https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda#d786502c97404c94d7d58d258a445a65 https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda#161081fc7cec0bfda0d86d7cb595f8d8 https://conda.anaconda.org/conda-forge/linux-64/xorg-imake-1.0.7-0.tar.bz2#23acfc5a339a6a34cc2241f64e4111be https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 -https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h77fa898_7.conda#abf3fec87c2563697defa759dec3d639 +https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.1.0-h5d3d1c9_100.conda#6d4f65dc440f7b3422113b135be19703 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda#ae061a5ed5f05818acdf9adab72c146d +https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.1.0-h5d3d1c9_100.conda#cedc62fd8c4cf28f23d3cd5db7839e99 https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.12-he073ed8_17.conda#595db67e32b276298ff3d94d07d47fbf https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d -https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.40-ha1999f0_3.conda#2b0c0d451353cde73295d799ea8886b1 +https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.40-ha1999f0_7.conda#3f840c7ed70a96b5ebde8044b2f36f32 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab -https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h77fa898_7.conda#72ec1b1b04c4d15d4204ece1ecea5978 -https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.0-hac33072_0.conda#93a3bf248e5bc729807db198a9c89f07 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda#ca0fad6a41ddaef54a153b78eccb5037 https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.15-hd590300_0.conda#ad8955a300fd09e97e76c38638ac7157 https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda#69b8b6202a07720f448be700e300ccf4 https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.28.1-hd590300_0.conda#dcde58ff9a1f30b0037a2315d1846d1f -https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.2-h59595ed_0.conda#4336bd67920dd504cd8c6761d6a99645 https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 -https://conda.anaconda.org/conda-forge/linux-64/geos-3.12.0-h59595ed_0.conda#3fdf79ef322c8379ae83be491d805369 https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-h59595ed_2.conda#985f2f453fb72408d6b6f1be0f324033 -https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2#cddaf2c63ea4a5901cf09524c490ecdc -https://conda.anaconda.org/conda-forge/linux-64/ghostscript-10.03.1-h59595ed_0.conda#be973b4541601270b77232bc46249a3a https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda#3bf7b9fd5a7136126e0234db4b87c8b6 -https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_1.conda#e358c7c5f6824c272b5034b3816438a7 -https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda#f87c7b7c2cb45f323ffbce941c78ab7c -https://conda.anaconda.org/conda-forge/linux-64/gtest-1.14.0-h00ab1b0_1.conda#d362a81b815334cc921b9362782881f3 -https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda#cc47e1facc155f91abd89b11e48e72ff https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf https://conda.anaconda.org/conda-forge/linux-64/json-c-0.17-h7ab15ed_0.conda#9961b1f100c3b6852bd97c9233d06979 https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda#5aeabe88534ea4169d4c49998f293d6c https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 -https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f -https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_h59595ed_0.conda#682bdbe046a68f749769b492f3625c5c -https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda#5e97e271911b8b2001a8b71860c32faa -https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-h661eb56_2.conda#dd197c968bf9760bba0031888d431ede https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda#aec6c91c7371c26392a06708a73c70e5 -https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.19-hd590300_0.conda#1635570038840ee3f9c71d22aa5b8b6d https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-h59595ed_2.conda#172bcc51059416e7ce99e7b528cede83 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-hca663fb_7.conda#c0bd771f09a326fdcd95a60b617795bf +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda#6456c2620c990cd8dde2428a27ba0bc5 https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-hd590300_1.conda#323e90742f0f48fc22bea908735f55e6 https://conda.anaconda.org/conda-forge/linux-64/libnl-3.9.0-hd590300_0.conda#d27c451db4f1d3c983c78167d2fdabc2 https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 https://conda.anaconda.org/conda-forge/linux-64/libopenlibm4-0.8.1-hd590300_1.conda#e6af610e01d04927a5060c95ce4e0875 -https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.2.0-h6ddb7a1_7.conda#ecba88d2296bf40186a9dc65bdf7b621 https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda#1cb187a157136398ddbaae90713e2498 https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.7-h27087fc_0.conda#f204c8ba400ec475452737094fb81d52 -https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2#a730b2badd586580c5752cc73842e068 https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2#ede4266dc02e875fe1ea77b25dd43747 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.2-hd590300_1.conda#049b7df8bae5e184d1de42cdf64855f8 https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda#57d7dc60e9325e3de37ff8dffd18e814 -https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 -https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318b08df404f9c9be5712aaa5a6f0bb0 https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda#ec7398d21e2651e0dcb0044d03b9a339 https://conda.anaconda.org/conda-forge/linux-64/make-4.3-hd18ef5c_1.tar.bz2#4049ebfd3190b580dffe76daed26155a -https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.5.1-h59595ed_0.conda#a7b444a6e008b804b35521895e3440e2 https://conda.anaconda.org/conda-forge/linux-64/metis-5.1.0-h59595ed_1007.conda#40ccb8318df2500f83bd868dd8fcd201 -https://conda.anaconda.org/conda-forge/linux-64/nccl-2.21.5.1-h6103f9b_0.conda#05381b62b2faed9609fb68b27cd575aa https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda#fcea371545eda051b6deafb24889fc69 -https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_0.conda#a41fa0e391cc9e0d6b78ac69ca047a6c -https://conda.anaconda.org/conda-forge/linux-64/p7zip-16.02-h9c3ff4c_1001.tar.bz2#941066943c0cac69d5aa52189451aa5f -https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_1.conda#b1e9d076f14e8d776213fd5047b4c3d9 https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h36c2ea0_1008.tar.bz2#fbef41ff6a4c8140c30057466a1cdd47 https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda#77d9955b4abddb811cb8ab1aa7d743e4 https://conda.anaconda.org/conda-forge/linux-64/sed-4.8-he412f7d_0.tar.bz2#7362f0042e95681f5d371c46c83ebd08 -https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-hdb0a2a9_1.conda#78b8b85bdf1f42b8a2b3cb577d8742d1 -https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.1.0-hac33072_0.conda#2a08edb7cd75e56623f2712292a97325 https://conda.anaconda.org/conda-forge/linux-64/tzcode-2024a-h3f72095_0.conda#32146e34aaec3745a08b6f49af3f41b0 -https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda#d71d3a66528853c0a1ac2c02d79a0284 https://conda.anaconda.org/conda-forge/linux-64/xorg-inputproto-2.3.2-h7f98852_1002.tar.bz2#bcd1b3396ec6960cbc1d2855a9e60b2b https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda#b462a33c0be1421532f28bfe8f4a7514 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda#2c80dc38fface310c9bd81b17037fee5 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 -https://conda.anaconda.org/conda-forge/linux-64/xorg-makedepend-1.0.9-h59595ed_0.conda#71c756cfcc6649ed7614eb07712bfce0 https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda#bce9f945da8ad2ae9b1d7165a64d0f87 https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae -https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h59595ed_0.conda#fd486bffbf0d6841cf1456a8f2e3a995 https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.0.7-h0b41bf4_0.conda#49e8329110001f04923fe7e864990b0c +https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda#346722a0be40f6edc53f12640d301338 https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.11-heb1d5e4_0.conda#98784bb35b316e2ba8698f4a75326e9a https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-hce8ee76_3.conda#b19224a5179ecb512c4aac9f8a6d57a7 https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.15-hce8ee76_3.conda#0c4f0205a1ae4ca6c89af922ec54271c https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-hce8ee76_3.conda#9aa734a17b9b0b793c7696435fe7789a +https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.2-h59595ed_0.conda#4336bd67920dd504cd8c6761d6a99645 https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda#53fb86322bdb89496d7579fe3f02fd61 -https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.2.0-h9eb54c0_7.conda#57f0fcb5d432d5f98be5705e2bf65352 -https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.0-hed5481d_0.conda#a9ea19c48e11754899299f8123070f4e +https://conda.anaconda.org/conda-forge/linux-64/geos-3.12.0-h59595ed_0.conda#3fdf79ef322c8379ae83be491d805369 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2#cddaf2c63ea4a5901cf09524c490ecdc +https://conda.anaconda.org/conda-forge/linux-64/ghostscript-10.03.1-h59595ed_0.conda#be973b4541601270b77232bc46249a3a +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda#c94a5994ef49749880a8139cf9afcbe1 +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda#f87c7b7c2cb45f323ffbce941c78ab7c +https://conda.anaconda.org/conda-forge/linux-64/gtest-1.14.0-h00ab1b0_1.conda#d362a81b815334cc921b9362782881f3 https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h501b40f_6.conda#c3e9338e15d90106f467377017352b97 -https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-h661eb56_2.conda#02e41ab5834dcdcc8590cf29d9526f50 -https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.0.4-hd2f8ffe_4.conda#cb911b3e0d863ca9caafd767525f7cac +https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda#cc47e1facc155f91abd89b11e48e72ff +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_h59595ed_0.conda#682bdbe046a68f749769b492f3625c5c +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda#5e97e271911b8b2001a8b71860c32faa +https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-h661eb56_2.conda#dd197c968bf9760bba0031888d431ede https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda#f07002e225d7a60a694d42a7bf5ff53f https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda#5fc11c6020d421960607d821310fcd4d +https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda#a1cfcc585f0c42bf8d5546bb1dfb668d https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-h59595ed_2.conda#b63d9b6da3653179a278077f0de20014 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_7.conda#1b84f26d9f4f6026e179e7805d5a15cd -https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda#3eb5f16bcc8a02892199aa63555c731f +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda#f4ca84fbd6d06b0a052fb2d5b96dde41 https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda#73301c133ded2bf71906aa2104edae8b https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda#700ac6ea6d53d5510591c4344d5c989a https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae -https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda#6945825cebd2aeb16af4c69d97c32c13 -https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda#41c69fba59d495e8cf5ffda48a607e35 -https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-hb58d41b_14.conda#264f9a3a4ea52c8f4d3e8ae1213a3335 +https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.1.0-hcba0ae0_0.conda#88343f89ea4280a79ddd9e755992743d https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda#18aa975d2094c34aef978060ae7da7d8 https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe https://conda.anaconda.org/conda-forge/linux-64/libudunits2-2.2.28-h40f5838_3.conda#4bdace082e911a3e1f1f0b721bed5b56 +https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2#a730b2badd586580c5752cc73842e068 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda#33277193f5b92bad9fdd230eb700929c -https://conda.anaconda.org/conda-forge/linux-64/libxgboost-2.0.3-cuda118_h09a87be_4.conda#bfaf927bc7665d327ff5b8e5b8dbf2df -https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-hc051c1a_1.conda#340278ded8b0dc3a73f3660bbb0adbc6 https://conda.anaconda.org/conda-forge/linux-64/libzip-1.10.1-h2629f0a_3.conda#ac79812548e7e8cf61f7b0abdef01d3b -https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h9458935_1.conda#8083b20f566639c22f78bcd6ca35b276 +https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318b08df404f9c9be5712aaa5a6f0bb0 +https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.5.1-h59595ed_0.conda#a7b444a6e008b804b35521895e3440e2 +https://conda.anaconda.org/conda-forge/linux-64/nccl-2.22.3.1-hee583db_0.conda#5d4192971be1643f333582dc79a29393 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 https://conda.anaconda.org/conda-forge/linux-64/openlibm-0.8.1-hd590300_1.conda#6eba22eb06d69e53d0ca01eef42bc675 +https://conda.anaconda.org/conda-forge/linux-64/p7zip-16.02-h9c3ff4c_1001.tar.bz2#941066943c0cac69d5aa52189451aa5f https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.40-hc3806b6_0.tar.bz2#69e2c796349cd9b273890bee0febfe1b https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda#f2cfec9406850991f4e3d960cc9e3321 -https://conda.anaconda.org/conda-forge/linux-64/rdma-core-51.1-he02047a_0.conda#d3729d689f9febadb17462936a90e2e9 +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 +https://conda.anaconda.org/conda-forge/linux-64/rdma-core-52.0-he02047a_0.conda#b607b8e2361ead79785d77eb4b21e8cc https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 -https://conda.anaconda.org/conda-forge/linux-64/s2geometry-0.10.0-h8413349_4.conda#d19f88cf8812836e6a4a2a7902ed0e77 https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.12-h06160fa_0.conda#bf1899cfd6dea061a220fa7e96a1f4bd +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-hdb0a2a9_1.conda#78b8b85bdf1f42b8a2b3cb577d8742d1 +https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.1.0-hac33072_0.conda#2a08edb7cd75e56623f2712292a97325 https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc +https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda#d71d3a66528853c0a1ac2c02d79a0284 https://conda.anaconda.org/conda-forge/linux-64/xorg-fixesproto-5.0-h7f98852_1002.tar.bz2#65ad6e1eb4aed2b0611855aff05e04f6 https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 +https://conda.anaconda.org/conda-forge/linux-64/xorg-makedepend-1.0.9-h59595ed_0.conda#71c756cfcc6649ed7614eb07712bfce0 +https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-hac33072_1.conda#df96b7266e49529d82de467b23977452 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda#9653f1bf3766164d0e65fa723cabbc54 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d056880988120e29d75bfff282e0f45 https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.7-hbfbeace_6.conda#d6382461de9a91a2665e964f92d8da0a @@ -159,28 +147,30 @@ https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.9.14-ha770c72_1.tar.bz https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.12.0-hb4ffafa_0.conda#1a9b16afb84d734a1bb2d196c308d477 https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_hf1063bd_110.conda#ee3e687b78b778db7b304e5b00a4dca6 https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb -https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-h59595ed_2.conda#219ba82e95d7614cf7140d2a4afc0926 -https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-13.2.0-h738fc78_7.conda#0a9c20316a67fbfee9d5778ed0aff24d -https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.2.0-h2a599c4_7.conda#2ac5f82e4fd21f968b370e54bb839a4e +https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.1.0-h3c94d91_0.conda#b0dd0de49e0f3e34f3f636e5c7d149fe +https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca https://conda.anaconda.org/conda-forge/linux-64/hdfeos2-2.20-hebf79cf_1003.conda#23bb57b64a629bc3b33379beece7f0d7 -https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda#cd95826dbd331ed1be26bdf401432844 -https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.4-hfca40fe_0.conda#32ddb97f897740641d8d46a829ce1704 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 +https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-h661eb56_2.conda#02e41ab5834dcdcc8590cf29d9526f50 +https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.0.4-hd2f8ffe_4.conda#cb911b3e0d863ca9caafd767525f7cac https://conda.anaconda.org/conda-forge/linux-64/libgit2-1.7.1-hca3a8ce_0.conda#6af97ac284ffaf76d8f63cc1f9d64f7a -https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.10.0-default_h5622ce7_1001.conda#fc2d5b79c2d3f8568fbab31db7ae02f3 -https://conda.anaconda.org/conda-forge/linux-64/libllvm16-16.0.6-hb3ce162_3.conda#a4d48c40dd5c60edbab7fd69c9a88967 +https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda#3eb5f16bcc8a02892199aa63555c731f https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_h413a1c8_0.conda#a356024784da6dfd4683dc5ecf45b155 https://conda.anaconda.org/conda-forge/linux-64/libopenblas-ilp64-0.3.27-pthreads_h384dd9e_0.conda#025629e15edccee84df4713ce69192e5 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda#6945825cebd2aeb16af4c69d97c32c13 +https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda#41c69fba59d495e8cf5ffda48a607e35 +https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-hb58d41b_14.conda#264f9a3a4ea52c8f4d3e8ae1213a3335 https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda#8cdb7d41faa0260875ba92414c487e2d https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h29866fb_1.conda#4e9afd30f4ccb2f98645e51005f82236 -https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 -https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.6-h9d307f2_0.conda#857b62ff5fc3b6282189798bf06aa2ca -https://conda.anaconda.org/conda-forge/linux-64/nss-3.100-hca3bf56_0.conda#949c4a82290ee58b3c970cef4bcfd4ad -https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.0-h1e5e2c1_0.conda#53e8f030579d34e1a36a735d527c021f +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-2.0.3-cuda118_h09a87be_4.conda#bfaf927bc7665d327ff5b8e5b8dbf2df +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-hc051c1a_1.conda#340278ded8b0dc3a73f3660bbb0adbc6 +https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.7-h401b404_0.conda#4474532a312b2245c5c77f1176989b46 +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h9458935_1.conda#8083b20f566639c22f78bcd6ca35b276 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.101-h593d115_0.conda#b24ab6abea1bdc28d646336a03d15392 https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda#ac68acfa8b558ed406c75e98d3428d7b -https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda#8f70e36268dea8eb666ef14c29bd3cda +https://conda.anaconda.org/conda-forge/linux-64/s2geometry-0.10.0-h8413349_4.conda#d19f88cf8812836e6a4a2a7902ed0e77 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.46.0-h6d4b2fc_0.conda#77ea8dff5cf8550cc8f5629a6af56323 -https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.16.3-hf0b6e87_3.conda#1e28da846782f91a696af3952a2472f9 -https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h0c5db8f_5.conda#9464044754ea25557a9c93f0327d90a6 +https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h8bc8fbc_6.conda#dff3627fec2c0584ded391205295abf0 https://conda.anaconda.org/conda-forge/linux-64/ucx-1.15.0-ha691c75_8.conda#3f9bc6137b240642504a6c9b07a10c25 https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-h40f5838_3.conda#6bb8deb138f87c9d48320ac21b87e7a1 https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-h8ee46fc_0.conda#077b6e8ad6a3ddb741fce2496dd01bec @@ -216,14 +206,19 @@ https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-1.1.0-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda#8d652ea2ee8eaee02ed8dc820bc794aa https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda#15dda3cdbf330abfe9f555d22f66db46 https://conda.anaconda.org/conda-forge/noarch/fasteners-0.17.3-pyhd8ed1ab_0.tar.bz2#348e27e78a5e39090031448c72f66d5e -https://conda.anaconda.org/conda-forge/noarch/filelock-3.14.0-pyhd8ed1ab_0.conda#831d85ae0acfba31b8efd0f0d07da736 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.4-pyhd8ed1ab_0.conda#0e7e4388e9d5283e22b35a9443bdbcc9 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.0.5-pyhd8ed1ab_0.conda#8f325f63020af6f7acbe2c4cb4c920db https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h743c826_0.conda#12e6988845706b2cfbc3bc35c9a61a95 https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.1-py311h459d7ec_0.conda#b267e553a337e1878512621e374845c5 -https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.6.0-pyhff2d567_0.conda#ad6af3f92e71b1579ac2362b6cf29105 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.6.1-pyhff2d567_0.conda#996bf792cdb8c0ac38ff54b9fde56841 https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.0-pyhd8ed1ab_0.tar.bz2#6b1f32359fc5d2ab7b491d0029bfffeb +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-h59595ed_2.conda#219ba82e95d7614cf7140d2a4afc0926 +https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-14.1.0-he4a1faa_0.conda#a9ce7cd0848a93a8df88c1fc0ac84d9d +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.1.0-h2879b86_0.conda#47d6de998d7a285b98b60bce2fecb54b +https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2#914d6646c4dbb1fd3ff539830a12fd71 https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd8ed1ab_6.conda#2ed1fe4b9079da97c44cfe9c2e5078fd +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2#9f765cbfab6870c8435b9eefecd7a1f4 https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda#c0cc1420498b17414d8617d0b9f506ca https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2#7de5386c8fea29e76b303f37dde4c352 https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda#f800d2da156d08e289b14e87e43c1ae5 @@ -231,15 +226,16 @@ https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_0.co https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py311h9547e67_1.conda#2c65bdf442b0d37aad080c8a4e0d452f https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.10.0-py311h459d7ec_0.conda#d39020c78fd00ed774ff9c876e8aba07 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-h7f713cb_2.conda#9ab79924a3760f85a799f21bc99bd655 +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.4-hfca40fe_0.conda#32ddb97f897740641d8d46a829ce1704 https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-22_linux64_openblas.conda#1a2a0cd3153464fee6646f3dd6dad9b8 -https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.8.0-hca28451_0.conda#f21c27f076a07907e70c49bb57bd0f20 -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-hebfc3b9_0.conda#ddd09e8904fde46b85f41896621803e6 -https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda#8dabe607748cb3d7002ad73cd06f1325 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.8.0-hca28451_1.conda#b8afb3e3cb3423cc445cf611ab95fdb0 +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.10.0-default_h5622ce7_1001.conda#fc2d5b79c2d3f8568fbab31db7ae02f3 +https://conda.anaconda.org/conda-forge/linux-64/libllvm16-16.0.6-hb3ce162_3.conda#a4d48c40dd5c60edbab7fd69c9a88967 https://conda.anaconda.org/conda-forge/linux-64/libpq-16.3-ha72fbe1_0.conda#bac737ae28b79cfbafd515258d97d29e https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.2-hdffd6e0_0.conda#a8661c87c873d8c8f90479318ebf0a17 -https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.42.0-py311ha6695c7_1.conda#d6e13a53b4f0cc38f4a348f47bfd5b97 +https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.43.0-py311hbde99c3_0.conda#4c60dfcba06b363be954401addee8800 https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 -https://conda.anaconda.org/conda-forge/linux-64/lxml-5.2.2-py311hc0a218f_0.conda#5a9c71f5cbdf3c5b1ad2504e13792629 https://conda.anaconda.org/conda-forge/linux-64/lz4-4.3.3-py311h38e4bf4_0.conda#3910c815fc788621f88b2bdc0fa9f0a6 https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py311h459d7ec_0.conda#a322b4185121935c871d201ae00ac143 https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2#34fc335fc50eef0b5ea708f2b5f54e0c @@ -253,13 +249,14 @@ https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhd8ed1ab_0.conda#7 https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda#d335fd5704b46f4efb89a6774e81aef0 https://conda.anaconda.org/conda-forge/linux-64/openblas-ilp64-0.3.27-pthreads_h3d04fff_0.conda#15e92dc6a755173a10d993b92d700e70 https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda#7f2e286780f072ed750df46dc2631138 -https://conda.anaconda.org/conda-forge/noarch/packaging-24.0-pyhd8ed1ab_0.conda#248f521b64ce055e7feae3105e7abeb8 +https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.0-h1e5e2c1_0.conda#53e8f030579d34e1a36a735d527c021f +https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda#cbe1bb1f21567018ce595d9c2be0f0db https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda#17064acba08d3686f1135b5ec1b32b12 https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9 https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.2-pyhd8ed1ab_0.conda#6f6cf28bf8e021933869bae3f84b8fc9 https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda#d3483c8fc2dc2cc3f5cf43e26d60cabf -https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py311h459d7ec_0.conda#9bc62d25dcf64eec484974a3123c9d57 +https://conda.anaconda.org/conda-forge/linux-64/psutil-6.0.0-py311h331c9d8_0.conda#f1cbef9236edde98a811ba5a98975f2e https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.9.1-pyhd8ed1ab_0.tar.bz2#0191dd7efe1a94262812770183b68892 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda#844d9eb3b43095b031874477f7d70088 https://conda.anaconda.org/conda-forge/noarch/pyflakes-2.5.0-pyhd8ed1ab_0.tar.bz2#1b3bef4313288ae8d35b1dfba4cd84a3 @@ -267,16 +264,17 @@ https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda#b9a4dacf97241704529131a0dfc0494f https://conda.anaconda.org/conda-forge/noarch/pyshp-2.3.1-pyhd8ed1ab_0.tar.bz2#92a889dc236a5197612bc85bee6d7174 https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025 -https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.1-pyhd8ed1ab_0.conda#4d3ceee3af4b0f9a1f48f57176bf8625 +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda#b98d2018c01ce9980c03ee2850690fab https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda#98206ea9954216ee7540f0c773f2104d https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.4.1-py311h459d7ec_0.conda#60b5332b3989fda37884b92c7afd6a91 https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda#3eeeeb9e4827ace8c0c1419c85d590ad https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_1.conda#52719a74ad130de8fb5d047dc91f247a +https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda#8f70e36268dea8eb666ef14c29bd3cda https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.18.1-py311h5ecf98a_0.conda#9ce82e95681cb5c5e4bd872ed0a7aceb https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py311h459d7ec_0.conda#7865c897d89a39abc0056d89e37bd9e9 https://conda.anaconda.org/conda-forge/noarch/semver-3.0.2-pyhd8ed1ab_0.conda#5efb3fccda53974aed800b6d575f72ed https://conda.anaconda.org/conda-forge/noarch/setoptconf-tmp-0.3.1-pyhd8ed1ab_0.tar.bz2#af3e36d4effb85b9b9f93cd1db0963df -https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda#c8ddb4f34a208df4dd42509a0f6a1c89 +https://conda.anaconda.org/conda-forge/noarch/setuptools-70.1.1-pyhd8ed1ab_0.conda#985e9e86e1b0fc75a74a9bfab9309ef7 https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.19.2-py311h459d7ec_0.conda#d6478cbce002db6303f0d749860f3e22 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2#62f26a3d1387acee31322208f0cfa3e0 @@ -285,11 +283,11 @@ https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_ https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda#da1d979339e2714c30a8e806a33ec087 https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.5.0-pyhd8ed1ab_0.conda#4dd428bd295ba44babd13050f2bcc622 -https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.12.0-h297d8ca_1.conda#3ff978d8994f591818a506640c6a7071 https://conda.anaconda.org/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_0.conda#04eedddeb68ad39871c8127dd1c21f4f -https://conda.anaconda.org/conda-forge/noarch/tenacity-8.3.0-pyhd8ed1ab_0.conda#216cfa8e32bcd1447646768351df6059 +https://conda.anaconda.org/conda-forge/noarch/tenacity-8.4.2-pyhd8ed1ab_0.conda#325a80d37b5233230906a77115e00f37 https://conda.anaconda.org/conda-forge/noarch/termcolor-2.4.0-pyhd8ed1ab_0.conda#a5033708ad9283907c3b1bc1f90d0d0d https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.5.0-pyhc1e730c_0.conda#df68d78237980a159bd7149f33c0e8fd +https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.16.3-hf0b6e87_3.conda#1e28da846782f91a696af3952a2472f9 https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.5-pyha770c72_0.conda#e5dde5caf905e9d95895e05f94967e14 @@ -313,35 +311,32 @@ https://conda.anaconda.org/conda-forge/noarch/xyzservices-2024.6.0-pyhd8ed1ab_0. https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h75354e8_4.conda#03cc8d9838ad9dd0060ab532e81ccb21 https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30c2c15b82aacb07f9c09e28ff2275 https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda#49808e59df5535116f6878b2a820d6f4 -https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.4-pyhd8ed1ab_0.conda#46a2e6e3dfa718ce3492018d5a110dd6 +https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_0.conda#1bb1ef9806a9a20872434f58b3e7fc1a https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2#d1e1eb7e21a9e2c74279d87dafb68156 https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda#b5c2e1034ccc76fb14031637924880eb https://conda.anaconda.org/conda-forge/linux-64/astroid-2.15.8-py311h38be061_0.conda#46d70fcb74472aab178991f0231ee3c6 -https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2#6c72ec3e660a51736913ef6ea68c454b https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.17-he0b1f16_2.conda#ea6d998135d5f8932cffc91381104690 https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.3-h50844eb_4.conda#e72fdd8942f266ea79c70ec085661d6c https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda#332493000404d8411859539a5a630865 https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad -https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda#f907bb958910dc404647326ca80c263e https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py311hb3a22ac_0.conda#b3469563ac5e808b0cd92810d0697043 https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.3.0-hbdc6101_0.conda#797554b8b7603011e8677884381fbcc5 https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4fd2c6b53934bd7d96d1f3fdaf99b79f https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2#a29b7c141d6b2de4bb67788a5f107734 -https://conda.anaconda.org/conda-forge/linux-64/coverage-7.5.3-py311h331c9d8_0.conda#543dd05fd661e4e9c9deb3b37093d6a2 -https://conda.anaconda.org/conda-forge/linux-64/curl-8.8.0-he654da7_0.conda#042341d8b9ba4ee7f2722b81fae9f0ad +https://conda.anaconda.org/conda-forge/linux-64/coverage-7.5.4-py311h331c9d8_0.conda#5c93ea564766cd29c0864436ca9f247e +https://conda.anaconda.org/conda-forge/linux-64/curl-8.8.0-he654da7_1.conda#78678b2ddfd9bd7c7861b8d2e3b7473b https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py311h459d7ec_0.conda#13d385f635d7fbe9acc93600f67a6cb4 https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda#3a941b6083e945aa87e739a9b85c82e9 https://conda.anaconda.org/conda-forge/noarch/docrep-0.3.2-pyh44b312d_0.tar.bz2#235523955bc1bfb019d7ec8a2bb58f9a https://conda.anaconda.org/conda-forge/noarch/fire-0.6.0-pyhd8ed1ab_0.conda#e9ed10aa8fa1dd6782940b95c942a6ae https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.0-py311h331c9d8_0.conda#2daef6c4ce74840c8d7a431498be83e9 -https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6c15284_3.conda#06f97c8b69157d91993af0c4f2e16bdc https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_1.conda#358c17429c97883b2cb9ab5f64bc161b https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda#623b19f616f2ca0c261441067e18ae40 -https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2#b748fbf7060927a6e82df7cb5ee8f097 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda#7e1729554e209627636a0f6fabcdd115 -https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.1.0-pyha770c72_0.conda#0896606848b2dc5cebdf111b6543aa04 +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.0.0-pyha770c72_0.conda#3286556cdd99048d198f72c3f6f69103 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda#c5d3907ad8bd7bf557521a1833cf7e6d https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2#4a62c93c1b5c0b920508ae3fd285eaf5 https://conda.anaconda.org/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda#1d25ed2b95b92b026aaa795eabec8d91 @@ -352,13 +347,15 @@ https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1 https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2#8d67904973263afd2985ba56aa2d6bb4 https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-22_linux64_openblas.conda#4b31699e0ec5de64d5896e580389c9a1 https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-he9388d3_8.conda#f3abc6e6ab60fa404c23094f5a03ec9b +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-hebfc3b9_0.conda#ddd09e8904fde46b85f41896621803e6 https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.0-hac7e632_1003.conda#50c389a09b6b7babaef531eb7cb5e0ca -https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.22.0-h9be4e54_1.conda#4b4e36a91e7dabf7345b82d85767a7c3 +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda#8dabe607748cb3d7002ad73cd06f1325 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-22_linux64_openblas.conda#b083767b6c877e24ee597d93b87ab838 https://conda.anaconda.org/conda-forge/noarch/logilab-common-1.7.3-py_0.tar.bz2#6eafcdf39a7eb90b6d951cfff59e8d3b +https://conda.anaconda.org/conda-forge/linux-64/lxml-5.2.2-py311hc0a218f_0.conda#5a9c71f5cbdf3c5b1ad2504e13792629 https://conda.anaconda.org/conda-forge/noarch/nested-lookup-0.2.25-pyhd8ed1ab_1.tar.bz2#2f59daeb14581d41b1e2dda0895933b2 https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda#dfe0528d0f1c16c1f7c528ea5536ab30 -https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.2-py311h459d7ec_1.conda#5c809fb753f06a04c2f114394404769e +https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.4-py311h459d7ec_0.conda#ce8c8565ab28dc02587e3c4014186e06 https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 https://conda.anaconda.org/conda-forge/linux-64/pillow-10.0.1-py311h8aef010_1.conda#4d66ee2081a7cd444ff6f30d95873eef https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda#f586ac1e56c8638b64f9c8122a7b8a67 @@ -374,12 +371,12 @@ https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.0.3-py311h08a0b41_0.con https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda#0fc8b52192a8898627c3efae1003e9f6 https://conda.anaconda.org/conda-forge/noarch/retrying-1.3.3-py_2.tar.bz2#a11f356d6f93b74b4a84e9501afd48b4 https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py311h459d7ec_0.conda#4dccc0bc3bb4d6e5c30bccbd053c4f90 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.12.0-h297d8ca_1.conda#3ff978d8994f591818a506640c6a7071 https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.3.0-pyhd8ed1ab_0.conda#8662629d9a05f9cff364e31ca106c1ac https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.4-pyhd8ed1ab_0.conda#e74cd796e70a4261f86699ee0a3a7a24 https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda#52d648bd608f5737b123f510bb5514b5 https://conda.anaconda.org/conda-forge/noarch/url-normalize-1.4.3-pyhd8ed1ab_0.tar.bz2#7c4076e494f0efe76705154ac9302ba6 -https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.1-pyhd8ed1ab_0.conda#08807a87fa7af10754d46f63b368e016 -https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.2-pyhd8ed1ab_0.conda#7d36e7a485ea2f5829408813bdbbfb38 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.3-pyhd8ed1ab_0.conda#284008712816c64c85bf2b7fa9f3b264 https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.5-hac6953d_0.conda#63b80ca78d29380fe69e69412dcbe4ac https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.7.10-h7f98852_0.tar.bz2#e77615e5141cad5a2acaa043d1cf0ca5 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxmu-1.1.3-h4ab18f5_1.conda#4d6c9925cdcda27e9d022e40eb3eac05 @@ -389,28 +386,30 @@ https://conda.anaconda.org/conda-forge/noarch/yamllint-1.35.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.4-py311h459d7ec_0.conda#fff0f2058e9d86c8bf5848ee93917a8d https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.5-py311h459d7ec_0.conda#0175d2636cc41dc019b51462c13ce225 https://conda.anaconda.org/conda-forge/linux-64/arpack-3.7.0-hdefa2d7_2.tar.bz2#8763fe86163198ef1778d1d8d22bb078 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2#6c72ec3e660a51736913ef6ea68c454b https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.5.7-hb7bd14b_1.conda#82bd3d7da86d969c62ff541bab19526a +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda#f907bb958910dc404647326ca80c263e https://conda.anaconda.org/conda-forge/noarch/cattrs-23.2.3-pyhd8ed1ab_0.conda#91fc4700dcce4a46d439900a132fe4e5 https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.8-py311h4a61cc7_0.conda#962bcc96f59a31b62c43ac2b306812af https://conda.anaconda.org/conda-forge/noarch/django-5.0.6-pyhd8ed1ab_0.conda#8451875d7b41dbab4d282f02719f3d6d https://conda.anaconda.org/conda-forge/noarch/flake8-5.0.4-pyhd8ed1ab_0.tar.bz2#8079ea7dec0a917dd0cb6c257f7ea9ea https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-hac7e632_2.conda#6e553df297f6e64668efb54302e0f139 https://conda.anaconda.org/conda-forge/noarch/funcargparse-0.2.5-pyhd8ed1ab_0.tar.bz2#e557b70d736251fa0bbb7c4497852a92 +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6c15284_3.conda#06f97c8b69157d91993af0c4f2e16bdc https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.1-hee599c5_13.conda#8c55dacddd589be64b2bd6a5d4264be6 https://conda.anaconda.org/conda-forge/linux-64/git-2.42.0-pl5321h86e50cf_0.conda#96ad24c67e0056d171385859c43218a2 https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.43-pyhd8ed1ab_0.conda#0b2154c1818111e17381b1df5b4b0176 https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2#fec079ba39c9cca093bf4c00001825de -https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda#5a6f6c00ef982a9bc83558d9ac8f64a0 +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe https://conda.anaconda.org/conda-forge/linux-64/hdfeos5-5.1.16-hf1a501a_15.conda#d2e16a32f41d67c7d280da11b2846328 -https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-7.1.0-hd8ed1ab_0.conda#6ef2b72d291b39e479d7694efa2b2b98 +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.0.0-hd8ed1ab_0.conda#5f8c8ebbe6413a7838cf6ecf14d5d31b https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda#a0e4efb5f35786a05af4809a2fb1f855 https://conda.anaconda.org/conda-forge/linux-64/kealib-1.5.3-hee9dde6_1.conda#c5b7b29e2b66107553d0366538257a51 https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.4-pyhd8ed1ab_0.conda#a284ff318fbdb0dd83928275b4b6087c -https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.22.0-hc7a4891_1.conda#7811f043944e010e54640918ea82cecd +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.22.0-h9be4e54_1.conda#4b4e36a91e7dabf7345b82d85767a7c3 https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h135f659_114.conda#a908e463c710bd6b10a9eaa89fdf003c https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-h090f1da_1.conda#9a2d6acaa8ce6d53a150248e7b11165e https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda#a502d7aad449a1206efb366d6a12c52d -https://conda.anaconda.org/conda-forge/linux-64/poppler-23.08.0-hf2349cb_2.conda#fb75401ae7e2e3f354dff72e9da95cae https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.4.2-pyhd8ed1ab_0.conda#aca82be28a1c676a3e0365e83892f412 https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2#2099b86a7399c44c0c61cdb6de6915ba https://conda.anaconda.org/conda-forge/noarch/pylint-2.17.7-pyhd8ed1ab_0.conda#3cab6aee60038b3f621bce3e50f52bed @@ -419,162 +418,106 @@ https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/pytest-env-1.1.3-pyhd8ed1ab_0.conda#1dbdf019d740419852c4a7803fff49d9 https://conda.anaconda.org/conda-forge/noarch/pytest-metadata-3.1.1-pyhd8ed1ab_0.conda#52b91ecba854d55b28ad916a8b10da24 https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.14.0-pyhd8ed1ab_0.conda#4b9b5e086812283c052a9105ab1e254e -https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.5.0-pyhd8ed1ab_0.conda#d5f595da2daead898ca958ac62f0307b +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda#b39568655c127a9c4a44d178ac99b6d0 https://conda.anaconda.org/conda-forge/noarch/python-build-1.2.1-pyhd8ed1ab_0.conda#d657cde3b3943fcedf6038138eea84de https://conda.anaconda.org/conda-forge/noarch/rdflib-7.0.0-pyhd8ed1ab_0.conda#44d14ef95495b3d4438f28998e0296a9 -https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda#5ede4753180c7a550a443c430dc8ab52 https://conda.anaconda.org/conda-forge/noarch/requirements-detector-1.2.2-pyhd8ed1ab_0.conda#6626918380d99292df110f3c91b6e5ec https://conda.anaconda.org/conda-forge/linux-64/suitesparse-5.10.1-h5a4f163_3.conda#f363554b9084fb9d5e3366fbbc0d18e0 https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311h9547e67_4.conda#586da7df03b68640de14dc3e8bcbf76f https://conda.anaconda.org/conda-forge/linux-64/xorg-libxaw-1.0.14-h7f98852_1.tar.bz2#45b68dc2fc7549c16044d533ceaf340e https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py311hb6f056b_1.conda#72e84ef20a510ab5fca1f3d80a16e9e2 https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.26.6-hf567797_4.conda#ffb662b31aef333e68a00dd17fda2027 -https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.3-py311h18e1886_1.conda#f1beb063aad4446eb146d8b88420a4ea -https://conda.anaconda.org/conda-forge/noarch/chart-studio-1.1.0-pyh9f0ad1d_0.tar.bz2#acd9a12a35e5a0221bdf39eb6e4811dc +https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py311h18e1886_0.conda#0eb1e6c7d10285ec12e01f73d1896d93 https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyh24bf2e0_0.tar.bz2#b73afa0d009a51cabd3ec99c4d2ef4f3 https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.1-py311h9547e67_0.conda#74ad0ae64f1ef565e27eda87fa749e84 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.5.2-pyhd8ed1ab_0.conda#1a57a819915e1c169b74933720b138f2 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.6.2-pyhd8ed1ab_0.conda#048ca0ec2cd1f3995d2d36dec0efd99a https://conda.anaconda.org/conda-forge/noarch/eofs-1.4.1-pyhd8ed1ab_1.conda#5fc43108dee4106f23050acc7a101233 https://conda.anaconda.org/conda-forge/noarch/flake8-polyfill-1.0.2-py_0.tar.bz2#a53db35e3d07f0af2eccd59c2a00bffe +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda#5a6f6c00ef982a9bc83558d9ac8f64a0 https://conda.anaconda.org/conda-forge/noarch/identify-2.5.36-pyhd8ed1ab_0.conda#ba68cb5105760379432cebc82b45af40 https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.9.18-py311h9b38416_0.conda#67bed2bd92ffa76b20506d83427706ae -https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.1-pyh4b66e23_0.conda#bcf6a6f4c6889ca083e8d33afbafb8d5 +https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.2-pyh12aca89_0.conda#97ad994fae55dce96bd397054b32e41a https://conda.anaconda.org/conda-forge/linux-64/jasper-4.0.0-h32699f2_1.conda#fdde5424ecef5f7ad310b4242229291c https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.22.0-pyhd8ed1ab_0.conda#b9661a4b1200d6bc7d8a4cdafdc91468 https://conda.anaconda.org/conda-forge/linux-64/julia-1.9.3-h06b7c97_0.conda#6214d0563598ae0cc9b954344b9f9c10 https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda#3cdbb2fa84490e5fd44c9f9806c0d292 -https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.7.2-h6238fc3_5.conda#2fef4283b2bb45a66f8b81099d36721e +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.22.0-hc7a4891_1.conda#7811f043944e010e54640918ea82cecd https://conda.anaconda.org/conda-forge/noarch/magics-python-1.5.8-pyhd8ed1ab_1.conda#3fd7e3db129f12362642108f23fde521 -https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.1-pyhd8ed1ab_0.conda#4dff4abb5728f7662ecaaa8bee3a0260 https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.6.1-nompi_h228c76a_104.conda#91bc3ac73308181d55a09d9e4aeb4496 -https://conda.anaconda.org/conda-forge/linux-64/numba-0.59.1-py311h96b013e_0.conda#cd581f19ea0c298ec6ef612fdf7d041c +https://conda.anaconda.org/conda-forge/linux-64/numba-0.60.0-py311h4bc866e_0.conda#e32a210e9caf97383c35685fd2343512 https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.12.1-py311h4332511_1.conda#887aa6096851eab5c34fe95ed1641591 https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py311h320fe9a_0.conda#e44ccb61b6621bf3f8053ae66eba7397 -https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-ha41ecd1_2.conda#1a66c10f6a0da3dbd2f3a68127e7f6a0 https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.6-pyhd8ed1ab_0.conda#a5b55d1cb110cdcedc748b5c3e16e687 -https://conda.anaconda.org/conda-forge/noarch/pooch-1.8.2-pyhd8ed1ab_0.conda#8dab97d8a9616e07d779782995710aed +https://conda.anaconda.org/conda-forge/linux-64/poppler-23.08.0-hf2349cb_2.conda#fb75401ae7e2e3f354dff72e9da95cae https://conda.anaconda.org/conda-forge/noarch/pylint-plugin-utils-0.7-pyhd8ed1ab_0.tar.bz2#1657976383aee04dbb3ae3bdf654bb58 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda#b50aec2c744a5c493c09cce9e2e7533e -https://conda.anaconda.org/conda-forge/noarch/pyroma-4.2-pyhd8ed1ab_0.conda#fe2aca9a5d4cb08105aefc451ef96950 https://conda.anaconda.org/conda-forge/linux-64/pys2index-0.1.5-py311h92ebd52_0.conda#ee757dff4cdb96bb972200c85b37f9e8 https://conda.anaconda.org/conda-forge/noarch/pytest-html-4.1.1-pyhd8ed1ab_0.conda#4d2040212307d18392a2687772b3a96d -https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.4.1-py311h1f0f07a_1.conda#86b71ff85f3e4c8a98b5bace6d9c4565 -https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.2.0-pyhd8ed1ab_1.conda#f351ee57bb9c3e4b2f4952980461ba1d -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.13.1-py311h517d4fd_0.conda#764b0e055f59dbd7d114d32b8c6e55e6 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.6.0-py311h18e1886_0.conda#f43c7f60c7b1e7a7cc4234d28520b06a +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py311h517d4fd_0.conda#92bf19ecf13e70907ae8c301de32ed10 https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.2-py311he06c224_0.conda#c90e2469d7512f3bba893533a82d7a02 https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a https://conda.anaconda.org/conda-forge/linux-64/tempest-remap-2.2.0-h13910d2_3.conda#7f10762cd62c8ad03323c4dc3ee544b1 +https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda#e804c43f58255e977093a2298e442bb8 https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.267-hbf3e495_6.conda#a6caf5a0d9ca940d95f21d40afe8f857 -https://conda.anaconda.org/conda-forge/noarch/bokeh-3.4.1-pyhd8ed1ab_0.conda#0f8e0831bbf38d83973438ce9af9af9a -https://conda.anaconda.org/conda-forge/noarch/cads-api-client-1.0.3-pyhd8ed1ab_0.conda#46b7eb9d2f3ca144f3195dc6aa7bdf93 +https://conda.anaconda.org/conda-forge/noarch/bokeh-3.4.2-pyhd8ed1ab_0.conda#e704d0474c0155db9632bd740b6c9d17 https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.2.0-py311h18e1886_5.conda#6cd3facab7a79de14abb1a86a2d830fa -https://conda.anaconda.org/conda-forge/noarch/distributed-2024.5.2-pyhd8ed1ab_0.conda#2fa6807bd19e5cdc77fe1b6a42c86228 +https://conda.anaconda.org/conda-forge/noarch/distributed-2024.6.2-pyhd8ed1ab_0.conda#eecb4c188864376d2b45a5afc4bcb2fa https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.32.1-h35c6de3_0.conda#09d044f9206700e021916675a16d1e4d -https://conda.anaconda.org/conda-forge/linux-64/esmf-8.6.1-nompi_h4869a97_1.conda#308799e5ffa83b7b520a9c2c8c0319c1 -https://conda.anaconda.org/conda-forge/linux-64/gdal-3.7.2-py311h815a124_5.conda#84a14fd830b72b09ef886a23de557a16 -https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h90689f9_2.tar.bz2#957a0255ab58aaf394a91725d73ab422 +https://conda.anaconda.org/conda-forge/linux-64/esmf-8.6.1-nompi_h0a5817f_2.conda#e23c62f75f67166cf4ca137fc8bcdce7 https://conda.anaconda.org/conda-forge/noarch/imagehash-4.3.1-pyhd8ed1ab_0.tar.bz2#132ad832787a2156be1f1b309835001a -https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-he3f83f7_1.conda#03bd1ddcc942867a19528877143b9852 +https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.7.2-h6238fc3_5.conda#2fef4283b2bb45a66f8b81099d36721e https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.4-py311ha4ca890_2.conda#0848e2084cbb57014f232f48568561af https://conda.anaconda.org/conda-forge/noarch/myproxyclient-2.1.1-pyhd8ed1ab_0.conda#bcdbeb2b693eba886583a907840c6421 https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda#0b57b5368ab7fc7cdc9e3511fa867214 -https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.6.5-nompi_py311h74118c1_102.conda#5f98c1d56c5853270c7876bb1000a631 +https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.1-nompi_py311h25b3b55_101.conda#936afeddfa3704eb834d0887b0838826 +https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-ha41ecd1_2.conda#1a66c10f6a0da3dbd2f3a68127e7f6a0 https://conda.anaconda.org/conda-forge/noarch/pep8-naming-0.10.0-pyh9f0ad1d_0.tar.bz2#b3c5536e4f9f58a4b16adb6f1e11732d https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.7.1-pyha770c72_0.conda#724bc4489c1174fc8e3233b0624fa51f https://conda.anaconda.org/conda-forge/noarch/pylint-celery-0.3-py_1.tar.bz2#e29456a611a62d3f26105a2f9c68f759 https://conda.anaconda.org/conda-forge/noarch/pylint-django-2.5.3-pyhd8ed1ab_0.tar.bz2#00d8853fb1f87195722ea6a582cc9b56 https://conda.anaconda.org/conda-forge/noarch/pylint-flask-0.6-py_0.tar.bz2#5a9afd3d0a61b08d59eed70fab859c1b -https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py311h1f0f07a_1.conda#cd36a89a048ad2bcc6d8b43f648fb1d0 -https://conda.anaconda.org/conda-forge/linux-64/r-base-4.3.1-h639d9d3_5.conda#f320a6b4aba89a080d757a365138b642 -https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.3.9-py311h40fbdff_0.conda#dcee6ba4d1ac6af18827d0941b6a1b42 +https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py311h18e1886_2.conda#b1e90d33ae504ac06a3928a2dc5654ba +https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda#5ede4753180c7a550a443c430dc8ab52 https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.5.0-py311he08f58d_1.conda#d55e4dde3b30272090f33ddd367c580b https://conda.anaconda.org/conda-forge/noarch/seawater-3.3.5-pyhd8ed1ab_0.conda#8e1b01f05e8f97b0fcc284f957175903 https://conda.anaconda.org/conda-forge/noarch/sparse-0.15.4-pyhd8ed1ab_0.conda#846d12530687ba836791dd54db1f45c5 https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.2-py311h18e1886_0.conda#82c29bf38b3fb66da09736106609b5fe -https://conda.anaconda.org/conda-forge/noarch/tifffile-2024.5.22-pyhd8ed1ab_0.conda#3930cabe8ca8c8594026fa8768cae75c -https://conda.anaconda.org/conda-forge/noarch/xarray-2024.5.0-pyhd8ed1ab_0.conda#e839fd0ae78a368c930f0b1feafa6736 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2024.6.18-pyhd8ed1ab_0.conda#7c3077529bfe3b86f9425d526d73bd24 +https://conda.anaconda.org/conda-forge/noarch/xarray-2024.6.0-pyhd8ed1ab_1.conda#a6775bba72ade3fd777ccac04902202c https://conda.anaconda.org/conda-forge/noarch/zarr-2.18.2-pyhd8ed1ab_0.conda#02f53038910b6fbc9d36bd5f663318e8 https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.23.0-py311h14de704_1.conda#27e5956e552c6e71f56cb1ec042617a8 -https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.0-pyhd8ed1ab_0.conda#f7433e3bd2749b934ddf81451a45967d -https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.9.1-pyhd8ed1ab_0.conda#9b1ddfcc35856fbd69e193b945b7d7f2 +https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.9.2-pyhd8ed1ab_0.conda#395b23e1e49b582952a9f2f65a8d6f70 +https://conda.anaconda.org/conda-forge/noarch/chart-studio-1.1.0-pyh9f0ad1d_0.tar.bz2#acd9a12a35e5a0221bdf39eb6e4811dc https://conda.anaconda.org/conda-forge/noarch/cmocean-4.0.3-pyhd8ed1ab_0.conda#53df00540de0348ed1b2a62684dd912b https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.8.5-pyhd8ed1ab_0.conda#abfb434fb6654f83d740428863ec85a8 -https://conda.anaconda.org/conda-forge/noarch/esgf-pyclient-0.3.1-pyhca7485f_3.conda#1d43833138d38ad8324700ce45a7099a https://conda.anaconda.org/conda-forge/noarch/esmpy-8.6.1-pyhc1e730c_0.conda#25a9661177fd68bfdb4314fd658e5c3b -https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.5-py311hbac4ec9_0.conda#786d3808394b1bdfd3f41f2e2c67279e -https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda#33628e0e3de7afd2c8172f76439894cb +https://conda.anaconda.org/conda-forge/linux-64/gdal-3.7.2-py311h815a124_5.conda#84a14fd830b72b09ef886a23de557a16 +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h90689f9_2.tar.bz2#957a0255ab58aaf394a91725d73ab422 https://conda.anaconda.org/conda-forge/linux-64/libarrow-15.0.2-h176673d_2_cpu.conda#c130ba0c765437749dbc37fa9de85ce5 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-he3f83f7_1.conda#03bd1ddcc942867a19528877143b9852 https://conda.anaconda.org/conda-forge/linux-64/magics-4.14.2-haee2765_1.conda#0c46d548472ee1b043c65d4ab4ad6a83 +https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.1-pyhd8ed1ab_0.conda#4dff4abb5728f7662ecaaa8bee3a0260 https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda#15b51397e0fe8ea7d7da60d83eb76ebc https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.4.1-pyhd8ed1ab_0.tar.bz2#281b58948bf60a2582de9e548bcc5369 https://conda.anaconda.org/conda-forge/linux-64/ncl-6.6.2-he3b17a9_50.conda#a37fcb5a2da31cfebe6734b0fda20bd5 -https://conda.anaconda.org/conda-forge/linux-64/nco-5.2.4-he646072_0.conda#ccf011f3b8edd84d938edd0848ab56d4 +https://conda.anaconda.org/conda-forge/linux-64/nco-5.2.6-hc167251_0.conda#fad6bcd027d55d5e1b925cf2d7ceb4f2 +https://conda.anaconda.org/conda-forge/noarch/pooch-1.8.2-pyhd8ed1ab_0.conda#8dab97d8a9616e07d779782995710aed https://conda.anaconda.org/conda-forge/noarch/prospector-1.10.3-pyhd8ed1ab_0.conda#f551d4d859a1d70c6abff8310a655481 https://conda.anaconda.org/conda-forge/linux-64/psyplot-1.5.0-py311h38be061_1.conda#e172dce6d5f3dbf0c8dfc537c8146be3 https://conda.anaconda.org/conda-forge/noarch/py-xgboost-2.0.3-cuda120_pyh3ef1b53_4.conda#101b6519015db5451632163bc6fed36a -https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_5-r43hc72bb7e_1005.conda#dd7719a32c342948c6fbafb13bd2ee03 -https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.0-r43hb1dbf0f_0.conda#9f3376d466dc88a5a8f2b8cf3e052772 -https://conda.anaconda.org/conda-forge/noarch/r-bigmemory.sri-0.1.8-r43hc72bb7e_0.conda#be78955142329022e2927b57b11e98fa -https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.2-r43ha503ecb_0.conda#7a325f68b1354c1a5261688b5e54d008 -https://conda.anaconda.org/conda-forge/noarch/r-codetools-0.2_20-r43hc72bb7e_0.conda#6fd216ce15e662d68b5fa1c7e6c1a75d -https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_0-r43h57805ef_1.conda#22117ffc4b380dba0732166eec62d8cb -https://conda.anaconda.org/conda-forge/linux-64/r-contfrac-1.1_12-r43h57805ef_1004.conda#b4dca65264e43e9a3ef2e2f39f687349 -https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.4.7-r43hc72bb7e_0.conda#c9ec548d90ba0c4de83a14dab499d015 -https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.2-r43hc72bb7e_2.conda#f13cc355add93ff41ef3d7aeefee247a -https://conda.anaconda.org/conda-forge/noarch/r-dbi-1.2.3-r43hc72bb7e_0.conda#b5c79fe477c107fba33e9700d1d7e2a1 -https://conda.anaconda.org/conda-forge/linux-64/r-desolve-1.40-r43hd9ac46e_0.conda#a85bc66bb89726a8fb5310f2def5d8ac -https://conda.anaconda.org/conda-forge/linux-64/r-digest-0.6.35-r43ha503ecb_0.conda#d28a7db9b060ceaf683f0b036780b962 -https://conda.anaconda.org/conda-forge/noarch/r-docopt-0.7.1-r43hc72bb7e_3.conda#d1a51c4e48b1184be5bb47ff13298472 -https://conda.anaconda.org/conda-forge/linux-64/r-dotcall64-1.1_1-r43h61816a4_0.conda#54040b9373933275c211ccbb1d5de023 -https://conda.anaconda.org/conda-forge/noarch/r-evaluate-0.24.0-r43hc72bb7e_0.conda#1c3aa7ca297fae40ea8d6a8fe78317f0 -https://conda.anaconda.org/conda-forge/linux-64/r-fansi-1.0.6-r43h57805ef_0.conda#c94b12c76504df3548707218409b678f -https://conda.anaconda.org/conda-forge/linux-64/r-farver-2.1.2-r43ha18555a_0.conda#b56c791245428e7b08601e3bca812b0a -https://conda.anaconda.org/conda-forge/noarch/r-functional-0.6-r43ha770c72_1004.conda#2a0d8d39d328f570af24f6a2d10a47ed -https://conda.anaconda.org/conda-forge/noarch/r-generics-0.1.3-r43hc72bb7e_2.conda#bf424d7238a8a02bd3970346112de34f -https://conda.anaconda.org/conda-forge/noarch/r-geomapdata-2.0_2-r43hc72bb7e_0.conda#a865cc1e66d1370e8545baa03d2901fe -https://conda.anaconda.org/conda-forge/linux-64/r-git2r-0.33.0-r43hbae1c7c_0.conda#74577e5aad177b12c066b268a7cd864b -https://conda.anaconda.org/conda-forge/linux-64/r-glue-1.7.0-r43h57805ef_0.conda#20e2cb7c0d27bccf8fe21ec5c3897751 -https://conda.anaconda.org/conda-forge/linux-64/r-goftest-1.2_3-r43h57805ef_2.conda#14d5dcb272fd5df57248893446a4948f -https://conda.anaconda.org/conda-forge/linux-64/r-isoband-0.2.7-r43ha503ecb_2.conda#6db3b5f97166c8b0fd8c995fbe32c89d -https://conda.anaconda.org/conda-forge/noarch/r-iterators-1.0.14-r43hc72bb7e_2.conda#5f0c56c25fafdfde7acaf0f332f24195 -https://conda.anaconda.org/conda-forge/linux-64/r-jsonlite-1.8.8-r43h57805ef_0.conda#fb01953d78a87de6211b1ebccafed273 -https://conda.anaconda.org/conda-forge/linux-64/r-kernsmooth-2.23_24-r43hc2011d3_0.conda#9fbf29bd0ded7844a2a493a6190ef9d9 -https://conda.anaconda.org/conda-forge/noarch/r-labeling-0.4.3-r43hc72bb7e_0.conda#8d5f7d07433437c48c1c497ec8c77aec -https://conda.anaconda.org/conda-forge/linux-64/r-lattice-0.22_6-r43h57805ef_0.conda#748c702a5c6c89f9794d148bdcbbdfbc -https://conda.anaconda.org/conda-forge/linux-64/r-lazyeval-0.2.2-r43h57805ef_4.conda#412e7e2defa8af842c9f4d7844d7b949 -https://conda.anaconda.org/conda-forge/linux-64/r-lmom-3.0-r43h61816a4_0.conda#e2ee8254c7baa313122de7a08330c296 -https://conda.anaconda.org/conda-forge/noarch/r-logging-0.10_108-r43ha770c72_4.conda#e32f157d485d2fbd076abf006156d757 -https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.3-r43h57805ef_2.conda#7b04cb810f47eb12efc2e9be5f8ca1f1 -https://conda.anaconda.org/conda-forge/linux-64/r-maps-3.4.2-r43h57805ef_0.conda#a8a9f2a4fc6692046eebb1d89860b94a -https://conda.anaconda.org/conda-forge/linux-64/r-mass-7.3_60-r43h57805ef_1.conda#be049620c8ceefdb69a24db0c1919c85 -https://conda.anaconda.org/conda-forge/linux-64/r-mba-0.1_0-r43ha503ecb_1.conda#71752b2b57c41eb2e03653bea2a44d94 -https://conda.anaconda.org/conda-forge/noarch/r-nbclust-3.0.1-r43hc72bb7e_2.conda#1a7497d490b8f19d192c26040b6b35e5 -https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.22-r43h5647f33_0.conda#8ff19fc3195d7742c704a957c55cc87a -https://conda.anaconda.org/conda-forge/linux-64/r-pcict-0.5_4.4-r43h57805ef_1.conda#238a8a2e93424fa8cb9942925fc515a2 -https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r43hc72bb7e_3.conda#8978eef741fffaa48be070693a17f42f -https://conda.anaconda.org/conda-forge/linux-64/r-proxy-0.4_27-r43h57805ef_2.conda#742133e20563c7321e9d0cbd7e7102c7 -https://conda.anaconda.org/conda-forge/linux-64/r-ps-1.7.6-r43h57805ef_0.conda#48f9e73215aa6de4545ec3ec36e5e534 -https://conda.anaconda.org/conda-forge/noarch/r-r.methodss3-1.8.2-r43hc72bb7e_2.conda#e6976d24b97b9cdcb9a74ac55495f404 -https://conda.anaconda.org/conda-forge/noarch/r-r6-2.5.1-r43hc72bb7e_2.conda#79f167972554dc6b65aa099cd85c22a1 -https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r43h785f33e_2.conda#d998f26d6a55b83dab1c25b583e1463a -https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.0.12-r43h7df8631_0.conda#a8aac8be0868617b28f27484ea548d6c -https://conda.anaconda.org/conda-forge/noarch/r-remotes-2.5.0-r43hc72bb7e_0.conda#a3f5e53761f368633e54c76917940eb6 -https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.4-r43ha18555a_0.conda#74c4cb6644843dccabc350cba4b56ec6 -https://conda.anaconda.org/conda-forge/noarch/r-rpmg-2.2_7-r43hc72bb7e_0.conda#9fceb6466208ae034b8847cdd27bf6db -https://conda.anaconda.org/conda-forge/noarch/r-rprojroot-2.0.4-r43hc72bb7e_0.conda#279a906f3d37ee80ee94950754eb9ded -https://conda.anaconda.org/conda-forge/noarch/r-snow-0.4_4-r43hc72bb7e_2.conda#ceedb5263134a3100813b84c32747c78 -https://conda.anaconda.org/conda-forge/linux-64/r-udunits2-0.13.2.1-r43h57805ef_3.conda#f80ce6fa5f07c33a4fac0bcfc151b161 -https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.4-r43h57805ef_0.conda#d228498392dce22d3fe6266554498493 -https://conda.anaconda.org/conda-forge/linux-64/r-uuid-1.2_0-r43h57805ef_0.conda#88a02431c8ab8be38eed2b01f9d44ab4 -https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.2-r43hc72bb7e_1.conda#307f6c8262afed91d2999568e2268ed6 -https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.0-r43hc72bb7e_0.conda#7380a50d9daae38b40777f7630b8c3ba -https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.44-r43ha18555a_0.conda#8fbbfbc83f3f8572c8d5bb066a1eb8a4 -https://conda.anaconda.org/conda-forge/noarch/r-xmlparsedata-1.0.5-r43hc72bb7e_2.conda#a973f1f52947adda7b4cd1ea3c2f9941 -https://conda.anaconda.org/conda-forge/linux-64/r-yaml-2.3.8-r43h57805ef_0.conda#41db1ee9d0073339e681379b92e7dfb6 -https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.23.2-py311hd037940_0.conda#a27a1dc2d447c48b3a38125c70d2dc89 +https://conda.anaconda.org/conda-forge/noarch/pyroma-4.2-pyhd8ed1ab_0.conda#fe2aca9a5d4cb08105aefc451ef96950 +https://conda.anaconda.org/conda-forge/linux-64/r-base-4.2.3-h0887e52_8.conda#34cb3750c8a6da10a490e470f87e670b +https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.3.9-py311h40fbdff_0.conda#dcee6ba4d1ac6af18827d0941b6a1b42 +https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.2.1-pyhd8ed1ab_0.conda#c6089540fed51a9a829aa19590fa925b +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.24.0-py311h14de704_1.conda#873580dfb41f82fe67dcd525bd243027 https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_2.conda#b713b116feaf98acdba93ad4d7f90ca1 +https://conda.anaconda.org/conda-forge/noarch/cads-api-client-1.0.3-pyhd8ed1ab_0.conda#46b7eb9d2f3ca144f3195dc6aa7bdf93 https://conda.anaconda.org/conda-forge/linux-64/cdo-2.3.0-h24bcfa3_0.conda#238311a432a8e49943d3348e279af714 -https://conda.anaconda.org/conda-forge/linux-64/imagemagick-7.1.1_19-pl5321h7e74ff9_0.conda#a4a0ce7caba20cae61aac9aeacbd76c2 +https://conda.anaconda.org/conda-forge/noarch/esgf-pyclient-0.3.1-pyhca7485f_3.conda#1d43833138d38ad8324700ce45a7099a +https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.5-py311hbac4ec9_0.conda#786d3808394b1bdfd3f41f2e2c67279e +https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda#33628e0e3de7afd2c8172f76439894cb https://conda.anaconda.org/conda-forge/noarch/iris-3.9.0-pyha770c72_0.conda#efaf150eb009f04efa58f1401c767192 https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-15.0.2-hac33072_2_cpu.conda#12951edff85582aedcd2db0b79393102 https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-15.0.2-hd42f311_2_cpu.conda#dcc3a1e12157bbbbae96029d9d34fd0e @@ -582,95 +525,156 @@ https://conda.anaconda.org/conda-forge/linux-64/libarrow-gandiva-15.0.2-hd4ab825 https://conda.anaconda.org/conda-forge/linux-64/libparquet-15.0.2-h6a7eafb_2_cpu.conda#b06caaa4ef20db071dc832323701e5e3 https://conda.anaconda.org/conda-forge/noarch/lime-0.2.0.1-pyhd8ed1ab_1.tar.bz2#789ce01416721a5533fb74aa4361fd13 https://conda.anaconda.org/conda-forge/noarch/mapgenerator-1.0.7-pyhd8ed1ab_0.conda#d18db96ef2a920b0ecefe30282b0aecf -https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_0.conda#43d9cd74e3950ab09cbddf36f1706b9f +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda#e2d2abb421c13456a9a9f80272fdf543 https://conda.anaconda.org/conda-forge/linux-64/psy-simple-1.5.0-py311h38be061_1.conda#0c795bac4990aec7adabb34caa9d3873 -https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.7.1-pyhd8ed1ab_0.conda#447d61cb83a9c3a3916fba1bc3cff0bf -https://conda.anaconda.org/conda-forge/linux-64/pydot-2.0.0-py311h38be061_0.conda#cdfd23a54a18f3c8d5320d7717f4ed52 -https://conda.anaconda.org/conda-forge/linux-64/r-bigmemory-4.6.4-r43ha503ecb_0.conda#8737c1d2787e754db2e88ef1610c737a -https://conda.anaconda.org/conda-forge/linux-64/r-checkmate-2.3.1-r43h57805ef_0.conda#b3e470863d9e21349b1a6c075b681901 -https://conda.anaconda.org/conda-forge/linux-64/r-class-7.3_22-r43h57805ef_1.conda#edcd749bf55569ea5c2f419c10e6ee59 -https://conda.anaconda.org/conda-forge/linux-64/r-climdex.pcic-1.1_11-r43ha503ecb_2.conda#59f6775bc30ccc52a2ec7aa8f353dd9b -https://conda.anaconda.org/conda-forge/noarch/r-desc-1.4.3-r43hc72bb7e_0.conda#3bd51d5d0cc81f943e93eabb982b318b -https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.2-r43h57805ef_2.conda#10c5892991072cfa3a61489d2ac6ad66 -https://conda.anaconda.org/conda-forge/noarch/r-elliptic-1.4_0-r43hc72bb7e_4.conda#16e4352829cf433be8884e27e1b8e4a1 -https://conda.anaconda.org/conda-forge/noarch/r-foreach-1.5.2-r43hc72bb7e_2.conda#cf8d448c534caecc11d3999a041d4769 -https://conda.anaconda.org/conda-forge/noarch/r-highr-0.11-r43hc72bb7e_0.conda#ecd3b95a01caa7bdcf63714427b5b88c -https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.4-r43hc72bb7e_0.conda#291d2fb68ea1b181644b40d6743ae000 -https://conda.anaconda.org/conda-forge/linux-64/r-mapproj-1.2.11-r43h57805ef_1.conda#cb9973326cda79323ab1127d0006c3fd -https://conda.anaconda.org/conda-forge/linux-64/r-matrix-1.6_5-r43h316c678_0.conda#8146ef1b3c54e1a484822085d39357b0 -https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r43hc72bb7e_0.conda#2f189c59532c130f4b83e4a50626c08b -https://conda.anaconda.org/conda-forge/noarch/r-ncdf4.helpers-0.3_6-r43hc72bb7e_2.conda#23938872f695db31c28a0207c51c0f09 -https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_165-r43hbcb9c34_0.conda#261b441154346a173a7efd53925729dc -https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r43ha503ecb_0.conda#47bf330a88b5a59bc6e110624f1b8e7a -https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.4-r43h57805ef_0.conda#660d4e9ff8beef35dbda645484d17a25 -https://conda.anaconda.org/conda-forge/noarch/r-r.oo-1.26.0-r43hc72bb7e_0.conda#e467767d55b77c81b3167f00f2ecac65 -https://conda.anaconda.org/conda-forge/linux-64/r-rcpparmadillo-0.12.8.4.0-r43h58a4165_0.conda#57e177923b3c89382db34962ff5320e2 -https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.1-r43hc72bb7e_2.conda#0a2c2b272177122311ca46834b8ca6ab -https://conda.anaconda.org/conda-forge/linux-64/r-sp-2.1_4-r43hb1dbf0f_0.conda#01d55e9a8ae9cb6d222b0154316346a4 -https://conda.anaconda.org/conda-forge/linux-64/r-spam-2.10_0-r43h9f9f741_0.conda#b1f50ff35422ee8bc5e3d6c0565b3e62 -https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.3.0-r43ha503ecb_0.conda#9502bf10997943c1f3d6abeced14b792 -https://conda.anaconda.org/conda-forge/linux-64/r-units-0.8_5-r43ha503ecb_0.conda#001680df8c5745b7dc3b799a9e1ac2b0 -https://conda.anaconda.org/conda-forge/linux-64/r-wk-0.9.1-r43ha503ecb_0.conda#4a0dad8564d2b623e91d9d9f38e5abb5 -https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.3.6-r43hbfba7a4_1.conda#545f26a602ff99102e7fd70f425ead32 -https://conda.anaconda.org/conda-forge/linux-64/r-zoo-1.8_12-r43h57805ef_1.conda#5e4c7ad3824c359f05601463ec7ba9c5 +https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.8.0-pyhd8ed1ab_0.conda#fba377622e74ee0bbeb8ccae9fa593d3 +https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_5-r42hc72bb7e_1005.conda#f2744985b083b1bbffd4df19437cf1e8 +https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.0-r42hb1dbf0f_0.conda#d879e1fbd80113312364a5db3682c789 +https://conda.anaconda.org/conda-forge/noarch/r-bigmemory.sri-0.1.8-r42hc72bb7e_0.conda#383f36b5a0b7dd7c467aa1b6b5fe7307 +https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.3-r42ha18555a_0.conda#93fc8055b8aee751e201604a02d7d06f +https://conda.anaconda.org/conda-forge/noarch/r-codetools-0.2_20-r42hc72bb7e_0.conda#a9e9276ab95d053b9db56159cfeda2c9 +https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_0-r42h57805ef_1.conda#68ec691b072953b496ca1a4d83b2bc3d +https://conda.anaconda.org/conda-forge/linux-64/r-contfrac-1.1_12-r42h57805ef_1004.conda#bc308888aa4b4fb4e37a7a17fdc911c9 +https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.4.7-r42hc72bb7e_0.conda#941d7bcf2b94a682419ea1fbf6789d1f +https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r42hc72bb7e_0.conda#4a74a6114bbea1ad8d488e99b83df3da +https://conda.anaconda.org/conda-forge/noarch/r-dbi-1.2.3-r42hc72bb7e_0.conda#b283bb5431a4b960cfa3f82043d1437b +https://conda.anaconda.org/conda-forge/linux-64/r-desolve-1.40-r42hd9ac46e_0.conda#7232f8b5707fc9739cb2f8fdc5b4b64d +https://conda.anaconda.org/conda-forge/linux-64/r-digest-0.6.36-r42ha18555a_0.conda#332551d9a37018826d528cf16701bd2b +https://conda.anaconda.org/conda-forge/noarch/r-docopt-0.7.1-r42hc72bb7e_3.conda#99be998b67c40ef6eb1a5af90e307c1d +https://conda.anaconda.org/conda-forge/linux-64/r-dotcall64-1.1_1-r42h61816a4_0.conda#d83332ff8d9912151d9a4b4972fd1da0 +https://conda.anaconda.org/conda-forge/noarch/r-evaluate-0.24.0-r42hc72bb7e_0.conda#c2a50c427d0febc367122a875239e771 +https://conda.anaconda.org/conda-forge/linux-64/r-fansi-1.0.6-r42h57805ef_0.conda#c12524190662098e2e8a245a3d1bc7dc +https://conda.anaconda.org/conda-forge/linux-64/r-farver-2.1.2-r42ha18555a_0.conda#475d7bcc6de3c5851b112675eb55f497 +https://conda.anaconda.org/conda-forge/noarch/r-functional-0.6-r42ha770c72_1004.conda#9e27c34589b883accd340d651bdeaa02 +https://conda.anaconda.org/conda-forge/noarch/r-generics-0.1.3-r42hc72bb7e_2.conda#c492355d73e184353c82b62f5087a601 +https://conda.anaconda.org/conda-forge/noarch/r-geomapdata-2.0_2-r42hc72bb7e_0.conda#799a671bad7a89ac1d9da5cb98f75367 +https://conda.anaconda.org/conda-forge/linux-64/r-git2r-0.33.0-r42hbae1c7c_0.conda#2cdc8746b3283f02e5ba387bcfc51aa1 +https://conda.anaconda.org/conda-forge/linux-64/r-glue-1.7.0-r42h57805ef_0.conda#eab803a28d66337ae3732b04c5f5604f +https://conda.anaconda.org/conda-forge/linux-64/r-goftest-1.2_3-r42h57805ef_2.conda#4210e40893bbac7533714429ac4d0fe9 +https://conda.anaconda.org/conda-forge/linux-64/r-isoband-0.2.7-r42ha503ecb_2.conda#44979df954a15195470f336cd18b5eb6 +https://conda.anaconda.org/conda-forge/noarch/r-iterators-1.0.14-r42hc72bb7e_2.conda#616ab7b008326d3d76d59ba35b3fb592 +https://conda.anaconda.org/conda-forge/linux-64/r-jsonlite-1.8.8-r42h57805ef_0.conda#d0b27ba963de139270a7b53f897afdf6 +https://conda.anaconda.org/conda-forge/linux-64/r-kernsmooth-2.23_24-r42hc2011d3_0.conda#aac4c7efaa5f2f7013cff5dabe0255eb +https://conda.anaconda.org/conda-forge/noarch/r-labeling-0.4.3-r42hc72bb7e_0.conda#b9b940011dd81d8b60859fcd0d9775f4 +https://conda.anaconda.org/conda-forge/linux-64/r-lattice-0.22_6-r42h57805ef_0.conda#93cee3961cc5277443a3e437f6991010 +https://conda.anaconda.org/conda-forge/linux-64/r-lazyeval-0.2.2-r42h57805ef_4.conda#109112b1c26d932414daa139a45d3a69 +https://conda.anaconda.org/conda-forge/linux-64/r-lmom-3.0-r42h61816a4_0.conda#0cffcf07f72a3be278b236e3b2f451c9 +https://conda.anaconda.org/conda-forge/noarch/r-logging-0.10_108-r42ha770c72_4.conda#d9980750f18496909aa8327037a43f8b +https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.3-r42h57805ef_2.conda#ea3b13247660dd534a745a26f8d02365 +https://conda.anaconda.org/conda-forge/linux-64/r-maps-3.4.2-r42h57805ef_0.conda#a0367e4720045d5d17cb841a415ada1e +https://conda.anaconda.org/conda-forge/linux-64/r-mass-7.3_60.0.1-r42h57805ef_0.conda#0427fa6c4da6a4b2e43d8dfd022e933b +https://conda.anaconda.org/conda-forge/linux-64/r-mba-0.1_0-r42ha503ecb_1.conda#ab0ffee07ebd556b0e0119017439218a +https://conda.anaconda.org/conda-forge/noarch/r-nbclust-3.0.1-r42hc72bb7e_2.conda#fffd3a5ced3a6949fe7a20af1ff4b2c6 +https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.22-r42h5647f33_0.conda#d23e6cd8fe41079eb1421b6a6d1f1c67 +https://conda.anaconda.org/conda-forge/linux-64/r-pcict-0.5_4.4-r42h57805ef_1.conda#6e5770da5c174a2617096cbc2b8d96f4 +https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r42hc72bb7e_3.conda#469b66f84a5d234689b423c9821b188c +https://conda.anaconda.org/conda-forge/linux-64/r-proxy-0.4_27-r42h57805ef_2.conda#1d2ea39d52acbcc9d7db8a0abe5fdf7b +https://conda.anaconda.org/conda-forge/linux-64/r-ps-1.7.6-r42h57805ef_0.conda#3a592c79e0fade3a0c3574696fa143a3 +https://conda.anaconda.org/conda-forge/noarch/r-r.methodss3-1.8.2-r42hc72bb7e_2.conda#305fe9f97f7598d9722c76d6be7bf794 +https://conda.anaconda.org/conda-forge/noarch/r-r6-2.5.1-r42hc72bb7e_2.conda#1473a12b55128f8ac776ae5595a4d0cb +https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r42h785f33e_2.conda#b7b475c73493f70cbbb9d7213b94aed1 +https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.0.12-r42h7df8631_0.conda#096448d673973c0e45b9d803da251971 +https://conda.anaconda.org/conda-forge/noarch/r-remotes-2.5.0-r42hc72bb7e_0.conda#c595028f27588c6ff242fcb0dab79363 +https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.4-r42ha18555a_0.conda#ab6364a17b32268b82c46f09695a9cc9 +https://conda.anaconda.org/conda-forge/noarch/r-rpmg-2.2_7-r42hc72bb7e_0.conda#9e34ca8c73b895781e13b1d399105f35 +https://conda.anaconda.org/conda-forge/noarch/r-rprojroot-2.0.4-r42hc72bb7e_0.conda#c2bb0aa15018f8d9a4bc7b9e459dc94f +https://conda.anaconda.org/conda-forge/noarch/r-snow-0.4_4-r42hc72bb7e_2.conda#97cc50b630391cbc89ea70425ebb6ade +https://conda.anaconda.org/conda-forge/linux-64/r-udunits2-0.13.2.1-r42h57805ef_3.conda#56d551dc25582293fed533026356a79e +https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.4-r42h57805ef_0.conda#1da2e3bcbf75c6ddc3466941d88ff93f +https://conda.anaconda.org/conda-forge/linux-64/r-uuid-1.2_0-r42h57805ef_0.conda#f7585e68687b274880bbd68f34c0524d +https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.2-r42hc72bb7e_1.conda#e7a6483f639fb958747100bd17550ed6 +https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.0-r42hc72bb7e_0.conda#972eaab581c25fff9ea6986aa6ab281a +https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.45-r42ha18555a_0.conda#9e13c392bfcee4a261e4b513d6d862e7 +https://conda.anaconda.org/conda-forge/noarch/r-xmlparsedata-1.0.5-r42hc72bb7e_2.conda#2f3614450b54f222c1eff786ec2a45ec +https://conda.anaconda.org/conda-forge/linux-64/r-yaml-2.3.8-r42h57805ef_0.conda#97f60a93ca12f4fdd5f44049dcee4345 https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_2.conda#a79d8797f62715255308d92d3a91ef2e -https://conda.anaconda.org/conda-forge/noarch/xesmf-0.8.5-pyhd8ed1ab_0.conda#0f74ff434e03fa89315ec45ec1bc4284 +https://conda.anaconda.org/conda-forge/noarch/xesmf-0.8.6-pyhd8ed1ab_0.conda#3f906da34e3cb6e7260a9fcd0e9ee7e8 https://conda.anaconda.org/conda-forge/noarch/xgboost-2.0.3-cuda120_pyh68bd8d9_4.conda#aaaadc3a408067943ebc10299393a7c3 +https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.0-pyhd8ed1ab_0.conda#f7433e3bd2749b934ddf81451a45967d +https://conda.anaconda.org/conda-forge/linux-64/imagemagick-7.1.1_19-pl5321h7e74ff9_0.conda#a4a0ce7caba20cae61aac9aeacbd76c2 https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-15.0.2-hac33072_2_cpu.conda#48c711b4e07664ec7b245a9664be60a1 https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-sql-15.0.2-h9241762_2_cpu.conda#97e46f0f20157e19487ca3e65100247a -https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.4-hd8ed1ab_0.conda#391934bd1a79990c23df1d1809ddc821 -https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2#aa9b3ad140f6c0668c646f32e20ccf82 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.4-hd8ed1ab_1.conda#37cec2cf68f4c09563d8bc833791096b https://conda.anaconda.org/conda-forge/linux-64/psy-maps-1.5.0-py311h38be061_1.conda#d7901c26884613539e958c10e9973413 https://conda.anaconda.org/conda-forge/linux-64/psy-reg-1.4.0-py311h38be061_3.conda#6f7871722c07922028043144e8873b37 +https://conda.anaconda.org/conda-forge/linux-64/pydot-2.0.0-py311h38be061_0.conda#cdfd23a54a18f3c8d5320d7717f4ed52 https://conda.anaconda.org/conda-forge/noarch/python-cdo-1.6.0-pyhd8ed1ab_0.conda#3fd1a0b063c1fbbe4b7bd5a5a7601e84 -https://conda.anaconda.org/conda-forge/linux-64/r-akima-0.6_3.4-r43h61816a4_2.conda#3864b228566ce025f29d1ef672139c07 -https://conda.anaconda.org/conda-forge/noarch/r-callr-3.7.6-r43hc72bb7e_0.conda#5f01d28492d5ca80b54fdba4510a653f -https://conda.anaconda.org/conda-forge/noarch/r-doparallel-1.0.17-r43hc72bb7e_2.conda#5eb327ee913c177e3c02278e5103f9a1 -https://conda.anaconda.org/conda-forge/linux-64/r-e1071-1.7_14-r43ha503ecb_0.conda#99f29679579f01d7ffdf0a6d47495eb2 -https://conda.anaconda.org/conda-forge/noarch/r-gtable-0.3.5-r43hc72bb7e_0.conda#4afa6b3bc18ef585bac26420528ed1de -https://conda.anaconda.org/conda-forge/noarch/r-hypergeo-1.2_13-r43hc72bb7e_1004.conda#960f0770e69b4d8e154e9b751763b672 -https://conda.anaconda.org/conda-forge/noarch/r-knitr-1.47-r43hc72bb7e_0.conda#0310660d998a5933bb4545a312ed7385 -https://conda.anaconda.org/conda-forge/linux-64/r-lmoments-1.3_1-r43h7ce84a7_5.conda#24bcd1ee177f4e977657f5560fdf6616 -https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.3-r43h57805ef_0.conda#48f220862d7b0ac7d1397f8c6601fb70 -https://conda.anaconda.org/conda-forge/linux-64/r-mgcv-1.9_1-r43h316c678_0.conda#c73d9ed0dc98182d712cbea33a3e5d59 -https://conda.anaconda.org/conda-forge/noarch/r-r.utils-2.12.3-r43hc72bb7e_0.conda#5ea010c037dd64b6d6a4de2c06059231 -https://conda.anaconda.org/conda-forge/linux-64/r-reshape-0.8.9-r43hc72bb7e_2.conda#e24945cba9c156cf4e7154b3857f416d -https://conda.anaconda.org/conda-forge/linux-64/r-s2-1.1.6-r43h5eac2b3_0.conda#8295dd173068e7ca92a742ebcc72d75a -https://conda.anaconda.org/conda-forge/noarch/r-scales-1.3.0-r43hc72bb7e_0.conda#508360956e18c2b0cc18968cdb786c78 -https://conda.anaconda.org/conda-forge/linux-64/r-specsverification-0.5_3-r43ha503ecb_3.conda#e9e632dc89a5235a6a44b42f23b497d8 -https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.6.5-r43ha503ecb_0.conda#e398bd0451e6350a876a8561f8e90682 +https://conda.anaconda.org/conda-forge/linux-64/r-bigmemory-4.6.4-r42ha503ecb_0.conda#12b6fa8fe80a6494a948c6ea2f34340d +https://conda.anaconda.org/conda-forge/linux-64/r-checkmate-2.3.1-r42h57805ef_0.conda#9febce7369c72d991e2399d7d28f3390 +https://conda.anaconda.org/conda-forge/linux-64/r-class-7.3_22-r42h57805ef_1.conda#97476afece904fbbe73762b9cf8c4d83 +https://conda.anaconda.org/conda-forge/linux-64/r-climdex.pcic-1.1_11-r42ha503ecb_2.conda#cff1d95fe315f109a1f01a7ef112fdd6 +https://conda.anaconda.org/conda-forge/noarch/r-desc-1.4.3-r42hc72bb7e_0.conda#8c535581a9a3a1e2a0f5ef6d7e4d6a7f +https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.2-r42h57805ef_2.conda#1673236a1895ca5cce15c888435ad2f9 +https://conda.anaconda.org/conda-forge/noarch/r-elliptic-1.4_0-r42hc72bb7e_4.conda#8388c500125813b91332f9d3720f3471 +https://conda.anaconda.org/conda-forge/noarch/r-foreach-1.5.2-r42hc72bb7e_2.conda#16f5453742f10816f2964a2b05bc20d3 +https://conda.anaconda.org/conda-forge/noarch/r-highr-0.11-r42hc72bb7e_0.conda#2edda9394885683f7cad76673eeb2025 +https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.4-r42hc72bb7e_0.conda#7d00a412d44005a8714c192589143b81 +https://conda.anaconda.org/conda-forge/linux-64/r-mapproj-1.2.11-r42h57805ef_1.conda#af943f7f8db88fddf340980fa53ed3e5 +https://conda.anaconda.org/conda-forge/linux-64/r-matrix-1.6_5-r42h316c678_0.conda#4f52f9c56146c8692503a7d2057ba7ba +https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r42hc72bb7e_0.conda#e7036a0b18f2ee6b108fe12b908b18f3 +https://conda.anaconda.org/conda-forge/noarch/r-ncdf4.helpers-0.3_6-r42hc72bb7e_2.conda#c7180e87be344175853f1ebfcdce04d0 +https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_165-r42hbcb9c34_0.conda#a83fa459c53c4674ee394b80b7b2fbd5 +https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r42ha503ecb_0.conda#9b63113ec0c6f1a69c53f77d8f8fa4dc +https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.4-r42h57805ef_0.conda#97f10f23ade292cb369d5635b119befa +https://conda.anaconda.org/conda-forge/noarch/r-r.oo-1.26.0-r42hc72bb7e_0.conda#8d5929eebbe7d431fa3f989874b090eb +https://conda.anaconda.org/conda-forge/linux-64/r-rcpparmadillo-0.12.8.4.0-r42h58a4165_0.conda#49973fea110c814e316d8277bb08e516 +https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.1-r42hc72bb7e_2.conda#b45f1b94fd106c19eb79303b24dc9a7c +https://conda.anaconda.org/conda-forge/linux-64/r-sp-2.1_4-r42hb1dbf0f_0.conda#681bb0a7290d86f9f8bf8dc816f114c0 +https://conda.anaconda.org/conda-forge/linux-64/r-spam-2.10_0-r42h9f9f741_0.conda#159d8ab59a2777a26a739f8090b5a80c +https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.3.0-r42ha503ecb_0.conda#3d62906e9c1fecf61370a3ad6e808e5e +https://conda.anaconda.org/conda-forge/linux-64/r-units-0.8_5-r42ha503ecb_0.conda#90b4c99051df9db2f825d6259dcf12cd +https://conda.anaconda.org/conda-forge/linux-64/r-wk-0.9.1-r42ha503ecb_0.conda#3c5ea742d2069f956ea6ff02a2aadce1 +https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.3.6-r42hbfba7a4_1.conda#5c3d7a89a2d5e1c0885f92d1aa6fde30 +https://conda.anaconda.org/conda-forge/linux-64/r-zoo-1.8_12-r42h57805ef_1.conda#5367d265c0c9c151dea85f1ccb515ec1 https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-15.0.2-h9241762_2_cpu.conda#c18bbb60ed10774dbf9ea86484728a74 -https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.4-hd8ed1ab_0.conda#c9d64b8a7ee8e6bdbf0e7d8aa7f39601 -https://conda.anaconda.org/conda-forge/linux-64/r-classint-0.4_10-r43h61816a4_0.conda#3cd17c77cac1801072c599c7cddff7f2 -https://conda.anaconda.org/conda-forge/noarch/r-cyclocomp-1.1.1-r43hc72bb7e_0.conda#5287430003206a614ae64a91c8490e3c -https://conda.anaconda.org/conda-forge/noarch/r-gridextra-2.3-r43hc72bb7e_1005.conda#15f718c5ad9c479dc80f1812cc787c27 -https://conda.anaconda.org/conda-forge/noarch/r-lmomco-2.5.1-r43hc72bb7e_0.conda#3eff921d171972770deabc2cfff9fcd2 -https://conda.anaconda.org/conda-forge/noarch/r-multiapply-2.1.4-r43hc72bb7e_1.conda#72783cf9e09eeb47114fc506de126613 -https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.9.0-r43hc72bb7e_1.conda#7cff01456566a69381d3907d520c10b2 -https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.0.2-r43h57805ef_0.conda#713053b11419075641f09df086ef58d9 -https://conda.anaconda.org/conda-forge/noarch/r-r.cache-0.16.0-r43hc72bb7e_2.conda#fa01685a9c07191e186357c001b19ece +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.4-hd8ed1ab_1.conda#ab83e3b9ca2b111d8f332e9dc8b2170f +https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2#aa9b3ad140f6c0668c646f32e20ccf82 +https://conda.anaconda.org/conda-forge/linux-64/r-akima-0.6_3.4-r42h61816a4_2.conda#8536251313f441c4d70ff11ad976d294 +https://conda.anaconda.org/conda-forge/noarch/r-callr-3.7.6-r42hc72bb7e_0.conda#4fb1765d6dc531936db81af3f6be316a +https://conda.anaconda.org/conda-forge/noarch/r-doparallel-1.0.17-r42hc72bb7e_2.conda#1cddfbaade4416f0234670391bb31ba2 +https://conda.anaconda.org/conda-forge/linux-64/r-e1071-1.7_14-r42ha503ecb_0.conda#6e147da5592263573409bce2e9c39b3c +https://conda.anaconda.org/conda-forge/noarch/r-gtable-0.3.5-r42hc72bb7e_0.conda#b5cff9c0564c9fcd8b62632430a0cee5 +https://conda.anaconda.org/conda-forge/noarch/r-hypergeo-1.2_13-r42hc72bb7e_1004.conda#7a207a992c606168044d13dcffd80ad4 +https://conda.anaconda.org/conda-forge/noarch/r-knitr-1.47-r42hc72bb7e_0.conda#0a20a2f6546bc0cde246c53a92a7964d +https://conda.anaconda.org/conda-forge/linux-64/r-lmoments-1.3_1-r42h7ce84a7_5.conda#e727f948785d9aad6426e912e135f935 +https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.3-r42h57805ef_0.conda#01fd816e4231ae7cf2833e5661a92611 +https://conda.anaconda.org/conda-forge/linux-64/r-mgcv-1.9_1-r42h316c678_0.conda#5c3d738118f5948f6cc29ccb63d6e2ff +https://conda.anaconda.org/conda-forge/noarch/r-r.utils-2.12.3-r42hc72bb7e_0.conda#81f505dec8850e227d9b2a7e88fa505f +https://conda.anaconda.org/conda-forge/linux-64/r-reshape-0.8.9-r42hc72bb7e_2.conda#17e75917161bf824248cc54a412b4394 +https://conda.anaconda.org/conda-forge/linux-64/r-s2-1.1.6-r42h5eac2b3_0.conda#c3835d051156c3eacce21caec8061594 +https://conda.anaconda.org/conda-forge/noarch/r-scales-1.3.0-r42hc72bb7e_0.conda#0af4021fe6d0047bbf7a34bf21c50bdd +https://conda.anaconda.org/conda-forge/linux-64/r-specsverification-0.5_3-r42h7525677_2.tar.bz2#1521b8a303852af0496245e368d3c61c +https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.6.5-r42ha503ecb_0.conda#5689030c60302fb5bb7a48b54c11dbe8 https://conda.anaconda.org/conda-forge/linux-64/pyarrow-15.0.2-py311h78dcc79_2_cpu.conda#6f20003320c613f2505cf248bfce48f6 -https://conda.anaconda.org/conda-forge/noarch/r-climprojdiags-0.3.3-r43hc72bb7e_0.conda#5b6f07861439a584c942ec0c3967660f -https://conda.anaconda.org/conda-forge/noarch/r-lintr-3.1.2-r43hc72bb7e_0.conda#d2b855cb2d8c0c5c870fe61d0f7e0d0c -https://conda.anaconda.org/conda-forge/linux-64/r-sf-1.0_14-r43h85a8d9e_1.conda#a2ea960cebc252c3e10c5fb9fb4dfefc -https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.2.1-r43h57805ef_2.conda#afa7d3f21fbc5a2fbaa48cb9bacb7bce -https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.2-pyhd8ed1ab_0.conda#34db694d2afc672094f1a74af51cb44e +https://conda.anaconda.org/conda-forge/linux-64/r-classint-0.4_10-r42h61816a4_0.conda#668a2f3e36b373878e698b1387bea45b +https://conda.anaconda.org/conda-forge/noarch/r-cyclocomp-1.1.1-r42hc72bb7e_0.conda#6bd41a85dc43541400311eca03d4e2d4 +https://conda.anaconda.org/conda-forge/noarch/r-gridextra-2.3-r42hc72bb7e_1005.conda#da116b29105a8d48571975a185e9bb94 +https://conda.anaconda.org/conda-forge/noarch/r-lmomco-2.5.1-r42hc72bb7e_0.conda#6efbdfe5d41b3ef5652be1ea2e0a6e3c +https://conda.anaconda.org/conda-forge/noarch/r-multiapply-2.1.4-r42hc72bb7e_1.conda#7aa5a8ca336904418caeb7395fd867e6 +https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.9.0-r42hc72bb7e_1.conda#07d5ce8e710897745f14c951ff947cdd +https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.0.2-r42h57805ef_0.conda#7985dada48799b7814ca069794d0b1a3 +https://conda.anaconda.org/conda-forge/noarch/r-r.cache-0.16.0-r42hc72bb7e_2.conda#34daac4e8faee056f15abdee858fc721 +https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.6-pyhd8ed1ab_0.conda#77ed2262e85230e5b870f505ed4922c8 https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda#ccc06e6ef2064ae129fab3286299abda -https://conda.anaconda.org/conda-forge/noarch/r-ggplot2-3.5.1-r43hc72bb7e_0.conda#efb6b27dba202d74e5f182faae28794a -https://conda.anaconda.org/conda-forge/noarch/r-rematch2-2.1.2-r43hc72bb7e_3.conda#d1f849bc6b24f93c392f4177f65578b4 -https://conda.anaconda.org/conda-forge/noarch/dask-2024.5.2-pyhd8ed1ab_0.conda#6bb2c18b838161e550a30de0fdff6993 -https://conda.anaconda.org/conda-forge/noarch/r-styler-1.10.3-r43hc72bb7e_0.conda#de41a01071ff652806dd79cd7ddaf239 -https://conda.anaconda.org/conda-forge/linux-64/r-tlmoments-0.7.5.3-r43ha503ecb_1.conda#cc23eacc44f680ecc36222de5a1c6694 -https://conda.anaconda.org/conda-forge/noarch/r-viridis-0.6.5-r43hc72bb7e_0.conda#327e96357f5ba37795f2e292e29091c7 +https://conda.anaconda.org/conda-forge/noarch/r-climprojdiags-0.3.3-r42hc72bb7e_0.conda#f34d40a3f0f9160fdd2bccaae8e185d1 +https://conda.anaconda.org/conda-forge/noarch/r-lintr-3.1.2-r42hc72bb7e_0.conda#ef49cc606b94a9d5f30b9c48f5f68848 +https://conda.anaconda.org/conda-forge/linux-64/r-sf-1.0_14-r42h85a8d9e_1.conda#ad59b523759f3e8acc6fd623cfbfb5a9 +https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.2.1-r42h57805ef_2.conda#b1278a5148c9e52679bb72112770cdc3 +https://conda.anaconda.org/conda-forge/noarch/dask-2024.6.2-pyhd8ed1ab_0.conda#0af43d16240caf6aedefd7a4041ae64c +https://conda.anaconda.org/conda-forge/noarch/r-ggplot2-3.5.1-r42hc72bb7e_0.conda#77cc0254e0dc92e5e7791ce20a170f74 +https://conda.anaconda.org/conda-forge/noarch/r-rematch2-2.1.2-r42hc72bb7e_3.conda#5ccfee6f3b94e6b247c7e1929b24f1cc https://conda.anaconda.org/conda-forge/noarch/iris-esmf-regrid-0.10.0-pyhd8ed1ab_0.conda#a5ccce1a87da81d6c690cd11ae0687a2 -https://conda.anaconda.org/conda-forge/linux-64/r-fields-15.2-r43h61816a4_0.conda#9e320d2aa158a698f8ba09b3176607ea -https://conda.anaconda.org/conda-forge/noarch/r-spei-1.8.1-r43hc72bb7e_1.conda#3be1d0c7f8edcd4e7e8a64596020b90f +https://conda.anaconda.org/conda-forge/noarch/r-styler-1.10.3-r42hc72bb7e_0.conda#1b2b8fa85a9d0556773abac4763d8ef9 +https://conda.anaconda.org/conda-forge/linux-64/r-tlmoments-0.7.5.3-r42ha503ecb_1.conda#6aa1414e06dfffc39d3b5ca78b60b377 +https://conda.anaconda.org/conda-forge/noarch/r-viridis-0.6.5-r42hc72bb7e_0.conda#959f69b6dfd4b620a15489975fa27670 https://conda.anaconda.org/conda-forge/noarch/esmvalcore-2.10.0-pyhd8ed1ab_0.conda#18bc5ed0e0583cb0b212927795debea7 -https://conda.anaconda.org/conda-forge/linux-64/r-geomap-2.5_5-r43h57805ef_0.conda#dc942c6f2062894f7baf00fc6b907a79 -https://conda.anaconda.org/conda-forge/noarch/r-s2dverification-2.10.3-r43hc72bb7e_2.conda#13f4b1126272c8f195fc6ef38cc19d31 +https://conda.anaconda.org/conda-forge/linux-64/r-fields-15.2-r42h61816a4_0.conda#d84fe2f9e893e92089370b195e2263a0 +https://conda.anaconda.org/conda-forge/noarch/r-spei-1.8.1-r42hc72bb7e_1.conda#7fe060235dac0fc0b3d387f98e79d128 +https://conda.anaconda.org/conda-forge/linux-64/r-geomap-2.5_5-r42h57805ef_0.conda#e58ccf961b56e57d7c1e50995005b0bd +https://conda.anaconda.org/conda-forge/noarch/r-s2dverification-2.10.3-r42hc72bb7e_2.conda#8079a86a913155fe2589ec0b76dc9f5e https://conda.anaconda.org/conda-forge/noarch/autodocsumm-0.2.6-pyhd8ed1ab_0.tar.bz2#4409dd7e06a62c3b2aa9e96782c49c6d https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.4-pyhd8ed1ab_0.conda#9dc80eaeff56fb67dbf4f871b81bc13a -https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.3-pyhd8ed1ab_0.conda#55e445f4fcb07f2471fb0e1102d36488 +https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda#c7c50dd5192caa58a05e6a4248a27acb https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.8-pyhd8ed1ab_0.conda#611a35a27914fac3aa37611a6fe40bb5 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.6-pyhd8ed1ab_0.conda#d7e4954df0d3aea2eacc7835ad12671d https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda#7e1e7437273682ada2ed5e9e9714b140 From 321d3d6ad80d57b8f844a7837267b1956f4295ce Mon Sep 17 00:00:00 2001 From: Emma Hogan Date: Wed, 3 Jul 2024 14:58:47 +0100 Subject: [PATCH 13/16] Update AERONET data version (#3692) --- esmvaltool/cmorizers/data/cmor_config/AERONET.yml | 2 +- esmvaltool/cmorizers/data/datasets.yml | 2 +- esmvaltool/cmorizers/data/formatters/datasets/aeronet.py | 2 +- esmvaltool/recipes/recipe_aod_aeronet_assess.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/esmvaltool/cmorizers/data/cmor_config/AERONET.yml b/esmvaltool/cmorizers/data/cmor_config/AERONET.yml index 33ae35879d..0e6ebf2934 100644 --- a/esmvaltool/cmorizers/data/cmor_config/AERONET.yml +++ b/esmvaltool/cmorizers/data/cmor_config/AERONET.yml @@ -5,7 +5,7 @@ filename: 'AOD_Level20_Monthly_V3.tar.gz' # Common global attributes for Cmorizer output attributes: dataset_id: AERONET - version: 20230610 + version: 20240406 tier: 3 modeling_realm: atmos project_id: OBS6 diff --git a/esmvaltool/cmorizers/data/datasets.yml b/esmvaltool/cmorizers/data/datasets.yml index 759dc6177e..2ed387f55c 100644 --- a/esmvaltool/cmorizers/data/datasets.yml +++ b/esmvaltool/cmorizers/data/datasets.yml @@ -4,7 +4,7 @@ datasets: AERONET: tier: 3 source: "https://aeronet.gsfc.nasa.gov/" - last_access: 2023-06-13 + last_access: 2024-04-06 info: | Aerosol Optical Depth information from a worldwide network of stations. diff --git a/esmvaltool/cmorizers/data/formatters/datasets/aeronet.py b/esmvaltool/cmorizers/data/formatters/datasets/aeronet.py index 215c67d7a8..e3b5c968d8 100755 --- a/esmvaltool/cmorizers/data/formatters/datasets/aeronet.py +++ b/esmvaltool/cmorizers/data/formatters/datasets/aeronet.py @@ -7,7 +7,7 @@ https://aeronet.gsfc.nasa.gov/ Last access - 20230613 + 20240406 Download and processing instructions Download the following file: diff --git a/esmvaltool/recipes/recipe_aod_aeronet_assess.yml b/esmvaltool/recipes/recipe_aod_aeronet_assess.yml index 0fc82ec864..51cb14759b 100644 --- a/esmvaltool/recipes/recipe_aod_aeronet_assess.yml +++ b/esmvaltool/recipes/recipe_aod_aeronet_assess.yml @@ -44,7 +44,7 @@ diagnostics: start_year: 1994 end_year: 2014 additional_datasets: - - {dataset: AERONET, project: OBS6, mip: AERmon, tier: 3, type: atmos, version: 20231021} + - {dataset: AERONET, project: OBS6, mip: AERmon, tier: 3, type: atmos, version: 20240406} od440aer_season: <<: *var_od440aer From 9ea18591cebeec9df19e8c47d317dd469b9b7ba2 Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Wed, 3 Jul 2024 16:28:18 +0200 Subject: [PATCH 14/16] Update the list of datasets used in `recipe_easy_ipcc.yml` (#3710) --- esmvaltool/recipes/examples/recipe_easy_ipcc.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/esmvaltool/recipes/examples/recipe_easy_ipcc.yml b/esmvaltool/recipes/examples/recipe_easy_ipcc.yml index 40040e2835..af5d711fa8 100644 --- a/esmvaltool/recipes/examples/recipe_easy_ipcc.yml +++ b/esmvaltool/recipes/examples/recipe_easy_ipcc.yml @@ -63,7 +63,7 @@ diagnostics: script: examples/make_plot.py datasets: - - {dataset: ACCESS-CM2, ensemble: 'r(1:5)i1p1f1', grid: gn} + - {dataset: ACCESS-CM2, ensemble: 'r(1:10)i1p1f1', grid: gn} - {dataset: ACCESS-ESM1-5, ensemble: 'r(1:40)i1p1f1', grid: gn} - {dataset: AWI-CM-1-1-MR, ensemble: r1i1p1f1, grid: gn} - {dataset: BCC-CSM2-MR, ensemble: r1i1p1f1, grid: gn} @@ -118,11 +118,11 @@ datasets: - {dataset: MIROC6, ensemble: 'r(1:50)i1p1f1', grid: gn} - {dataset: MPI-ESM1-2-HR, ensemble: 'r1i1p1f1', grid: gn} # - {dataset: MPI-ESM1-2-HR, ensemble: 'r(1:2)i1p1f1', grid: gn} # second ensemble member causes warnings about large graphs in `concatenate` preprocessor step - - {dataset: MPI-ESM1-2-LR, ensemble: 'r(1:30)i1p1f1', grid: gn} + - {dataset: MPI-ESM1-2-LR, ensemble: 'r(1:50)i1p1f1', grid: gn} - {dataset: MRI-ESM2-0, ensemble: 'r(1:5)i1p1f1', grid: gn} # - {dataset: NESM3, ensemble: 'r(1:2)i1p1f1', grid: gn} # cannot be used due to https://github.com/ESMValGroup/ESMValCore/issues/2101 # - {dataset: NorESM2-LM, ensemble: r1i1p1f1, grid: gn} # duplicated areacello file with wrong name - {dataset: NorESM2-MM, ensemble: r1i1p1f1, grid: gn} - - {dataset: TaiESM1, ensemble: r1i1p1f1, grid: gn} + # - {dataset: TaiESM1, ensemble: r1i1p1f1, grid: gn} # download failure of ssp585 - {dataset: UKESM1-0-LL, ensemble: 'r(1:4)i1p1f2', grid: gn} - {dataset: UKESM1-0-LL, ensemble: r8i1p1f2, grid: gn} From 2e9288abd798cbb19da62f77c12113233708fb28 Mon Sep 17 00:00:00 2001 From: Emma Hogan Date: Wed, 3 Jul 2024 18:23:38 +0100 Subject: [PATCH 15/16] Update the list of broken recipes for `v2.11.0` (#3706) Co-authored-by: Bouwe Andela --- .../source/recipes/broken_recipe_list.rst | 43 +++++++++++++------ .../source/recipes/recipe_wenzel14jgr.rst | 2 + 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/doc/sphinx/source/recipes/broken_recipe_list.rst b/doc/sphinx/source/recipes/broken_recipe_list.rst index e2c5b874d8..78ef3e2e15 100644 --- a/doc/sphinx/source/recipes/broken_recipe_list.rst +++ b/doc/sphinx/source/recipes/broken_recipe_list.rst @@ -9,26 +9,41 @@ More details can be found in the :ref:`broken recipe policy `. .. list-table:: Broken recipes - :widths: 25 25 25 25 + :widths: 25 25 25 25 25 :header-rows: 1 * - Broken recipe - Affected diagnostics + - Broken since release - Problem - GitHub issue - * - `recipe_check_obs.yml` - - `ERA5_native6` - - Derivation of custom variables `rlus` and `rsus` - - `#1388 `_ * - :ref:`recipe_julia.yml ` - `example` - - fill values are not interpreted, resulting in an unusable plot + - v2.5.0 + - Fill values are not interpreted, resulting in an unusable plot - `#2595 `_ - * - :ref:`recipe_seaice_drift.yml ` - - `sea_ice_drift_SCICEX` - - ``shapely 2`` issue - - `#3243 `_ - * - :ref:`recipe_pysplot.yml ` - - `plot_map` - - ``shapely 2`` issue - - `#3483 `_ + * - :ref:`recipe_climwip_brunner2019_med.yml ` + - All (preprocessor issue) + - v2.11.0 + - Failed to run preprocessor function ``fix_metadata`` on the data: Unable to convert units + - `#3694 `_ + * - :ref:`recipe_ocean_amoc.yml ` + - ``diag_timeseries_amoc``, ``diag_transects`` + - v2.11.0 + - CESM1 CMIP5 Omon data no longer available + - `#3693 `_ + * - :ref:`recipe_preprocessor_derive_test.yml ` + - ``cmip6/toz`` + - v2.11.0 + - Failed to run preprocessor function ``derive`` on the data: Unable to convert units + - `#3709 `_ + * - :ref:`recipe_russell18jgr.yml ` + - ``Figure_4`` + - v2.11.0 + - CESM1 CMIP5 Omon data no longer available + - `#3693 `_ + * - :ref:`recipe_wenzel14jgr.yml ` + - ``diag_tsline_Fig2d`` + - v2.11.0 + - CESM1 CMIP5 Omon data no longer available + - `#3693 `_ diff --git a/doc/sphinx/source/recipes/recipe_wenzel14jgr.rst b/doc/sphinx/source/recipes/recipe_wenzel14jgr.rst index 7c07c6e1f5..3c7fa86a3a 100644 --- a/doc/sphinx/source/recipes/recipe_wenzel14jgr.rst +++ b/doc/sphinx/source/recipes/recipe_wenzel14jgr.rst @@ -1,3 +1,5 @@ +.. _recipe_wenzel14jgr: + Emergent constraints on carbon cycle feedbacks ============================================== From 64c371e88d79accb300574f04832e16127a1d9df Mon Sep 17 00:00:00 2001 From: Emma Hogan Date: Thu, 4 Jul 2024 11:39:20 +0100 Subject: [PATCH 16/16] Update the version number and release notes for v2.11.0 (#3695) --- .zenodo.json | 9 +- CITATION.cff | 4 +- doc/sphinx/source/changelog.rst | 129 ++++++++++++++++++ .../release_strategy/release_strategy.rst | 11 +- environment.yml | 2 +- environment_osx.yml | 2 +- 6 files changed, 146 insertions(+), 11 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index 89a81326cb..c087c4ae21 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -171,6 +171,11 @@ "name": "Hagemann, Stefan", "orcid": "0000-0001-5444-2945" }, + { + "affiliation": "University of Canterbury, New Zealand", + "name": "Hardacre, Catherine", + "orcid": "0000-0001-9093-4656" + }, { "affiliation": "ISAC-CNR, Italy", "name": "von Hardenberg, Jost", @@ -391,9 +396,9 @@ "license": { "id": "Apache-2.0" }, - "publication_date": "2023-07-06", + "publication_date": "2024-07-04", "title": "ESMValTool", - "version": "v2.9.0", + "version": "v2.11.0", "communities": [ { "identifier": "is-enes3" diff --git a/CITATION.cff b/CITATION.cff index 7ed624d1d7..22eb3c500e 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -398,11 +398,11 @@ authors: orcid: "https://orcid.org/0000-0003-4750-9923" cff-version: 1.2.0 -date-released: 2023-12-20 +date-released: 2024-07-04 doi: "10.5281/zenodo.3401363" license: "Apache-2.0" message: "If you use this software, please cite it using these metadata." repository-code: "https://github.com/ESMValGroup/ESMValTool/" title: ESMValTool -version: "v2.10.0" +version: "v2.11.0" ... diff --git a/doc/sphinx/source/changelog.rst b/doc/sphinx/source/changelog.rst index d1180d3b8b..76c0a86da5 100644 --- a/doc/sphinx/source/changelog.rst +++ b/doc/sphinx/source/changelog.rst @@ -3,6 +3,135 @@ Changelog ========= +.. _changelog-v2-11-0: + +v2.11.0 +------- +Highlights + +- Two new recipes have been added: + + - Recipe :ref:`recipe_aod_aeronet_assess.yml ` + evaluates model aerosol optical depth (AOD) climatologies against ground + based observations from the AeroNET measurement network. + - Recipe :ref:`recipe_climate_patterns.yml ` + generates climate patterns from CMIP6 model datasets. + +- The ESACCI-WATERVAPOUR CMORizer now includes daily data and uses the + officially released CDR2 data. +- Support for 5 new datasets have been added: + + - AeroNET + - ANU Climate 2.0 Australian data + - Australian Gridded Climate Data(AGCD) precipitation + - NOAA-ERSST + - NSIDC-G02202-sh sea ice fraction + +- NEW TREND: First time release manager shout-outs! + + - This is the first ESMValTool release managed by the Met Office! We want to + shout this out - and for all future first time release managers to + shout-out - to celebrate the growing, thriving ESMValTool community. + +This release includes + +Bug fixes +~~~~~~~~~ + +- Recipe_ocean_quadmap: Update ATSR to match ESGF name (:pull:`3443`) by :user:`rbeucher` +- Fix recipe_bock20jgr_fig_8-10.yml (:pull:`3665`) by :user:`LisaBock` +- Update the list of datasets used in ``recipe_easy_ipcc.yml`` (:pull:`3710`) by :user:`bouweandela` + +Documentation +~~~~~~~~~~~~~ + +- Improve release tools and documentation (:pull:`3462`) by :user:`bouweandela` +- Fix a typo in the references file (:pull:`3499`) by :user:`bouweandela` +- Fix recipe path in ``recipe_perfmetrics.rst`` (:pull:`3532`) by :user:`TomasTorsvik` +- Improved description of model evaluation recipes (:pull:`3541`) by :user:`schlunma` +- Remove double word in cmorizer documentation (:pull:`3553`) by :user:`bettina-gier` +- Fix Codacy badge (:pull:`3558`) by :user:`bouweandela` +- Update the release schedule for v2.11.0 (:pull:`3573`) by :user:`ehogan` +- Improve the formatting of the recipe documentation template (:pull:`3652`) by :user:`mo-gill` +- Add introduction material on the main documentation page (:pull:`3628`) by :user:`bouweandela` +- Avoid warning in documentation build (:pull:`3675`) by :user:`bouweandela` +- Update the list of broken recipes for ``v2.11.0`` (:pull:`3706`) by :user:`ehogan` + +Diagnostics +~~~~~~~~~~~ + +- ``monitor/multi_dataset.py`` improvements: allow data w/o ``timerange`` and improve text formatting (:pull:`3528`) by :user:`schlunma` +- Allow datasets without ``project`` in multi_datasets.py (:pull:`3552`) by :user:`schlunma` +- Prevent overlapping time axis tick labels in monitoring recipe (:pull:`3682`) by :user:`schlunma` + +New recipe +~~~~~~~~~~ + +- Add support for aerosol optical depth climatology metrics to the AutoAssess replacement (:pull:`3048`) by :user:`catherinehardacre` +- CMIP6 climate patterns (:pull:`2785`) by :user:`mo-gregmunday` + +Observational and re-analysis dataset support +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Add cmorizer scripts for NOAA-ERSST. (:pull:`1799`) by :user:`bjoernbroetz` +- Update OceanSODA-ETHZ CMORizer with new source file (:pull:`3535`) by :user:`TomasTorsvik` +- Add CMORizer script for NSIDC-G02202-sh sea ice fraction (:pull:`3512`) by :user:`flicj191` +- CMORizer Australian Gridded Climate Data(AGCD) precipitation (:pull:`3445`) by :user:`flicj191` +- Extend CMORizer NCEP-DOE-R2 (:pull:`3469`) by :user:`axel-lauer` +- Add comment to recipe_lauer13jclim regarding UWisc being superseded by MAC-LWP (:pull:`3537`) by :user:`rbeucher` +- Recipe_autoassess_landsurface_surfrad: Remove CERES-EBAF version to fix ESGF search (:pull:`3438`) by :user:`rbeucher` +- Updating ESACCI-WATERVAPOUR cmorizer (:pull:`3282`) by :user:`malininae` +- CMORiser for ANU Climate 2.0 Australian data (:pull:`3511`) by :user:`flicj191` +- Add AERONET cmorizer (:pull:`3227`) by :user:`zklaus` +- Update CRU CMORizer (:pull:`3381`) by :user:`lukruh` +- Fix recipe_check_obs to be aligned with DKRZ (:pull:`3673`) by :user:`LisaBock` +- Update AERONET data version (:pull:`3692`) by :user:`ehogan` + +Automatic testing +~~~~~~~~~~~~~~~~~ + +- Move code into function in batch job generation script (:pull:`3491`) by :user:`bouweandela` +- Fix sklearn tests (:pull:`3506`) by :user:`schlunma` +- Pinned sklearn>=1.4.0 (:pull:`3508`) by :user:`schlunma` +- Update sklearn tests to be compatible with current pytest version (pytest >=8.0.0) (:pull:`3517`) by :user:`schlunma` +- Update sklearn tests to be compatible with current pytest version (pytest >=8.0.0) Part 2 (:pull:`3518`) by :user:`schlunma` +- [Circle/CI]Fix `test_installation_from_conda` Circle CI tests (:pull:`3538`) by :user:`valeriupredoi` +- [Github Actions] install git in OSX and add environment inspection (:pull:`3581`) by :user:`valeriupredoi` +- [CI Github Actions] Update (outdated) actions versions that produce Node.js warnings (:pull:`3586`) by :user:`valeriupredoi` +- Fix ``flake8==7`` linting issues (:pull:`3634`) by :user:`valeriupredoi` +- Use ``importlib`` as the import mode for ``pytest`` (:pull:`3672`) by :user:`ehogan` + +Installation +~~~~~~~~~~~~ + +- Update dependencies (:pull:`3487`) by :user:`bouweandela` +- Merge v2.10.x into main (:pull:`3489`) by :user:`schlunma` +- Add imagehash package as an ESMValTool dependency (:pull:`3557`) by :user:`alistairsellar` +- Unpin ``r-akima`` (:pull:`3564`) by :user:`valeriupredoi` +- Adding pys2index dependency (:pull:`3577`) by :user:`ljoakim` +- Pin esmpy <8.6.0 (:pull:`3585`) by :user:`valeriupredoi` +- Pin R <4.3.0 (:pull:`3689`) by :user:`ehogan` +- Pin importlib_metadata <8 (:pull:`3700`) by :user:`ehogan` +- Pin matplotlib <3.9.0 on ESMValTool release branch (:pull:`3712`) by :user:`ehogan` + +Dependency updates +~~~~~~~~~~~~~~~~~~ + +- Fix for ``recipe_seaice_drift.yml``: fix CRS transformer for "North Pole Stereographic" (:pull:`3531`) by :user:`flicj191` +- Fixed attribute handling in austral_jet/main.ncl for iris>=3.8 (:pull:`3603`) by :user:`schlunma` +- Fixed attribute handling in emergent constraint diagnostic for iris>=3.8 (:pull:`3605`) by :user:`schlunma` +- Update the name of the remapcon2 operator in R recipes (:pull:`3611`) by :user:`ehogan` +- Use ``iris.FUTURE.save_split_attrs = True`` to remove iris warning in many diagnostics (:pull:`3651`) by :user:`schlunma` +- Avoid concatenation error in recipe_pcrglobwb.yml (:pull:`3645`) by :user:`bouweandela` +- Update `scipy.integrate.simps` import (:pull:`3704`) by :user:`ehogan` + +Improvements +~~~~~~~~~~~~ + +- Add native6, OBS6 and RAWOBS rootpaths to metoffice template in config-user-example.yml and remove temporary dir (:pull:`3613`) by :user:`alistairsellar` + +.. _changelog-v2-10-0: + v2.10.0 ------- Highlights diff --git a/doc/sphinx/source/community/release_strategy/release_strategy.rst b/doc/sphinx/source/community/release_strategy/release_strategy.rst index cae1c43807..b95bab67b1 100644 --- a/doc/sphinx/source/community/release_strategy/release_strategy.rst +++ b/doc/sphinx/source/community/release_strategy/release_strategy.rst @@ -53,6 +53,10 @@ With the following release schedule, we strive to have three releases per year a Upcoming releases ^^^^^^^^^^^^^^^^^ +- 2.12.0 (TBD) + +Past releases +^^^^^^^^^^^^^ - 2.11.0 (Release Manager: Met Office: `Emma Hogan`_, `Chris Billows`_, `Ed Gillett`_) @@ -61,16 +65,13 @@ Upcoming releases +============+============+========================================+=====================================+ | 2024-04-22 | | ESMValCore `Feature Freeze`_ | | +------------+------------+----------------------------------------+-------------------------------------+ -| 2023-05-03 | | ESMValCore released | | +| 2023-05-03 | 2024-07-03 | :esmvalcore-release:`v2.11.0` released | :ref:`esmvalcore:changelog-v2-11-0` | +------------+------------+----------------------------------------+-------------------------------------+ | 2023-05-06 | | ESMValTool `Feature Freeze`_ | | +------------+------------+----------------------------------------+-------------------------------------+ -| 2023-05-17 | | ESMValTool released | | +| 2023-05-17 | 2024-07-04 | :release:`v2.11.0` released | :ref:`changelog-v2-11-0` | +------------+------------+----------------------------------------+-------------------------------------+ -Past releases -^^^^^^^^^^^^^ - - 2.10.0 (Release Manager: `Klaus Zimmermann`_) +------------+------------+----------------------------------------+-------------------------------------+ diff --git a/environment.yml b/environment.yml index 0d9d82a5c9..edb2ec0254 100644 --- a/environment.yml +++ b/environment.yml @@ -22,7 +22,7 @@ dependencies: - ecmwf-api-client - eofs - esmpy >=8.6.0 # github.com/SciTools-incubator/iris-esmf-regrid/pull/342 - - esmvalcore 2.10.* + - esmvalcore 2.11.* - fiona - fire - fsspec diff --git a/environment_osx.yml b/environment_osx.yml index 049017a30c..69bf06e8f0 100644 --- a/environment_osx.yml +++ b/environment_osx.yml @@ -22,7 +22,7 @@ dependencies: - ecmwf-api-client - eofs - esmpy >=8.6.0 # github.com/SciTools-incubator/iris-esmf-regrid/pull/342 - - esmvalcore 2.10.* + - esmvalcore 2.11.* - fiona - fire - fsspec