Repository: ESMValGroup/ESMValCore

Issue:
Input data versions can confuse ESMValTool
Sometimes input data is available in more than one version. This is true both for (CMIP5/6) model data, where a newer version may supersede an older one without the older one being removed from storage, and observational data, where it is common to have several versions of datasets that are retained indefinitely to allow for comparison.

In these cases, at least sometimes, ESMValTool finds several versions and attempts to merge them into one, which fails because they cover the same or overlapping time periods.

Examples of this with snippets from the respective logs include
## recipe_collins13ipcc.yml

```
2023-10-20 07:54:08,008 UTC [149428] ERROR   Failed to run preprocessor function 'cmor_check_metadata' on the data
[<iris 'Cube' of air_temperature / (K) (time: 1151; latitude: 192; longitude: 288)>]
loaded from original input file(s)
[LocalFile('/work/bd0854/DATA/ESMValTool2/CMIP5_DKRZ/NCAR/CCSM4/rcp45/mon/atmos/Amon/r1i1p1/v20160829/tas/tas_Amon_CCSM4_rcp45_r1i1p1_200501-210012.nc'),
 LocalFile('/work/bd0854/DATA/ESMValTool2/CMIP5_DKRZ/NCAR/CCSM4/rcp45/mon/atmos/Amon/r1i1p1/v20130426/tas/tas_Amon_CCSM4_rcp45_r1i1p1_200601-210012.nc')]
with function argument(s)
check_level = <CheckLevels.DEFAULT: 3>,
cmor_table = 'CMIP5',
mip = 'Amon',
frequency = 'mon',
short_name = 'tas'
2023-10-20 07:54:09,037 UTC [149428] INFO    Maximum memory used (estimate): 0.5 GB
2023-10-20 07:54:09,039 UTC [149428] INFO    Sampled every second. It may be inaccurate if short but high spikes in memory consumption occur.
2023-10-20 07:54:09,040 UTC [149428] ERROR   Program terminated abnormally, see stack trace below for more information:
Traceback (most recent call last):
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 518, in run
    fire.Fire(ESMValTool())
  File "/home/b/b380866/miniforge3/envs/evt-20231018-test/lib/python3.11/site-packages/fire/core.py", line 141, in Fire
    component_trace = _Fire(component, args, parsed_flag_args, context, name)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/miniforge3/envs/evt-20231018-test/lib/python3.11/site-packages/fire/core.py", line 475, in _Fire
    component, remaining_args = _CallAndUpdateTrace(
                                ^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/miniforge3/envs/evt-20231018-test/lib/python3.11/site-packages/fire/core.py", line 691, in _CallAndUpdateTrace
    component = fn(*varargs, **kwargs)
                ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 405, in run
    self._run(recipe, session)
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 447, in _run
    process_recipe(recipe_file=recipe, session=session)
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 130, in process_recipe
    recipe.run()
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_recipe/recipe.py", line 1075, in run
    self.tasks.run(max_parallel_tasks=self.session['max_parallel_tasks'])
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 736, in run
    self._run_sequential()
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 747, in _run_sequential
    task.run()
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 260, in run
    input_files.extend(task.run())
                       ^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 264, in run
    self.output_files = self._run(input_files)
                        ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 669, in _run
    product.cubes  # pylint: disable=pointless-statement
    ^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 479, in cubes
    self._cubes = [ds.load() for ds in self.datasets]
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 479, in <listcomp>
    self._cubes = [ds.load() for ds in self.datasets]
                   ^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/dataset.py", line 685, in load
    cube = self._load()
           ^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/dataset.py", line 771, in _load
    result = preprocess(
             ^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 378, in preprocess
    result.append(_run_preproc_function(function, item, settings,
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 323, in _run_preproc_function
    return function(items, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/cmor/check.py", line 911, in cmor_check_metadata
    cube = checker(cube).check_metadata()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/cmor/check.py", line 185, in check_metadata
    self.report_errors()
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/cmor/check.py", line 247, in report_errors
    raise CMORCheckError(msg)
esmvalcore.cmor.check.CMORCheckError: There were errors in variable tas:
 time: Frequency mon does not match input data
in cube:
air_temperature / (K)               (time: 1151; latitude: 192; longitude: 288)
    Dimension coordinates:
        time                             x               -               -
        latitude                         -               x               -
        longitude                        -               -               x
    Scalar coordinates:
        height                      2.0 m
    Cell methods:
        0                           time: mean (interval: 30 days)
    Attributes:
        Conventions                 'CF-1.4'
        acknowledgements            'The CESM project is supported by the National Science Foundation and the ...'
        associated_files            'baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_atmos_fx_CCSM4_rcp45_r0i0p0.nc ...'
        branch_time                 2005.0
        cesm_casename               'b40.rcp4_5.1deg.001'
        cesm_compset                'BRCP45CN'
        cesm_repotag                'ccsm4_0_beta49'
        cmor_version                '2.7.1'
        contact                     'cesm_data@ucar.edu'
        experiment                  'RCP4.5'
        experiment_id               'rcp45'
        forcing                     'Sl GHG Vl SS Ds SA BC MD OC Oz AA'
        forcing_note                'Additional information on the external forcings used in this experiment ...'
        frequency                   'mon'
        initialization_method       1
        institute_id                'NCAR'
        institution                 'NCAR (National Center for Atmospheric Research) Boulder, CO, USA'
        model_id                    'CCSM4'
        modeling_realm              'atmos'
        original_name               'TREFHT'
        parent_experiment           'historical'
        parent_experiment_id        'historical'
        parent_experiment_rip       'r1i1p1'
        physics_version             1
        processed_by                'strandwg on mirage0 at 20111021'
        processing_code_information 'Last Changed Rev: 428 Last Changed Date: 2011-10-21 10:32:02 -0600 (Fri, ...'
        product                     'output'
        project_id                  'CMIP5'
        realization                 1
        references                  'Gent P. R., et.al. 2011: The Community Climate System Model version 4. ...'
        resolution                  'f09_g16 (0.9x1.25_gx1v6)'
        source                      'CCSM4 CCSM4 (repository tag: ccsm4_0_beta49 compset: BRCP45CN)'
        table_id                    'Table Amon (26 July 2011) 976b7fd1d9e1be31dddd28f5dc79b7a1 Table Amon (27 ...'
        title                       'CCSM4 model output prepared for CMIP5 RCP4.5'
loaded from file 
```

## recipe_bock20jgr_fig_1-4.yml

```
2023-10-20 08:26:39,973 UTC [1097995] ERROR   Failed to run preprocessor function 'concatenate' on the data
[<iris 'Cube' of precipitation_flux / (kg m-2 s-1) (time: 120; latitude: 72; longitude: 144)>,
 <iris 'Cube' of precipitation_flux / (kg m-2 s-1) (time: 120; latitude: 72; longitude: 144)>,
 <iris 'Cube' of precipitation_flux / (kg m-2 s-1) (time: 48; latitude: 72; longitude: 144)>,
 <iris 'Cube' of precipitation_flux / (kg m-2 s-1) (time: 466; latitude: 72; longitude: 144)>]
loaded from original input file(s)
[LocalFile('/work/bd0854/DATA/ESMValTool2/OBS/Tier1/GPCP-SG/pr_GPCP-SG_L3_v2.2_199001-199912.nc'),
 LocalFile('/work/bd0854/DATA/ESMValTool2/OBS/Tier1/GPCP-SG/pr_GPCP-SG_L3_v2.2_200001-200912.nc'),
 LocalFile('/work/bd0854/DATA/ESMValTool2/OBS/Tier1/GPCP-SG/pr_GPCP-SG_L3_v2.2_201001-201312.nc'),
 LocalFile('/work/bd0854/DATA/ESMValTool2/OBS/Tier1/GPCP-SG/pr_GPCP-SG_L3_v2.3_197901-201710.nc')]
with function argument(s)
check_level = <CheckLevels.DEFAULT: 3>
2023-10-20 08:26:41,010 UTC [1097995] INFO    Maximum memory used (estimate): 14.2 GB
2023-10-20 08:26:41,011 UTC [1097995] INFO    Sampled every second. It may be inaccurate if short but high spikes in memory consumption occur.
2023-10-20 08:26:41,012 UTC [1097995] ERROR   Program terminated abnormally, see stack trace below for more information:
Traceback (most recent call last):
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 518, in run
    fire.Fire(ESMValTool())
  File "/home/b/b380866/miniforge3/envs/evt-20231018-test/lib/python3.11/site-packages/fire/core.py", line 141, in Fire
    component_trace = _Fire(component, args, parsed_flag_args, context, name)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/miniforge3/envs/evt-20231018-test/lib/python3.11/site-packages/fire/core.py", line 475, in _Fire
    component, remaining_args = _CallAndUpdateTrace(
                                ^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/miniforge3/envs/evt-20231018-test/lib/python3.11/site-packages/fire/core.py", line 691, in _CallAndUpdateTrace
    component = fn(*varargs, **kwargs)
                ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 405, in run
    self._run(recipe, session)
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 447, in _run
    process_recipe(recipe_file=recipe, session=session)
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 130, in process_recipe
    recipe.run()
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_recipe/recipe.py", line 1075, in run
    self.tasks.run(max_parallel_tasks=self.session['max_parallel_tasks'])
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 736, in run
    self._run_sequential()
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 747, in _run_sequential
    task.run()
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 260, in run
    input_files.extend(task.run())
                       ^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 264, in run
    self.output_files = self._run(input_files)
                        ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 661, in _run
    product.apply(step, self.debug)
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 469, in apply
    self.cubes = preprocess(self.cubes, step,
                            ^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 479, in cubes
    self._cubes = [ds.load() for ds in self.datasets]
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 479, in <listcomp>
    self._cubes = [ds.load() for ds in self.datasets]
                   ^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/dataset.py", line 685, in load
    cube = self._load()
           ^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/dataset.py", line 771, in _load
    result = preprocess(
             ^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 374, in preprocess
    result.append(_run_preproc_function(function, items, settings,
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 323, in _run_preproc_function
    return function(items, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/_io.py", line 360, in concatenate
    _get_concatenation_error(result)
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/_io.py", line 308, in _get_concatenation_error
    raise ValueError(f'Can not concatenate cubes: {msg}')
ValueError: Can not concatenate cubes: failed to concatenate into a single cube.
  Found cubes with overlap on concatenate axis 0, cannot concatenate overlapping cubes
```

## recipe_anav13jclim.yml
This is a special case because here the problem ultimately stems from a bad data situation on the test machine, where two files *with the same version* exist in parallel in the CMIP5 archive. The only difference between the two files is that one covers fewer years at the end of the period. I'd be ok to chalk this up to archive problems that we don't have to deal with, but I suspect that restoring the ability to handle doubly available data will also resolve this problem.

```
2023-10-19 11:40:20,941 UTC [66240] ERROR   Failed to run preprocessor function 'cmor_check_metadata' on the data
[<iris 'Cube' of surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes / (kg m-2 s-1) (time: 1871; latitude: 96; longitude: 96)>]
loaded from original input file(s)
[LocalFile('/work/bd0854/DATA/ESMValTool2/CMIP5_DKRZ/IPSL/IPSL-CM5B-LR/historical/mon/land/Lmon/r1i1p1/v20120526/nbp/nbp_Lmon_IPSL-CM5B-LR_historical_r1i1p1_185001-200512.nc'),
 LocalFile('/work/bd0854/DATA/ESMValTool2/CMIP5_DKRZ/IPSL/IPSL-CM5B-LR/historical/mon/land/Lmon/r1i1p1/v20120526/nbp/nbp_Lmon_IPSL-CM5B-LR_historical_r1i1p1_197901-200512.nc')]
with function argument(s)
check_level = <CheckLevels.DEFAULT: 3>,
cmor_table = 'CMIP5',
mip = 'Lmon',
frequency = 'mon',
short_name = 'nbp'
[...]
2023-10-19 11:40:22,421 UTC [65962] ERROR   Program terminated abnormally, see stack trace below for more information:
multiprocessing.pool.RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/home/b/b380866/miniforge3/envs/evt-20231018-test/lib/python3.11/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
                    ^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 816, in _run_task
    output_files = task.run()
                   ^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 264, in run
    self.output_files = self._run(input_files)
                        ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 661, in _run
    product.apply(step, self.debug)
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 469, in apply
    self.cubes = preprocess(self.cubes, step,
                            ^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 479, in cubes
    self._cubes = [ds.load() for ds in self.datasets]
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 479, in <listcomp>
    self._cubes = [ds.load() for ds in self.datasets]
                   ^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/dataset.py", line 685, in load
    cube = self._load()
           ^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/dataset.py", line 771, in _load
    result = preprocess(
             ^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 378, in preprocess
    result.append(_run_preproc_function(function, item, settings,
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/preprocessor/__init__.py", line 323, in _run_preproc_function
    return function(items, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/cmor/check.py", line 911, in cmor_check_metadata
    cube = checker(cube).check_metadata()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/cmor/check.py", line 185, in check_metadata
    self.report_errors()
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/cmor/check.py", line 247, in report_errors
    raise CMORCheckError(msg)
esmvalcore.cmor.check.CMORCheckError: There were errors in variable nbp:
 time: Frequency mon does not match input data
in cube:
surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes / (kg m-2 s-1) (time: 1871; latitude: 96; longitude: 96)
    Dimension coordinates:
        time                                                                                                       x               -              -
        latitude                                                                                                   -               x              -
        longitude                                                                                                  -               -              x
    Cell methods:
        0                                                                                                     time: mean (interval: 30 minutes)
        1                                                                                                     area: mean where land
    Attributes:
        Conventions                                                                                           'CF-1.4'
        associated_files                                                                                      'baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: grid
spec_land_fx_IPSL-CM5B-LR_historical_r0i0p0.nc ...'
        branch_time                                                                                           1850.0
        cmor_version                                                                                          '2.7.1'
        contact                                                                                               'ipsl-cmip5 _at_ ipsl.jussieu.fr Data manager : Sebastien Denvil'
        experiment                                                                                            'historical'
        experiment_id                                                                                         'historical'
        forcing                                                                                               'Nat,Ant,GHG,SA,Oz,LU,SS,Ds,BC,MD,OC,AA'
        frequency                                                                                             'mon'
        initialization_method                                                                                 1
        institute_id                                                                                          'IPSL'
        institution                                                                                           'IPSL (Institut Pierre Simon Laplace, Paris, France)'
        model_id                                                                                              'IPSL-CM5B-LR'
        modeling_realm                                                                                        'land'
        original_name                                                                                         'nbp'
        parent_experiment                                                                                     'pre-industrial control'
        parent_experiment_id                                                                                  'piControl'
        parent_experiment_rip                                                                                 'r1i1p1'
        physics_version                                                                                       1
        product                                                                                               'output'
        project_id                                                                                            'CMIP5'
        realization                                                                                           1
        references                                                                                            'Model documentation and further reference available here : http://icmc ..
.'
        source                                                                                                'IPSL-CM5B-LR (2011) : atmos : LMDZ5 (LMDZ5_NPv3.1, 96x95x39); ocean : ORC
A2 ...'
        table_id                                                                                              'Table Lmon (31 January 2011) a84ae296f75bb85ff61668fac8fcf090'
        title                                                                                                 'IPSL-CM5B-LR model output prepared for CMIP5 historical'
loaded from file 
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 518, in run
    fire.Fire(ESMValTool())
  File "/home/b/b380866/miniforge3/envs/evt-20231018-test/lib/python3.11/site-packages/fire/core.py", line 141, in Fire
    component_trace = _Fire(component, args, parsed_flag_args, context, name)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/miniforge3/envs/evt-20231018-test/lib/python3.11/site-packages/fire/core.py", line 475, in _Fire
    component, remaining_args = _CallAndUpdateTrace(
                                ^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/miniforge3/envs/evt-20231018-test/lib/python3.11/site-packages/fire/core.py", line 691, in _CallAndUpdateTrace
    component = fn(*varargs, **kwargs)
                ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 405, in run
    self._run(recipe, session)
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 447, in _run
    process_recipe(recipe_file=recipe, session=session)
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_main.py", line 130, in process_recipe
    recipe.run()
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_recipe/recipe.py", line 1075, in run
    self.tasks.run(max_parallel_tasks=self.session['max_parallel_tasks'])
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 738, in run
    self._run_parallel(address, max_parallel_tasks)
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 782, in _run_parallel
    _copy_results(task, running[task])
  File "/home/b/b380866/Projects/ESMValTool/ESMValCore/esmvalcore/_task.py", line 805, in _copy_results
    task.output_files, task.products = future.get()
                                       ^^^^^^^^^^^^
  File "/home/b/b380866/miniforge3/envs/evt-20231018-test/lib/python3.11/multiprocessing/pool.py", line 774, in get
    raise self._value
esmvalcore.cmor.check.CMORCheckError: There were errors in variable nbp:
 time: Frequency mon does not match input data
in cube:
surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes / (kg m-2 s-1) (time: 1871; latitude: 96; longitude: 96)
    Dimension coordinates:
        time                                                                                                       x               -              -
        latitude                                                                                                   -               x              -
        longitude                                                                                                  -               -              x
    Cell methods:
        0                                                                                                     time: mean (interval: 30 minutes)
        1                                                                                                     area: mean where land
    Attributes:
        Conventions                                                                                           'CF-1.4'
        associated_files                                                                                      'baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: grid
spec_land_fx_IPSL-CM5B-LR_historical_r0i0p0.nc ...'
        branch_time                                                                                           1850.0
        cmor_version                                                                                          '2.7.1'
        contact                                                                                               'ipsl-cmip5 _at_ ipsl.jussieu.fr Data manager : Sebastien Denvil'
        experiment                                                                                            'historical'
        experiment_id                                                                                         'historical'
        forcing                                                                                               'Nat,Ant,GHG,SA,Oz,LU,SS,Ds,BC,MD,OC,AA'
        frequency                                                                                             'mon'
        initialization_method                                                                                 1
        institute_id                                                                                          'IPSL'
        institution                                                                                           'IPSL (Institut Pierre Simon Laplace, Paris, France)'
        model_id                                                                                              'IPSL-CM5B-LR'
        modeling_realm                                                                                        'land'
        original_name                                                                                         'nbp'
        parent_experiment                                                                                     'pre-industrial control'
        parent_experiment_id                                                                                  'piControl'
        parent_experiment_rip                                                                                 'r1i1p1'
        physics_version                                                                                       1
        product                                                                                               'output'
        project_id                                                                                            'CMIP5'
        realization                                                                                           1
        references                                                                                            'Model documentation and further reference available here : http://icmc ..
.'
        source                                                                                                'IPSL-CM5B-LR (2011) : atmos : LMDZ5 (LMDZ5_NPv3.1, 96x95x39); ocean : ORC
A2 ...'
        table_id                                                                                              'Table Lmon (31 January 2011) a84ae296f75bb85ff61668fac8fcf090'
        title                                                                                                 'IPSL-CM5B-LR model output prepared for CMIP5 historical'
loaded from file 
```


Discussion:
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/ESMValGroup/ESMValCore/pull/2240?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ESMValGroup) Report
> Merging [#2240](https://app.codecov.io/gh/ESMValGroup/ESMValCore/pull/2240?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ESMValGroup) (fe6464c) into [main](https://app.codecov.io/gh/ESMValGroup/ESMValCore/commit/7a70d5b274869052e45d753ef3012a5f3b486696?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ESMValGroup) (7a70d5b) will **not change** coverage.
> The diff coverage is `100.00%`.

```diff
@@           Coverage Diff           @@
##             main    #2240   +/-   ##
=======================================
  Coverage   93.47%   93.47%           
=======================================
  Files         238      238           
  Lines       12927    12927           
=======================================
  Hits        12084    12084           
  Misses        843      843           
```


| [Files](https://app.codecov.io/gh/ESMValGroup/ESMValCore/pull/2240?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ESMValGroup) | Coverage Δ | |
|---|---|---|
| [esmvalcore/preprocessor/\_io.py](https://app.codecov.io/gh/ESMValGroup/ESMValCore/pull/2240?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ESMValGroup#diff-ZXNtdmFsY29yZS9wcmVwcm9jZXNzb3IvX2lvLnB5) | `90.53% <100.00%> (ø)` | |



Patch:
diff --git a/conda-linux-64.lock b/conda-linux-64.lock
index e1b497c58..62887266d 100644
--- a/conda-linux-64.lock
+++ b/conda-linux-64.lock
@@ -50,8 +50,8 @@ https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda#
 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/libgfortran5-13.2.0-ha4646dd_2.conda#78fdab09d9138851dde2b5fe2a11019e
 https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2#b62b52da46c39ee2bc3c162ac7f1804d
-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/libnsl-2.0.0-hd590300_1.conda#854e3e1623b39777140f199c5f9ab952
+https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda#ea25936bb4080d843790b586850f82b8
+https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7
 https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.16-h0b41bf4_1.conda#28bfe2cb11357ccc5be21101a6b7ce86
 https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.3.0-h0f45ef3_2.conda#4655db64eca78a6fcc4fb654fc1f8d57
 https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d
@@ -68,7 +68,6 @@ https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.3-hd590300_0.conda#7
 https://conda.anaconda.org/conda-forge/linux-64/pixman-0.42.2-h59595ed_0.conda#700edd63ccd5fc66b70b1c028cea9a68
 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/rdma-core-28.9-h59595ed_1.conda#aeffb7c06b5f65e55e6c637408dc4100
-https://conda.anaconda.org/conda-forge/linux-64/re2-2023.03.02-h8c504da_0.conda#206f8fa808748f6e90599c3368a1114e
 https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-h9fff704_0.conda#e6d228cd0bb74a51dd18f5bfce0b4115
 https://conda.anaconda.org/conda-forge/linux-64/tzcode-2023c-h0b41bf4_0.conda#0c0533894f21c3d35697cb8378d390e2
 https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.7-hcb278e6_1.conda#2c46deb08ba9b10e90d0a6401ad65deb
@@ -82,14 +81,14 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007
 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/aws-c-cal-0.6.2-h09139f6_2.conda#29c3112841eee851f6f5451f6d705782
+https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.6-h09139f6_0.conda#289ae014f49bb39e5e0aae277b88dbfe
 https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h184a658_3.conda#c62775b5028b5a4eda25037f9af7f5b3
 https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h184a658_2.conda#ba06d81b81ec3eaf4ee83cd47f808134
 https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h184a658_2.conda#10fcdbd02ba7fa0827fb8f7d94f8375b
 https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-hcb278e6_1.conda#8b9b5aca60558d02ddaa09d599e55920
 https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.3.0-he2b93b0_2.conda#2f4d8677dc7dd87f93e9abfb2ce86808
 https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2#b31f3565cb84435407594e548a2fb7b2
-https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h501b40f_6.conda#c3e9338e15d90106f467377017352b97
+https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda#bd77f8da987968ec3927990495dc22e4
 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/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1
@@ -98,7 +97,8 @@ https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_2
 https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda#3eb5f16bcc8a02892199aa63555c731f
 https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.52.0-h61bc06f_0.conda#613955a50485812985c059e7b269f42e
 https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.39-h753d276_0.conda#e1c890aebdebbfbf87e2c917187b4416
-https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.24.3-hf27288f_0.conda#f2877435606cb6069201c6dceab9ac45
+https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.24.3-hf27288f_1.conda#5097789a2bc83e697d7509df57f25bfd
+https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.06.02-h7a70373_0.conda#c0e7eacd9694db3ef5ef2979a7deea70
 https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-hb58d41b_14.conda#264f9a3a4ea52c8f4d3e8ae1213a3335
 https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.43.2-h2797004_0.conda#4b441a1ee22397d5a27dc1126b849edd
 https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe
@@ -112,10 +112,10 @@ https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.54-h06160fa_0.conda#1495
 https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-h2797004_0.conda#513336054f884f95d9fd925748f41ef3
 https://conda.anaconda.org/conda-forge/linux-64/ucx-1.15.0-h64cca9d_0.conda#b35b1f1a9fdbf93266c91f297dc9060e
 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/zeromq-4.3.4-h9c3ff4c_1.tar.bz2#21743a8d2ea0c8cfbbf8fe489b0347df
+https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_0.conda#8851084c192dbc56215ac4e3c9aa30fa
 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209
 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda#04b88013080254850d6c01ed54810589
-https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.32-h161b759_6.conda#26c909c7fc3fddc015a9ab4ebfcaed41
+https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.35-hc1ea125_1.conda#11e5683c74d07b2a3e90ddb7ac55e2e0
 https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-h0f2a231_0.conda#009521b7ed97cca25f8f997f9e745976
 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda#39f910d205726805a958da408ca194ba
 https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb
@@ -126,26 +126,25 @@ https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.3.0-he2b93b
 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.2-h039dbb9_0.conda#611d6c83d1130ea60c916531adfb11db
 https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.0-hebfc3b9_0.conda#e618003da3547216310088478e475945
-https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.58.1-h30d5116_0.conda#56e42a3f59383f1cf4e454cfc57dd79e
 https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda#6e4ef6ca28655124dcde9bd500e44c32
 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/libtiff-4.6.0-ha9c0a0a_2.conda#55ed21669b2015f77c180feb1dd41930
 https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.37-h0054252_1.conda#f27960e8873abb5476e96ef33bdbdccd
 https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.1-h0ab5242_5.conda#2f0f7031d8f0f9f6520093009eb3628f
 https://conda.anaconda.org/conda-forge/linux-64/nss-3.94-h1d7d5a4_0.conda#7caef74bbfa730e014b20f0852068509
 https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h208142c_3.conda#f983ae19192439116ca5b5589560f167
 https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda#8287aeb8462e2d4b235eff788e75919d
 https://conda.anaconda.org/conda-forge/linux-64/python-3.11.6-hab00c5b_0_cpython.conda#b0dfbe2fcbfdb097d321bfd50ecddab1
+https://conda.anaconda.org/conda-forge/linux-64/re2-2023.06.02-h2873b5e_0.conda#bb2d5e593ef13fe4aff0bc9440f945ae
 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.43.2-h2c6b66d_0.conda#c37b95bcd6c6833dacfd5df0ae2f4303
 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.6-h8ee46fc_0.conda#7590b76c3d11d21caa44f3fc38ac584a
+https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda#49e482d882669206653b095f5206c05b
 https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.13-pyhd8ed1ab_0.conda#06006184e203b61d3525f90de394471e
-https://conda.anaconda.org/conda-forge/linux-64/antlr-python-runtime-4.7.2-py311h38be061_1003.tar.bz2#0ab8f8f0cae99343907fe68cda11baea
-https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.0-py311h38be061_1.conda#ddef045db01d69489c6d74b7e577859b
+https://conda.anaconda.org/conda-forge/noarch/antlr-python-runtime-4.11.1-pyhd8ed1ab_0.tar.bz2#15109c4977d39ad7aa3423f57243e286
 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/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8
-https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-hd6ebb48_1.conda#ef9692e74f437004ef47a4363552bcb6
-https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.13-hc690213_1.conda#c912831e92c565598072243266073161
+https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-h24cd7f8_3.conda#031e5cce5b151ccd3cb8d101900246d7
+https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.13-h0561a52_5.conda#ebcdf12a0994c154076a4f0d40ae514c
 https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
 https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
 https://conda.anaconda.org/conda-forge/linux-64/backports.zoneinfo-0.2.1-py311h38be061_8.conda#5384590f14dfe6ccd02811236afc9f8e
@@ -156,11 +155,11 @@ https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.con
 https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2#ebb5f5f7dc4f1a3780ef7ea7738db08c
 https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.0-pyhd8ed1ab_0.conda#fef8ef5f0a54546b9efee39468229917
 https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda#f3ad426304898027fc619827ff428eca
-https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.2.1-pyhd8ed1ab_0.conda#b325bfc4cff7d7f8a868f1f7ecc4ed16
+https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.0.0-pyhd8ed1ab_0.conda#753d29fe41bb881e4b9c004f0abf973f
 https://conda.anaconda.org/conda-forge/noarch/codespell-2.2.6-pyhd8ed1ab_0.conda#a206349b7bb7475ae580f987cb425bdd
 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99
 https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441
-https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.3-py311hb755f60_0.conda#c54d71e8031a10d08f2e87ff81821588
+https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.4-py311hb755f60_0.conda#6dc0be74820d94a0606595130218981c
 https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
 https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
 https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda#5e4f3466526c52bc9af2d2353a1460bd
@@ -175,7 +174,7 @@ https://conda.anaconda.org/conda-forge/noarch/filelock-3.12.4-pyhd8ed1ab_0.conda
 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/noarch/fsspec-2023.9.2-pyh1a96a4e_0.conda#9d15cd3a0e944594ab528da37dc72ecc
-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/gdk-pixbuf-2.42.10-h829c605_4.conda#252a696860674caf7a855e16f680d63a
 https://conda.anaconda.org/conda-forge/noarch/geographiclib-1.52-pyhd8ed1ab_0.tar.bz2#6880e7100ebae550a33ce26663316d85
 https://conda.anaconda.org/conda-forge/linux-64/gfortran-12.3.0-h499e0f7_2.conda#0558a8c44eb7a18e6682bd3a8ae6dcab
 https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-12.3.0-h7fe76b4_2.conda#3a749210487c0358b6f135a648cbbf60
@@ -188,11 +187,13 @@ https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.b
 https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda#f800d2da156d08e289b14e87e43c1ae5
 https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2#3c3de74912f11d2b590184f03c7cd09b
 https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py311h9547e67_1.conda#2c65bdf442b0d37aad080c8a4e0d452f
-https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-h7f713cb_2.conda#9ab79924a3760f85a799f21bc99bd655
-https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-18_linux64_openblas.conda#bcddbb497582ece559465b9cd11042e7
-https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.3.0-hca28451_0.conda#4ab41bee09a2d2e08de5f09d6f1eef62
+https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py311h459d7ec_1.conda#7cc99d87755a9e64586a6004c5f0f534
+https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-hb7c19ff_3.conda#e96637dd92c5f340215c753a5c9a22d7
+https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-19_linux64_openblas.conda#420f4e9be59d0dc9133a0f43f7bab3f3
+https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.4.0-hca28451_0.conda#1158ac1d2613b28685644931f11ee807
+https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.58.1-he06187c_2.conda#42f5e2ba0d41ba270afd3eb5c725ccf5
 https://conda.anaconda.org/conda-forge/linux-64/libpq-16.0-hfc447b1_1.conda#e4a9a5ba40123477db33e02a78dffb01
-https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.2-hdffd6e0_0.conda#a8661c87c873d8c8f90479318ebf0a17
+https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.2-h658648e_1.conda#0ebb65e8d86843865796c7c95a941f34
 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-4.9.3-py311h1a07684_1.conda#aab51e50d994e58efdfa5382139b0468
 https://conda.anaconda.org/conda-forge/linux-64/lz4-4.3.2-py311h38e4bf4_1.conda#f8e0b648d77bbe44d1fe8af8cc56a590
@@ -203,7 +204,7 @@ https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.6-py311h9547e
 https://conda.anaconda.org/conda-forge/noarch/munch-4.0.0-pyhd8ed1ab_0.conda#376b32e8f9d3eacbd625f37d39bd507d
 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19
 https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda#4eccaeba205f0aed9ac3a9ea58568ca3
-https://conda.anaconda.org/conda-forge/noarch/networkx-3.1-pyhd8ed1ab_0.conda#254f787d5068bc89f578bf63893ce8b4
+https://conda.anaconda.org/conda-forge/noarch/networkx-3.2-pyhd8ed1ab_1.conda#522039fb968d6d0a10e872e6f3856f53
 https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-h488ebb8_3.conda#128c25b7fe6a25286a48f3a6a9b5b6f3
 https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6
 https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
@@ -229,12 +230,12 @@ https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.4.1-py311h459d7e
 https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97
 https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_1.conda#52719a74ad130de8fb5d047dc91f247a
 https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.1-py311h75c88c4_1.conda#b858421f6a3052950c33aecd44a905cb
-https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.4-py311h46250e7_0.conda#fd2b9bb72eeb3d90187a6d77c46a228e
+https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.6-py311h46250e7_0.conda#b7237977dbca779aaaab65f42f5558d9
 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-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709
 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
-https://conda.anaconda.org/conda-forge/noarch/smmap-3.0.5-pyh44b312d_0.tar.bz2#3a8dc70789709aa315325d5df06fb7e4
+https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2#62f26a3d1387acee31322208f0cfa3e0
 https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2#4d22a9315e78c6827f806065957d566e
 https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d
 https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561
@@ -255,6 +256,7 @@ https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-py_0.tar.bz2#1447
 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9
 https://conda.anaconda.org/conda-forge/noarch/webob-1.8.7-pyhd8ed1ab_0.tar.bz2#a8192f3585f341ea66c60c189580ac67
 https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f
+https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.15.0-py311h459d7ec_1.conda#f4d770a09066aaa313b5cc22c0f6e9d1
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec
 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530
 https://conda.anaconda.org/conda-forge/noarch/xyzservices-2023.10.0-pyhd8ed1ab_0.conda#9c6fe7db9c9133ade38b9a5011103243
@@ -262,14 +264,15 @@ https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30
 https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a
 https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.4-pyhd8ed1ab_0.conda#46a2e6e3dfa718ce3492018d5a110dd6
 https://conda.anaconda.org/conda-forge/noarch/asgiref-3.7.2-pyhd8ed1ab_0.conda#596932155bf88bb6837141550cb721b0
+https://conda.anaconda.org/conda-forge/linux-64/astroid-2.15.8-py311h38be061_0.conda#46d70fcb74472aab178991f0231ee3c6
 https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.0-pyhd8ed1ab_0.conda#056f04e51dd63337e8d7c425c18c86f1
-https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.4-hc8144f4_1.conda#81b00630260ff8c9388ee3913465b208
-https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.6-h32970c0_2.conda#21dd1cb1e73b0ce2ea31e9f9f692e051
+https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.4-hdf831e0_4.conda#f2b788b963b846fbfc322787bc79fe4c
+https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.7-h6e0f915_1.conda#976997418755ab56d0cc3b4c93e10ebd
 https://conda.anaconda.org/conda-forge/noarch/babel-2.13.0-pyhd8ed1ab_0.conda#22541af7a9eb59fc6afcadb7ecdf9219
 https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
 https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
 https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e
-https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h0c91306_1017.conda#3db543896d34fc6804ddfb9239dcb125
+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.1.2-pyhd8ed1ab_0.conda#e554f60477143949704bf470f66a81e7
 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
@@ -283,7 +286,7 @@ https://conda.anaconda.org/conda-forge/noarch/fire-0.5.0-pyhd8ed1ab_0.conda#9fd2
 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.43.1-py311h459d7ec_0.conda#ac995b680de3bdce2531c553b27dfe7e
 https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.6.0-heb67821_0.conda#b65c49dda97ae497abcbdf3a8ba0018f
 https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.0-pyhd8ed1ab_0.conda#90faaa7eaeba3cc877074c0916efe30c
-https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.10-pyhd8ed1ab_0.conda#3706d2f3d7cb5dae600c833345a76132
+https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda#623b19f616f2ca0c261441067e18ae40
 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.2-nompi_h4f84152_100.conda#2de6a9bc8083b49f09b2f6eb28d3ba3c
 https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946
 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda#48b0d98e0c0ec810d3ccc2a0926c8c0e
@@ -293,40 +296,39 @@ https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a
 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
 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-18_linux64_openblas.conda#93dd9ab275ad888ed8113953769af78c
-https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-he9388d3_8.conda#f3abc6e6ab60fa404c23094f5a03ec9b
+https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-19_linux64_openblas.conda#d12374af44575413fbbd4a217d46ea33
+https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h119a65a_9.conda#cfebc557e54905dadc355c0e9f003004
 https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.12.0-h19a6dae_3.conda#cb26f6b7184480053106ea4713a52daf
-https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-18_linux64_openblas.conda#a1244707531e5b143c420c70573c8ec5
+https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-19_linux64_openblas.conda#9f100edf65436e3eabc2a51fc00b2c37
 https://conda.anaconda.org/conda-forge/noarch/logilab-common-1.7.3-py_0.tar.bz2#6eafcdf39a7eb90b6d951cfff59e8d3b
 https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
-https://conda.anaconda.org/conda-forge/linux-64/mypy-1.6.0-py311h459d7ec_0.conda#bf8a68aae89d5ff65e9006f586fefffe
+https://conda.anaconda.org/conda-forge/linux-64/mypy-1.6.1-py311h459d7ec_0.conda#d3e5072b7ff746e9f9b44f0f52de6727
 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.8.0-pyhd8ed1ab_0.conda#2a75b296096adabbabadd5e9782e5fcc
 https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda#acf4b7c0bcd5fa3b0e05801c4d2accd6
 https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
-https://conda.anaconda.org/conda-forge/linux-64/pillow-10.0.1-py311h8aef010_1.conda#4d66ee2081a7cd444ff6f30d95873eef
-https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
+https://conda.anaconda.org/conda-forge/linux-64/pillow-10.1.0-py311ha6c5da5_0.conda#83a988daf5c49e57f7d2086fb6781fe8
+https://conda.anaconda.org/conda-forge/noarch/pip-23.3-pyhd8ed1ab_0.conda#a06f102f59c8e3bb8b3e46e71c384709
 https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.0-h8972f4a_1.conda#6ce1ab5480d3aa4308654971ac5f731b
-https://conda.anaconda.org/conda-forge/linux-64/proj-9.3.0-h1d62c97_1.conda#900fd11ac61d4415d515583fcb570207
+https://conda.anaconda.org/conda-forge/linux-64/proj-9.3.0-h1d62c97_2.conda#b5e57a0c643da391bef850922963eece
 https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_0.conda#7e23a61a7fbaedfef6eb0e1ac775c8e5
 https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.2-pyhd8ed1ab_0.conda#6dd662ff5ac9a783e5c940ce9f3fe649
 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
 https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda#a33161b983172ba6ef69d5fc850650cd
-https://conda.anaconda.org/conda-forge/noarch/requirements-detector-1.2.2-pyhd8ed1ab_0.conda#6626918380d99292df110f3c91b6e5ec
 https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
 https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda#384462e63262a527bda564fa2d9126c0
 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.0.6-pyhd8ed1ab_0.conda#d5f8944ff9ab24a292511c83dce33dea
+https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.7-pyhd8ed1ab_0.conda#270e71c14d37074b1d066ee21cf0c4a6
 https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.4-hac6953d_3.conda#297e6a75dc1b6a440cd341a85eab8a00
 https://conda.anaconda.org/conda-forge/noarch/yamale-4.0.4-pyh6c4a22f_0.tar.bz2#cc9f59f147740d88679bf1bd94dbe588
 https://conda.anaconda.org/conda-forge/noarch/yamllint-1.32.0-pyhd8ed1ab_0.conda#6d2425548b0293a225ca4febd80feaa3
-https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.17-hb5e3142_3.conda#f0eeadc3f7fc9a29b7ce416897056826
+https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.18-hd871755_2.conda#dd4fc5bb1ec65369c6291e0a311bb31d
 https://conda.anaconda.org/conda-forge/linux-64/compilers-1.6.0-ha770c72_0.conda#e2259de4640a51a28c21931ae98e4975
 https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.4-py311h63ff55d_0.conda#2b14cd05541532521196b0d2e0291ecf
 https://conda.anaconda.org/conda-forge/noarch/django-4.2.6-pyhd8ed1ab_0.conda#bebc7fbd0b86a4e28a931c306cd5324e
 https://conda.anaconda.org/conda-forge/noarch/flake8-5.0.4-pyhd8ed1ab_0.tar.bz2#8079ea7dec0a917dd0cb6c257f7ea9ea
-https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.1-hee599c5_13.conda#8c55dacddd589be64b2bd6a5d4264be6
-https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.37-pyhd8ed1ab_0.conda#8b94c329190fa6814f412adf2ab0f0a2
+https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.1-hf074850_14.conda#1d53ee057d8481bd2b4c2c34c8e92aac
+https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.40-pyhd8ed1ab_0.conda#6bf74c3b7c13079a91d4bd3da51cefcf
 https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.2.1-h3d44ed6_0.conda#98db5f8813f45e2b29766aff0e4a499c
 https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
 https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
@@ -335,72 +337,73 @@ https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h80fb2b6_1
 https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-h090f1da_0.conda#c4360eaa543bb3bcbb9cd135eb6fb0fc
 https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.0-py311h64a7726_0.conda#bf16a9f625126e378302f08e7ed67517
 https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda#8f567c0a74aa44cf732f15773b4083b0
-https://conda.anaconda.org/conda-forge/linux-64/poppler-23.08.0-hf2349cb_2.conda#fb75401ae7e2e3f354dff72e9da95cae
+https://conda.anaconda.org/conda-forge/linux-64/poppler-23.10.0-h590f24d_0.conda#06b4a80e2cc3974e55f83e2115e2e90a
 https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2#2099b86a7399c44c0c61cdb6de6915ba
 https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.6.1-py311h1facc83_2.conda#8298afb85a731b02dac82e02b6e13ae0
 https://conda.anaconda.org/conda-forge/noarch/pytest-cov-4.1.0-pyhd8ed1ab_0.conda#06eb685a3a0b146347a58dda979485da
 https://conda.anaconda.org/conda-forge/noarch/pytest-env-1.0.1-pyhd8ed1ab_0.conda#9da651d84c73bac482cae51613a4d4d6
 https://conda.anaconda.org/conda-forge/noarch/pytest-metadata-3.0.0-pyhd8ed1ab_1.conda#8bdcc0f401561213821bf67513abeeff
-https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.11.1-pyhd8ed1ab_0.conda#fcd2531bc3e492657aeb042349aeaf8a
+https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.12.0-pyhd8ed1ab_0.conda#ac9fedc9a0c397f2318e82525491dd83
 https://conda.anaconda.org/conda-forge/noarch/pytest-mypy-0.8.0-pyhd8ed1ab_0.tar.bz2#4e81c96e5f875c09e5b9f999035b9d8e
 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.3.1-pyhd8ed1ab_0.conda#816073bb54ef59f33f0f26c14f88311b
 https://conda.anaconda.org/conda-forge/noarch/rdflib-7.0.0-pyhd8ed1ab_0.conda#44d14ef95495b3d4438f28998e0296a9
 https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
+https://conda.anaconda.org/conda-forge/noarch/requirements-detector-1.2.2-pyhd8ed1ab_0.conda#6626918380d99292df110f3c91b6e5ec
 https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af
 https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.16.3-h8c794c1_3.conda#7de728789b0aba16018f726dc5ddbec2
-https://conda.anaconda.org/conda-forge/noarch/types-requests-2.31.0.8-pyhd8ed1ab_0.conda#f6126ba51bdb5c539af53cbdc37fe7a8
+https://conda.anaconda.org/conda-forge/noarch/types-requests-2.31.0.10-pyhd8ed1ab_0.conda#84dca7318667fa091bbfd8724d22ea99
 https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311h9547e67_4.conda#586da7df03b68640de14dc3e8bcbf76f
 https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.8-pyhd8ed1ab_0.conda#367386d2575a0e62412448eda1012efd
-https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.24.2-h94c364a_0.conda#98d1e593cdf87647e51f9d54c7d5ef7a
+https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.24.3-ha4d64e0_3.conda#14f07bbda88ce2f97b71c2f047ca76ad
 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.2-py311h1f0f07a_2.conda#571c0c47e8dbcf03577935ac818b6696
 https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.1.1-py311h9547e67_1.conda#52d3de443952d33c5cee6b24b172ce96
-https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.9.3-pyhd8ed1ab_0.conda#a7155483171dbc27a7385d1c26e779de
+https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.10.0-pyhd8ed1ab_0.conda#6b415b2cd4a106b8eb1632be126ede81
 https://conda.anaconda.org/conda-forge/noarch/flake8-polyfill-1.0.2-py_0.tar.bz2#a53db35e3d07f0af2eccd59c2a00bffe
 https://conda.anaconda.org/conda-forge/noarch/identify-2.5.30-pyhd8ed1ab_0.conda#b7a2e3bb89bda8c69839485c20aabadf
 https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.1-pyhd8ed1ab_0.conda#78aff5d2af74e6537c1ca73017f01f4f
 https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.4.0-py311h38be061_0.conda#eb4ab2a92a2cc9715226382abb8ebaee
-https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.7.2-h6238fc3_5.conda#2fef4283b2bb45a66f8b81099d36721e
+https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.7.2-h6f3d308_7.conda#f9555eada0412c9f3dd4b34f5afecf5b
 https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.6.1-nompi_hacb5139_102.conda#487a1c19dd3eacfd055ad614e9acde87
 https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.1-py311h320fe9a_1.conda#a4371a95a8ae703a22949af28467b93d
 https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-ha41ecd1_2.conda#1a66c10f6a0da3dbd2f3a68127e7f6a0
 https://conda.anaconda.org/conda-forge/noarch/pooch-1.7.0-pyhd8ed1ab_4.conda#3cdaf7af08850933662b1e228bc6b5bc
 https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
-https://conda.anaconda.org/conda-forge/noarch/pylint-3.0.1-pyhd8ed1ab_0.conda#c4c66338865d295a213e8c1e473a072f
+https://conda.anaconda.org/conda-forge/noarch/pylint-2.17.7-pyhd8ed1ab_0.conda#3cab6aee60038b3f621bce3e50f52bed
 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21
 https://conda.anaconda.org/conda-forge/noarch/pytest-html-3.2.0-pyhd8ed1ab_1.tar.bz2#d5c7a941dfbceaab4b172a56d7918eb0
 https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.1.0-pyhd8ed1ab_0.conda#57b89064c125bb9d0e533e018c3eb17a
 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.3-py311h64a7726_1.conda#e4b4d3b764e2d029477d0db88248a8b5
-https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.1-py311he06c224_3.conda#0494ca2b1c365390d014b1295d79e9a3
+https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.2-py311he06c224_0.conda#c90e2469d7512f3bba893533a82d7a02
 https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.4-pyhd8ed1ab_0.conda#c3feaf947264a59a125e8c26e98c3c5a
 https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9
-https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.156-h314d761_4.conda#5e41eee446cb42a53090c2c46922f4dd
-https://conda.anaconda.org/conda-forge/noarch/bokeh-3.2.2-pyhd8ed1ab_0.conda#30488151f591379db656250b3f5fc0c6
-https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.2.0-py311h1f0f07a_0.conda#43a71a823583d75308eaf3a06c8f150b
-https://conda.anaconda.org/conda-forge/noarch/distributed-2023.9.3-pyhd8ed1ab_0.conda#543fafdd7b325bf16199235ee5f20622
+https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.182-h10f61e1_0.conda#bcdd6943a6be3aa15df3bfea9264e306
+https://conda.anaconda.org/conda-forge/noarch/bokeh-3.3.0-pyhd8ed1ab_0.conda#5d6ff9d18f0b611a7dc131f4a7444c2e
+https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.2.0-py311h1f0f07a_4.conda#1e105c1a8ea2163507726144b401eb1b
+https://conda.anaconda.org/conda-forge/noarch/distributed-2023.10.0-pyhd8ed1ab_0.conda#3ecca3ba0a497f06e697777464a2cae9
 https://conda.anaconda.org/conda-forge/linux-64/esmf-8.4.2-nompi_h9e768e6_3.conda#c330e87e698bae8e7381c0315cf25dd0
-https://conda.anaconda.org/conda-forge/linux-64/gdal-3.7.2-py311h815a124_5.conda#84a14fd830b72b09ef886a23de557a16
+https://conda.anaconda.org/conda-forge/linux-64/gdal-3.7.2-py311h815a124_7.conda#e68c90c9490e1621ff4a7871849f03b2
 https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h90689f9_2.tar.bz2#957a0255ab58aaf394a91725d73ab422
-https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.3.1-pyhd8ed1ab_0.conda#b7cc0981484fcb6390e6d341e55618b3
+https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.4.0-pyhd8ed1ab_0.conda#554496685357ab0d69676cab8e8fb594
 https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-h98fae49_0.conda#620e754f4344f4c27259ff460a2b9c50
-https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.0-py311h54ef318_1.conda#20d79e2fe53b49b399f3d36977b05abb
+https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.0-py311h54ef318_2.conda#5655371cc61b8c31c369a7e709acb294
 https://conda.anaconda.org/conda-forge/noarch/myproxyclient-2.1.0-pyhd8ed1ab_2.tar.bz2#363b0816e411feb0df925d4f224f026a
 https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda#61ba076de6530d9301a0053b02f093d2
 https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.6.4-nompi_py311he8ad708_103.conda#97b45ba4ff4e46a07dd6c60040256538
 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.4.0-pyha770c72_2.conda#09cd3006f61e7a7054405f81362e0a5f
+https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda#964e3d762e427661c59263435a14c492
 https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.39-hd8ed1ab_0.conda#4bbbe67d5df19db30f04b8e344dc9976
 https://conda.anaconda.org/conda-forge/noarch/pylint-plugin-utils-0.7-pyhd8ed1ab_0.tar.bz2#1657976383aee04dbb3ae3bdf654bb58
 https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py311h1f0f07a_1.conda#cd36a89a048ad2bcc6d8b43f648fb1d0
-https://conda.anaconda.org/conda-forge/noarch/xarray-2023.8.0-pyhd8ed1ab_0.conda#a8104cede521616573e228c27f9edc97
+https://conda.anaconda.org/conda-forge/noarch/xarray-2023.10.1-pyhd8ed1ab_0.conda#9b20e5d68eea6878a0a6fc57a3043889
 https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.22.0-py311h320fe9a_0.conda#1271b2375735e2aaa6d6770dbe2ad087
 https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.8.4-pyhd8ed1ab_0.conda#18472f8f9452f962fe0bcb1b8134b494
 https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.8.2-pyhd8ed1ab_0.conda#cc344a296a41369bcb05f7216661cec8
 https://conda.anaconda.org/conda-forge/noarch/esgf-pyclient-0.3.1-pyh1a96a4e_2.tar.bz2#64068564a9c2932bf30e9b4ec567927d
 https://conda.anaconda.org/conda-forge/noarch/esmpy-8.4.2-pyhc1e730c_4.conda#ddcf387719b2e44df0cc4dd467643951
-https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.4-py311hbac4ec9_0.conda#1d3445f5f7fa002a1c149c405376f012
+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/ipython-8.16.1-pyh0d859eb_0.conda#7e52cb0dbf01b90365bfe433ec8bd3c0
-https://conda.anaconda.org/conda-forge/linux-64/libarrow-13.0.0-h75f0d2f_8_cpu.conda#ddd12e48bae5a9b5a5da4debadc00f58
+https://conda.anaconda.org/conda-forge/linux-64/libarrow-13.0.0-he1fec18_11_cpu.conda#4bbdac31e0b1fb5299beb9b92f7abccd
 https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b
 https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.4.1-pyhd8ed1ab_0.tar.bz2#281b58948bf60a2582de9e548bcc5369
 https://conda.anaconda.org/conda-forge/noarch/pylint-celery-0.3-py_1.tar.bz2#e29456a611a62d3f26105a2f9c68f759
@@ -408,11 +411,11 @@ https://conda.anaconda.org/conda-forge/noarch/pylint-django-2.5.3-pyhd8ed1ab_0.t
 https://conda.anaconda.org/conda-forge/noarch/pylint-flask-0.6-py_0.tar.bz2#5a9afd3d0a61b08d59eed70fab859c1b
 https://conda.anaconda.org/conda-forge/noarch/iris-3.7.0-pyha770c72_0.conda#dccc1f660bf455c239adaabf56b91dc9
 https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.9.2-pyhd8ed1ab_0.conda#01e4314c780ca73759c694ce3ece281f
-https://conda.anaconda.org/conda-forge/noarch/prospector-1.10.2-pyhd8ed1ab_0.conda#2c536985982f7e531df8d640f554008a
+https://conda.anaconda.org/conda-forge/noarch/prospector-1.10.3-pyhd8ed1ab_0.conda#f551d4d859a1d70c6abff8310a655481
 https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.6.4-pyhd8ed1ab_0.conda#a30ffe78645b5777aa21d3e0f2d2a015
-https://conda.anaconda.org/conda-forge/linux-64/pyarrow-13.0.0-py311h39c9aba_8_cpu.conda#e98686af1af8faa05601af03a7d8bdd5
+https://conda.anaconda.org/conda-forge/linux-64/pyarrow-13.0.0-py311h39c9aba_11_cpu.conda#1d1fcce6ad64a319f6c8ad217313f52d
 https://conda.anaconda.org/conda-forge/linux-64/pydot-1.4.2-py311h38be061_4.conda#5c223cb0d9c05552bf9d1586a92720b2
-https://conda.anaconda.org/conda-forge/noarch/dask-2023.9.3-pyhd8ed1ab_0.conda#5b32dc4eb1f5e3097cc33fb0e331b3a4
+https://conda.anaconda.org/conda-forge/noarch/dask-2023.10.0-pyhd8ed1ab_0.conda#0c85f5482dd283c2b9ca68d331edb471
 https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.9.2-pyhd8ed1ab_0.conda#1ad46253f2eb46fb8c9b2c22b7ca012f
 https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2#aa9b3ad140f6c0668c646f32e20ccf82
 https://conda.anaconda.org/conda-forge/noarch/iris-esmf-regrid-0.8.0-pyhd8ed1ab_0.conda#56e85460d22fa7d4fb06300f785dd1e1
diff --git a/esmvalcore/_recipe/from_datasets.py b/esmvalcore/_recipe/from_datasets.py
index 0e454c735..8bd33fd5e 100644
--- a/esmvalcore/_recipe/from_datasets.py
+++ b/esmvalcore/_recipe/from_datasets.py
@@ -160,23 +160,6 @@ def _group_identical_facets(variable: Mapping[str, Any]) -> Recipe:
     return result
 
 
-class _SortableDict(dict):
-    """A `dict` class that can be sorted."""
-
-    def __lt__(self, other):
-        return tuple(self.items()) < tuple(other.items())
-
-
-def _change_dict_type(item, dict_type):
-    """Change the dict type in a nested structure."""
-    change_dict_type = partial(_change_dict_type, dict_type=dict_type)
-    if isinstance(item, dict):
-        return dict_type((k, change_dict_type(v)) for k, v in item.items())
-    if isinstance(item, (list, tuple, set)):
-        return type(item)(change_dict_type(elem) for elem in item)
-    return item
-
-
 def _group_ensemble_members(dataset_facets: Iterable[Facets]) -> list[Facets]:
     """Group ensemble members.
 
@@ -185,13 +168,15 @@ def _group_ensemble_members(dataset_facets: Iterable[Facets]) -> list[Facets]:
     """
 
     def grouper(facets):
-        return tuple((k, facets[k]) for k in sorted(facets) if k != 'ensemble')
+        return sorted(
+            (f, str(v)) for f, v in facets.items() if f != 'ensemble')
 
     result = []
-    dataset_facets = _change_dict_type(dataset_facets, _SortableDict)
     dataset_facets = sorted(dataset_facets, key=grouper)
-    for group_facets, group in itertools.groupby(dataset_facets, key=grouper):
+    for _, group_iter in itertools.groupby(dataset_facets, key=grouper):
+        group = list(group_iter)
         ensembles = [f['ensemble'] for f in group if 'ensemble' in f]
+        group_facets = group[0]
         if not ensembles:
             result.append(dict(group_facets))
         else:
@@ -199,7 +184,6 @@ def _group_ensemble_members(dataset_facets: Iterable[Facets]) -> list[Facets]:
                 facets = dict(group_facets)
                 facets['ensemble'] = ensemble
                 result.append(facets)
-    result = _change_dict_type(result, dict)
     return result
 
 
diff --git a/esmvalcore/preprocessor/_io.py b/esmvalcore/preprocessor/_io.py
index a6b2ccdd9..b9c59c1ad 100644
--- a/esmvalcore/preprocessor/_io.py
+++ b/esmvalcore/preprocessor/_io.py
@@ -261,10 +261,10 @@ def _check_time_overlaps(cubes):
                     overlapping_cubes[1],
                 )
 
-                start_point = isodate.date_isoformat(
-                    new_dates[0], format=isodate.isostrf.DATE_BAS_COMPLETE)
-                end_point = isodate.date_isoformat(
-                    new_dates[-1], format=isodate.isostrf.DATE_BAS_COMPLETE)
+                start_point = isodate.datetime_isoformat(
+                    new_dates[0], format=isodate.isostrf.DT_BAS_COMPLETE)
+                end_point = isodate.datetime_isoformat(
+                    new_dates[-1], format=isodate.isostrf.DT_BAS_COMPLETE)
                 new_cube = clip_timerange(overlapping_cubes[0],
                                           f'{start_point}/{end_point}')
 


Test patch:
diff --git a/tests/unit/recipe/test_from_datasets.py b/tests/unit/recipe/test_from_datasets.py
index c2032724a..aacca5117 100644
--- a/tests/unit/recipe/test_from_datasets.py
+++ b/tests/unit/recipe/test_from_datasets.py
@@ -8,7 +8,6 @@ from esmvalcore._recipe.from_datasets import (
     _group_ensemble_names,
     _group_identical_facets,
     _move_one_level_up,
-    _SortableDict,
     _to_frozen,
     datasets_to_recipe,
 )
@@ -137,12 +136,6 @@ def test_supplementary_datasets_to_recipe():
     assert datasets_to_recipe([dataset]) == recipe
 
 
-def test_sortable_dict():
-    assert _SortableDict({'a': 1}) < _SortableDict({'a': 2})
-    assert _SortableDict({'a': 1}) < _SortableDict({'a': 1, 'b': 1})
-    assert _SortableDict({'a': 1}) < _SortableDict({'b': 1})
-
-
 def test_datasets_to_recipe_group_ensembles():
     datasets = [
         Dataset(
@@ -253,6 +246,45 @@ def test_group_ensemble_members():
     ]
 
 
+def test_group_ensemble_members_mix_of_versions():
+    datasets = [
+        Dataset(
+            dataset='dataset1',
+            ensemble='r1i1p1f1',
+            exp=['historical', 'ssp585'],
+            version='v1',
+        ),
+        Dataset(
+            dataset='dataset1',
+            ensemble='r2i1p1f1',
+            exp=['historical', 'ssp585'],
+            version='v1',
+        ),
+        Dataset(
+            dataset='dataset1',
+            ensemble='r3i1p1f1',
+            exp=['historical', 'ssp585'],
+            version=['v1', 'v2'],
+        ),
+    ]
+    result = _group_ensemble_members(ds.facets for ds in datasets)
+    print(result)
+    assert result == [
+        {
+            'dataset': 'dataset1',
+            'ensemble': 'r3i1p1f1',
+            'exp': ['historical', 'ssp585'],
+            'version': ['v1', 'v2'],
+        },
+        {
+            'dataset': 'dataset1',
+            'ensemble': 'r(1:2)i1p1f1',
+            'exp': ['historical', 'ssp585'],
+            'version': 'v1',
+        },
+    ]
+
+
 def test_group_ensembles_cmip5():
     ensembles = [
         "r1i1p1",