@@ -1390,3 +1390,58 @@ def test_lazy_array_equiv_merge(compat):
1390
1390
xr .merge ([da1 , da3 ], compat = compat )
1391
1391
with raise_if_dask_computes (max_computes = 2 ):
1392
1392
xr .merge ([da1 , da2 / 2 ], compat = compat )
1393
+
1394
+
1395
+ @pytest .mark .filterwarnings ("ignore::FutureWarning" ) # transpose_coords
1396
+ @pytest .mark .parametrize ("obj" , [make_da (), make_ds ()])
1397
+ @pytest .mark .parametrize (
1398
+ "transform" ,
1399
+ [
1400
+ lambda a : a .assign_attrs (new_attr = "anew" ),
1401
+ lambda a : a .assign_coords (cxy = a .cxy ),
1402
+ lambda a : a .copy (),
1403
+ lambda a : a .isel (x = np .arange (a .sizes ["x" ])),
1404
+ lambda a : a .isel (x = slice (None )),
1405
+ lambda a : a .loc [dict (x = slice (None ))],
1406
+ lambda a : a .loc [dict (x = np .arange (a .sizes ["x" ]))],
1407
+ lambda a : a .loc [dict (x = a .x )],
1408
+ lambda a : a .sel (x = a .x ),
1409
+ lambda a : a .sel (x = a .x .values ),
1410
+ lambda a : a .transpose (...),
1411
+ lambda a : a .squeeze (), # no dimensions to squeeze
1412
+ lambda a : a .sortby ("x" ), # "x" is already sorted
1413
+ lambda a : a .reindex (x = a .x ),
1414
+ lambda a : a .reindex_like (a ),
1415
+ lambda a : a .rename ({"cxy" : "cnew" }).rename ({"cnew" : "cxy" }),
1416
+ lambda a : a .pipe (lambda x : x ),
1417
+ lambda a : xr .align (a , xr .zeros_like (a ))[0 ],
1418
+ # assign
1419
+ # swap_dims
1420
+ # set_index / reset_index
1421
+ ],
1422
+ )
1423
+ def test_transforms_pass_lazy_array_equiv (obj , transform ):
1424
+ with raise_if_dask_computes ():
1425
+ assert_equal (obj , transform (obj ))
1426
+
1427
+
1428
+ def test_more_transforms_pass_lazy_array_equiv (map_da , map_ds ):
1429
+ with raise_if_dask_computes ():
1430
+ assert_equal (map_ds .cxy .broadcast_like (map_ds .cxy ), map_ds .cxy )
1431
+ assert_equal (xr .broadcast (map_ds .cxy , map_ds .cxy )[0 ], map_ds .cxy )
1432
+ assert_equal (map_ds .map (lambda x : x ), map_ds )
1433
+ assert_equal (map_ds .set_coords ("a" ).reset_coords ("a" ), map_ds )
1434
+ assert_equal (map_ds .update ({"a" : map_ds .a }), map_ds )
1435
+
1436
+ # fails because of index error
1437
+ # assert_equal(
1438
+ # map_ds.rename_dims({"x": "xnew"}).rename_dims({"xnew": "x"}), map_ds
1439
+ # )
1440
+
1441
+ assert_equal (
1442
+ map_ds .rename_vars ({"cxy" : "cnew" }).rename_vars ({"cnew" : "cxy" }), map_ds
1443
+ )
1444
+
1445
+ assert_equal (map_da ._from_temp_dataset (map_da ._to_temp_dataset ()), map_da )
1446
+ assert_equal (map_da .astype (map_da .dtype ), map_da )
1447
+ assert_equal (map_da .transpose ("y" , "x" , transpose_coords = False ).cxy , map_da .cxy )
0 commit comments