
    d                       d dl mZ d dlmZ d dlmZmZmZ d dlZ	d dl
Zd dlZd dlmZmZmZmZ d dlmZmZ d dlmZ d dlmZmZmZmZmZ d d	lmZ erd d
lm Z m!Z! 	 d:d;dZ"	 d<d=dZ#d>dZ$d>dZ%d>dZ&d>dZ'd>dZ(d>dZ)ej*        +                    dddg          d?d            Z,d>d Z-ej*        .                    d!          d>d"            Z/d>d#Z0ej1        d@d%            Z2ej1        d@d&            Z3ej*        +                    d'ddg          ej*        +                    d(ddg          dAd)                        Z4 G d* d+          Z5 G d, d-          Z6ej*        +                    d.d/d0g d1iid/g d2ii f          ej*        +                    d3d/g d2ii f          d>d4                        Z7d5 Z8d>d6Z9d>d7Z:d>d8Z;d>d9Z<dS )B    )annotations)deepcopy)TYPE_CHECKINGAnyCallableN)	DataArrayDatasetVariableconcat)dtypesmerge)PandasIndex)InaccessibleArrayassert_array_equalassert_equalassert_identicalrequires_dask)create_test_data)CombineAttrsOptionsJoinOptions   Tnum_datasetsintseed
int | Noneinclude_dayboolreturnlist[Dataset]c                  
 t           j                            |          }|                    d          }|                    d          }g }g d}t	          |           D ]}|rg d|                    d          f

fd|D             }	|                    t          |	ddg|fddg|fd	t          |d
z  dz             z   d	t          |d
z  d
z             z   gd                     ddg|                    d          f

fd|D             }	|                    t          |	ddg|fddg|fd                     |S )N      sizetemperaturepressurehumidityprecipitationcloud_coverxydayr"   r#   r   c                    i | ]}|S  r2   .0v
data_tuples     8lib/python3.11/site-packages/xarray/tests/test_concat.py
<dictcomp>z*create_concat_datasets.<locals>.<dictcomp>)       :::1J:::    r-   r.   r/   r   r"   latlonr/   	data_varscoordsc                    i | ]}|S r2   r2   r3   s     r7   r8   z*create_concat_datasets.<locals>.<dictcomp>9   r9   r:   )r<   r=   )nprandomdefault_rngstandard_normalrangeappendr	   str)r   r   r   rngr<   r=   result	variablesir?   r6   s             @r7   create_concat_datasetsrM      s    )


%
%C


6

*
*C


6

*
*CFWWWI<     	!!!###33J ;:::	:::IMM'!$c
C0!$c
C0 %AEAI 6AEAI8NO   	 	 	 	 c
###00J ;:::	:::IMM'%(#J#4sCj#=NOO      Mr:   c                `   g d}g }t           j                            |          }|                    d          }|                    d          }t	          |           D ]K}|                    t          g d|                    d          fg d|                    d          fg d|                    |d          fg d|                    ddd          fg dt          j	        t          j
        d          t          j
        d	                                        d
dd          fg dt          j        d t	          d          D             g d          fdddg|fddg|fdt          |dz  d
z             z   dt          |dz  dz             z   gd                     M|S )N)abcdefghr!   r$   r,   r0   r   
   z
2017-01-01z
2017-01-09r"   r#   r   c                8    g | ]}t          j        |           S ))days)pd	Timedeltar4   rL   s     r7   
<listcomp>z)create_typed_datasets.<locals>.<listcomp>`   s%    #K#K#KQBLa$8$8$8#K#K#Kr:      floatfloat2stringr   
datetime64timedelta64r-   r.   r/   r;   r>   )rB   rC   rD   rE   rF   rG   r	   choiceintegersarangerc   reshaperH   )r   r   var_stringsrJ   rI   r<   r=   rL   s           r7   create_typed_datasetsrj   E   s    ;::KF
)


%
%C


6

*
*C


6

*
*C<   
 
///1D1D)1D1T1TU000#2E2E92E2U2UV)))

;Y
?? .--s||Ar	|/R/RS)))	M,77|9T9T !'!Q**	# *))
#K#K%((#K#K#KYYYWW$ ( !#J, #J,!CA	NN2ECA	NN4JK )  	
 	
 	
 	
8 Mr:   Nonec                    t          dddggfdddgfdddgfdddgdgdd	gd
          } t          dddggfdddgfdddggfdddgdgdd	gdgd          }t          | |gddd          }t          |j        |j                                                   dD ]"}d||         j        vrd||         j        vsJ #t          j        t          d          5  t          | |gd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          || gd           d d d            d S # 1 swxY w Y   d S )N)r.   r-   r"   r   r-   z)has_x_yhas_xno_x_yr   )r-   r.   rm   r@      r#   )qrm   )r-   r.   rm   ru   r.   minimalbroadcast_equalsdimr?   compat)ro   rp   z'q' not present in all datasetsmatchru   ry   )
r	   r   r   rp   	transposedimsr@   pytestraises
ValueError)ds1ds2rJ   vars       r7   test_concat_compatr   m   sN   
"aVH-Aq6]QFm	
 	

 V1#RH55  C "aVH-Aq6]!QF8,	
 	

 V1#RHA3??  C S#JC9EWXXXFV]4466777" M M&+***s&+:L/L/L/L/L/L	z)K	L	L	L $ $Szs####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	z)K	L	L	L $ $Szs####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s$   C;;C?C?!EE	Ec                    t          dd          } t          | d          }g d}|                    |          }t          j        |d         ddd f<   | d	                             |          | d	<   | d
                             |dgz             | d
<   t          | d          }t          |j                                                  ddgk    sJ t          ||           d S )Nr   {   r   r/   r}   r)   r*   r+   r(   .r   r"   r'   )	rM   r   	drop_varsrB   nanlistr?   keysr   datasetsexpectedvars_to_dropactuals       r7   test_concat_missing_varr      s    %ac222HhE***H???L!!,//H$&FHZabb!1+''55HQK1+''
|(CDDHQKH%(((F %%''((]J,GGGGGVX&&&&&r:   c                    t          dd          } t          | d          }ddg}t          j        |d         dd d	f<   t          j        |d         dd d	f<   | d
                             |          | d
<   | d                             |          | d<   t          | d          }t          |j                                                  g dk    sJ t          ||           d S )Nrt   r   r   r/   r}   r)   r(   .r#   r   r"   )r'   r*   r+   r(   r)   	rM   r   rB   r   r   r   r?   r   r   r   s       r7   ,test_concat_missing_multiple_consecutive_varr      s    %ac222HhE***H
+L$&FHZbqb!$&FHZbqb!1+''55HQK1+''55HQKH%(((F %%''(( - - -     VX&&&&&r:   c                     t                      } t                      }t                      }t          | |gd          }t          ||           d S )Nnew_dimr}   )r	   r   r   r   r   r   r   s       r7   test_concat_all_emptyr      sI    
))C
))CyyHS#JI...FVX&&&&&r:   c                    t          dddgfiddi          } t          ddi          }t          dddt          j        gfiddi          }t          | |gd          }t	          ||           t          dddt          j        gfiddddgfi          }t          | |gdd	          }t	          ||           d| d
<   t          ddt          j        gfddt          j        gfdddddgfi          }t          | |gddd          }t	          ||           t          ddt          j        gfddddi          }t          | |gddd          }t	          ||           d S )NrO   r.   皙?r-   r>   rs   r}   allry   r@   rP   rO   rP   )ry   r@   r?   	different)r	   rB   r   r   r   r   s       r7   test_concat_second_emptyr      s   
S3,/c

C
C
CC
#s
$
$
$C#c26]';!<c3ZPPPHS#JC(((FVX&&&sBFm,-sS3*<M6N  H S#JC666FVX&&& CHsBFm,C#rv3GHHcC:&'  H S#JCGGGFVX&&&sBFm,377c
  H S#JC{SSSFVX&&&&&r:   c                    t          dd          } t          | d          }ddg}t          j        |d         ddd f<   t          j        |d         ddd f<   | d	                             |          | d	<   t          | d          }t          |j                                                  g d
k    sJ t          ||           d S )Nr   r   r   r/   r}   r(   r+   .r"   r&   r   r   s       r7   &test_concat_multiple_missing_variablesr      s    %ac222HhE***H.L$&FHZabb!')vH]CG$1+''55HQKH%(((F  %%''(( - - -     VX&&&&&r:   Fc                   g d}t          t          |          d|           }t          |d          }t          |          D ]F\  }}| r#t          j        ||         d|dz  |dz   dz  f<   *t          j        ||         ||dz   df<   Gd	 t          ||          D             }t          |d          }t          |j        	                                          g d
k    sJ t          ||           d S )Nr&   r   )r   r   r/   r}   .r   r"   c                >    g | ]\  }}|                     |          S r2   )r   )r4   dsvarnames      r7   r]   z>test_concat_multiple_datasets_missing_vars.<locals>.<listcomp>  s(    UUU+"gW%%UUUr:   )r(   r)   r*   r+   r'   )rM   lenr   	enumeraterB   r   zipr   r?   r   r   )r   r   r   r   rL   namer   s          r7   *test_concat_multiple_datasets_missing_varsr      s>     L &L  H hE***H\** 4 44 	479vHTN3AQ! 3344-/VHTN1q1u9c>** VUX|9T9TUUUHH%(((F %%''(( - - -     VX&&&&&r:   c                    ddg} g d}t          dd          }t          |d          }| D ]}t          j        ||         d	d df<   |D ]}t          j        ||         d	dd f<   |d
                             |           |d
<   |d                             |          |d<   t          |d          }t          |j                                                  g dk    sJ t          ||           d S )Nr'   r(   r   r   r   r   r/   r}   .r   r"   )r)   r*   r+   r'   r(   r   )vars_to_drop_in_firstvars_to_drop_in_secondr   r   r   r   s         r7   =test_concat_multiple_datasets_with_multiple_missing_variablesr     s2   *J7III%ac222HhE***H% ) )"$&sBQBw& ) )"$&sABBw 1+''(=>>HQK1+''(>??HQKH%(((F %%''(( - - -     VX&&&&&r:   z ignore:Converting non-nanosecondc                 t   t          dd          } t          | dt          j                  }t          | d d d         dt          j                  }g d}||g}t	          |          D ]\  }}t          |dz  |dz   dz            }t          j        |d	         d
|f<   t          j        |d         d
|f<   t          j        |d         d
|f<   |d         dz  }t          j        |d
|f<   ||d<   |d                             t                    }t          j        |d
|f<   ||d<   | d         
                    |dd                    | d<   t          | dt          j                  }	t          |	|d                    t          | d d d         dt          j                  }	t          |	|d                    d S )Nr   r   r   r/   ry   
fill_valuerq   r_   r"   ra   .rc   rd   r   g      ?rb   r   )rj   r   r   NAr   slicerB   r   astypeobjectr   r   )
r   	expected1	expected2varsr   rL   expslr   r   s
             r7    test_concat_type_of_missing_fillr   ,  s   $QS111HxUvyAAAIx"~5VYGGGILLLD9%HH%% 
 
31q51q5A+&&!#Hc2g%'VL#r'"&(fM37#%j3vCGE
(m""6**vCGH 1+''QRR11HQKH%FI>>>FVXa[))) HTTrTN&)DDDFVXa[)))))r:   c                    g } dg}t          dd          }t          |d          }|D ]}t          j        ||         ddd f<   t          |d d d         d          }|D ]}t          j        ||         dd df<   |d	                             |           |d	<   |d
                             |          |d
<   t          |d          }t          |j                                                  g dk    sJ t          ||           t          |d d d         d          }t          |j                                                  g dk    sJ t          ||           d S )Nr)   r   r   r   r/   r}   .rq   r   r"   r&   )r'   r(   r*   r+   r)   r   )r   r   r   r   r   r   r   s          r7   &test_concat_order_when_filling_missingr   L  s   ')(\%ac222HxU+++I& * *#%6	$QRR  x"~5111I& * *#%6	$RaR   1+''(=>>HQK1+''(>??HQKH%(((F %%''(( - - -     VY'''HTTrTN...F %%''(( - - -     VY'''''r:   r   c                     dd	d} | S )
NrW   var_cntr   list_cntr   list[list[str]]c                    d t          |           D             }g }t          d|          D ]+}|                                }|                    |           ,|S )Nc                    g | ]}d |d	S )rR   02dr2   r\   s     r7   r]   z:concat_var_names.<locals>.get_varnames.<locals>.<listcomp>w  s     444A444r:   r   )rF   copyrG   )r   r   orig	var_namesrL   l1s         r7   get_varnamesz&concat_var_names.<locals>.get_varnamesv  sc    44U7^^444	q(## 	! 	!ABR    r:   )rW   rW   )r   r   r   r   r   r   r2   )r   s    r7   concat_var_namesr   s  s#         r:   c                     	 	 	 ddd} | S )NFr   r   ry   r   coorddrop_idxlist[int] | Noner   r   c                B   g }t                      }|                    dt          j        d          i          }|                    dt          j        d          i          }|                    dt          j        d          i          }t	          |           D ]\  }}|                                }||                    ||                    t          j        dt                                        dddd          }	|                                }
|r%|	                    d	d	g|dz  |dz  d
z   gfi          }
|D ]/}|
	                    |g d|	                                fi          }
0|s|

                    d          }
|                    |
           |S )Nr-   r   r.   rt   rm   r#   0   dtypetimer"   )r   r-   r.   rm   r   )r   )r	   assign_coordsrB   rg   r   r   popr`   rh   assigniselrG   )r   ry   r   r   out_dsr   rL   dslvlistfoo_datadsiks               r7   	create_dsz#create_concat_ds.<locals>.create_ds  s    YYsBIaLL122sBIaLL122sBIaLL122	** 	 	FAsHHJJE#		(1+&&&y511199!Q1EEH''))C Jii6(QUAEAI4F)G HII R Rjj!&=&=&=x}}%O!PQQ 'hhAh&&MM#r:   )FFN)
r   r   ry   r   r   r   r   r   r   r   r2   )r   s    r7   create_concat_dsr     s.     %)	    4 r:   ry   r   c                    |             }g d}t           ||||          dd          }t          |          D ]U\  }}|r-t          j        ||d         |                  |dz  |dz  dz   <   4t          j        ||d         |                  |<   V |||||          }	t          |	dd          }
t	          |
j                                                  g d	k    sJ t          |
|           d S )
N)
r         r#   r#   r^   r   r   r   r   )ry   r   r   r   ry   r?   r   r   )ry   r   r   )
d01d02d03d04d05d06d07d08d09d00)r   r   rB   r   r   r?   r   r   )r   r   ry   r   r   r   r   rL   idx	concat_dsr   s              r7   "test_concat_fill_missing_variablesr     s=   
 ! ""I---H5999vQV  H H%% 4 43 	4=?VHYq\#&'AA	(9::-/VHYq\#&'**  58TTTII6U;;;F %%''(( - - -     VX&&&&&r:   c                     e Zd Zej        dFd            ZdFdZej                            dddg          ej                            dd	d
g          dGd                        Z	dGdZ
dGdZej                            dg d          ej                            dd	d
g          dGd                        ZdGdZdGdZdGdZdGdZd Zd ZdGdZdGdZd ZdGdZej                            ddddddd d!ddd d"d#fddddi dddd#fdi dd d!dd d!d#fddddd$d d!ddd d"d%fd&ddddd d!i d#fd'dddddddddd#fd'ddddd d!dddd%fd(dddd$d)d d"dddd#fd*d+d,d-d"dd-d.d/d+d-d.d0d#fd1 d+d,d-d"dd-d.d/d2d3dd"d#fg
          d4             Zej                            d5dddddd d!ddd d"d#fddddi dddd#fdi dd d!dd d!d#fddddd$d d!ddd d"d%fd&ddddd d!i d#fd'dddddddddd#fd'ddddd d!dddd%fd(dddd$d)d d"dddd#fd*d+d,d-d"dd-d.d/d+d-d.d0d#fd6 d+d,d-d"dd-d.d/d2d3dd"d#fg
          d7             ZdGd8ZdGd9ZdGd:ZdGd;ZdGd<ZdGd=Zej                            d>ej         dd?dddg          dGd@            Z!ej                            dAe"e#g          ej                            ddBdCg          dGdD                        Z$dES )HTestConcatDatasetr   r	   c                D    t                                          d          S )Ndim3)r   	drop_dims)selfs    r7   datazTestConcatDataset.data  s    !!++F333r:   c                    t          fd|j                                        D             |j        |j                  S )Nc                B    i | ]\  }}| |j         |         j         S r2   )r~   r   )r4   r   r5   r   s      r7   r8   z7TestConcatDataset.rectify_dim_order.<locals>.<dictcomp>  s.    QQQtq!QT!W\*QQQr:   attrs)r	   r?   itemsr@   r   )r   r   datasets    ` r7   rectify_dim_orderz#TestConcatDataset.rectify_dim_order  sL     QQQQw7H7N7N7P7PQQQN-
 
 
 	
r:   r@   r   rv   ry   dim1dim2rk   c                    d |                     |d          D             }t          |t          |||                     d S )Nc                    g | ]\  }}|S r2   r2   r4   _rU   s      r7   r]   z8TestConcatDataset.test_concat_simple.<locals>.<listcomp>  s    CCC$!QACCCr:   Fsqueezers   )groupbyr   r   )r   r   ry   r@   r   s        r7   test_concat_simplez$TestConcatDataset.test_concat_simple  sM     DC$,,sE,"B"BCCCvhFCCCDDDDDr:   c                   t          dddgfiddi          }t          dddgfiddi          }t          ||gdd	          }t          ddddgfiddd
          }t          ||           |                    t	          d                    |                    t	          dd                     g}t          |          \  }}dt          j                            d          f|d<   t          ||gdd          }|	                                
                    |j                  }t          ||           t          ||gd          }t          j        d|j        j                  t          j        z  }	|j        j        d         |	dd <   |	                                
                    ddg|	f          }t          ||           d S )NrO   r.   r   r-   r>   g?rm   rv   r   )r-   rm   rs   rt   r  barrW   foor  r?   )r  )r^   rW   r   )N.)r	   r   r   r   r   r   rB   rC   randnr   r   r  onesr   r   values)
r   r   r   r   r   r   
split_datadata0data1r  s
             r7   4test_concat_merge_variables_present_in_some_datasetszFTestConcatDataset.test_concat_merge_variables_present_in_some_datasets  s   sSEl 3S#JGGGsSEl 3S#JGGGc
I>>>C#Sz!23#C<P<PQQQ6*** iiU1XXi..		uQ~~	0N0NO

++uryr223e)DDD99;;%%%)%446*** //ggUY_555>)"9-ABB99;;%%FE?C*@%AA6*****r:   c                   dd |                     d          D             }fd|j                                        D             }t          ||         |          }t	          ||                     ||                     d S )Nr  c                    g | ]\  }}|S r2   r2   r  s      r7   r]   z3TestConcatDataset.test_concat_2.<locals>.<listcomp>      BBB$!QABBBr:   Tr  c                8    g | ]\  }}|j         v |k    |S r2   r   )r4   r   r5   ry   s      r7   r]   z3TestConcatDataset.test_concat_2.<locals>.<listcomp>  s-    WWWTQC16MMaSVhhqhhhr:   rs   )r
  r@   r   r   r   r  )r   r   r   concat_overr   ry   s        @r7   test_concat_2zTestConcatDataset.test_concat_2  s    BB$,,sD,"A"ABBBWWWWT[%6%6%8%8WWW$s)K@@@t55dFCCDDDDDr:   )r   rv   r   c                                        d          dt          j        d          fj        d<   d                     |d          D             }t          ||         |          }|d	k    rUt          j        fd
t          j        |                   D                       }t          |d         j
        |           d S t          d         |d                    d S )NTdeepdim4rt   extrac                    g | ]\  }}|S r2   r2   r  s      r7   r]   z>TestConcatDataset.test_concat_coords_kwarg.<locals>.<listcomp>  r  r:   r  rs   r   c                *    g | ]}d          j         S )r#  )r  )r4   r  r   s     r7   r]   z>TestConcatDataset.test_concat_coords_kwarg.<locals>.<listcomp>  s      U U U!g!5 U U Ur:   )r   rB   rg   r@   r
  r   arrayrF   r   r   r  r   )r   r   ry   r@   r   r   r   s    `     r7   test_concat_coords_kwargz*TestConcatDataset.test_concat_coords_kwarg  s     yydy## &	!5GBB$,,sD,"A"ABBB$s)F;;;U??x U U U UuTYs^?T?T U U UVVHvg5x@@@@@ gw88888r:   c                    |                     t          d                    |                     d          |                     t          dd                     g}t          |t          |d                     d S )Nrt   r  r#   r  )r   r   r   r   )r   r   r  s      r7   test_concatzTestConcatDataset.test_concat  sl    II588I$$II1III5D>>I**


 	vj&99:::::r:   c                    d|d         z                       d          }d |                    dd          D             }|                                }||d<   t          |t	          ||                     d S )Nr   r  c                    g | ]\  }}|S r2   r2   r  s      r7   r]   z@TestConcatDataset.test_concat_dim_precedence.<locals>.<listcomp>  s    FFF$!QAFFFr:   Fr  )renamer
  r   r   r   )r   r   ry   r   r   s        r7   test_concat_dim_precedencez,TestConcatDataset.test_concat_dim_precedence  sz     4<''//FF$,,vu,"E"EFFF99;;6(C#8#899999r:   c                8   t          ddt          j                            d          fi          }|                    t          d                    |                    t          dd                     g}t          |dd          }t          ||           d S )Nr  r-   rW      r-   rv   r   r	   rB   rC   r  r   r   r   r   )r   r   objsr   s       r7   test_concat_data_vars_typingz.TestConcatDataset.test_concat_data_vars_typing  s    RY__R%8%89:;;#yy588y44dii%4..i6Q6QR#;;;v&&&&&r:   c                N   t          ddt          j                            d          fi          }|                    t          d                    |                    t          dd                     g}dddg dgfD ]$}t          |d|	          }t          ||           %d S )
Nr  r-   rW   r/  r0  rv   r   r   r   r1  )r   r   r2  r?   r   s        r7   test_concat_data_varsz'TestConcatDataset.test_concat_data_vars  s    RY__R%8%89:;;#yy588y44dii%4..i6Q6QR#[%eWE 	+ 	+IDcY???FT6****	+ 	+r:   c                   t          ddt          j                            d          fi          }|                    ddgdz  dgdz  z   f          }|                    t          d                                        d          |                    t          dd                                         d          g}d	d
dgfD ]$}t          |d|          }t          ||           %dg fD ]L}t          j
        t          j        d          5  t          |d|           d d d            n# 1 swxY w Y   Md S )Nr  r-   rW   r   r/  r"   )rQ   r0  r   r   rQ   r   rv   conflicting valuesr{   )r	   rB   rC   r  r   r   r   r   r   r   r   r   
MergeError)r   r   r   r2  r@   r   s         r7   test_concat_coordsz$TestConcatDataset.test_concat_coords$  s   RY__R%8%89:;;%%qcAga.?(@%AAIIaI!!//!/44IIaI''555::
 #EC51 	/ 	/FDc&999FXv.... "o 	5 	5Fu/7KLLL 5 5tV44445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	5 	5s   D33D7	:D7	c                z   t          ddiddi          }t          ddiddi          }t          dddgfddgd          }dddgfD ]&}t          ||gd|	          }t          ||           't          j        t
          j        d
          5  t          ||gdd	           d d d            d S # 1 swxY w Y   d S )Nr  g      ?r.   r"   g      @)r  r.   r   r   r  r7  r{   r   rv   )r	   r   r   r   r   r   r8  )r   r   r   r   moder   s         r7   test_concat_constant_indexz,TestConcatDataset.test_concat_constant_index3  s/    uclS!H--uclS!H--C#s#4Aq6BBCC %%1 	/ 	/DS#Jt<<<FXv....]5+3GHHH 	? 	? C:yI>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   B00B47B4c                    t                      }|                    t          dd                    |g}t          |d          }t	          ||           t          |d d d         d          }t	          ||           d S )Nr   r  r  rq   )r   r   r   r   r   )r   r   r  r   s       r7   test_concat_size0z#TestConcatDataset.test_concat_size0A  s|    !!iiU1a[[i1148

F++v&&&
44R4(&11v&&&&&r:   c           
     l   t          dt          ddgdddgfg          i          }t          dt          ddgdddgfg          i          }t          ||gd          }t          dt          ddt          j        gdt          j        dggddgdg di	          i          }t          ||           d S )
Nr  r"   r   r-   rs   rt   r.   r"   r   rt   r   r@   )r	   r   r   rB   r   r   )r   r   r   r   r   s        r7   test_concat_autoalignz'TestConcatDataset.test_concat_autoalignJ  s    uiAq!fGGGHIIuiAq!fGGGHIIc
C((yBF^a^4s+  
 
 	6*****r:   c           	        t                      }|                    t          d                    |                    t          dd                     g}t          j        t
          d          5  t          g d           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          ||gddd	
           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          g d           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          ||gddg           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          |d                   }t          |d                   }d|j        d<   t          ||gdd           d d d            n# 1 swxY w Y   t          |t          ||gdd                     t          j        t
          d          5  t          |dd           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          ||gdd           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          t          ddi          t          ddgi          gd           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          t          ddi          t          i ddi          gd           d d d            d S # 1 swxY w Y   d S )Nrt   r  zmust supply at least oner{   r  z"Cannot specify both .*='different'
concat_dimr   overriderx   zare not coordinatesr   	not_foundrs   zglobal attributes notr   r"   r  r  	identical)rz   equalszcompat.* invalidfoobarzunexpected value forz*coordinate in some datasets but not othersr-   rm   r}   )r   r   r   r   r   r   r   r   r   r   r	   )r   r   r  r  r  s        r7   test_concat_errorsz$TestConcatDataset.test_concat_errorsY  s   !!iiU1XXi..		uQ~~	0N0NO
]:-HIII 	 	2v	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:-RSSS 	 	t,+j   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ]:-HIII 	 	2v	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:-CDDD 	B 	BD$<K=AAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B ]:-EFFF 	? 	?Z]++EZ]++E!&EKE5>6+>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	vuenfXNNNOOO]:-@AAA 	8 	8:vh7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 ]:-DEEE 	= 	=D$<8<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= ]K
 
 
 	F 	F GS!H%%waSz':':;EEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F
 ]K
 
 
 	H 	H GS!H%%wrC8'<'<=3GGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   1BBB4CCC<DD D?E!!E%(E%A	GG #G $II
I)J

JJ03K//K36K33MMMc                   t          dddggfidgdgd          }t          dddggfidgdgd          }i }t          dddt          j        gt          j        dggfiddgddgd          |d<   t          ddg g gfiddgg d          |d<   t          ddt          j        dt          j        gd	
          j        fiddgdgd          |d<   t          ddt          j        t          j        dgd	
          j        fiddgdgd          |d<   t          ddt          j        ddgd	
          j        fiddgdgd          |d<   t          j        t          d          5  t          ||gdd          }d d d            n# 1 swxY w Y   |D ],}t          ||g|d          }t          |||                    -t          |
                    d          |
                    d          gdd          }t          ddt          j        ddgd	
          fidddgi          }t          ||           d S )NrO   r-   r.   r   rs   r"   -C6?outerinnerr   ndminleftrightrE  $cannot align.*exact.*dimensions.*'y'r{   exactr-   joinry   r.   )r	   rB   r   r&  Tr   r   r   r   r   r   r   )r   r   r   r   r   rW  r   s          r7   test_concat_join_kwargz(TestConcatDataset.test_concat_join_kwarg  s"   sZ1#/0s!9M9MNNNsZ1#/0s&9R9RSSS+-#:BFbfa[9:;a&6{++
 
 $:Bx()!Qb+A+A
 
 #:rxBF1===?@AQqc**
 
 
 $:rx1===?@AQvh//
 
 
  ':rxAa888:;<Qqc** 
  
  

 ]:-TUUU 	? 	?S#JW#>>>F	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?  	1 	1DS#JTs;;;F$0000 ]]3s!3!34:3
 
 
 :rxAa8889:C!VCU
 
 
	 	+++++s   +FFFzGcombine_attrs, var1_attrs, var2_attrs, expected_attrs, expect_exceptionno_conflictsr"   r   r   rt   )rO   rQ   rO   rP   rQ   Fr#   TdroprG  rE  r/  drop_conflicts)   *   +   ,   )rP   rQ   rR   )rO   rQ   rR   c                0    t          |           rddddni S Nrq   r   r"   r[  anyr   contexts     r7   <lambda>zTestConcatDataset.<lambda>  !    CJJ'VRaa'@'@'@TV r:   rq   r   c                   t          dddgfiddgi|          }t          dddgfiddgi|          }|rNt          j        t          d| d          5  t	          ||gd|	           d d d            d S # 1 swxY w Y   d S t	          ||gd|	          }t          ddddgfidddgi|
          }	t          ||	           d S )NrO   r-   r   r@   r   r"   combine_attrs=''r{   ry   combine_attrsr   r	   r   r   r   r   r   )
r   ro  
var1_attrs
var2_attrsexpected_attrsexpect_exceptionr   r   r   r   s
             r7   test_concat_combine_attrs_kwargz1TestConcatDataset.test_concat_combine_attrs_kwarg  sk   ` sS1#J'qc
*MMMsS1#J'qc
*MMM 		/z1S=1S1S1STTT I ISzs-HHHHI I I I I I I I I I I I I I I I I I S#JC}MMMFsQFm$sQFm>  H VX.....s   A88A<?A<z?combine_attrs, attrs1, attrs2, expected_attrs, expect_exceptionc                0    t          |           rddddni S rc  rd  rf  s     r7   rh  zTestConcatDataset.<lambda>  ri  r:   c                   t          dddg|fidddg|fi          }t          dddg|fidddg|fi          }|rNt          j        t          d| d          5  t	          ||gd|	           d
d
d
           d
S # 1 swxY w Y   d
S t	          ||gd|	          }t          ddddg|fiddddg|fi          }	t          ||	           d
S )z=check that combine_attrs is used on data variables and coordsrO   r-   r   rs   r"   rl  rm  r{   rn  Nrp  )
r   ro  attrs1attrs2rs  rt  r   r   r   r   s
             r7   )test_concat_combine_attrs_kwarg_variablesz;TestConcatDataset.test_concat_combine_attrs_kwarg_variables  s   b sS1#v./sQC>P8QRRRsS1#v./sQC>P8QRRR 
	/z1S=1S1S1STTT I ISzs-HHHHI I I I I I I I I I I I I I I I I I S#JC}MMMFsQFN34sQFN34 H
 VX.....s   A>>BBc           	     P   t          i ddi          t          ddgi          g}t          |d          }t          dddgi          }t          ||           t          ddgi          t          i ddi          g}t          |d          }t          ||           t          dgdd          t          dgdd          g}t          |d          }t          ddgdddgfd          }t          ||           t          ddgid	d
i          t          ddgid	ddgfi          g}t          |d          }t          dddgid	dd
dgfi          }t          ||           t          ddgid	d
i          t          dddgid	di          g}t          |d          }t          dg did	dg dfi          }t          ||           t          ddd
gfidgdgd          t          dd	dgfidgdgd          g}t          |d          }t          ddd
gdggfiddgdgd          }t          ||           t          i dt          j        d
dd          i          t          dt          j        ddd          gi          g}t          |d          }t          dt          j        d
dd          t          j        ddd          gi          }t          ||           t          j        ddgd          }t          j        dd          }t          j        g dd          }t          i d|i          t          i d|i          g}t          |d          }t          i d|i          }t          ||           t          |j        d         t          j	                  sJ d S )Nr-   r   r"   r   rt   rL  r#   r/  r.   rq   rr   r   r"   r   )rq   rr   rr   rm   rS  )closed
2022-01-01
2022-02-01zdatetime64[ns]r   
2022-03-01)r~  r  r  r   )
r	   r   r   rZ   IntervalrB   r&  
isinstanceindexesDatetimeIndex)r   r2  r   r   
time_data1
time_data2time_expecteds          r7   test_concat_promote_shapez+TestConcatDataset.test_concat_promote_shape+  s<   S!H%%waSz':':;c""C!Q=))***qc
##WR#q%:%:;c""*** qc**++WA3Q5G5G-H-HIc""!QsQFm<<==*** qc
S"I..qc
S3QSPT+DV0W0WXc""C!Q=3r2h*@AA*** qc
S"I..q!fRy0Q0QRc""C+cC3F-GHH*** S3+&qc(<(<==S3*%aSs';';<<
 c""C*taSk!:;Aq6QRPS=T=TUU*** Bbk"a@@@ABBS2;q!G<<<=>??
 c""KAg666K1W555
 
 	*** X|\:BRSSS
Xl2BCCC
666>N
 
 
 VZ01172
?S3T3TUf%%2677***&.0"2BCCCCCCCr:   c                   t          dddgfiddgd          t          dddgfiddgd          g}t          ddddgfidddgd          }t          |d          }t          ||           t          dddgfiddgd          t          dddgfiddgd          g}t          j        t
                    5  t          |dd           d d d            d S # 1 swxY w Y   d S )	Nr.   tr"   r   )r-   r  r   rv   rs   )r	   r   r   r   r   r   )r   r2  r   r   s       r7   test_concat_do_not_promotez,TestConcatDataset.test_concat_do_not_promotem  sp    S3*%QaS'9'9::S3*%QaS'9'9::
 C#1v/q1v1F1FGGc""6*** S3*%QaS'9'9::S3*%QaS'9'9::
 ]:&& 	0 	04Y////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   9CC Cc                    t          ddi          t          ddi          g}t          dddgddi	          }t          dddgf|d
          }t          ||          }t          ||           d S )Nr-   r   r"   r.   rt   r#   r  r  r   rL  )r	   r
   r   r   r   r2  r   r   r   s        r7   test_concat_dim_is_variablez-TestConcatDataset.test_concat_dim_is_variable~  s    a!!7C8#4#45q!fUEN;;;#1vU;;<<e$$*****r:   c                    t          ddi          t          ddi          g}t          ddgdddi	          }t          dddgf|d
          }t          ||          }t          ||           d S )Nr-   r   r"   rt   r#   r.   r  r  r   r   rL  )r	   r   r   r   r  s        r7   test_concat_dim_is_dataarrayz.TestConcatDataset.test_concat_dim_is_dataarray  s    a!!7C8#4#451a&s5%.AAA#1vU;;<<e$$*****r:   c           	        t           j                            g dddgg          }t          d|i          }t	          |                    t          d                    |                    t          dd                     gd          }|                    |          sJ t          |j	        
                                t           j                  sJ d S )Nr@  rO   rP   r-   rs   r   r0  )rZ   
MultiIndexfrom_productr	   r   r   r   rH  r  r-   to_index)r   r-   r   r   s       r7   test_concat_multiindexz(TestConcatDataset.test_concat_multiindex  s    M&&			C:'>??3(+++]]U1XX]&&a(G(GH#
 
 v&&&&&&(++--r}=======r:   c                   ddg}t           j                            g dddgg|          }t          d|i          }t	          |gd	          }t          |j                            d                    }dg|z   }||k    sJ d S )
N	x_level_0	x_level_1r@  rO   rP   )namesr-   rs   new)rZ   r  r  r	   r   r   xindexesget_all_coords)r   level_namesr-   r   concatenatedr   r   s          r7   $test_concat_along_new_dim_multiindexz6TestConcatDataset.test_concat_along_new_dim_multiindex  s    "K0M&&			C:'>k&RRS!H%%%rdE**l+::3??@@5;&!!!!!!r:   r          @c                   t          dddgfdddgfddgd          t          dddgfdddgfddgd          g}|t          j        k    rt          j        x}}n*t          |t                    r|d	         }|d
         }n|x}}t          d|ddgdd|ggfd|ddgdd|ggfddg di          }t          |d|          }t          ||           d S )Nr-   r   rt   rr   r"   )rO   rP   r-   rq   r   rO   rP   )r  r-   r   r|  r  r   )	r	   r   r   rB   r   r  dictr   r   )r   r   r   fill_value_afill_value_br   r   s          r7   test_concat_fill_valuez(TestConcatDataset.test_concat_fill_value  s5    3A-sRGnAq6JJKK3A-sQGnAq6JJKK
 "" +-&0L<<
D)) 	5%c?L%c?LL*44L< L!Q#7!Q9M"NO L"a#81b,:O"PQ  )))
 
 cjAAA*****r:   r   x1x2c                   t          j        d                              ddg          }t          ddg|fddgt          j        ddg|	          d
          }t          ddg|ft          j        ddg          t          j        ddg|	          d
          }t          ||g|          }t          j        |j        j        |          sJ d S )Nr#   r   r  r  r   r"   rO   rP   r   )r   r  r  rQ   rR   r}   )	rB   rg   rh   r	   r&  r   
issubdtyper  r   r   r   ry   r   da1da2r   s          r7   test_concat_str_dtypez'TestConcatDataset.test_concat_str_dtype  s     y||##QF++t,!fhSz777 
 
 t,h1v&&hSz777 
 
 c
,,,}VY_e4444444r:   N)r   r	   r   rk   )%__name__
__module____qualname__r   fixturer   r  markparametrizer  r  r  r'  r)  r-  r3  r5  r9  r<  r>  rB  rJ  rY  ru  rz  r  r  r  r  r  r  r   r   r  rH   bytesr  r2   r:   r7   r   r     s       ^4 4 4 ^4
 
 
 
 [XY'?@@[UVV$455E E E 65 A@E+ + + +.E E E E [X'F'F'FGG[UVV$4559 9 9 65 HG9; ; ; ;: : : :' ' ' '+ + + +5 5 5? ? ?' ' ' '+ + + +)H )H )HV', ', ', ',R [Q a  a  aa(( 11--r3C3CUKRqq!1!13C3CUKa  a  aa(( 11%%QQ'7'7UC**!!,<,<AA>N>NPUV**!!,<,<AA>N>NPTUa  aa((a   !r++br**r++ WVr++br**qq))E)	
, ,Z/ /[, ,Z/" [I a  a  aa(( 11--r3C3CUKRqq!1!13C3CUKa  a  aa(( 11%%QQ'7'7UC**!!,<,<AA>N>NPUV**!!,<,<AA>N>NPTUa  aa((a   !r++br**r++ WVr++br**qq))E)	
, ,Z/ /[, ,Z/&@D @D @D @DD0 0 0 0"+ + + ++ + + +> > > >" " " " [\FIq#QQ?O?O+PQQ+ + + RQ+0 [WsEl33[UT4L115 5 5 21 435 5 5r:   r   c                  <   e Zd ZddZddZedd            Zej        	                    de
j        ddg          dd	            Zdd
ZddZej        	                    deeg          ej        	                    dddg          dd                        ZddZdS )TestConcatDataArrayr   rk   c                T   t          ddgt          j                            d          fddgt          j                            d          fddddgi          }|d         }|d         }t          t          j        |j        |j        g          g d	dddgi
          }t          ||gd          }t          ||           d |                    d          D             }t          ||d                   }t          ||           t          |t          j        |d         d                    }t          ||           t          |d         |d         gt          j        ddg                                        d          }|d d                             ddi          }t          ||           t          |d         |d         gddg                              d          }	|d d                             ddi          }t          ||	           t          j        t           d          5  t          ||gdd           d d d            n# 1 swxY w Y   t          j        t           d          5  t          ||gdd           d d d            d S # 1 swxY w Y   d S )Nr-   r.   r   rt   r  r  r   r"   r  r  )wr-   r.   rA  r  c                    g | ]\  }}|S r2   r2   r  s      r7   r]   z3TestConcatDataArray.test_concat.<locals>.<listcomp>  s    222A1222r:   )r   T)r\  r   rD  znot identicalr{   rG  )ry   rz   znot a valid argumentrv   r   )r	   rB   rC   r   r&  r  r   r   r
  r   rZ   Indexreset_coordsr,  r   r   r   )
r   r   r  r  r   r   groupedstackedactual2actual3s
             r7   r)  zTestConcatDataArray.test_concat  s,   c
BI$4$4V$<$<=c
BI$4$4V$<$<=  1a&M
 
 ii Hcj#*-.. !Q=
 
 

 c
C((Xv&&&22S!1!1222"S'**g&&&"(2c7"="="=>>g&&&#a&#a&)28QF+;+;<<IItITTrr7>>3"5667+++#a&#a&)Aq622??T?JJrr7>>3"5667+++]:-=>>> 	< 	<C:3{;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ]:-DEEE 	= 	=C:3)<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s$   4III;JJ!$J!c                x   t          ddgt          j                            d          fddgt          j                            d          fddddgi          }|d         }dd	i|_        d
di|_        t	          ||gd          j        |j        k    sJ t	          ||gd          j        |j        k    sJ d S )Nr-   r.   r  r  r   r"   r  	complevelr/  unlimited_dimsr}   )r	   rB   rC   encodingr   )r   r   r  s      r7   test_concat_encodingz(TestConcatDataArray.test_concat_encoding  s    c
BI$4$4V$<$<=c
BI$4$4V$<$<=  1a&M
 
 i#Q''-sCjc***3s|CCCCr2hC(((1R[@@@@@@r:   c                    dd l m fdt          d          D             }t          |d          }|j        dk    sJ |j        dk    sJ d S )Nr   c                    g | ]H}t                              t          t          j        d                     d          ddg          IS ))rt   rt   rt   r-   r.   r  )r   
from_arrayr   rB   zeros)r4   r  das     r7   r]   z8TestConcatDataArray.test_concat_lazy.<locals>.<listcomp>  se     
 
 
  /0@0@AA1EESRUJ  
 
 
r:   r   rm   r}   )r   rt   rt   )rm   r-   r.   )
dask.arrayr&  rF   r   shaper   )r   arrayscombinedr  s      @r7   test_concat_lazyz$TestConcatDataArray.test_concat_lazy	  s    
 
 
 
 1XX	
 
 
 &c***~****}//////r:   r   r   r  c                &   t          ddgdddgfg          }t          ddgdddgfg          }|t          j        k    rt          j        }t          dd|gd|dggddgdg di          }t          ||fd|	          }t          ||           d S )
Nr"   r   r-   rs   rt   r.   r@  rA  r   )r   r   r   rB   r   r   r   )r   r   r  r  r   r   s         r7   r  z*TestConcatDataArray.test_concat_fill_value  s    Aq!f777Aq!f777"" JJ!Z!34s#
 
 

 c

CCC*****r:   c                   t          dddggfidgdgd                                          }t          dddggfidgdgd                                          }i }t          dddt          j        gt          j        dggfiddgddgd          |d<   t          ddg g gfiddgg d          |d<   t          ddt          j        dt          j        gd	
          j        fiddgdgd          |d<   t          ddt          j        t          j        dgd	
          j        fiddgdgd          |d<   t          ddt          j        ddgd	
          j        fiddgdgd          |d<   t          j        t          d          5  t          ||gdd          }d d d            n# 1 swxY w Y   |D ]>}t          ||g|d          }t          |||                                                    ?d S )NrO   rL  r   rs   r"   rM  rN  rO  r   rP  rR  rS  rE  rT  r{   rU  r-   rV  )r	   to_arrayrB   r   r&  rX  r   r   r   r   r   )r   r   r   r   r   rW  s         r7   rY  z*TestConcatDataArray.test_concat_join_kwarg(  s   :u%&aSs/C/C
 
 

(** 	 :u%&aSx/H/H
 
 

(** 	 ,.#:BFbfa[9:;a&6{++
 
 $:Bx()!Qb+A+A
 
 #:rxBF1===?@AQqc**
 
 
 $:rx1===?@AQvh//
 
 
  ':rxAa888:;<Qqc** 
  
  

 ]:-TUUU 	? 	?S#JW#>>>F	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?  	< 	<DS#JTs;;;F$!8!8!:!:;;;;	< 	<s   F00F47F4c                   t          dgddgfgddi          }t          dgddgfgddd          }i }t          ddgdddgfg	          |d
<   t          ddgdddgfgddd          |d<   t          ddgdddgfgddi          |d<   t          j        t          d          5  t	          ||gdd          }d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d          }d|j        d<   t	          ||gdd          }d d d            n# 1 swxY w Y   |D ],}t	          ||gd|          }t          |||                    -d S )Nr   r-   rP   r_  rk  r"   r`  )rP   rQ   rs   r\  rZ  rE  zcombine_attrs='identical'r{   rG  rn  zcombine_attrs='no_conflicts'Tr   ra  )r   r   r   r   r   r   r   r   )r   r  r  r   r   da3ro  s          r7   ru  z3TestConcatDataArray.test_concat_combine_attrs_kwargL  sq   cA3ZLb	BBBcA3ZLbr8J8JKKK35$aVcAq6]ODDD#,FS1a&M?2D2D$
 $
 $
   )FS1a&M?3) 
  
  
 ]:-IJJJ 	L 	LS#JC{KKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L]:-LMMM 	O 	O(((%%CCIcNS#JC~NNNF	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O
 & 	> 	>MS#JC}MMMFVXm%<====	> 	>s$   )C

CC05D11D58D5r   ry   r  r  c           	        t          j        d                              ddg          }t          |ddgddgt          j        ddg|	          d
          }t          |ddgt          j        ddg          t          j        ddg|	          d
          }t          ||g|          }t          j        |j        j        |          sJ d S )Nr#   r   r  r  r   r"   rO   rP   r   )r  r  )r   r   r@   rQ   rR   r}   )	rB   rg   rh   r   r&  r   r  r  r   r  s          r7   r  z)TestConcatDataArray.test_concat_str_dtyped  s     y||##QF++a&#s5(I(I(IJJ
 
 

 (Aq6**"(C:U2S2S2STT
 
 

 c
,,,}VY_e4444444r:   c                "   t          dgd          }t          ||gt          ddgd                    }t          |j                  dgk    sJ t          ||gt          ddg                    }t          |j                  dgk    sJ d S )Nr   rO   r  r"   rP   r}   dim_0)r   r   r   r@   )r   r  	da_concatda_concat_stds       r7   test_concat_coord_namez*TestConcatDataArray.test_concat_coord_namew  s    s%%%B8Aq6)D)D)DEEE	I$%%#....BxY1v->->???M())gY666666r:   Nr  )r  r  r  r)  r  r   r  r   r  r  r   r   r  rY  ru  rH   r  r  r  r2   r:   r7   r  r    s3       '= '= '= '=RA A A A 0 0 0 ]0 [\FIq#+>??+ + + @?+"< "< "< "<H> > > >0 [WsEl33[UT4L115 5 5 21 435"7 7 7 7 7 7r:   r  attr1rO   meta)rW         r@  attr2c                    t          dgdggddg|           t          dgdggddg|          g}t          |d          j        }|| k    sJ d S )Nr"   r   r-   r.   r  rt   r#   )r   r   r   )r  r  arrsconcat_attrss       r7    test_concat_attrs_first_variabler    sr     	A3*C:U;;;A3*C:U;;;D
 $$$*L5      r:   c                    t          g ddg ddd          } t          g dddg di          }t          t          dd          dt          dd          dd          }dD ]&}t          | |gd|	          }t          ||           't	          j        t          d
          5  t          | |gdd           d d d            n# 1 swxY w Y   t          g ddg ddd          } t          g dddg di          }t          g ddg ddd          }dD ]J}t	          j        t          d          5  t          | ||gd|           d d d            n# 1 swxY w Y   Kd S )Nr@  r-   r"   rL  rA  )r#   r/  r   r   )r   rv   rs   z 'y' not present in all datasets.r{   r   r   )r   r^   	   )r   r   z'y' not present in all datasets)r   rF   r   r   r   r   r   )r  r  r   r@   r   r  s         r7   &test_concat_merge_single_non_dim_coordr    s<   
IIICiiia0H0H
I
I
IC
IIICiii0@
A
A
ACq!3U1a[[q7Q7QRRRH* + +c
C777****	z)L	M	M	M 2 2Szs511112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 IIICiiia0H0H
I
I
IC
IIICiii0@
A
A
AC
IIICiiia0H0H
I
I
IC& < <]:-OPPP 	< 	<Cc?F;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<< <s$   'CCC<EE"	%E"	c                    t          j        dd          } t          j        dd          }t          j        dd          }t          j        dt                    }t	          dg d|dd	         fi|dd	         || d
          }t	          dg d|d	d         fi|d	d         || d
          }t	          dg d|fi||| d
          }t          ||gd          }t          |j        |j                  D ]+\  }}	||	k    sJ |j        |         |j        |	         k    sJ ,t          |j        |j                  D ]3\  }}	||	k    sJ t          |j        |         |j        |	                    4d S )Nr   r/  rW   r#   )r#   rW   r/  r   r   )r   r.   r-   r   rs   r   r}   )
rB   rg   r  r   r	   r   r   r   r@   r   )
r-   r.   r   r   r   r   r   r   actr   s
             r7   %test_concat_preserve_coordinate_orderr    s   
	!QA
	!RA9Q??D8Jd+++D
	$$$d1Q3i01QqS	22  C 	$$$d1Q3i01QqS	22  C
 	$$$d+,11--  H
 S#JF+++F X]33 6 6Sczzzz{38=#555555 x77 C CSczzzzs+X_S-ABBBBC Cr:   c                    t          ddiddi          } t          ddiddi                              d          }t          j        t          d	          5  t          | |gd           d d d            n# 1 swxY w Y   t          j        t          d	          5  t          || gd           d d d            d S # 1 swxY w Y   d S )
Nr  r"   r  r   rt   r#   r}   zSThe elements in the input list need to be either all 'Dataset's or all 'DataArray'sr{   )r	   r  r   r   	TypeErrorr   )r   r  s     r7   test_concat_typing_checkr    sj   	%eQZ	(	(B	%eQZ	(	(	1	1e	1	<	<B 
c
 
 
 $ $ 	BxU####	$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 
c
 
 
 $ $ 	BxU####	$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s$   A88A<?A<B??CCc                     t          ddddgfi          } t          ddddgfi          }t          j        t          d	          5  t	          | |gd
           d d d            d S # 1 swxY w Y   d S )Nr-   r"   r   rs   r.   rt   r#   z;'x' must have either an index or no index in all datasets.*r{   r}   )r	   r   r   r   r   r   r   s     r7   test_concat_not_all_indexesr    s    
#aV}-
.
.
.C
#aV}-
.
.
.C	X
 
 
 $ $ 	Szs####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   A))A-0A-c                     t          ddddgfi          } t          ddddgfi          }t          ddgd          |j        d<   t          j        t
          d	          5  t          | |gd
           d d d            d S # 1 swxY w Y   d S )Nr-   r"   r   rs   r.   rt   r#   z@Cannot concatenate along dimension 'x' indexes with dimensions.*r{   r}   )r	   r   _indexesr   r   r   r   r  s     r7   test_concat_index_not_same_dimr    s    
#aV}-
.
.
.C
#aV}-
.
.
.C#QFC00CL	Q
 
 
 $ $ 	Szs####	$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   "BB
B)r   NT)r   r   r   r   r   r   r   r   )r   N)r   r   r   r   r   r   r  )r   r   r   rk   )r   r   )ry   r   r   r   r   rk   )=
__future__r   r   r   typingr   r   r   numpyrB   pandasrZ   r   xarrayr   r	   r
   r   xarray.corer   r   xarray.core.indexesr   xarray.testsr   r   r   r   r   xarray.tests.test_datasetr   xarray.core.typesr   r   rM   rj   r   r   r   r   r   r   r  r  r   r   filterwarningsr   r   r  r   r   r   r   r  r  r  r  r  r  r  r2   r:   r7   <module>r     sh   " " " " " "       / / / / / / / / / /          7 7 7 7 7 7 7 7 7 7 7 7 % % % % % % % % + + + + + +              7 6 6 6 6 6 CBBBBBBBB
 IM& & & & &V /3% % % % %P$ $ $ $:' ' ' ' ' ' ' ',' ' ' '' ' ' '<' ' ' '. u66 '  '  ' 76 'F' ' ' '4 >??* * * @?*>$( $( $( $(N 
 
 
 
    < u..4-00' ' ' 10 /.'BJ5 J5 J5 J5 J5 J5 J5 J5Zm7 m7 m7 m7 m7 m7 m7 m7` C&,,,)?#@3			BRTV"WXXC#3R"899! ! ! :9 YX!< < <,C C C CB$ $ $ $"$ $ $ $
$ 
$ 
$ 
$ 
$ 
$r:   