U
    ¾mœdz ã                   @   sP  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	 d dl
mZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dl m!Z!m"Z" dÈd
d„Z#dd„ Z$dd„ Z%ej&e$ƒ dd„ d�dd„ ƒZ'ej&e$ƒ dd„ d�dd„ ƒZ(ej&e%ƒ dd„ d�dd„ ƒZ)ej&dd„ ƒZ*G dd„ dƒZ+dd „ Z,G d!d"„ d"ƒZ-ej&d#d$„ ƒZ.ej&d%d&„ ƒZ/G d'd(„ d(ƒZ0ej&d)d*„ ƒZ1ej&d+d,„ ƒZ2G d-d.„ d.ƒZ3ej4j5d/d0d1„ ej6D ƒed2d3gd2d3gd4d5�ed d6d4d7�ed8d9gd4d:�g d;d„ d<�d=d>„ ƒZ7ej4 5d?d@dAgdddBdBd3fdCdd@dAgddBdDd3fddd@dAgdDdBd3fd@dAgdddBdBdfdEdd@dAgddBdDdfddd@dAgdDdBdfg¡dFdG„ ƒZ8dHdI„ Z9ej4 5dJd d dKdLidMdNgfd d dKdOid dNgfd d dKdPidQdRgfd d dKdSdTgidQdRgfdUd dKdVidUd gfdWdWdKdXidYdWgfdZdZdKdVidZd[gfdUdUdKdXid\dUgfdUdZdKdXidUdZgfdUdUdKd]idUd\gfd d dKd^id_d gfdUdUi d\d`gfd d i dQdRgfg¡dadb„ ƒZ:ej4 5dcd&edddedfgdgdhej;gdidjdkgdlœƒfd@edddedmdfgdgdhdnej;gdidjej;dkgdlœƒfg¡dodp„ ƒZ<ej4 5dqdrdsdtg¡dudv„ ƒZ=ej4 5dKd$d&hd d dwœg¡dxdy„ ƒZ>ej4 5dzd{dUdUe?dUƒd|fg¡d}d~„ ƒZ@ej4 5dd€d�g¡ej4 5d‚dDdBg¡dƒd„„ ƒƒZAd…d†„ ZBd‡dˆ„ ZCd‰dŠ„ ZDd‹dŒ„ ZEej4 5d�dŽd�g¡d�d‘„ ƒZFd’d“„ ZGej4 5d”d•d–g¡ej4 5d—dUdDd˜œd™dšgfdUdDd›œdœd�gfg¡dždŸ„ ƒƒZHej4 5d”d•d–g¡ej4 5d—d™dUidœd�gfdœdUid™dšgfg¡d d¡„ ƒƒZIej4 5d”d•d–g¡ej4 5d¢d�dDidšdDig¡d£d¤„ ƒƒZJd¥d¦„ ZKd§d¨„ ZLd©dª„ ZMd«d¬„ ZNd­d®„ ZOd¯d°„ ZPd±d²„ ZQd³d´„ ZRej4 5dµdd¶g¡d·d¸„ ƒZSd¹dº„ ZTd»d¼„ ZUd½d¾„ ZVej4 5dµd¿dÀg¡dÁdÂ„ ƒZWej4 5dÃdAd$d@d&g¡ej4 5dÄddÅg¡dÆdÇ„ ƒƒZXdS )Éé    )ÚdateÚdatetimeÚ	timedeltaN)Úis_categorical_dtypeÚis_object_dtype)ÚCategoricalDtype)ÚCategoricalÚCategoricalIndexÚ	DataFrameÚDatetimeIndexÚIndexÚIntervalIndexÚ
MultiIndexÚPeriodIndexÚ
RangeIndexÚSeriesÚTimedeltaIndex)Úconcat)Ú
MergeErrorÚmergeé   é2   c                 C   s`   t t| ƒƒ}t t |||  ¡¡}t|ƒ|k rPt t |ƒ|d |t|ƒ …  ¡}tj |¡ |S ©N)ÚlistÚrangeÚnpZasarrayÚtileÚlenÚrandomÚshuffle)ÚngroupsÚnZunique_groupsÚarr© r#   ú^/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/reshape/merge/test_merge.pyÚget_test_data(   s    "r%   c                   C   sT   t dgdd�t dgdd�t dgƒt dgƒt dgƒt t d¡gƒt tjdd	d
�gƒgS )Né   Úint64©ÚdtypeÚInt64g®Gáz®ó?ÚfooTú
2018-01-01ú
US/Eastern©Útz)r   ÚpdÚ	Timestampr#   r#   r#   r$   Ú
get_series3   s    ùr2   c                   C   s8   t tjgdd�t tjgdd�t tjgdd�t tjgƒgS )Nr*   r(   ÚfloatÚobject)r   r   Únanr0   ÚNaTr#   r#   r#   r$   Úget_series_na?   s
    
ür7   c                 C   s   | j jS r   ©r)   Úname©Úxr#   r#   r$   Ú<lambda>H   ó    r<   )ÚparamsÚidsc                 C   s   | j S )zV
    A parametrized fixture returning a variety of Series of different
    dtypes
    ©Úparam©Úrequestr#   r#   r$   Úseries_of_dtypeH   s    rD   c                 C   s   | j jS r   r8   r:   r#   r#   r$   r<   Q   r=   c                 C   s   | j S )zk
    A duplicate of the series_of_dtype fixture, so that it can be used
    twice by a single function
    r@   rB   r#   r#   r$   Úseries_of_dtype2Q   s    rE   c                 C   s   | j jS r   r8   r:   r#   r#   r$   r<   Z   r=   c                 C   s   | j S )zU
    A parametrized fixture returning a variety of Series with all NA
    values
    r@   rB   r#   r#   r$   Úseries_of_dtype_all_naZ   s    rF   c                  C   sR   t ddgddgddgdœƒ} t ddddd	gddddd	gdddddgd
œƒ}| |fS )Nr   r&   é   ÚaÚb)Úcol1Úcol_conflictÚcol_lefté   é   é   )rJ   rK   Ú	col_right©r
   )Údf1Údf2r#   r#   r$   Údfs_for_indicatorc   s    ýÿrT   c                   @   sš  e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zej d/d0d0d1œd0d2d3œd4d0d5œd4d2d6œg¡d7d8„ ƒZd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#ej dCdDdEdEdFdEdEgfd0dFdEdEdEdEgfg¡ej dGdHdIg¡dJdK„ ƒƒZ$dLdM„ Z%dNdO„ Z&dPdQ„ Z'dRdS„ Z(dTdU„ Z)ej dVdWdXdYdZd[d\d]g¡d^d_„ ƒZ*ej dVdWdXdYdZd[d\d]g¡d`da„ ƒZ+dbdc„ Z,ddde„ Z-dfdg„ Z.dhdi„ Z/djdk„ Z0dldm„ Z1dndo„ Z2dpdq„ Z3drds„ Z4dtdu„ Z5dvdw„ Z6dxdy„ Z7dzd{„ Z8d|d}„ Z9d~d„ Z:ej dGdId€g¡ej d�e;dEd‚dƒgƒe;dEd‚dƒd„d„d„gƒfe<d…d†d‡gƒe<d…d†d‡e=j>e=j>e=j>gƒffdˆd‰„ e?j@D ƒeA BdŠd‹dŒg¡eA BdŠd‹dŒeCjDeCjDeCjDg¡feEd…d�dŽgdWd��eEd…d�dŽe=j>e=j>e=j>gdWd��feFd�d‘d’gƒeFd�d‘d’e=j>e=j>e=j>gƒff•¡d“d”„ ƒƒZGd•d–„ ZHej dGdHdIg¡d—d˜„ ƒZId™dš„ ZJd›dœ„ ZKd„S )�Ú	TestMergec                 C   s:   t tƒ tƒ tj d¡tj d¡dœƒ}||d dk }|S )Nr   )Úkey1Úkey2Údata1Údata2rW   r&   ©r
   r%   r   r   Úrandn)ÚselfÚdfr#   r#   r$   r]   q   s    

üÿ
zTestMerge.dfc                 C   s&   t tdd�tddd�tj d¡dœƒS )Né
   )r!   rN   )r    r!   )rV   rW   ÚvaluerZ   ©r\   r#   r#   r$   rS   €   s    

ýÿzTestMerge.df2c                 C   s$   t dddddddgtj d¡dœƒS )NrH   rI   ÚcÚdÚeé   ©ÚkeyÚv1©r
   r   r   r[   r`   r#   r#   r$   ÚleftŠ   s    ÿzTestMerge.leftc                 C   s    t dtj d¡iddddgd�S )NÚv2rN   rb   rI   ra   rH   ©Úindexrh   r`   r#   r#   r$   Úright�   s    zTestMerge.rightc                 C   sP   t ƒ }t dddgiddgdd�}t||ddd�}t dg idd	�}t ||¡ d S )
NrH   r&   rG   r   r'   )rl   r)   T©Ú
left_indexÚright_indexr(   ©r
   r   ÚtmÚassert_frame_equal)r\   Údf_emptyZdf_aÚresultÚexpectedr#   r#   r$   Útest_merge_inner_join_empty”   s
    z%TestMerge.test_merge_inner_join_emptyc                 C   s,   t ||ƒ}t ||ddgd�}t ||¡ d S )NrV   rW   ©Úon©r   rr   rs   )r\   r]   rS   ÚjoinedÚexpr#   r#   r$   Útest_merge_commonœ   s    
zTestMerge.test_merge_commonc                 C   sZ   t ddddgddddgddddgddddgdœƒ}| t¡}|}t||ƒ}t ||¡ d S )Nr&   r   rG   rM   )r   r&   rG   rM   )r
   Úastyper3   r   rr   rs   ©r\   ri   rm   rv   ru   r#   r#   r$   Útest_merge_non_string_columns¡   s    ,ÿ

z'TestMerge.test_merge_non_string_columnsc                 C   sF   |  d¡}|  d¡}t||dd�}t||dd�  d¡}t ||¡ d S )NrV   rx   )Ú	set_indexr   rr   rs   )r\   r]   rS   ri   rm   ru   rv   r#   r#   r$   Útest_merge_index_as_on_arg­   s
    

z$TestMerge.test_merge_index_as_on_argc                 C   sÐ   t dddddddgtj d¡dœƒ}t dtj d	¡iddddgd
�}t||ddddd�}t||ddddd�}t ||jd d …|jf ¡ t||ddddd�}t||ddddd�}t ||jd d …|jf ¡ d S )NrH   rI   ra   rb   rc   rd   re   rj   rN   rk   rf   Tri   F)Úleft_onrp   ÚhowÚsortrm   )Úright_onro   r„   r…   )	r
   r   r   r[   r   rr   rs   ÚlocÚcolumns)r\   ri   rm   Zmerged1Úmerged2r#   r#   r$   Ú(test_merge_index_singlekey_right_vs_left¶   sL    ÿ      ÿ     ÿ     ÿ     ÿz2TestMerge.test_merge_index_singlekey_right_vs_leftc                 C   sÀ   t dddddddgtj d¡dœƒ}t dtj d	¡iddddgd
�}t||dddd�}|j|dd�j|j }t 	||¡ t||dddd�}|j|dd�j|j }t 	||jd d …|j
f ¡ d S )NrH   rI   ra   rb   rc   rd   re   rj   rN   rk   rf   TÚinner©rƒ   rp   r„   rx   )r†   ro   r„   )r
   r   r   r[   r   Újoinr‡   rl   rr   rs   rˆ   ©r\   ri   rm   ru   rv   r#   r#   r$   Ú test_merge_index_singlekey_innerÌ   s    ÿ z*TestMerge.test_merge_index_singlekey_innerc              	   C   sÊ   d}t jtjj|d�� t||dd� W 5 Q R X d}t jtjj|d�� t||dd� W 5 Q R X d}t jtjj|d�� t||ddd	� W 5 Q R X d
}t jt|d�� t||dgddgd� W 5 Q R X d S )Nz&Must pass right_on or right_index=True©ÚmatchT)ro   z$Must pass left_on or left_index=True)rp   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothrf   )rƒ   ry   z)len\(right_on\) must equal len\(left_on\)rV   rW   ©rƒ   r†   )ÚpytestÚraisesr0   Úerrorsr   r   Ú
ValueError)r\   r]   rS   ri   rm   Úmsgr#   r#   r$   Útest_merge_misspecifiedÛ   s    ÿz!TestMerge.test_merge_misspecifiedc              	   C   s    d}t jt|d�� t||ddddgd� W 5 Q R X d}t jt|d�� t||dddgdd� W 5 Q R X t jt|d��  t||dddgddgd� W 5 Q R X d S )	Nz>right_index parameter must be of type bool, not <class 'list'>r�   ri   FrV   rW   ©r„   ro   rp   z=left_index parameter must be of type bool, not <class 'list'>©r“   r”   r–   r   )r\   r]   rS   r—   r#   r#   r$   Ú&test_index_and_on_parameters_confusionî   s4    ûûûz0TestMerge.test_index_and_on_parameters_confusionc                 C   sN   t ||dd�}|d  ¡ d  ¡ }t|ƒ|ks2t‚d|ks>t‚d|ksJt‚d S )Nrf   rx   rG   Zv1_xZv1_y)r   Zvalue_countsÚsumr   ÚAssertionError)r\   ri   ÚmergedZexp_lenr#   r#   r$   Útest_merge_overlap
  s
    zTestMerge.test_merge_overlapc                 C   s  t ddddgddddgdœƒ}t ddd	dgd
dddgdœƒ}|j|ddddd�}tddddddtjgdd�}t |d |¡ tdtjddddd	gdd�}t |d |¡ tddddddtjgdd�}t |d |¡ tdtjd
dd
ddgdd�}t |d |¡ d S )Nr+   ÚbarZbazr&   rG   rM   rN   )Úlkeyr_   ZquxrO   é   rd   r   )Úrkeyr_   r¡   r£   ÚouterT)rƒ   r†   r„   r…   ©r9   Úvalue_xÚvalue_y)r
   r   r   r   r5   rr   Úassert_series_equal)r\   ri   rm   rž   r|   r#   r#   r$   Ú%test_merge_different_column_key_names  s"        ÿz/TestMerge.test_merge_different_column_key_namesc                 C   sz   t dddœtdƒd�}t dddœtdƒd�}t||d	d	d	d
�}d|d< |d dk ¡ sZt‚d|d< |d dk ¡ svt‚d S )Nr   r&   ©rH   rI   r^   rk   r+   r    ©ra   rb   T©ro   rp   Úcopyr¢   rH   Zpeekaboorb   )r
   r   r   Úallr�   )r\   ri   rm   rž   r#   r#   r$   Útest_merge_copy%  s    zTestMerge.test_merge_copyc                 C   sz   t dddœtdƒd�}t dddœtdƒd�}t||d	d	d
d�}t |d j|d j¡sZt‚t |d j|d j¡svt‚d S )Nr   r&   rª   r^   rk   r+   r    r«   TFr¬   rH   rb   )r
   r   r   r   Zshares_memoryZ_valuesr�   )r\   Úusing_array_managerri   rm   rž   r#   r#   r$   Útest_merge_nocopy1  s
    zTestMerge.test_merge_nocopyc                 C   sÄ   t dddddgttdƒƒdœddgd�}t ddddd	dgttd
ƒƒdœƒ}t||ddd�}t dddddddd	dg	t ddddddd	tjtjg	¡dddddddd	dg	dœdddgd�}t ||¡ d S )Nr&   rG   rM   rO   ©rf   r_   r_   rf   ©rˆ   rN   r¢   )rf   Úrvaluer¤   ©ry   r„   r   )rf   r_   r´   r´   )	r
   r   r   r   r   Úarrayr5   rr   rs   )r\   ri   rm   r{   rv   r#   r#   r$   Ú"test_intelligently_handle_join_key:  s     ÿ"ýúz,TestMerge.test_intelligently_handle_join_keyc                 C   sæ   t dgdgdœƒ}t dgdgdœƒ}t||dd�}|d jd	ksDt‚t d
gdgdœƒ}t dgdgdœƒ}t||dd�}|d jdksˆt‚t ddgiƒ}t ddgiƒ}t dg¡}t dg¡}t||||dd�}|d jtjksât‚d S )Nr&   r^   re   rG   é   r¤   ©r„   rf   r'   TFr   ÚboolÚval©rƒ   r†   r„   Úkey_0)r
   r   r)   r�   r   r¶   Úint_)r\   rR   rS   r]   r¡   r£   r#   r#   r$   Útest_merge_join_key_dtype_castM  s    z(TestMerge.test_merge_join_key_dtype_castc           	   
   C   s¾  t dddddgt d¡dœddgdd	�}t d
t d¡idd�}tjddddddgdd�}t||d|dd�}t|||ddd�}t |d |d ¡ |d  ¡  ¡ s¤t	‚|d  ¡  ¡ s¸t	‚t dt d¡idgd�}t d
t d¡iƒ}t dddddg¡}t ddddddg¡}t||||dd�}t
dddddddddg	tjdd�}t |d |¡ t dt d¡iƒ}t d
t d¡iƒ}tjddddddgtjd�}t||d|dd�}t |d t
|dd�¡ d S )Nr&   rG   rM   rO   r²   r_   rf   r'   ©rˆ   r)   r´   r¢   r(   rN   r¤   r¼   r³   r½   r8   r   T)ro   r†   r„   r¥   )r
   r   Úaranger¶   r   rr   r¨   Znotnar®   r�   r   r¾   r'   )	r\   ri   rm   rf   rž   r‰   r¡   r£   rv   r#   r#   r$   Útest_handle_join_key_pass_arrayd  s0    ý"z)TestMerge.test_handle_join_key_pass_arrayc              	   C   sx   t  ¡ }tddgi|gd�}tdddgi||gd�}dd › dd › d	d
› dd
› �}tjt|d�� t||ƒ W 5 Q R X d S )Nr;   rH   rk   ÚyrI   ra   z>No common columns to perform merge on. Merge options: left_on=z, right_on=z, left_index=Fz, right_index=r�   )r   Únowr
   r“   r”   r   r   )r\   ÚdtrR   rS   r—   r#   r#   r$   Ú&test_no_overlap_more_informative_error„  s    ÿz0TestMerge.test_no_overlap_more_informative_errorc                 C   sò   t dddƒ}t dddƒ}t dddƒ}t dddƒ}tddgi|gd	�}td
ddgi||gd	�}t||ƒ tddddgi|||gd	�}td
ddddddgi||||||gd	�}t||ƒ tdddgi||gd	�}td
ddgi||gd	�}t||ƒ d S )NéÜ  rO   r&   rG   rM   rN   r;   rH   rk   rÃ   rI   ra   Úqrb   rc   ÚfÚgÚh©r   r
   Ú_check_merge)r\   rÅ   Údt2Údt3Zdt4rR   rS   r#   r#   r$   Útest_merge_non_unique_indexes“  s     
 ÿ
z'TestMerge.test_merge_non_unique_indexesc                 C   sv   t dddƒ}t dddƒ}t dddƒ}tdddd	d
gi||||gd�}tddddddgi|||||gd�}t||ƒ d S )NrÇ   rO   r&   rG   rM   r;   rH   rI   ra   rb   rk   rÃ   rc   rÉ   rÊ   z hÚirÌ   )r\   rÅ   rÎ   rÏ   rR   rS   r#   r#   r$   Ú(test_merge_non_unique_index_many_to_many¨  s      ÿz2TestMerge.test_merge_non_unique_index_many_to_manyc                 C   sZ   t dgdgdœƒ}t dg iƒ}t||ddd�}t ||¡ t||ddd�}t ||¡ d S )Nr&   rG   r²   rf   ri   rµ   rm   rq   )r\   ri   rm   ru   r#   r#   r$   Útest_left_merge_empty_dataframe²  s    z)TestMerge.test_left_merge_empty_dataframeÚkwargTrn   r;   ©ro   r†   rH   ©rƒ   rp   r’   c                 C   s^   t dddgd�}t dddgd�}t ddddddgtd�}t||fd	|i|—Ž}t ||¡ d S )
NrH   rI   ra   r³   r;   rÃ   ÚzrÀ   r„   )r
   r4   r   rr   rs   )r\   Ú	join_typerÔ   ri   rm   Úexp_inru   r#   r#   r$   Ú!test_merge_left_empty_right_empty¼  s
    z+TestMerge.test_merge_left_empty_right_emptyc              	      sf  t dddgd�‰ t dddgdd	d
gdddggdddgd�‰t tjtjgd td�tjtjgd td�tjtjgd td�dddgdd	dgdd
dgdœddddddgd�}|dd… }‡ ‡fdd„}‡ ‡fdd„}dddœdddœfD ]}|||ƒ |||ƒ qädddœ}|||ƒ dddg|d< |||ƒ dddœ}|||ƒ tjtjgd td�|d< |||ƒ d S )NrH   rI   ra   r³   r&   rG   rM   rN   rO   r¢   rd   r   é	   r;   rÃ   r×   r(   ©rH   rI   ra   r;   rÃ   r×   r   c                    sH   t ˆ ˆfddi|—Ž}t || ¡ t ˆ ˆfddi|—Ž}t || ¡ d S )Nr„   r‹   ri   rz   ©r|   rÔ   ru   ©ri   rm   r#   r$   Úcheck1á  s    z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check1c                    sH   t ˆ ˆfddi|—Ž}t || ¡ t ˆ ˆfddi|—Ž}t || ¡ d S )Nr„   rm   r¤   rz   rÝ   rÞ   r#   r$   Úcheck2ç  s    z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2Trn   rÕ   rÖ   r’   )r
   r   r¶   r5   r4   )r\   Úexp_outrÙ   rß   rà   rÔ   r#   rÞ   r$   Ú$test_merge_left_empty_right_notemptyÏ  s8    *ú÷þ





z.TestMerge.test_merge_left_empty_right_notemptyc              
      sê   t dddgdddgddd	ggd
ddgd�‰t dddgd�‰t dddgdddgddd	gtjtjgd td�tjtjgd td�tjtjgd td�dœd
dddddgd�‰ˆdd… ‰ˆj t¡ˆ_‡‡fdd„‰ ‡ ‡‡‡‡‡fdd„‰d S )Nr&   rG   rM   rN   rO   r¢   rd   r   rÛ   rH   rI   ra   r³   r;   rÃ   r×   r(   rÜ   r   c                    sH   t ˆ ˆfddi|—Ž}t || ¡ t ˆ ˆfddi|—Ž}t || ¡ d S )Nr„   r‹   rm   rz   rÝ   rÞ   r#   r$   rß     s    z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check1c                    s†   t ˆˆfddi|—Ž}t || ¡ t ˆˆfddi|—Ž}t || ¡ dddœdddœddd	œddd
œfD ]}ˆ ˆ|ƒ ˆˆ|ƒ qhd S )Nr„   ri   r¤   Trn   r;   rÕ   rH   rÖ   r’   rz   rÝ   ©rß   rà   rÙ   rá   ri   rm   r#   r$   rà     s    ü
z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check2)r
   r   r¶   r5   r4   rl   r~   r`   r#   rã   r$   Ú$test_merge_left_notempty_right_emptyþ  s     *ú÷z.TestMerge.test_merge_left_notempty_right_emptyc                 C   s~   t ||dœddgd�}|d d… }t t|jd d�t|jd d�t|jd d�dœddd	gd�}|j|dd
�}t ||¡ d S )Nr²   rf   r_   r³   r   r(   )r¦   rf   r§   r¦   r§   rx   )r
   r   Údtypesr   rr   rs   )r\   rD   rE   r]   rt   rv   Úactualr#   r#   r$   Útest_merge_empty_frame(  s    þýúz TestMerge.test_merge_empty_framec                 C   sd   t ||dœddgd�}t ||dœddgd�}t |||dœdddgd�}|j|dd�}t ||¡ d S )	Nr²   rf   r_   r³   ©rf   r¦   r§   r¦   r§   rx   rq   )r\   rD   rF   Zdf_leftZdf_rightrv   ræ   r#   r#   r$   Útest_merge_all_na_column:  s"    þþýúz"TestMerge.test_merge_all_na_columnc                 C   s  t jjdddd�t jjdddd�tdddƒtddd	ƒtd
ddƒtdddƒtddd	ƒtdd	dƒtddd	ƒtdddƒtd
ddƒtdddƒg
dœ}t |¡}|j ¡ }t  |¡}t |t j d¡dœ¡}|j	|ddd�}t	||ddd�}t
 ||¡ |j ¡ |j ¡ k ¡ �st‚d S )Nr   r^   ©ÚsizerÇ   r&   é   iÛ  rG   rN   iÚ  rM   iØ  rO   )Zvar1Zvar2Úvar3rd   )rí   Zvar8rí   F©ry   r…   )r   r   Úrandintr   r
   Ú	from_dictrí   Úuniquer…   r   rr   rs   r®   r�   )r\   rb   r]   rí   Únewru   r|   r#   r#   r$   Útest_merge_nosortO  s,    









öý


zTestMerge.test_merge_nosort)r…   ÚvaluesFr&   r   r„   ri   rm   c                 C   sB   t ddddgiƒ}|j|d||d�}t |dgd�}t ||¡ d S )NrH   r&   r   )ry   r„   r…   r³   rq   )r\   r…   rô   r„   r]   ru   rv   r#   r#   r$   Ú test_merge_same_order_left_rightm  s    z*TestMerge.test_merge_same_order_left_rightc                 C   s˜   t ddgddgdœƒ}t dgdgdœƒ}|j|ddd�}t ddd	œddd	œdtjd	œdtjd	œddd	œd
œƒ d ¡ ¡ ddddg }tj||dd� d S )Nr   r&   ©Úi1Úi2©r÷   Úi3r÷   Ú_)ry   Úrsuffixç        ©r   r&   )r÷   rø   Úi1_rú   Nrø   rÿ   rú   F)Zcheck_dtype)r
   r�   r   r5   r�   Úreset_indexrr   rs   ©r\   rR   rS   ru   rv   r#   r#   r$   Útest_merge_nan_righty  s"    

ûÿ	÷

öÿzTestMerge.test_merge_nan_rightc                 C   s‚   t ddgddgdœƒ}t dgdgdœƒ}|j|dd	d
�}t dddœdtjdœdddœdtjdœdœƒd	dddg }t ||¡ d S )Nr   r&   g      à?ç      ø?rö   gffffffæ?rù   rû   r÷   )rü   ry   rþ   rý   )r÷   rÿ   rø   rú   rø   rÿ   rú   )r
   r�   r   r5   rr   rs   r  r#   r#   r$   Útest_merge_nan_right2Œ  s    

üÿ
ùzTestMerge.test_merge_nan_right2c                    s<   G ‡ fdd„dt ƒ‰ ˆ |ƒ}|j|dd�}t|ˆ ƒs8t‚d S )Nc                       s   e Zd Ze‡ fdd„ƒZdS )z0TestMerge.test_merge_type.<locals>.NotADataFramec                    s   ˆ S r   r#   r`   ©ÚNotADataFramer#   r$   Ú_constructorœ  s    z=TestMerge.test_merge_type.<locals>.NotADataFrame._constructorN)Ú__name__Ú
__module__Ú__qualname__Úpropertyr  r#   r  r#   r$   r  ›  s   r  rV   rx   )r
   r   Ú
isinstancer�   )r\   r]   rS   Znadru   r#   r  r$   Útest_merge_typeš  s    zTestMerge.test_merge_typec                 C   s¬   t  tdddddƒgtddƒgdœ¡}t tdƒd	�}t||gd
d�}t||gd
d�}t tdddddƒtdddddƒgtddƒtddƒgdœƒ}|rœ| t¡}t 	||¡ d S )NiÝ  é   rO   é8   r   iäW  )rb   ÚtrÅ   r³   T)Zignore_index)
r
   rð   r   r   r   r   r~   r4   rr   rs   )r\   r°   rb   r]   ru   rv   r#   r#   r$   Útest_join_append_timedeltas¥  s    ÿþÿ
z%TestMerge.test_join_append_timedeltasc                 C   s†   t  d¡}tt||gddgd�ƒ}tt|gdgd�ƒ}|j|ddd�}tt||gtdƒd�t|tjgtdƒd�d	œƒ}t 	||¡ d S )
Ni £áÚAÚBrk   Úrri   )rü   r„   ZAB)Ú0Z0r)
r   Ztimedelta64r
   r   r�   r   r0   r6   rr   rs   )r\   ÚtdÚlhsÚrhsru   rv   r#   r#   r$   Útest_join_append_timedeltas2º  s    
þÿz&TestMerge.test_join_append_timedeltas2ÚunitÚDrË   ÚmÚsÚmsÚusÚnsc           
      C   sÚ   t dddgiƒ}td d gddgdd�}d|› d�}|dkr@d	}n|}| |¡ d¡}|d j|ksft‚|j|dd
d�}tjddg|d�}t	j
jjj||jd�}t ddg|dœddgd�}	|	d j|ksÊt‚t ||	¡ d S )NÚ	entity_idée   éf   Údays©rl   r9   zdatetime64[ú]©r  rË   r  zdatetime64[s]TrÖ   Únatr(   ©r!  r$  r³   )r
   r   r~   Úto_framer)   r�   r   r   r¶   r0   ÚcoreÚarraysZDatetimeArrayZ_simple_newrr   rs   )
r\   r  rR   Úserr)   Z	exp_dtyperS   ru   r$  r|   r#   r#   r$   Útest_other_datetime_unitÊ  s&    þûz"TestMerge.test_other_datetime_unitc           	   	   C   sÞ   t dddgiƒ}td d gddgdd�}d|› d�}|dkrtd	}tjt|d
�� | |¡ W 5 Q R X | d¡ d¡}n"| |¡ d¡}|d j|ks–t‚|j	|ddd�}t ddgt
jddg|d�dœddgd�}t ||¡ d S )Nr!  r"  r#  r$  r%  zm8[r&  r'  z/Supported resolutions are 's', 'ms', 'us', 'ns'r�   zm8[s]TrÖ   r(  r(   r)  r³   )r
   r   r“   r”   r–   r~   r*  r)   r�   r   r   r¶   rr   rs   )	r\   r  rR   r-  r)   r—   rS   ru   r|   r#   r#   r$   Útest_other_timedelta_unitè  s     þz#TestMerge.test_other_timedelta_unitc              	   C   sè   t dddgdddgddd	gd
œƒ}t dddgdddgddd	gd
œƒ}dddg|_dddg|_t dddgdddgddd	gdddgddd	gdœƒ}dddddg|_t t||ƒ|¡ dddg|_d}tjt|d�� t||ƒ W 5 Q R X d S )Nr&   rG   rM   rN   rO   r¢   rd   r   rÛ   ©rf   rg   rj   rf   r+   r    )rf   rg   rj   Zv3Zv4rV   z;Data columns not unique: Index\(\['foo'\], dtype='object'\)r�   )r
   rˆ   rr   rs   r   r“   r”   r   )r\   r]   rS   rv   r—   r#   r#   r$   Ú&test_overlapping_columns_error_message  s$    ""ûÿ	z0TestMerge.test_overlapping_columns_error_messagec                 C   s�   t tjdddd�ddgdœƒ}t tjdddd�dddgdœƒ}t tjdd	dd�ddtjtjgtjdddgd
œƒ}t||ddd�}t ||¡ d S )NÚ20151010rG   r-   ©Úperiodsr/   r&   r²   Ú20151011rM   rN   rè   rf   r¤   rµ   )r
   r0   Ú
date_ranger   r5   r   rr   rs   r   r#   r#   r$   Útest_merge_on_datetime64tz  s$    þÿþÿýÿz$TestMerge.test_merge_on_datetime64tzc              
   C   sÆ   t ddgtjdddd�dœƒ}t ddgtjdddd�dœƒ}t dddgttjdddd�ƒtjg tjgttjdddd�ƒ d	œƒ}t||d
dd�}t ||¡ |d jdks°t	‚|d jdksÂt	‚d S )Nr&   rG   r2  r-   r3  r²   rM   r5  rè   rf   r¤   rµ   r¦   zdatetime64[ns, US/Eastern]r§   )
r
   r0   r6  r   r6   r   rr   rs   r)   r�   r   r#   r#   r$   Útest_merge_datetime64tz_values3  s0    þÿþÿÿÿüÿ	z(TestMerge.test_merge_datetime64tz_valuesc                 C   s®   t jdd�}tt jd|jd�gdgt jd|jd�gdœddd	gd
�}|d d… }|j|dd�}tttd�t|d�t|d�ttd�t|d�dœdddddgd
�}t 	||¡ d S )NÚUTCr.   Z2018g      @Z2019)r   r_   Údate2r   r_   r:  r³   r   rx   r(   )r¦   Údate2_xr   r§   Údate2_yr¦   r;  r§   r<  )
r0   ZDatetimeTZDtyper
   r1   r/   r   r   r3   rr   rs   )r\   Zdtzrm   ri   ru   rv   r#   r#   r$   Ú test_merge_on_datetime64tz_emptyN  s(    ýúûø
z*TestMerge.test_merge_on_datetime64tz_emptyc                 C   s¼   t tjddddd�dgd�}d|d	< t t d
ddg¡ddœƒ}|d j d¡j d¡|d< t||ddd�}t tjddddd�dgd tj	gd  tj	gd dgd  dœƒ}t
 ||¡ d S )Nz2017-10-29 01:00rN   ÚHzEurope/Madrid)r4  Úfreqr/   r   r³   r&   r_   z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00rG   )r   r_   r9  r¤   ©r„   ry   rd   rM   )r   r¦   r§   )r
   r0   r6  Úto_datetimerÅ   Ztz_localizeZ
tz_convertr   r   r5   rr   rs   r  r#   r#   r$   Ú+test_merge_datetime64tz_with_dst_transitiong  s:    þýÿøÿ   ÿûÿ	z5TestMerge.test_merge_datetime64tz_with_dst_transitionc                 C   s”   t jdddd�}tttt|ƒƒƒ|dgd�}t||gƒ}|j|dddd	�}tt 	tj
dtjd
� d¡ dd¡d¡ddg| ¡ jd�}t ||¡ d S )Nz
2016-01-01é   ÚM©r4  r?  Zpnum©rl   rˆ   Tr‹   )ro   rp   r„   r(   rG   éÿÿÿÿr&   Zpnum_xZpnum_y©rˆ   rl   )r0   Úperiod_ranger
   r   r   r   r   r   r   r   rÁ   r'   ÚrepeatÚreshapeÚ
sort_indexrl   rr   rs   )r\   rl   r]   rS   ru   rv   r#   r#   r$   Ú"test_merge_non_unique_period_index‡  s    $ýz,TestMerge.test_merge_non_unique_period_indexc                 C   s�   t tjdddd�ddgdœƒ}t tjdddd�dddgdœƒ}t tjdd	dd�ddtjtjgtjdddgd
œƒ}t||ddd�}t ||¡ d S )Nr2  rG   r  rE  r&   r²   r5  rM   rN   rè   rf   r¤   rµ   )r
   r0   rI  r   r5   r   rr   rs   r   r#   r#   r$   Útest_merge_on_periods”  s     ÿþÿýÿzTestMerge.test_merge_on_periodsc                 C   sÎ   t ddgtjdddd�dœƒ}t ddgtjdddd�dœƒ}tjdddd�}tjdddd�}t dddgt|ƒtjg tjgt|ƒ d	œƒ}t||d
dd�}t ||¡ |d jdks¸t	‚|d jdksÊt	‚d S )Nr&   rG   r2  r  rE  r²   rM   r5  rè   rf   r¤   rµ   r¦   z	Period[D]r§   )
r
   r0   rI  r   r6   r   rr   rs   r)   r�   )r\   ri   rm   Zexp_xZexp_yrv   ru   r#   r#   r$   Útest_merge_period_values©  s$    ÿÿýÿz"TestMerge.test_merge_period_valuesc           
      C   sZ  |\}}|  ¡ }|  ¡ }tddddddgddtjtjtjtjgddtjtjtjtjgtjdddddgtjdddddgd	œƒ}td
dddddgd
ddgd�|d< |ddddddg }t||dddd�}t ||¡ |j|dddd�}t ||¡ t ||¡ t ||¡ |}|jddid�}t||dddd�}	t |	|¡ |j|dddd�}	t |	|¡ d S )Nr   r&   rG   rM   rN   rO   rH   rI   )rJ   Úcol_conflict_xrL   Úcol_conflict_yrP   Ú	left_onlyÚbothÚ
right_only©Ú
categoriesÚ_mergerJ   rP  rL   rQ  rP   r¤   T©ry   r„   Z	indicatorZcustom_namer³   )	r­   r
   r   r5   r   r   rr   rs   Úrename)
r\   rT   rR   rS   Údf1_copyÚdf2_copyZ	df_resultÚtestZdf_result_custom_nameZtest_custom_namer#   r#   r$   Útest_indicator¿  sn    ûÿ	ú÷
úÿÿ    ÿ   ÿzTestMerge.test_indicatorc              	   C   sh   |\}}d}t jt|d�� t||dddd� W 5 Q R X t jt|d�� |j|dddd� W 5 Q R X d S )Nz<indicator option can only accept boolean or string argumentsr�   rJ   r¤   rO   rX  rš   )r\   rT   rR   rS   r—   r#   r#   r$   Ú#test_merge_indicator_arg_validationþ  s    z-TestMerge.test_merge_indicator_arg_validationc                 C   sä   |\}}t ||dddd�}|jdk ¡ s,t‚|j |dddd�}|jdk ¡ sPt‚t ||dddd�}|jdk ¡ stt‚|j |dddd�}|jdk ¡ s˜t‚t ||dddd�}|jd	k ¡ s¼t‚|j |dddd�}|jd	k ¡ sàt‚d S )
NrJ   ri   TrX  rT  rm   rR  r‹   rS  )r   rW  r®   r�   )r\   rT   rR   rS   Ztest2Ztest3Ztest4r#   r#   r$   Ú%test_merge_indicator_result_integrity  s    z/TestMerge.test_merge_indicator_result_integrityc              
   C   s  |\}}dD ]€}t dddg|ddgiƒ}d|› d�}tjt|d�� t||ddd	d
� W 5 Q R X tjt|d�� |j|ddd	d
� W 5 Q R X qt ddgddgdœƒ}d}tjt|d�� t||dddd
� W 5 Q R X tjt|d�� |j|dddd
� W 5 Q R X d S )N)Z_right_indicatorZ_left_indicatorrW  rJ   r&   rG   zECannot use `indicator=True` option when data contains a column named z;|Cannot use name of an existing column for indicator columnr�   r¤   TrX  )rJ   Úcustom_column_namez:Cannot use name of an existing column for indicator columnr`  ©r
   r“   r”   r–   r   )r\   rT   rR   rû   rÑ   Zdf_badcolumnr—   r#   r#   r$   Útest_merge_indicator_invalid  s4    
ÿû   ÿz&TestMerge.test_merge_indicator_invalidc                 C   s´   t ddgddgdœƒ}t dddgdddgdœƒ}t ddddgddddgdœƒ}td	d
ddgd	dd
gd�|d< t||ddgddd�}t ||¡ |j|ddgddd�}t ||¡ d S )Nr   r&   rH   rI   )rJ   Úcol2rM   r;   rÃ   rR  rS  rT  rU  rW  rJ   rc  r¤   TrX  ©r
   r   r   rr   rs   )r\   Zdf3Zdf4Zhand_coded_resultZtest5r#   r#   r$   Ú%test_merge_indicator_multiple_columns=  s    ÿ
þ
z/TestMerge.test_merge_indicator_multiple_columnsc              	   C   sb  t ddddgddddgd	œtd
ƒd�}t dddddgdddddgdœtdƒd�}| ¡ }| ¡ }t||dddd�}t ||¡ t ||¡ t ddddgddddgddddgddddgdœtd
ƒddddgd�}t||dddd�}t ||¡ t ddddgddddgddddgdœtd
ƒd�}t||ddd�}t ||¡ t ||¡ t ||¡ t||ddd�}t ||¡ t ddddgddddgddddgdœdddgtd
ƒd�}| d¡}	t|	|dddd �}t ||¡ t|t dgd!gdœd
gd�gƒ}
t||
ddd"d� d#}tj	t
|d$�� t||
dddd� W 5 Q R X tj	t
|d$�� t||
ddd� W 5 Q R X t|t dgd%gdœd&gd�gdd'�}t||ddd(d� d)}tj	t
|d$�� t||dddd� W 5 Q R X tj	t
|d$�� t||ddd� W 5 Q R X t||
dd*d� d+}tj	t
|d$�� t||
ddd(d� W 5 Q R X d,}tj	t
|d$�� t||
dd"d� W 5 Q R X d-}tj	t|d$�� t||dd.d� W 5 Q R X t ddddgd/d0d/d0gddddgdœtd
ƒd�}t dddgd/d0d/gdddgd1œtd&ƒd�}t dddgd/d0d/gdddgdddgd2œtd&ƒd�}d3}tj	t
|d$�� t||ddd� W 5 Q R X t||ddgdd�}t ||¡ d S )4NrH   rI   ra   rb   ÚcatÚdogZweaselÚhorserª   rN   rk   rc   ZmeowZbarkzum... weasel noise?ZnayZchirp©rH   ra   rO   Tz1:1)ro   rp   Úvalidate)Úa_xrI   Úa_yra   rk  rl  rF  Z
one_to_one©rH   rI   ra   )ry   rj  )rI   rH   ra   rH  )ro   r†   rj  ÚmooZone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger�   ÚcowrM   )r…   Zmany_to_onezAMerge keys are not unique in left dataset; not a one-to-one mergeZmany_to_manyzCMerge keys are not unique in right dataset; not a many-to-one mergezBMerge keys are not unique in left dataset; not a one-to-many mergez™"jibberish" is not a valid argument. Valid arguments are:
- "1:1"
- "1:m"
- "m:1"
- "m:m"
- "one_to_one"
- "one_to_many"
- "many_to_one"
- "many_to_many"Z	jibberishr   r&   )rH   rI   rb   ©rH   rI   ra   rb   zQMerge keys are not unique in either left or right dataset; not a one-to-one merge)r
   r   r­   r   rr   rs   r�   r   r“   r”   r   r–   )r\   ri   rm   Z	left_copyZ
right_copyru   rv   Z
expected_2Z
expected_3Zleft_index_resetZright_w_dupsr—   Zleft_w_dupsZexpected_multir#   r#   r$   Útest_validationP  s(   þþû	



ü
ø    ÿ


ýú	


ýù

û ûû ÿûûûÿ


ýú	ýú	üùÿzTestMerge.test_validationc              	   C   s:   t g g g dœƒ}tjdd�� t||dd� W 5 Q R X d S )Nrm  Úraise)Údividerª   rx   )r
   r   Zerrstater   )r\   rH   r#   r#   r$   Ú)test_merge_two_empty_df_no_division_error  s    z3TestMerge.test_merge_two_empty_df_no_division_errorr¤   zindex,expected_indexrG   rN   Nú
2001-01-01z
2002-02-02z
2003-03-03c              
   C   s8   g | ]0}t d ddg|d�t d dddddgtjd�f‘qS )r&   rG   rM   r(   N)r   r   Úfloat64©Ú.0Zdtypr#   r#   r$   Ú
<listcomp>)  s   ýþzTestMerge.<listcomp>)r&   rG   )rG   rM   )rM   rN   ú
2001-01-02ú
2001-01-03)r?  Z1dZ2dZ3dc              	   C   s®   t dddgdddgdœ|d�}t ddddddd	giƒ}|j|d
d|d�}t dddgdddgdddgtjddgtjddgtjd	d	ggdd
dgd�}|j|dd� t ||¡ d S )Nr   r&   rG   ©rH   rf   rk   rI   rM   rN   rO   rf   TrŒ   rH   r³   )Úinplace)r
   r   r   r5   r�   rr   rs   )r\   r„   rl   Úexpected_indexrR   rS   ru   rv   r#   r#   r$   Ú$test_merge_on_index_with_more_values  s    ,


ú÷z.TestMerge.test_merge_on_index_with_more_valuesc                 C   sŒ   t dddgdddgdœƒ}t ddddgiƒ}t dddd gddddgddddgdœdd	dgdddtjgd
�}|j|d	ddd�}t ||¡ d S )Nr&   rG   rM   r   r|  rI   ©rH   rf   rI   rH   rf   rH  Trm   rŒ   ©r
   r   r5   r   rr   rs   r   r#   r#   r$   Útest_merge_right_index_rightX  s    "ýz&TestMerge.test_merge_right_index_rightc                 C   s†   t ddgddgdœƒ}t ddgddgdœƒ}|j|dd	g|d
�}|dkr`t ddgddgdœƒ}nt ddgddgdœƒ}t ||¡ d S )Nrg  Úpigé(   r  )ÚanimalÚ	max_speedZquetzaléP   r…  r†  rµ   rm   rq   )r\   r„   Úleft_dfÚright_dfru   rv   r#   r#   r$   Útest_merge_preserves_row_orderg  s    z(TestMerge.test_merge_preserves_row_orderc                 C   s´   t dddgtdddgtdƒd�dœƒ}t ddddgitddd	gƒd
�}|j|dddd�}t dddd gtdddd	gƒddddgdœdddtjgd
�}|jdddgd�}t 	||¡ d S )Nr&   rG   rM   rH   rI   ÚabcrU  r|  ra   rk   rf   Trm   rŒ   r€  r   r³   )
r
   r   r   r	   r   r   r5   Zreindexrr   rs   rŽ   r#   r#   r$   Ú8test_merge_take_missing_values_from_index_of_other_dtypes  s     þÿ 

ýúzBTestMerge.test_merge_take_missing_values_from_index_of_other_dtypec                 C   sn   t t d¡ d¡d dddddgd	�}t t d¡ d
¡d ddddgd	�}|jjD ]}d|j_qR| |¡ d S )Nr¸   )rN   rO   r&   rH   rI   ra   rb   rc   r³   )rO   rN   r;   rÃ   F)	r
   r   rÁ   rK  Z_mgrr,  ÚflagsZ	writeabler   )r\   rX   rY   r"   r#   r#   r$   Útest_merge_readonlyˆ  s     ÿ 
ÿ
zTestMerge.test_merge_readonly)Lr  r	  r
  r“   Úfixturer]   rS   ri   rm   rw   r}   r€   r‚   rŠ   r�   r˜   r›   rŸ   r©   r¯   r±   r·   r¿   rÂ   rÆ   rÐ   rÒ   rÓ   ÚmarkÚparametrizerÚ   râ   rä   rç   ré   ró   rõ   r  r  r  r  r  r.  r/  r1  r7  r8  r=  rB  rM  rN  rO  r]  r^  r_  rb  re  rq  rt  r	   r   r0   r6   rr   ÚALL_REAL_NUMPY_DTYPESr   Úfrom_tuplesr   r5   r   r   r  r‚  rŠ  rŒ  rŽ  r#   r#   r#   r$   rU   p   sÚ   

	

		 

üþ	

/* "ÿ

 ?
" Fþÿþûûÿþþþþáþ'
rU   c                 C   sN   dD ]D}| j ||d�}t|  ¡ | ¡ |dd�}| d¡}tj||dd� qd S )N)r‹   ri   r¤   r¹   T)r„   r…   rl   F)Zcheck_names)r�   r   r   r�   rr   rs   )r;   rÃ   r„   ru   rv   r#   r#   r$   rÍ   ˜  s
    
rÍ   c                   @   s€  e Zd Zej dddgeddgƒ d¡g¡dd„ ƒZej de	j
e	je	je	je	je	jg¡ej de	j
e	je	je	jg¡d	d
„ ƒƒZej ddddgdddgdddgdddgdœfdddgddgddgddgdœfddgdddgddgddgdœfg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zej ddddgedd dgƒ d¡fd!ddgedd dgƒ d¡fddged"d#ged$�fddged"d#ged$�fg¡d%d&„ ƒZej deddgd'd$�dd d(gfeddgd)d$�dd d(gfdddgd*d+d,gfd!ddgd*d+d,gfdddgd*d+d,gfejd-dd.d/�d0d1gfejd-dd.d/�ddgfejd-dd.d/�d!dgfejd2dd3�ejd2dd4d5�fg	¡d6d7„ ƒZej d8ddgd9fg d:fdgd;fdgd<fg¡d=d>„ ƒZej d8dd gd9fg d:fd gd;fdgd<fg¡d?d@„ ƒZ ej dAd:d#ddBgd"dCdggfd9d#ddBgd"dCdggfd<d#ddBgd"dCdggfd;d"dCdgd#ddBggfg¡dDdE„ ƒZ!dFdG„ Z"ej dHdIdJdKdLdMdNdOdPdQdRg
¡dSdT„ ƒZ#dUS )VÚTestMergeDtypesÚ
right_valsr+   r    Úcategoryc              
   C   sv   t ddgtddgƒ d¡ddgddgtddgdd	�tddgd
d	�dœƒ}t d|iƒ}t||dd�}t|jjƒsrt‚d S )Nr+   r    r–  r&   rG   ç      ð?ç       @Úuint64r(   Úint32)r  r  ÚCr  ÚEÚFr  rx   )r
   r   r~   r   r   r  r)   r�   )r\   r•  ri   rm   ru   r#   r#   r$   Útest_different¤  s    úÿ
zTestMergeDtypes.test_differentÚd1Úd2c           
      C   s@  t  |¡}t  |¡}tt jdddgd |d�ddgd t jt  d	¡t jd�d
œƒ}t ddg¡}tdt jddg|d�i|d�}|j|ddgd�}| 	¡ }	|j
dkr¬t  d¡}t jt j|d�|	d< d|	j|	jdk|	jdk@ df< d|	j|	jdk|	jdk@ df< t ||	¡ |j|ddgdd�}|	jddgddd� t ||	¡ d S )Nr   r&   rG   r   r(   r+   r    rì   é   )Úk1Úk2Úv)rG   r    )r&   r+   rj   rO   rd   rk   r¢  r£  rx   rÑ   rv  Trî   Z	mergesort)Úkindr}  )r   r)   r
   r¶   rÁ   r'   r   r“  r�   r­   r¥  r5   r‡   r¢  r£  rr   rs   Zsort_values)
r\   rŸ  r   Zdtype1Zdtype2ri   rl   rm   ru   rv   r#   r#   r$   Útest_join_multi_dtypesº  s*    


ýÿ

z&TestMergeDtypes.test_join_multi_dtypeszint_vals, float_vals, exp_valsr&   rG   rM   r—  r˜  ç      @©ÚXÚYc                 C   sd   t d|iƒ}t d|iƒ}t |ƒ}|j|ddd�}t ||¡ |j|ddd�}t ||ddg ¡ d S )Nr©  rª  r’   rq   )r\   Zint_valsZ
float_valsZexp_valsr  r  rv   ru   r#   r#   r$   Útest_merge_on_ints_floatsÝ  s    z)TestMergeDtypes.test_merge_on_ints_floatsc                 C   s€   t ddgddgdœddgd�}t d	gd
gdœddgd�}|j|ddd�}t ddgddgtjdgdœdddgd�}t ||¡ d S )Nr—  r˜  r^   r¸   re   rf   rg   r³   rG   éÈ   )rf   rj   rj   ri   rµ   g      i@r0  )r
   r   r   r5   rr   rs   r  r#   r#   r$   Útest_merge_key_dtype_castó  s    þz)TestMergeDtypes.test_merge_key_dtype_castc              	   C   sö   t ddddgiƒ}t ddddgiƒ}t dgdgd	œƒ}t t¡�" |j|ddd
�}t ||¡ W 5 Q R X t t¡�* |j|ddd
�}t ||ddg ¡ W 5 Q R X t dtjtjdgiƒ}t d ¡�* |j|ddd
�}t ||ddg ¡ W 5 Q R X d S )Nr©  r&   rG   rM   rª  çš™™™™™ñ?g      @r§  r¨  r’   )r
   rr   Zassert_produces_warningÚUserWarningr   rs   r   r5   )r\   r  r  rv   ru   r#   r#   r$   Ú!test_merge_on_ints_floats_warningþ  s    z1TestMergeDtypes.test_merge_on_ints_floats_warningc                 C   st   t dtddgtd�iƒ}t dddgiƒ}t dddgitd�}t||dd�}t ||¡ t||dd�}t ||¡ d S ©Nrf   TFr(   rx   )r
   r   r4   r   rr   rs   ©r\   rR   rS   rv   ru   r#   r#   r$   Ú(test_merge_incompat_infer_boolean_object  s    z8TestMergeDtypes.test_merge_incompat_infer_boolean_objectc                 C   sx   t dtddtjgtd�iƒ}t dddgiƒ}t dddgitd�}t||dd�}t ||¡ t||dd�}t ||¡ d S r±  )r
   r   r   r5   r4   r   rr   rs   r²  r#   r#   r$   Ú5test_merge_incompat_infer_boolean_object_with_missing!  s    zETestMergeDtypes.test_merge_incompat_infer_boolean_object_with_missingzdf1_vals, df2_valsr   rH   rI   rý   FTr(   c                 C   s\   t d|iƒ}t d|iƒ}t||dgd�}t|jjƒs8t‚t||dgd�}t|jjƒsXt‚d S )Nr  rx   )r
   r   r   r  r)   r�   )r\   Údf1_valsÚdf2_valsrR   rS   ru   r#   r#   r$   Ú!test_merge_incompat_dtypes_are_ok-  s    z1TestMergeDtypes.test_merge_incompat_dtypes_are_okr™  ra   rš  r  Ú1Ú2z1/1/2011r  rE  z
2011-01-01z
2011-01-02Z20130101)r4  r-   r3  c              	   C   sÀ   t d|iƒ}t d|iƒ}d|d j› d|d j› d�}t |¡}tjt|d�� t||dgd� W 5 Q R X d|d j› d|d j› d�}t |¡}tjt|d�� t||dgd� W 5 Q R X d S )Nr  zYou are trying to merge on z and z9 columns. If you wish to proceed you should use pd.concatr�   rx   )r
   r)   ÚreÚescaper“   r”   r–   r   )r\   rµ  r¶  rR   rS   r—   r#   r#   r$   Ú test_merge_incompat_dtypes_errorE  s    ÿ
ÿ
z0TestMergeDtypes.test_merge_incompat_dtypes_errorzexpected_data, howr¤   r‹   rm   ri   c           	      C   s`   t dgdg|d�}t dgdg|d�}t|||d�}tt|ƒƒ}t ||dg|d�}t ||¡ d S )N)r&   ÚidrÀ   ©rG   r¹   ©rl   rˆ   r)   ©r
   r   r   r   rr   rs   )	r\   Úany_numeric_ea_dtyper„   Úexpected_datarŸ  r   ru   Z	exp_indexrv   r#   r#   r$   Útest_merge_EA_dtypeu  s       ÿz#TestMergeDtypes.test_merge_EA_dtypec           	      C   s`   t dgdg|d�}t dgdg|d�}t|||d�}tt|ƒƒ}t ||dg|d�}t ||¡ d S )N)rH   r½  rÀ   )rI   r¹   r¿  rÀ  )	r\   r„   rÂ  Zany_string_dtyperŸ  r   ru   Zexp_idxrv   r#   r#   r$   Útest_merge_string_dtype‰  s       ÿz'TestMergeDtypes.test_merge_string_dtypezhow, expected_datarN   rO   c                 C   s\   t ddgddgdœƒ}t ddgddgdœƒ}t|||d	�}t |d
ddgd�}t ||¡ d S )NTFr&   rO   ©r  r  rM   rN   ©r  r›  r¹   r  r  r›  r³   rq   )r\   r„   rÂ  rR   rS   ru   rv   r#   r#   r$   Útest_merge_bool_dtype�  s
    z%TestMergeDtypes.test_merge_bool_dtypec           	      C   sÎ   t ddddd gdddddgd	œt ¡ d
�}| ¡ }t dddtjdgdddtjdgdœ|d
�}| ¡ }t||dg|d�}t ||¡ t ||¡ tt	 
d¡t ¡ t	 
d¡gt dddg¡d�}t |j|¡ d S )Nr¸  r¹  Ú3Ú4Ú5Ú6Ú7Ú8)©Úlvl0zlvl1-a©rÏ  zlvl1-b)Údatar)   Ú9Z11)rÎ  ©rÏ  zlvl1-crÎ  )ri   rm   ry   r„   ÚOrÐ  rÓ  rk   )r
   r0   ZStringDtyper­   ZNAr   rr   rs   r   r   r)   r   r“  r¨   rå   )	r\   rØ   Zstring_dtyperR   rZ  rS   r[  rž   rv   r#   r#   r$   Útest_merge_ea_with_string®  s0    þûþûÿþz)TestMergeDtypes.test_merge_ea_with_stringzleft_empty, how, exp)Fri   ri   )Frm   Úempty)Fr‹   rÖ  )Fr¤   ri   )FÚcrossÚempty_cross)Tri   rÖ  )Trm   rm   )Tr‹   rÖ  )Tr¤   rm   )Tr×  rØ  c                 C   sú   t ddgddgdœƒ}t dgdgdœdd	�}|r<| d
¡}n
| d
¡}|j||d�}|dkr~t ddgddgtjtjgdœƒ}nl|dkr t tjgdgdgdœƒ}nJ|dkrÎt dddgdd�}|rê|dddg }n|dkrêt ddddgdd�}t ||¡ d S )NrG   r&   rM   rN   rÅ  rO   rÆ  r'   r(   r   r¹   ri   )r  r  r›  rm   )r  r  r›  rÖ  r  r  r›  rÀ   rØ  ZA_xZA_y)r
   Úheadr   r   r5   rr   rs   )r\   Z
left_emptyr„   r|   ri   rm   ru   rv   r#   r#   r$   Útest_merge_emptyÏ  s"    
"z TestMergeDtypes.test_merge_emptyN)$r  r	  r
  r“   r�  r‘  r   r~   rž  r   r'   rš  ZintcZint16Zint8Zuint8rv  Zfloat32Zfloat16r¦  r«  r­  r°  r³  r´  r4   rº   r·  r0   r6  r¼  rÃ  rÄ  rÇ  rÕ  rÚ  r#   r#   r#   r$   r”  £  sº    ÿ
 ÿ&  ýþ
úþ
þþóþ

üþ	

üþ	
üþ	
!öþr”  c                   C   sN   t j d¡ ttt jjddgdd�ƒ tddgƒ¡t jjdddgdd�d	œƒS )
NéÒ  r+   r    )r^   rê   ÚoneÚtwoÚthreer¨  )r   r   Úseedr
   r   Úchoicer~   ÚCDTr#   r#   r#   r$   ri   ÷  s    
ÿüÿri   c                   C   s4   t j d¡ ttddgƒ tddgƒ¡ddgdœƒS )NrÛ  r+   r    r&   rG   )r©  ÚZ)r   r   rß  r
   r   r~   rá  r#   r#   r#   r$   rm     s    "ÿrm   c                
   @   sþ   e Z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„ dd„ dd„ g¡dd„ ƒZdd„ Zdd„ Zej 	d	d
dg¡ej 	ddd
d
dgd
dgd
dgfddddgddgddgfddddgddgddgfg¡d d!„ ƒƒZd"d#„ Zd$S )%ÚTestMergeCategoricalc                 C   sV   t ||dd�}|j ¡ }ttddgd�t d¡t d¡gdddgd	�}t ||¡ d S )
Nr©  rx   r+   r    rU  rÔ  ZY_xZY_yrk   ©	r   rå   rL  r   r   r   r)   rr   r¨   )r\   ri   rž   ru   rv   r#   r#   r$   Útest_identical  s    
þz#TestMergeCategorical.test_identicalc                 C   sV   t ||dd�}|j ¡ }ttddgd�t d¡t d¡gddd	gd
�}t ||¡ d S )Nr©  rx   r+   r    rU  rÔ  r'   rª  râ  rk   rä  ©r\   ri   rm   rž   ru   rv   r#   r#   r$   Ú
test_basic  s    
ýúzTestMergeCategorical.test_basicc                 C   sD  t ddddddœddddddœdœƒ}t d	d	d	d	d	dœd
d
d
d
d
dœdœƒ}t||dddd�}| ¡ }| ¡ }|d  d¡|d< t||dddd�}|d  tdgƒ¡|d< t ||¡ | ¡ }|d  d¡|d< t||dddd�}t ||¡ | ¡ }|d  d¡|d< | ¡ }|d  d¡|d< t||dddd�}t ||¡ d S )NrH   rI   ra   rb   rc   )r   r&   rG   rM   rN   Únullr«   rÉ   rÊ   rª   ri   )r„   rƒ   r†   r–  )r
   r   r­   r~   r   rr   rs   )r\   rm   ri   r]   rv   Zcrightru   Zcleftr#   r#   r$   Útest_merge_categorical&  s6    þÿþÿz+TestMergeCategorical.test_merge_categoricalc                 C   s–   t tdddgdddgd�dddgdœƒ}t tdddgdddgd�d	d
dgdœƒ}t||dgd�}t tdddgƒdddgdd
d	gdœƒ}t ||¡ d S )Nr  r  r›  rU  ZA0ÚB0ZC0)ÚFooÚLeftZC1ÚB1ÚA1)rë  ÚRightrë  rx   )rë  rì  rï  rd  r  r#   r#   r$   Ú'tests_merge_categorical_unordered_equalQ  s$    þÿþÿýÿz<TestMergeCategorical.tests_merge_categorical_unordered_equalÚorderedTFc                 C   sØ   t ddg|d�}tdddgtdddg|d�ddd	gd
œƒ ddg¡}tdddgtdddg|d�dddgdœƒ ddg¡}t||dddd�}tdddgtdddg|d�ddd	gddtjgdœƒ ddg¡}t ||¡ d S )NZP2ZP1©rV  rñ  r›  r  r(   r   r&   rG   )r½  ÚprH   r½  ró  r  r^   r  rì   )r½  ró  rŸ  ri   Tr™   g      &@g      (@)r½  ró  rH   rŸ  )	r   r
   r   r�   r   r   r5   rr   rs   )r\   rñ  ZpcatrR   rS   ru   rv   r#   r#   r$   Ú5test_multiindex_merge_with_unordered_categoricalindexj  s8    ýÿúýÿú
üÿùzJTestMergeCategorical.test_multiindex_merge_with_unordered_categoricalindexc                 C   sš   |j |j d¡d�}t||dd�}|j ¡ }ttddgd�t 	d¡td	d
gd�gdddgd�}t
 ||¡ |jj |jj¡s€t‚|jj |jj¡s–t‚d S )Nr–  )râ  r©  rx   r+   r    rU  rÔ  r&   rG   rª  râ  rk   )Úassignrâ  r~   r   rå   rL  r   r   r   r)   rr   r¨   r©  rô   Z#_categories_match_up_to_permutationr�   ræ  r#   r#   r$   Útest_other_columns‡  s    
ýúz'TestMergeCategorical.test_other_columnsÚchangec                 C   s   | S r   r#   r:   r#   r#   r$   r<   ž  r=   zTestMergeCategorical.<lambda>c                 C   s   |   tdddgƒ¡S )Nr+   r    Zbah©r~   rá  r:   r#   r#   r$   r<   Ÿ  r=   c                 C   s   |   tdd�¡S )NT©rñ  rø  r:   r#   r#   r$   r<      r=   c           	      C   s‚   ||j  d¡ƒ}|j|d�}t|j jjƒs.t‚t||d|d�}|j 	¡ }t
t d¡t d¡t d¡gdddgd	�}t ||¡ d S )
Nr4   )r©  r©  rµ   rÔ  r'   rª  râ  rk   )r©  r~   rõ  r   rô   r)   r�   r   rå   rL  r   r   rr   r¨   )	r\   r÷  rØ   ri   rm   r©  rž   ru   rv   r#   r#   r$   Útest_dtype_on_merged_different›  s    
 ÿz3TestMergeCategorical.test_dtype_on_merged_differentc                    sŽ   d‰ t dddddddd	d
dg
ˆ  dddddgd ˆ  ‡ fdd„dD ƒ‡ fdd„dD ƒdœƒ}| dd„ ¡}t||t|jƒd�}t ||¡ d S )NrO   rH   rI   ra   rb   rc   rÉ   rÊ   rË   rÑ   Újr  Úwr;   rÃ   r×   rG   c                    s$   g | ]}|gd  ˆ  D ]}|‘qqS r¾  r#   ©rx  ZeachÚletter©r  r#   r$   ry  ¼  s    þzKTestMergeCategorical.test_self_join_multiple_categories.<locals>.<listcomp>)r  r!   Úuró  Úoc                    s    g | ]}|gˆ  D ]}|‘qqS r#   r#   rý  rÿ  r#   r$   ry  Á  s    ó)
ZaaZbbÚccÚddÚeeÚffZggÚhhÚiiZjjrp  c                 S   s
   |   d¡S )Nr–  )r~   r:   r#   r#   r$   r<   Õ  r=   zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>rx   )r
   Úapplyr   r   rˆ   rr   rs   )r\   r]   ru   r#   rÿ  r$   Ú"test_self_join_multiple_categories´  s    
þ
þøÿz7TestMergeCategorical.test_self_join_multiple_categoriesc                 C   s,  t tdddƒdgtdddƒdggddgd�}|d  d	¡|d< t tdddƒdgtddd
ƒdggddgd�}|d  d	¡|d< t t d¡ ¡ ddgt d¡ ¡ dtjgt d¡ ¡ tjdggdddgd�}t||ddgd�}t 	||¡ t t d¡ ¡ ddggdddgd�}t||ddgd�}t 	||¡ d S )NiÑ  r&   r®  rG   çÍÌÌÌÌÌô?r   Znum2r³   r–  rM   çffffffö?Znum4ru  rz  r{  r¤   r@  r‹   )
r
   r   r~   r0   r1   r   r5   r   rr   rs   )r\   r]   rS   Zexpected_outerZresult_outerZexpected_innerZresult_innerr#   r#   r$   Útest_dtype_on_categorical_datesÜ  s2     ÿ ÿýúþz4TestMergeCategorical.test_dtype_on_categorical_datesz.category_column,categories,expected_categoriesrG   r&   ÚFalseÚTruec           	      C   s’   t ddddg|dœƒ}|d  t||d�¡|d< t ddgddgd	œƒ}| |¡}t ddg|ddgd
œƒ}|d  t||d�¡|d< t ||¡ d S )Nr&   rG   rM   rN   )r½  rf  rf  rù  rÛ   )r½  Únum)r½  rf  r  )r
   r~   rá  r   rr   rs   )	r\   Zcategory_columnrV  Zexpected_categoriesrñ  rR   rS   ru   rv   r#   r#   r$   Ú/test_merging_with_bool_or_int_cateorical_columnü  s    
zDTestMergeCategorical.test_merging_with_bool_or_int_cateorical_columnc                 C   s\   t tddtjgdd�ddœƒ}t||dd�}t tddtjgdd�dddœƒ}t ||¡ d S )	Nr&   rG   r*   r(   rÅ  r  rx   )r  ÚB_xZB_y)r
   r   r   r5   r   rr   rs   )r\   r]   ru   rv   r#   r#   r$   Útest_merge_on_int_array  s    ÿz,TestMergeCategorical.test_merge_on_int_arrayN)r  r	  r
  rå  rç  ré  rð  r“   r�  r‘  rô  rö  rú  r	  r  r  r  r#   r#   r#   r$   rã    s6   
+
ýþ
( ýþrã  c                   C   s   t ddddgidddgd�S )NrH   r¸   r^   r   rG   r&   rk   rQ   r#   r#   r#   r$   rˆ    s    rˆ  c                   C   s   t ddddgidddgd�S )	NrI   é,  éd   r¬  rM   r&   rG   rk   rQ   r#   r#   r#   r$   r‰  !  s    r‰  c                   @   sr  e Zd Zej dddeddgddgdœd	d
gd�fddeddgddgdœd
d	gd�fddedddgddejgdœd	d
dgd�fddedddgejddgdœdd
d	gd�fddeejddgdddgdœdd
d	gd�fddeddejgdddgdœd
d	dgd�fddedddejgejdddgdœdd
d	dgd�fddedddejgejdddgdœdd
d	dgd�fg¡dd„ ƒZ	dS )ÚTestMergeOnIndexeszhow, sort, expectedr‹   Fr¸   r^   r¬  r  rª   rG   r&   rk   Tri   r   rm   r  rM   r¤   c                 C   s$   t ||dd||d�}t ||¡ d S )NT)ro   rp   r„   r…   rz   )r\   rˆ  r‰  r„   r…   rv   ru   r#   r#   r$   Útest_merge_on_indexes'  s    0     ÿz(TestMergeOnIndexes.test_merge_on_indexesN)
r  r	  r
  r“   r�  r‘  r
   r   r5   r  r#   r#   r#   r$   r  &  sV   ""$ý$ý ÿý ÿý
þý	
þýÝþ/r  rl   c                 C   s   g | ]}t d dg|dd�‘qS )r&   rG   Ú	index_colr8   )r   rw  r#   r#   r$   ry  _  s     ry  r  r  r  )rV  r9   rG   )ÚstartÚstopr9   r,   z
2018-01-02r¥   c                 C   s   t | ƒj› d| j› d�S )Nú[r&  )Útyper  r)   r:   r#   r#   r$   r<   e  r=   )r?   c                 C   sb   t dddgi| d�}t dddgi| d�}|j|dgd	�}t ddgddgd
œ| d�}t ||¡ d S )NÚ	left_datar&   rG   rk   Ú
right_datar—  r˜  r  rx   )r  r  rq   )rl   ri   rm   ru   rv   r#   r#   r$   Útest_merge_index_types]  s
    r  z-on,left_on,right_on,left_index,right_index,nmr¤   r‹   F)NNNTTr  T)NNNTTNc              
   C   sø   t dddddgitjddgddggd	d
gd�d�}tddddgtjddgddggd	d
gd�|d�}t ddgddgdœtjddgdggd	d
gd�d�}|d k	rÀt||| ||||d�}	t |	|¡ n4d}
tjt	|
d�� t||| ||||d�}	W 5 Q R X d S )Nr  r&   rG   rM   rN   rH   rI   r   r¤   r‹   ©Únamesrk   r%  rÅ  )ry   rƒ   r†   ro   rp   z$Cannot merge a Series without a namer�   )
r
   r   Úfrom_productr   r   rr   rs   r“   r”   r–   )ry   rƒ   r†   ro   rp   ÚnmrH   rI   rv   ru   r—   r#   r#   r$   Útest_merge_seriess  sF    þ
ýþù	ùr#  c               	   C   s’   t dddddgitjddgddggd	d
gd�d�} tddddgtjddgddggd	d
gd�dd�}tjtdd�� t| |d	d
gd� W 5 Q R X d S )Nr  r&   rG   rM   rN   rH   rI   r   r¤   r‹   r  rk   )r  r›  r%  z-Not allowed to merge between different levelsr�   rx   )r
   r   r!  r   r“   r”   r   r   rª   r#   r#   r$   Útest_merge_series_multilevel¨  s    þ
ý ÿr$  z!col1, col2, kwargs, expected_colsÚsuffixes)Ú Ú_dupr  Z0_dup)Nr'  )Ú_xÚ_yZ0_xZ0_yr(  r)  rH   )Nr)  rý   )r(  Nz0.0_xrI   Úb_yrk  )Nr(  )Z_aNZ0_arl  c                 C   sŽ   t | dddgiƒ}t |dddgiƒ}t ddgddgddgg|d�}|j|fddd	œ|—Ž}t ||¡ t||fddd	œ|—Ž}t ||¡ d S )
Nr&   rG   rM   rN   rO   r¢   r³   Trn   rq   )rJ   rc  ÚkwargsZexpected_colsrH   rI   rv   ru   r#   r#   r$   Útest_merge_suffixº  s    r,  zhow,expectedr  r¬  r  é<   éF   éX  é¼  é   )r  rí  ZB2r&   r‡  c                 C   sb   t dddgdddgdœƒ}t dddgd	d
dgdœƒ}t||d| dd�}dddg|_t ||¡ d S )Nr  r¬  r&   r-  r.  r‡  rÅ  r  r/  r0  r1  r  )r(  r(  )ry   r„   r%  r  )r
   r   rˆ   rr   rs   )r„   rv   rˆ  r‰  ru   r#   r#   r$   Útest_merge_duplicate_suffixÚ  s
    r2  zcol1, col2, suffixes)rH   rH   )NN)rH   rH   )r&  N)r   r   )Nr&  c              	   C   sX   t | dddgiƒ}t |dddgiƒ}d}tjt|d�� t||dd|d	� W 5 Q R X d S )
Nr&   rG   rM   rN   rO   z'columns overlap but no suffix specifiedr�   T©ro   rp   r%  ra  )rJ   rc  r%  rH   rI   r—   r#   r#   r$   Útest_merge_suffix_errorø  s
    r4  rÞ   c              	   C   sT   t ddddgiƒ}t ddddgiƒ}tjtdd	�� t||d
d
| d� W 5 Q R X d S )NrH   r&   rG   rM   rI   rN   rO   zPassing 'suffixes' as ar�   Tr3  )r
   r“   r”   Ú	TypeErrorr   )r%  rH   rI   r#   r#   r$   Útest_merge_suffix_raises	  s    r6  zcol1, col2, suffixes, msg)rH   rH   rm  z(too many values to unpack \(expected 2\)z1not enough values to unpack \(expected 2, got 1\)c              	   C   sT   t | dddgiƒ}t |dddgiƒ}tjt|d�� t||dd|d� W 5 Q R X d S )	Nr&   rG   rM   rN   rO   r�   Tr3  ra  )rJ   rc  r%  r—   rH   rI   r#   r#   r$   Útest_merge_suffix_length_error	  s    r7  Ú	cat_dtyperÜ  rÝ  Úreversec           	      C   sô   t dddgdd�t dddgdd�dœ}ttdddgƒ |d ¡dd	d
gdœƒ d¡}dddg}dd	d
g}|r|| ¡  | ¡  tt|ƒ ||  ¡|dœƒ d¡}|j|ddd�}tdd	d
gdd	d
gtdddgƒ |d ¡dœƒ d¡}t ||¡ d S )NrH   rI   ra   Frò  )rÜ  rÝ  rÜ  r&   rG   rM   ©r+   ri   r+   ©r+   rm   Trn   ©ri   rm   r+   )	r   r
   r   r~   r�   r9  r   rr   rs   )	r8  r9  Z
cat_dtypesrR   Zdata_fooZ
data_rightrS   ru   rv   r#   r#   r$   Útest_merge_equal_cat_dtypes	  s8    þ"ÿþ

ÿþýÿúr=  c                  C   s®   t dddgdd�} ttddgƒ | ¡ddgdœƒ d	¡}ttdddgƒ | ¡d
ddgdœƒ d	¡}|j|ddd�}tddgd
dgtddgƒ | ¡dœƒ d	¡}t ||¡ d S )NrH   rI   ra   Frò  r&   rG   r:  r+   rM   r;  Trn   r<  )r   r
   r   r~   r�   r   rr   rs   )r8  rR   rS   ru   rv   r#   r#   r$   Útest_merge_equal_cat_dtypes2D	  s$    ÿþÿþ ÿþr>  c                  C   sj   t dtt dd¡t dd¡gdd�iƒ} |  ¡ }|d  d¡|d< t|| ddd	�}|  ¡ }t ||¡ d S )
NrH   r   r&   rG   Úintervalr(   r–  r‹   r@  )	r
   r   r0   ZIntervalr­   r~   r   rr   rs   )rm   ri   ru   rv   r#   r#   r$   Útest_merge_on_cat_and_ext_arrayZ	  s    "ÿr@  c            	         sÈ   ddddg} dddg}t j| |fdd	gd
�}t|d�}d|d< t|d�}d|d< d‰ d‰|j|dˆ ˆfd�}‡ fdd„| D ƒ‡fdd„| D ƒ }t j||gdd	gd
�}t|d�}d|d< t ||¡ d S )NrH   rI   ra   rb   r¸  r¹  rÈ  r¤   r‹   r  r³   r&  r½  r(  r)  ©ry   r%  c                    s   g | ]}|ˆ  ‘qS r#   r#   ©rx  rþ  )Úl_sufr#   r$   ry  |	  s     z1test_merge_multiindex_columns.<locals>.<listcomp>c                    s   g | ]}|ˆ  ‘qS r#   r#   rB  )Úr_sufr#   r$   ry  |	  s    )r   r!  r
   r   rr   rs   )	ÚlettersÚnumbersrl   Zframe_xZframe_yru   Zexpected_labelsr~  rv   r#   )rC  rD  r$   Útest_merge_multiindex_columnsh	  s(    


ÿ ÿ
rG  c                  C   s‚   t dddgdddgdœƒ} t dddgt d	d
dg¡dœƒ}t| |ddd�}t dddgdddgt d	d
dg¡dœƒ}t ||¡ d S )NrH   rI   ra   r¸  r¹  rÉ  )r;   rÃ   rÈ  Ú2000Z2001Z2002)rÃ   r×   ri   rÃ   r@  r6   )r;   rÃ   r×   )r
   r0   rA  r   rr   rs   ©rR   rS   ru   rv   r#   r#   r$   Ú test_merge_datetime_upcast_dtypeˆ	  s    ÿýÿrJ  Ún_categoriesrO   é€   c                 C   sš   t dgtt| ƒƒ ƒ}tt| d ƒdg|d�}tdggdgt dgtt| ƒƒd�d�}t||dddd	�}td
d„ t| d ƒD ƒddg|d�}t ||¡ d S )Nr   r&   r_   rH  r¢   rU  ri   Tr™   c                 S   s&   g | ]}|d k r|dgn|t jg‘qS )rG   g      @)r   r5   )rx  rÑ   r#   r#   r$   ry  ¨	  s     z9test_categorical_non_unique_monotonic.<locals>.<listcomp>r¦   r§   )r	   r   r   r
   r   rr   rs   )rK  ro   rR   rS   ru   rv   r#   r#   r$   Ú%test_categorical_non_unique_monotonic™	  s    ýýrM  c                  C   s¸  t ddddddgdddgƒddddddgdœ} t| ƒ} t ddddddgdddgƒddddddgddd	d
ddgdœ}t|ƒ ddg¡d }t| | ¡ ddgddgdd�}|jddgdd�}| j|ddgd�}t ||¡ t ddddddgdddgdd�ddddddgdœ} t| ƒ} t ddddddgdddgdd�ddddddgddd	d
ddgdœ}t|ƒ ddg¡d }t| | ¡ ddgddgdd�}|jddgdd�}| j|ddgd�}t ||¡ d S )NrH   rI   ra   r   r&   )ÚCat1ÚInt1r®  g333333ó?r
  r  r  gš™™™™™ù?)ÚCatÚIntÚFactorrP  rQ  rR  rN  rO  ri   r¼   )Zaxisrx   Trù  )	r   r
   r�   r   r   Údropr�   rr   rs   )rH   rI   rv   ru   r#   r#   r$   Ú&test_merge_join_categorical_multiindex¯	  s\    þýû  ÿü  ÿûûrT  Úfuncr   Z
merge_asof)r+  Úerr_msg)rƒ   ro   rƒ   ro   )r†   rp   r†   rp   c              	   C   sx   t ddgddgdœƒ}t ddgddgdœƒ}d	|d
 › d|d › d�}tjt|d�� tt| ƒ||f|Ž W 5 Q R X d S )Nr&   rG   rM   rN   rª   rO   r¢   ri  zCan only pass argument "r   ú" OR "z" not both\.r�   ©r
   r“   r”   r   Úgetattrr0   ©rU  r+  rV  ri   rm   r—   r#   r#   r$   Ú/test_merge_join_cols_error_reporting_duplicatesç	  s
    
r[  c              	   C   sx   t ddgddgdœƒ}t ddgddgdœƒ}d	|d
 › d|d › d�}tjt|d�� tt| ƒ||f|Ž W 5 Q R X d S )Nr&   rG   rM   rN   rª   rO   r¢   ri  zMust pass "r   rW  z"\.r�   rX  rZ  r#   r#   r$   Ú,test_merge_join_cols_error_reporting_missingø	  s
    
r\  r+  c              	   C   sj   t ddgddgdœƒ}t ddgddgdœƒ}d	}tjt|d
��" tt| ƒ||fddi|—Ž W 5 Q R X d S )Nr&   rG   rM   rN   rª   rO   r¢   ri  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r�   ry   rH   rX  )rU  r+  ri   rm   r—   r#   r#   r$   Ú1test_merge_join_cols_error_reporting_on_and_index	
  s    
ÿr]  c                  C   sv   t ddgddgdœƒ} t ddgddgdœƒ}t| |dddd�}t ddgddgddgddgddgdœƒ}t ||¡ d S )	Nr&   r+   )r;   r×   rm   Tr;   )r„   ro   r†   )r;   Zx_xZz_xZx_yZz_yrq   ©ri   rm   ru   rv   r#   r#   r$   Útest_merge_right_left_index
  s    ûÿ	r_  c                  C   s�   t dgdgdœƒ ddg¡} t ddgiƒ dg¡}t g g dœtjd� ddg¡}t| |dgdd�}t ||¡ t|| ddgd	�}t ||¡ d S )
Nr&   rG   rª   rH   rI   r(   TrÖ   rÕ   )r
   r�   r   r'   r   rr   rs   )rR   rS   rv   ru   r#   r#   r$   Ú$test_merge_result_empty_index_and_on.
  s    r`  c               	   C   s€   t dddgdddœƒ} t dddgddœƒ}tjtdd�� t| |dd	� W 5 Q R X tjtdd�� t|| dd
d� W 5 Q R X d S )Nr&   rG   rM   )rH   rI   Úb_xrª   ú(Passing 'suffixes' which cause duplicater�   rH   rx   )r)  r(  rA  ©r
   r“   r”   r   r   rÞ   r#   r#   r$   Ú.test_merge_suffixes_produce_dup_columns_raises:
  s    rd  c                  C   sp   t dddgdddggdddgd�} t ddgddœƒ}t| |dd�}t ddddggdd	d	d
gd�}t ||¡ d S )Nr&   rG   rH   rI   r³   rM   rª   rx   ra  r*  rq   r^  r#   r#   r$   Ú3test_merge_duplicate_columns_with_suffix_no_warningF
  s
    "re  c               	   C   sf   t ddddgddddggddddgd�} t ddgddœƒ}tjtd	d
�� t| |dd� W 5 Q R X d S )Nr&   rG   rH   rI   ra  r³   rM   rª   rb  r�   rx   rc  rÞ   r#   r#   r$   ÚItest_merge_duplicate_columns_with_suffix_causing_another_duplicate_raisesP
  s    (rf  c                  C   sŠ   t ddgddggtddgƒd�} t dd	gd
dggddgd�}t|| dddd�}t dd	ddgd
dddggtddddgƒd�}t ||¡ d S )Nr&   rG   rM   rN   rH   g     €\@r³   rÛ   r^   r  rì   r;   rÃ   r‹   Tr™   ©r
   r   r   rr   rs   rI  r#   r#   r$   Ú%test_merge_string_float_column_resultY
  s      ÿrh  c               	   C   sX   t dgdgdgd�} t dgdgdgd�}tjtdd�� t| |dgdd	� W 5 Q R X d S )
Nr©  r›  é   )rÑ  rˆ   rl   iç  zCan only pass argumentr�   T)ry   ro   rc  )Zdf_1Zdf_2r#   r#   r$   Ú/test_mergeerror_on_left_index_mismatched_dtypesd
  s    rj  c                  C   sb   t tdƒƒ} t| tdƒdœƒ}tdtddƒiƒ}t||| dd�}t||| jdd�}t ||¡ d S )NrM   rÅ  r›  r¢   r  r’   )r	   r   r
   r   Ú_datarr   rs   )Úcirm   ri   Úresrv   r#   r#   r$   Ú#test_merge_on_left_categoricalindexl
  s    rn  r)   r*   c                 C   sä   t ddgddgdœ| d�}t tjtjgddgdœ| d�}t||dd	d
�}t ddtjtjgddtjtjgtjtjddgdœ| d�}t ||¡ t||dd	d
�}t tjtjddgddtjtjgtjtjddgdœ| d�}t ||¡ d S )Nr&   rG   )rf   rJ   r(   rM   rN   )rf   rc  rf   r¤   rµ   )rf   rJ   rc  )rf   rc  rJ   r�  )r)   ri   rm   ru   rv   r#   r#   r$   Útest_merge_outer_with_NaNx
  s(    ýúýúro  c                  C   sh   t ddgitdgdd�d�} t ddgitdgdd�d�}t| |ddd�}t dgddœƒ}t ||¡ d S )	NrH   r&   ra   r¥   rk   rb   r’   )rk  rl  rg  r^  r#   r#   r$   Ú test_merge_different_index_names•
  s
    rp  c                 C   sh   t dddgddœ| d�}t dddgddœ| d�}|j||d�}t dddgdddœ| d�}t ||¡ d S ©	Nr&   rG   rM   rª   r(   ri  r¹   rm  rq   ©rÁ  rØ   ri   rm   ru   rv   r#   r#   r$   Útest_merge_eaž
  s
    rs  c                 C   s�   t dddgddœ| d�}t dddgddœ|  ¡ d�}|j||d�}t tdddg| d�tdddg| d�tdddg|  ¡ d�dœƒ}t ||¡ d S rq  )r
   Úlowerr   r   rr   rs   rr  r#   r#   r$   Útest_merge_ea_and_non_ea§
  s    ýÿru  r'   úint64[pyarrow]c                 C   sr   t  d¡ tdddgi| d�}tdddgidd�}| |¡}| ¡ }t ||¡ | |¡}| ¡ }t ||¡ d S )NZpyarrowrH   r&   rG   r(   rv  )r“   Zimportorskipr
   r   r­   rr   rs   )r)   r]   rS   ru   rv   r#   r#   r$   Ú!test_merge_arrow_and_numpy_dtypes¶
  s    


rw  r„   r/   zAmerica/Chicagoc                 C   s:  t jddd| d�t jddd| d�t jddd| d�g}t|d d… dd	gd
œƒ}|d j d¡|d< t|dd … dd	gdœƒ}|d j d¡|d< t|dd	tjgtjdd	gdœƒ}|d j d¡|d< |dkrâ|jdg jdd�}n8|dkrú|jddg }n |dk�r|jddg jdd�}|j	|d|d�}t
 ||¡ d S )Niç  rO   rì   r.   é   é   rG   r—  r˜  )r  rH   r  r   r&   )r  rI   r  )r  rH   rI   r‹   T)rS  ri   r   rm   rµ   )r0   r1   r
   rÅ   Zas_unitr   r5   Zilocr   r   rr   rs   )r/   r„   ÚvalsrR   rS   rv   ru   r#   r#   r$   Ú(test_merge_datetime_different_resolutionÅ
  s$    ý 
r{  )r   r   )Yr   r   r   rº  Únumpyr   r“   Zpandas.core.dtypes.commonr   r   Zpandas.core.dtypes.dtypesr   Zpandasr0   r   r	   r
   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingrr   Zpandas.api.typesrá  Zpandas.core.reshape.concatr   Zpandas.core.reshape.merger   r   r%   r2   r7   r�  rD   rE   rF   rT   rU   rÍ   r”  ri   rm   rã  rˆ  r‰  r  r�  r‘  r’  r  r#  r$  r,  r5   r2  r4  r6  Útupler7  r=  r>  r@  rG  rJ  rM  rT  r[  r\  r]  r_  r`  rd  re  rf  rh  rj  rn  ro  rp  rs  ru  rw  r{  r#   r#   r#   r$   Ú<module>   s`  4
	



          2  V

  

7ýÿø

øþ
(óþ
ÿþ
ýÿþùþ
	þ

þþ
# 
8þþ	þþ	þþ
	
		
