U
    CvfJ                     @  st  d dl mZ d dlmZ d dl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rd d
lmZm Z  ddddZ!G dd dZ"G dd dZ#ej$%ddddddgiiddddgii fej$%dddddgii fddddZ&dd  Z'ddd!d"Z(ddd#d$Z)ddd%d&Z*ddd'd(Z+dS ))    )annotations)deepcopy)TYPE_CHECKINGAnyN)	DataArrayDatasetVariableconcat)dtypesmerge)PandasIndex)InaccessibleArrayassert_array_equalassert_equalassert_identicalrequires_dask)create_test_data)CombineAttrsOptionsJoinOptionsNonereturnc               	   C  s.  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
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d}t| |gdddd}t|j|j  dD ]$}d|| jkrd|| jkstqtj	t
dd t| |gdd W 5 Q R X tj	t
dd t|| gdd W 5 Q R X d S )N)yx      r   z)Zhas_x_yhas_xno_x_yr   )r   r   r   coords      )qr   )r   r   r   r%   r   minimalZbroadcast_equalsdim	data_varscompat)r   r   z+coordinates in some datasets but not othersmatchr%   r(   z"'q' is not present in all datasets)r   r	   r   r   	transposedimsr"   AssertionErrorpytestraises
ValueError)ds1ds2resultvar r8   </tmp/pip-unpacked-wheel-h316xyqg/xarray/tests/test_concat.pytest_concat_compat   s2    


	" r:   c                   @  sb  e Zd ZejddddZddddZejddd	gejd
ddgddddZ	ddddZ
ddddZejddd	dgejd
ddgddddZddddZddddZddddZdd Zdd  Zd!d" Zddd#d$Zddd%d&Zd'd( Zddd)d*Zejd+d,d-d.d/d-d0d1d-d.d0d2d3fd,d-d.d/i d-d.d/d3fd,i d-d0d1d-d0d1d3fd,d-d.d/d4d0d1d-d.d0d2d5fd6d-d.d/d-d0d1i d3fd7d-d.d/d-d.d/d-d.d/d3fd7d-d.d/d-d0d1d-d.d/d5fd8d-d.d/d4d9d0d2d-d.d/d3fd:d;d<d=d2d.d=d>d?d;d=d>d@d3fdAdB d;d<d=d2d.d=d>d?dCdDd-d2d3fg
dEdF ZejdGd,d-d.d/d-d0d1d-d.d0d2d3fd,d-d.d/i d-d.d/d3fd,i d-d0d1d-d0d1d3fd,d-d.d/d4d0d1d-d.d0d2d5fd6d-d.d/d-d0d1i d3fd7d-d.d/d-d.d/d-d.d/d3fd7d-d.d/d-d0d1d-d.d/d5fd8d-d.d/d4d9d0d2d-d.d/d3fd:d;d<d=d2d.d=d>d?d;d=d>d@d3fdHdB d;d<d=d2d.d=d>d?dCdDd-d2d3fg
dIdJ ZdddKdLZdddMdNZdddOdPZdddQdRZdddSdTZdddUdVZejdWej d.dXd.d-d/gdddYdZZ!ejd[e"e#gejd
d\d]gddd^d_Z$d`S )aTestConcatDatasetr   r   c                 C  s   t  dS )NZdim3)r   Z	drop_dims)selfr8   r8   r9   data:   s    zTestConcatDataset.datac                   s&   t  fdd|j D |j|jdS )Nc                   s"   i | ]\}}||j  | j qS r8   )r.   r/   .0kvr=   r8   r9   
<dictcomp>B   s      z7TestConcatDataset.rectify_dim_order.<locals>.<dictcomp>attrs)r   r)   itemsr"   rE   )r<   r=   Zdatasetr8   rB   r9   rectify_dim_order>   s
    z#TestConcatDataset.rectify_dim_orderr"   	differentr&   r(   dim1dim2r   c                 C  s0   dd |j |ddD }t|t|||d d S )Nc                 S  s   g | ]\}}|qS r8   r8   r?   _gr8   r8   r9   
<listcomp>J   s     z8TestConcatDataset.test_concat_simple.<locals>.<listcomp>FZsqueezer!   )groupbyr   r	   )r<   r=   r(   r"   datasetsr8   r8   r9   test_concat_simpleG   s    z$TestConcatDataset.test_concat_simplec           	      C  s   t dddgfiddid}t dddgfiddid}t||gddd	}t ddddgfiddd
d}t|| |jtdd|jtdd dg}t|\}}dtjdf|d< t||gd}|	 j
|jd}t|| d S )Nar   g?r   )r)   r"   g?r   r&   r(   r"   )r   r   r!   r#   rI   bar
   foorI   )rX   )r   r	   r   iselslicer   nprandomrandncopyZassignrX   )	r<   r=   r4   r5   actualexpected
split_datadata0data1r8   r8   r9   4test_concat_merge_variables_present_in_some_datasetsM   s    
"zFTestConcatDataset.test_concat_merge_variables_present_in_some_datasetsc                   s\   d dd |j  ddD } fdd|j D }t||  |d}t|| || d S )NrJ   c                 S  s   g | ]\}}|qS r8   r8   rK   r8   r8   r9   rN   _   s     z3TestConcatDataset.test_concat_2.<locals>.<listcomp>TrO   c                   s&   g | ]\}} |j kr| kr|qS r8   r/   r>   r-   r8   r9   rN   `   s     
  r!   )rP   r"   rF   r	   r   rG   )r<   r=   rQ   Zconcat_overr_   r8   r-   r9   test_concat_2]   s
    zTestConcatDataset.test_concat_2allc                   s    j dd dtdf jd< dd  j|ddD }t| | |d	}|d
krt fddt j| D }t	|d j
| nt d |d  d S )NTdeepZdim4r#   extrac                 S  s   g | ]\}}|qS r8   r8   rK   r8   r8   r9   rN   j   s     z>TestConcatDataset.test_concat_coords_kwarg.<locals>.<listcomp>rO   r!   rg   c                   s   g | ]} d  j qS )rj   )valuesr?   rL   rB   r8   r9   rN   n   s     )r^   r[   aranger"   rP   r	   arrayranger/   r   rk   r   )r<   r=   r(   r"   rQ   r_   r`   r8   rB   r9   test_concat_coords_kwargd   s    "z*TestConcatDataset.test_concat_coords_kwargc                 C  s@   |j tdd|j dd|j tdd dg}t|t|d d S )Nr#   rU   r$   rI   )rY   rZ   r   r	   )r<   r=   ra   r8   r8   r9   test_concatt   s
    
zTestConcatDataset.test_concatc                 C  sN   d|d   d}dd |jdddD }| }||d< t|t|| d S )Nr   rI   c                 S  s   g | ]\}}|qS r8   r8   rK   r8   r8   r9   rN      s     z@TestConcatDataset.test_concat_dim_precedence.<locals>.<listcomp>FrO   )renamerP   r^   r   r	   )r<   r=   r(   rQ   r`   r8   r8   r9   test_concat_dim_precedence|   s
    z,TestConcatDataset.test_concat_dim_precedencec                 C  sV   t ddtjdfi}|jtdd|jtdd dg}t|ddd}t|| d S )NrX   r   rW      r   r&   r(   r)   r   r[   r\   r]   rY   rZ   r	   r   )r<   r=   objsr_   r8   r8   r9   test_concat_data_vars_typing   s    "z.TestConcatDataset.test_concat_data_vars_typingc                 C  sl   t ddtjdfi}|jtdd|jtdd dg}dddg dgfD ]}t|d|d	}t|| qJd S )
NrX   r   rW   rt   ru   r&   rH   rg   rv   rw   )r<   r=   rx   r)   r_   r8   r8   r9   test_concat_data_vars   s
    "z'TestConcatDataset.test_concat_data_varsc              
   C  s   t ddtjdfi}|jddgd dgd  fd}|jtddjdd|jtdd djddg}d	d
dgfD ]}t|d|d}t|| qvdg fD ].}t	j
tjdd t|d|d W 5 Q R X qd S )NrX   r   rW   r   rt   r   )cru   rH   rg   r{   rT   r&   conflicting valuesr+   )r   r[   r\   r]   Zassign_coordsrY   rZ   r	   r   r1   r2   r   
MergeError)r<   r=   r`   rx   r"   r_   r8   r8   r9   test_concat_coords   s     z$TestConcatDataset.test_concat_coordsc              	   C  s   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|d	}t|| qJtjtjd
d t||gddd	 W 5 Q R X d S )NrX   g      ?r   r   g      @)rX   r   rH   rg   )r)   r|   r+   new_dimr&   )r   r	   r   r1   r2   r   r}   )r<   r4   r5   r`   moder_   r8   r8   r9   test_concat_constant_index   s    z,TestConcatDataset.test_concat_constant_indexc                 C  sR   t  }|jtddd|g}t|d}t|| t|d d d d}t|| d S )Nr   rU   rI   r   )r   rY   rZ   r	   r   )r<   r=   ra   r_   r8   r8   r9   test_concat_size0   s    

z#TestConcatDataset.test_concat_size0c              	   C  s   t dtddgdddgfgdi}t dtddgdddgfgdi}t||gd}t dtddtjgdtjdggddgddddgidi}t|| d S )	NrX   r   r   r   r!   r#   r   r/   r"   )r   r   r	   r[   nanr   )r<   r4   r5   r_   r`   r8   r8   r9   test_concat_autoalign   s    "" 	z'TestConcatDataset.test_concat_autoalignc              	   C  s  t  }|jtdd|jtdd dg}tjtdd tg d W 5 Q R X tjtdd t||gddd	d
 W 5 Q R X tjtdd tg d W 5 Q R X tjtdd t||gddgd W 5 Q R X tjtdd: t|d }t|d }d|jd< t||gddd W 5 Q R X t	|t||gddd tjtdd t|ddd W 5 Q R X tjtdd t||gddd W 5 Q R X tjtdd( tt
ddit
ddgigdd W 5 Q R X tjtdd( tt
ddit
i ddigdd W 5 Q R X d S )Nr#   rU   zmust supply at least oner+   rI   z"Cannot specify both .*='different'
concat_dimrH   overrider'   zare not coordinatesr   	not_foundr!   zglobal attributes notr   r   rV   rX   	identical)r*   equalszcompat.* invalidZfoobarzunexpected value forz*coordinate in some datasets but not othersr   r   r-   )r   rY   rZ   r1   r2   r3   r	   r   rE   r   r   )r<   r=   ra   rb   rc   r8   r8   r9   test_concat_errors   sF    "   
 , z$TestConcatDataset.test_concat_errorsc              	   C  s  t dddggfidgdgdd}t dddggfidgdgd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	d
jfiddgdgdd|d< t ddtjtjdgd	d
jfiddgdgdd|d< t ddtjddgd	d
jfiddgdgdd|d< tjtdd t||gddd}W 5 Q R X |D ]&}t||g|dd}t	|||  qpt|
d|
dgddd}t ddtjddgd	d
fidddgid}t|| d S )NrS   r   r   r   r!   r   -C6?outerinnerr   Zndminleftrightr   $cannot align.*exact.*dimensions.*'y'r+   exactr   joinr(   r   )r   r[   r   rn   Tr1   r2   r3   r	   r   Z	drop_varsr   )r<   r4   r5   r`   r_   r   Z	expected2r8   r8   r9   test_concat_join_kwarg   sL    "" 


   
z(TestConcatDataset.test_concat_join_kwargzGcombine_attrs, var1_attrs, var2_attrs, expected_attrs, expect_exceptionno_conflictsr   r   rS   br#   )rS   r{   rS   r   r{   Fr$   Tdropr   r   rt   Zdrop_conflicts)   *   +   ,   )r   r{   d)rS   r{   r   c                 C  s   t | rddddS i S Nr   r   r   r   anyrE   contextr8   r8   r9   <lambda>B      zTestConcatDataset.<lambda>r   r   c           
   	   C  s   t dddgfiddgi|d}t dddgfiddgi|d}|rvtjtd| dd t||gd|d	 W 5 Q R X n>t||gd|d	}t ddddgfidddgi|d
}	t||	 d S )NrS   r   r   r"   rE   r   combine_attrs=''r+   r(   combine_attrsrD   r   r1   r2   r3   r	   r   )
r<   r   Z
var1_attrsZ
var2_attrsexpected_attrsexpect_exceptionr4   r5   r_   r`   r8   r8   r9   test_concat_combine_attrs_kwarg  s    0 
 z1TestConcatDataset.test_concat_combine_attrs_kwargz?combine_attrs, attrs1, attrs2, expected_attrs, expect_exceptionc                 C  s   t | rddddS i S r   r   r   r8   r8   r9   r     r   c           
   	   C  s   t dddg|fidddg|fid}t dddg|fidddg|fid}|rtjtd| dd t||gd|d	 W 5 Q R X nBt||gd|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 coordsrS   r   r   r!   r   r   r   r+   r   Nr   )
r<   r   Zattrs1Zattrs2r   r   r4   r5   r_   r`   r8   r8   r9   )test_concat_combine_attrs_kwarg_variables[  s    1$$z;TestConcatDataset.test_concat_combine_attrs_kwarg_variablesc                 C  s  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dddgid	dd
ddg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dit dtjddddgig}t|d}t dtjd
dddtjddddgi}t|| tjddgdd}tjddd}tjdddgdd}t i d|it i d|ig}t|d}t i d|i}t|| t|jd tj	st
d S )Nr   r   r   r   r#   r   r$   rt   r   r   r    r   r   )closedz
2022-01-01z
2022-02-01zdatetime64[ns]dtypez
2022-03-01time)r   r	   r   pdZIntervalr[   rn   
isinstanceZindexesZDatetimeIndexr0   )r<   rx   r_   r`   Z
time_data1Z
time_data2Ztime_expectedr8   r8   r9   test_concat_promote_shape  s`    



 

.

*
"

&


 

z+TestConcatDataset.test_concat_promote_shapec              	   C  s   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t t|ddd W 5 Q R X d S )	Nr   tr   r   )r   r   r   r&   r!   )r   r	   r   r1   r2   r3   )r<   rx   r`   r_   r8   r8   r9   test_concat_do_not_promote  s     

z,TestConcatDataset.test_concat_do_not_promotec                 C  s\   t ddit ddig}tdddgddid	}t dddgf|d
}t||}t|| d S )Nr   r   r   r   r#   r$   rX   rV   rD   r   )r   r   r	   r   r<   rx   Zcoordr`   r_   r8   r8   r9   test_concat_dim_is_variable  s
    
z-TestConcatDataset.test_concat_dim_is_variablec                 C  s\   t ddit ddig}tddgdddid	}t dddgf|d
}t||}t|| d S )Nr   r   r   r#   r$   r   rX   rV   r/   rE   r   )r   r   r	   r   r   r8   r8   r9   test_concat_dim_is_dataarray  s
    
z.TestConcatDataset.test_concat_dim_is_dataarrayc                 C  sx   t jdddgddgg}td|id}t|jtdd|jtdd dgd}||s^tt	|j
 t jsttd S )	Nr   r   r#   rS   r   r   r!   ru   )r   
MultiIndexfrom_productr   r	   rY   rZ   r   r0   r   r   Zto_index)r<   r   r`   r_   r8   r8   r9   test_concat_multiindex  s      z(TestConcatDataset.test_concat_multiindexc                 C  sj   ddg}t jjdddgddgg|d}td	|id
}t|gd}t|jd	}d	g| }||ksftd S )NZ	x_level_0Z	x_level_1r   r   r#   rS   r   )namesr   r!   new)	r   r   r   r   r	   listZxindexesZget_all_coordsr0   )r<   Zlevel_namesr   dsZconcatenatedr_   r`   r8   r8   r9   $test_concat_along_new_dim_multiindex  s    
z6TestConcatDataset.test_concat_along_new_dim_multiindex
fill_value       @c                 C  s   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 }}n$t|trz|d	 }|d
 }n| }}t d|ddgdd|ggfd|ddgdd|ggfdddddgi}t|d|d}t|| d S )Nr   r   r#   r    r   )rS   r   r   r   r   rS   r   )r   r   r   r   r(   r   )	r   r
   NAr[   r   r   dictr	   r   )r<   r   rQ   Zfill_value_aZfill_value_br`   r_   r8   r8   r9   test_concat_fill_value  s"    ""


z(TestConcatDataset.test_concat_fill_valuer   x1x2c                 C  s   t dddg}tddg|fddgt jddg|d	d
}tddg|ft ddgt jddg|d	d
}t||g|d}t |jj|st	d S )Nr$   r   r   r   r   r   rS   r   r   )r=   r   r   r{   r   r-   )
r[   rm   reshaper   rn   r	   
issubdtyper   r   r0   r<   r   r(   r=   da1da2r_   r8   r8   r9   test_concat_str_dtype(  s    

z'TestConcatDataset.test_concat_str_dtypeN)%__name__
__module____qualname__r1   Zfixturer=   rG   markparametrizerR   rd   rf   rp   rq   rs   ry   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   strbytesr   r8   r8   r8   r9   r;   9   s   			+)








-









-
B	
r;   c                   @  s   e Zd ZddddZddddZeddddZej	d	e
jd
dgddddZddddZddddZej	deegej	dddgddddZddddZdS )TestConcatDataArrayr   r   c           
   	   C  s  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gd	ddgdddgid
}t||gd	}t|| dd |dD }t||d }t	|| t|t
j|d dd}t	|| t|d |d gt
ddgjdd}|d d ddi}t	|| t|d |d gddgjdd}	|d d ddi}t	||	 tjtdd t||gd	dd W 5 Q R X tjtdd t||gd	dd W 5 Q R X d S )Nr   r   r   r#   rX   rV   r   r   rX   rV   wr   c                 S  s   g | ]\}}|qS r8   r8   rK   r8   r8   r9   rN   V  s     z3TestConcatDataArray.test_concat.<locals>.<listcomp>)nameT)r   r   r   znot identicalr+   r   )r(   r*   znot a valid argumentr&   rv   )r   r[   r\   r   rn   rk   r	   r   rP   r   r   ZIndexZreset_coordsrr   r1   r2   r3   )
r<   r   rX   rV   r`   r_   ZgroupedZstackedZactual2Zactual3r8   r8   r9   rq   B  s<    




(
"
zTestConcatDataArray.test_concatc                 C  s   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dj|jksptt||gddj|jkstd S )Nr   r   r   r   r   r   rX   Z	complevelrt   Zunlimited_dimsr-   )r   r[   r\   encodingr	   r0   )r<   r   rX   r8   r8   r9   test_concat_encodingk  s    


z(TestConcatDataArray.test_concat_encodingc                   sN   dd l m   fddtdD }t|dd}|jdks<t|jdksJtd S )	Nr   c              	     s.   g | ]&}t  ttd dddgdqS ))r#   r#   r#   r   r   re   )r   Z
from_arrayr   r[   zerosrl   dar8   r9   rN   ~  s
    z8TestConcatDataArray.test_concat_lazy.<locals>.<listcomp>r   r   r-   )r   r#   r#   )r   r   r   )Z
dask.arrayrn   ro   r	   shaper0   r/   )r<   ZarraysZcombinedr8   r   r9   test_concat_lazyz  s    
z$TestConcatDataArray.test_concat_lazyr   r   r   c                 C  s   t ddgdddgfgd}t ddgdddgfgd}|tjkrDtj}t dd|gd|dggddgddddgid}t||fd|d}t|| d S )	Nr   r   r   r!   r#   r   r   r   )r   r
   r   r[   r   r	   r   )r<   r   rX   rV   r`   r_   r8   r8   r9   r     s    
z*TestConcatDataArray.test_concat_fill_valuec              	   C  s  t dddggfidgdgdd }t dddggfidgdgd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	d
jfiddgdgdd|d< t ddtjtjdgd	d
jfiddgdgdd|d< t ddtjddgd	d
jfiddgdgdd|d< tjtdd t	||gddd}W 5 Q R X |D ]*}t	||g|dd}t
|||   qxd S )NrS   r   r   r!   r   r   r   r   r   r   r   r   r   r   r+   r   r   r   )r   to_arrayr[   r   rn   r   r1   r2   r3   r	   r   )r<   r4   r5   r`   r_   r   r8   r8   r9   r     sD     
 
 


z*TestConcatDataArray.test_concat_join_kwargc              	   C  sD  t dgddgfgddid}t dgddgfgdddd}i }t ddgdddgfgd	|d
< t ddgdddgfgdddd|d< t ddgdddgfgddid|d< tjtdd t||gddd}W 5 Q R X tjtdd. |jdd}d|jd< t||gddd}W 5 Q R X |D ]&}t||gd|d}t|||  qd S )Nr   r   r   r   r   r   r   )r   r{   r!   r   r   r   zcombine_attrs='identical'r+   r   r   zcombine_attrs='no_conflicts'Trh   r   )r   r1   r2   r3   r	   r^   rE   r   )r<   r   r   r`   r_   da3r   r8   r8   r9   r     s.      
  

z3TestConcatDataArray.test_concat_combine_attrs_kwargr   r(   r   r   c                 C  s   t dddg}t|ddgddgt jddg|d	d
d}t|ddgt ddgt jddg|d	d
d}t||g|d}t |jj|st	d S )Nr$   r   r   r   r   r   rS   r   r   )r   r   )r=   r/   r"   r{   r   r-   )
r[   rm   r   r   rn   r	   r   r   r   r0   r   r8   r8   r9   r     s     z)TestConcatDataArray.test_concat_str_dtypec                 C  sn   t dgdd}t||gt ddgddd}t|jdgks>tt||gt ddgd}t|jdgksjtd S )Nr   rS   re   r   r   r-   Zdim_0)r   r	   r   r"   r0   )r<   r   Z	da_concatZda_concat_stdr8   r8   r9   test_concat_coord_name  s
    z*TestConcatDataArray.test_concat_coord_nameN)r   r   r   rq   r   r   r   r1   r   r   r
   r   r   r   r   r   r   r   r   r8   r8   r8   r9   r   A  s   )$r   attr1rS   metarW         r   r   r#   attr2c                 C  sP   t dgdggddg| dt dgdggddg|dg}t|dj}|| ksLtd S )Nr   r   r   r   r   r#   r$   )r   r	   rE   r0   )r   r   ZarrsZconcat_attrsr8   r8   r9    test_concat_attrs_first_variable  s
    r   c               
   C  sJ  t dddgddddgddd} t ddd	gddddd	gid}t tdd
dtdd
ddd}dD ] }t| |gd|d}t|| qbtjtdd t| |gddd W 5 Q R X t dddgddddgddd} t ddd	gddddd	gid}t d
ddgdd
ddgddd}dD ]2}tjtdd t| ||gdd W 5 Q R X qd S )Nr   r   r#   r   r   r   r$   rt         )rH   r&   r!   z#'y' is not present in all datasets.r+   rg   rT      	   )rH   rg   z'y' not present in all datasetsr-   )r   ro   r	   r   r1   r2   r3   )r   r   r`   r"   r_   r   r8   r8   r9   &test_concat_merge_single_non_dim_coord   s        r   c            
      C  sF  t dd} t dd}t dd}t jdtd}tddd	d
g|dd fi|dd || dd}tddd	d
g|dd fi|dd || dd}tddd	d
g|fi||| dd}t||gdd}t|j|jD ],\}}	||	kst|j| |j|	 kstqt|j	|j	D ].\}}	||	ks(tt
|j	| |j	|	  qd S )Nr   rt   rW   r$   )r$   rW   rt   r   r=   r   r   r   r   )r   r   r   r!   r-   )r[   rm   r   boolr   r	   zipr/   r0   r"   r   )
r   r   r   r=   r4   r5   r`   r_   Zactexpr8   r8   r9   %test_concat_preserve_coordinate_order  s.    
r   c               	   C  s   t ddiddi} t ddiddijdd}tjtdd	 t| |gdd W 5 Q R X tjtdd	 t|| gdd W 5 Q R X d S )
NrX   r   rV   r   r#   r$   r-   zSThe elements in the input list need to be either all 'Dataset's or all 'DataArray'sr+   )r   r   r1   r2   	TypeErrorr	   )r   r   r8   r8   r9   test_concat_typing_check7  s    r   c               	   C  sZ   t ddddgfid} t ddddgfid}tjtdd	 t| |gdd
 W 5 Q R X d S )Nr   r   r   r!   r   r#   r$   z;'x' must have either an index or no index in all datasets.*r+   r-   )r   r1   r2   r3   r	   r4   r5   r8   r8   r9   test_concat_not_all_indexesH  s     r   c               	   C  sn   t ddddgfid} t ddddgfid}tddgd|jd< tjtdd	 t| |gdd
 W 5 Q R X d S )Nr   r   r   r!   r   r#   r$   z@Cannot concatenate along dimension 'x' indexes with dimensions.*r+   r-   )r   r   Z_indexesr1   r2   r3   r	   r   r8   r8   r9   test_concat_index_not_same_dimS  s    r   ),
__future__r   r^   r   typingr   r   Znumpyr[   Zpandasr   r1   Zxarrayr   r   r   r	   Zxarray.corer
   r   Zxarray.core.indexesr   Zxarray.testsr   r   r   r   r   Zxarray.tests.test_datasetr   Zxarray.core.typesr   r   r:   r;   r   r   r   r   r   r   r   r   r   r8   r8   r8   r9   <module>   s8        3*!