@@ -3144,6 +3144,56 @@ def test_align_copy(self):
3144
3144
assert_identical (x , x2 )
3145
3145
assert source_ndarray (x2 .data ) is not source_ndarray (x .data )
3146
3146
3147
+ def test_align_override (self ):
3148
+ left = DataArray ([1 , 2 , 3 ], dims = "x" , coords = {"x" : [0 , 1 , 2 ]})
3149
+ right = DataArray (
3150
+ np .arange (9 ).reshape ((3 , 3 )),
3151
+ dims = ["x" , "y" ],
3152
+ coords = {"x" : [0.1 , 1.1 , 2.1 ], "y" : [1 , 2 , 3 ]},
3153
+ )
3154
+
3155
+ expected_right = DataArray (
3156
+ np .arange (9 ).reshape (3 , 3 ),
3157
+ dims = ["x" , "y" ],
3158
+ coords = {"x" : [0 , 1 , 2 ], "y" : [1 , 2 , 3 ]},
3159
+ )
3160
+
3161
+ new_left , new_right = align (left , right , join = "override" )
3162
+ assert_identical (left , new_left )
3163
+ assert_identical (new_right , expected_right )
3164
+
3165
+ new_left , new_right = align (left , right , exclude = "x" , join = "override" )
3166
+ assert_identical (left , new_left )
3167
+ assert_identical (right , new_right )
3168
+
3169
+ new_left , new_right = xr .align (
3170
+ left .isel (x = 0 , drop = True ), right , exclude = "x" , join = "override"
3171
+ )
3172
+ assert_identical (left .isel (x = 0 , drop = True ), new_left )
3173
+ assert_identical (right , new_right )
3174
+
3175
+ with raises_regex (ValueError , "Indexes along dimension 'x' don't have" ):
3176
+ align (left .isel (x = 0 ).expand_dims ("x" ), right , join = "override" )
3177
+
3178
+ @pytest .mark .parametrize (
3179
+ "darrays" ,
3180
+ [
3181
+ [
3182
+ DataArray (0 ),
3183
+ DataArray ([1 ], [("x" , [1 ])]),
3184
+ DataArray ([2 , 3 ], [("x" , [2 , 3 ])]),
3185
+ ],
3186
+ [
3187
+ DataArray ([2 , 3 ], [("x" , [2 , 3 ])]),
3188
+ DataArray ([1 ], [("x" , [1 ])]),
3189
+ DataArray (0 ),
3190
+ ],
3191
+ ],
3192
+ )
3193
+ def test_align_override_error (self , darrays ):
3194
+ with raises_regex (ValueError , "Indexes along dimension 'x' don't have" ):
3195
+ xr .align (* darrays , join = "override" )
3196
+
3147
3197
def test_align_exclude (self ):
3148
3198
x = DataArray ([[1 , 2 ], [3 , 4 ]], coords = [("a" , [- 1 , - 2 ]), ("b" , [3 , 4 ])])
3149
3199
y = DataArray ([[1 , 2 ], [3 , 4 ]], coords = [("a" , [- 1 , 20 ]), ("b" , [5 , 6 ])])
0 commit comments