@@ -424,7 +424,53 @@ def test_concat_loads_variables(self):
424
424
out .compute ()
425
425
assert kernel_call_count == 24
426
426
427
- # Finally, test that riginals are unaltered
427
+ # Finally, test that originals are unaltered
428
+ assert ds1 ["d" ].data is d1
429
+ assert ds1 ["c" ].data is c1
430
+ assert ds2 ["d" ].data is d2
431
+ assert ds2 ["c" ].data is c2
432
+ assert ds3 ["d" ].data is d3
433
+ assert ds3 ["c" ].data is c3
434
+
435
+ # now check that concat() is correctly using dask name equality to skip loads
436
+ out = xr .concat (
437
+ [ds1 , ds1 , ds1 ], dim = "n" , data_vars = "different" , coords = "different"
438
+ )
439
+ assert kernel_call_count == 24
440
+ # variables are not loaded in the output
441
+ assert isinstance (out ["d" ].data , dask .array .Array )
442
+ assert isinstance (out ["c" ].data , dask .array .Array )
443
+
444
+ out = xr .concat (
445
+ [ds1 , ds1 , ds1 ], dim = "n" , data_vars = [], coords = [], compat = "identical"
446
+ )
447
+ assert kernel_call_count == 24
448
+ # variables are not loaded in the output
449
+ assert isinstance (out ["d" ].data , dask .array .Array )
450
+ assert isinstance (out ["c" ].data , dask .array .Array )
451
+
452
+ out = xr .concat (
453
+ [ds1 , ds2 .compute (), ds3 ],
454
+ dim = "n" ,
455
+ data_vars = "all" ,
456
+ coords = "different" ,
457
+ compat = "identical" ,
458
+ )
459
+ # c1,c3 must be computed for comparison since c2 is numpy;
460
+ # d2 is computed too
461
+ assert kernel_call_count == 28
462
+
463
+ out = xr .concat (
464
+ [ds1 , ds2 .compute (), ds3 ],
465
+ dim = "n" ,
466
+ data_vars = "all" ,
467
+ coords = "all" ,
468
+ compat = "identical" ,
469
+ )
470
+ # no extra computes
471
+ assert kernel_call_count == 30
472
+
473
+ # Finally, test that originals are unaltered
428
474
assert ds1 ["d" ].data is d1
429
475
assert ds1 ["c" ].data is c1
430
476
assert ds2 ["d" ].data is d2
0 commit comments