@@ -405,15 +405,15 @@ def _current_effective_policy():
405
405
return policy
406
406
407
407
408
- def _apply_loading_policy (cubes , policy = None ):
408
+ def _combine_with_loading_policy (cubes , policy = None , merge_require_unique = False ):
409
409
if not policy :
410
410
policy = _current_effective_policy ()
411
411
while True :
412
412
n_original_cubes = len (cubes )
413
413
if policy .use_concatenate and policy .cat_before_merge :
414
414
cubes = cubes .concatenate ()
415
415
if policy .use_merge :
416
- cubes = cubes .merge ()
416
+ cubes = cubes .merge (unique = merge_require_unique )
417
417
if policy .use_concatenate and not policy .cat_before_merge :
418
418
cubes = cubes .concatenate ()
419
419
n_new_cubes = len (cubes )
@@ -447,8 +447,7 @@ def load(uris, constraints=None, callback=None, policy=None):
447
447
were random.
448
448
449
449
"""
450
- cubes = _load_collection (uris , constraints , callback ).cubes ()
451
- cubes = _apply_loading_policy (cubes )
450
+ cubes = _load_collection (uris , constraints , callback ).combined ().cubes ()
452
451
return cubes
453
452
454
453
@@ -477,9 +476,11 @@ def load_cube(uris, constraint=None, callback=None):
477
476
if len (constraints ) != 1 :
478
477
raise ValueError ("only a single constraint is allowed" )
479
478
480
- cubes = _load_collection (uris , constraints , callback ).cubes ( )
479
+ cubes = _load_collection (uris , constraints , callback ).combined ( unique = False )
481
480
482
481
try :
482
+ # NOTE: this call currently retained to preserve the legacy exceptions
483
+ # TODO: replace with simple testing to duplicate the relevant error cases
483
484
cube = cubes .merge_cube ()
484
485
except iris .exceptions .MergeError as e :
485
486
raise iris .exceptions .ConstraintMismatchError (str (e ))
@@ -514,7 +515,7 @@ def load_cubes(uris, constraints=None, callback=None):
514
515
515
516
"""
516
517
# Merge the incoming cubes
517
- collection = _load_collection (uris , constraints , callback ).merged ()
518
+ collection = _load_collection (uris , constraints , callback ).combined ()
518
519
519
520
# Make sure we have exactly one merged cube per constraint
520
521
bad_pairs = [pair for pair in collection .pairs if len (pair ) != 1 ]
0 commit comments