U
    `»{jbm ã                   @   s,  d dl mZm Z mZ d dl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 d dlmZ d dlmZ d dlmZm Z m!Z! d dl"m#Z# d dl$m%Z%m&Z& d	Z'd
Z(e(e'f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„ ƒZ0G dd„ dƒZ1d d!„ Z2G d"d#„ d#ƒZ3ej,d$d%„ ƒZ4ej,d&d'„ ƒZ5G d(d)„ d)ƒZ6ej,d*d+„ ƒZ7ej,d,d-„ ƒZ8G d.d/„ d/ƒZ9ej:j;d0ed1d2gd1d2gd3d4�ed5d6gd3d7�e d8d9gd3d7�e!d8d9gd3d7�ed d9d3d:�ed;d<gd3d7�gd=d„ d>�d?d@„ ƒZ<ej: ;dAdBdCgdddDdDd2fdEddBdCgddDdFd2fdddBdCgdFdDd2fdBdCgdddDdDdfdGddBdCgddDdFdfdddBdCgdFdDdfg¡dHdI„ ƒZ=dJdK„ Z>ej: ;dLd d dMdNidOdPgfd d dMdQid dPgfd d dMdRidSdTgfd d dMdUdVgidSdTgfdWd dMdXidWd gfdYdYdMdZid[dYgfd\d\dMdXid\d]gfdWdWdMdZid^dWgfdWd\dMdZidWd\gfdWdWdMd_idWd^gfd d dMd`idad gfdWdWi d^dbgfd d i dSdTgfg¡dcdd„ ƒZ?ej: ;ded'edfdgdhgdidjej@gdkdldmgdnœƒfdBedfdgd8dhgdidjdoej@gdkdlej@dmgdnœƒfg¡dpdq„ ƒZAej: ;drdsdtdug¡dvdw„ ƒZBej: ;dMd%d'hd d dxœg¡dydz„ ƒZCej: ;d{d|dWdWeDdWƒd}fg¡d~d„ ƒZEej: ;d€d�d‚g¡ej: ;dƒdFdDg¡d„d…„ ƒƒZFd†d‡„ ZGdˆd‰„ ZHdŠd‹„ ZIdŒd�„ ZJej: ;dŽd�d�g¡d‘d’„ ƒZKd“d”„ ZLej: ;d•d–d—g¡ej: ;d˜dWdFd™œdšd›gfdWdFdœœd�džgfg¡dŸd „ ƒƒZMej: ;d•d–d—g¡ej: ;d˜dšdWid�džgfd�dWidšd›gfg¡d¡d¢„ ƒƒZNej: ;d•d–d—g¡ej: ;d£dždFid›dFig¡d¤d¥„ ƒƒZOd¦d§„ ZPd¨d©„ ZQdªd«„ ZRd¬d­„ ZSd®d¯„ ZTd°d±„ ZUd²d³„ ZVej: ;d´ddµg¡d¶d·„ ƒZWd¸d¹„ ZXdS )ºé    )ÚdateÚdatetimeÚ	timedeltaN)Úis_categorical_dtypeÚis_object_dtype)ÚCategoricalDtype)
ÚCategoricalÚCategoricalIndexÚ	DataFrameÚDatetimeIndexÚIntervalIndexÚ
MultiIndexÚPeriodIndexÚ
RangeIndexÚSeriesÚTimedeltaIndex)ÚFloat64IndexÚ
Int64IndexÚUInt64Index)Úconcat)Ú
MergeErrorÚmergeé2   é   c                 C   s^   t t| ƒƒ}t t |||  ¡¡}t|ƒ|k rPt t |ƒ|d |t|ƒ …  ¡}t |¡ |S ©N)ÚlistÚrangeÚnpZasarrayÚtileÚlenÚrandomÚshuffle)ÚngroupsÚnZunique_groupsÚarr© r%   úd/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/reshape/merge/test_merge.pyÚget_test_data0   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_series;   s    ùr4   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   Únanr2   ÚNaTr%   r%   r%   r&   Úget_series_naG   s
    
ür9   c                 C   s   | j jS r   ©r+   Úname©Úxr%   r%   r&   Ú<lambda>P   ó    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_dtypeP   s    rF   c                 C   s   | j jS r   r:   r<   r%   r%   r&   r>   Y   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
    rB   rD   r%   r%   r&   Úseries_of_dtype2Y   s    rG   c                 C   s   | j jS r   r:   r<   r%   r%   r&   r>   b   r?   c                 C   s   | j S )zU
    A parametrized fixture returning a variety of Series with all NA
    values
    rB   rD   r%   r%   r&   Úseries_of_dtype_all_nab   s    rH   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é   é   é   )rL   rM   Ú	col_right©r
   )Údf1Údf2r%   r%   r&   Údfs_for_indicatork   s    ýÿrV   c                   @   s|  e Z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d'd(„ Zej d)d*d*d+œd*d,d-œd.d*d/œd.d,d0œg¡d1d2„ ƒZd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Zej d=d>d?d?d@d?d?gfd*d@d?d?d?d?gfg¡ej dAdBdCg¡dDdE„ ƒƒZ dFdG„ Z!dHdI„ Z"dJdK„ Z#dLdM„ Z$dNdO„ Z%dPdQ„ Z&ej dRdSdTdUdVdWdXdYg¡dZd[„ ƒZ'd\d]„ Z(d^d_„ Z)d`da„ Z*dbdc„ Z+ddde„ Z,dfdg„ Z-dhdi„ Z.djdk„ Z/dldm„ Z0dndo„ Z1dpdq„ Z2drds„ Z3dtdu„ Z4dvdw„ Z5dxdy„ Z6ej dAdCdzg¡ej d{e7d?d|d}gƒe7d?d|d}d~d~d~gƒfe8dd€d�gƒe8dd€d�e9j:e9j:e9j:gƒfe;d?d|d‚gƒe;d?d|d‚d~d~d~gƒfe<d?d|d‚gƒe;d?d|d‚d~d~d~gƒfe= >dƒd„d…g¡e= >dƒd„d…e?j@e?j@e?j@g¡feAdd†d‡gdSdˆ�eAdd†d‡e9j:e9j:e9j:gdSdˆ�feBd‰dŠd‹gƒeBd‰dŠd‹e9j:e9j:e9j:gƒfg¡dŒd�„ ƒƒZCdŽd�„ ZDej dAdBdCg¡d�d‘„ ƒZEd’d“„ ZFd”d•„ ZGd~S )–Ú	TestMergec                 C   sÂ   t tƒ tƒ tj t¡tj t¡dœƒ| _| j| jd dk | _t ttd d�ttd td d�tj td ¡dœƒ| _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�| _
d S )N)Úkey1Úkey2Údata1Údata2rY   r(   rQ   )r#   rI   )r"   r#   )rX   rY   ÚvaluerJ   rK   ÚcÚdÚeé   ©ÚkeyÚv1Úv2rP   ©Úindex)r
   r'   r   r    ÚrandnÚNÚdfÚNGROUPSrU   ÚleftÚright©Úselfr%   r%   r&   Úsetup_methody   s$    

üÿ
ýÿÿzTestMerge.setup_methodc                 C   sR   t ƒ }t dddgiddgdd�}t||ddd�}t dg ig dd�}t ||¡ d S )	NrJ   r(   rI   r   r)   )rf   r+   T©Ú
left_indexÚright_index©r
   r   ÚtmÚassert_frame_equal)rn   Údf_emptyZdf_aÚresultÚexpectedr%   r%   r&   Útest_merge_inner_join_empty”   s
    z%TestMerge.test_merge_inner_join_emptyc                 C   s4   t | j| jƒ}t | j| jddgd�}t ||¡ d S )NrX   rY   ©Úon)r   ri   rU   rt   ru   )rn   Ú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   rI   rO   )r   r(   rI   rO   )r
   Úastyper5   r   rt   ru   ©rn   rk   rl   rx   rw   r%   r%   r&   Útest_merge_non_string_columns¡   s    ,ÿ

z'TestMerge.test_merge_non_string_columnsc                 C   sN   | j  d¡}| j d¡}t||dd�}t| j | jdd� d¡}t ||¡ d S )NrX   rz   )ri   Ú	set_indexrU   r   rt   ru   ©rn   rk   rl   rw   rx   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 )NrJ   rK   r]   r^   r_   r`   ra   rd   rP   re   rb   Trk   F)Úleft_onrr   ÚhowÚsortrl   )Úright_onrq   r†   r‡   )	r
   r   r    rg   r   rt   ru   ÚlocÚcolumns)rn   rk   rl   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 )NrJ   rK   r]   r^   r_   r`   ra   rd   rP   re   rb   TÚinner©r…   rr   r†   rz   )rˆ   rq   r†   )r
   r   r    rg   r   Újoinr‰   rf   rt   ru   rŠ   rƒ   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| j| jdd� W 5 Q R X d}t jtjj|d�� t| j| jdd� W 5 Q R X d}t jtjj|d�� t| j| jddd	� W 5 Q R X d
}t jt|d��  t| j	| j
dgddgd� W 5 Q R X d S )Nz&Must pass right_on or right_index=True©ÚmatchT)rq   z$Must pass left_on or left_index=True)rr   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothrb   )r…   r{   z)len\(right_on\) must equal len\(left_on\)rX   rY   ©r…   rˆ   )ÚpytestÚraisesr2   Úerrorsr   r   rk   rl   Ú
ValueErrorri   rU   ©rn   Úmsgr%   r%   r&   Útest_merge_misspecifiedÛ   s    ÿz!TestMerge.test_merge_misspecifiedc              	   C   s¬   d}t jt|d��  t| j| jddddgd� W 5 Q R X d}t jt|d��  t| j| jdddgdd� W 5 Q R X t jt|d��$ t| j| j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‘   rk   FrX   rY   ©r†   rq   rr   z=left_index parameter must be of type bool, not <class 'list'>)r”   r•   r—   r   ri   rU   r˜   r%   r%   r&   Ú&test_index_and_on_parameters_confusionî   s4    ûûûz0TestMerge.test_index_and_on_parameters_confusionc                 C   sT   t | j| jdd�}| jd  ¡ d  ¡ }t|ƒ|ks8t‚d|ksDt‚d|ksPt‚d S )Nrb   rz   rI   Zv1_xZv1_y)r   rk   Zvalue_countsÚsumr   ÚAssertionError)rn   Ú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(   rI   rO   rP   )Úlkeyr\   ZquxrQ   é   r`   r   )Úrkeyr\   r¢   r¤   ÚouterT)r…   rˆ   r†   r‡   ©r;   Úvalue_xÚvalue_y)r
   r   r   r   r7   rt   Úassert_series_equal)rn   rk   rl   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(   ©rJ   rK   é
   re   r-   r¡   ©r]   r^   T©rq   rr   Úcopyr£   rJ   Zpeekaboor^   )r
   r   r   Úallrž   )rn   rk   rl   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¬   re   r-   r¡   r­   TFr®   rJ   r^   )r
   r   r   r   Zshares_memoryZ_valuesrž   )rn   Úusing_array_managerrk   rl   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(   rI   rO   rQ   ©rb   r\   r\   rb   ©rŠ   rP   r£   )rb   Úrvaluer¥   ©r{   r†   r   )rb   r\   r¶   r¶   )	r
   r   r   r   r   Úarrayr7   rt   ru   )rn   rk   rl   r|   rx   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d	ksàt‚d S )Nr(   r¬   ra   rI   é   r¥   ©r†   rb   r)   TFr   ÚboolÚval©r…   rˆ   r†   Úkey_0)r
   r   r+   rž   r   r¸   )rn   rT   rU   ri   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 t
dddddddddg	d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(   rI   rO   rQ   r´   r\   rb   r)   ©rŠ   r+   r¶   r£   r*   rP   r¥   r¾   rµ   r¿   r¦   r   T)rq   rˆ   r†   )r
   r   Úaranger¸   r   rt   r©   Znotnar°   rž   r   r)   )rn   rk   rl   rb   rŸ   r‹   r¢   r¤   r%   r%   r&   Útest_handle_join_key_pass_arrayd  s4    ý ÿ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=   rJ   re   ÚyrK   r]   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   )rn   ÚdtrT   rU   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éÜ  rQ   r(   rI   rO   rP   r=   rJ   re   rÄ   rK   r]   Úqr^   r_   ÚfÚgÚh©r   r
   Ú_check_merge)rn   rÆ   Údt2Údt3Zdt4rT   rU   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È   rQ   r(   rI   rO   r=   rJ   rK   r]   r^   re   rÄ   r_   rÊ   rË   z hÚirÍ   )rn   rÆ   rÏ   rÐ   rT   rU   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(   rI   r´   rb   rk   r·   rl   rs   )rn   rk   rl   rw   r%   r%   r&   Útest_left_merge_empty_dataframe´  s    z)TestMerge.test_left_merge_empty_dataframeÚkwargTrp   r=   ©rq   rˆ   rJ   ©r…   rr   r“   c                 C   sj   t dddgd�}t dddgd�}t ddddddgtjg td�td	�}t||fd
|i|—Ž}t ||¡ d S )NrJ   rK   r]   rµ   r=   rÄ   Úzr*   )rŠ   rf   r+   r†   )r
   r2   ÚIndexr6   r   rt   ru   )rn   Ú	join_typerÕ   rk   rl   Úexp_inrw   r%   r%   r&   Ú!test_merge_left_empty_right_empty¾  s    ýz+TestMerge.test_merge_left_empty_right_emptyc              	      st  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… }|j t¡|_‡ ‡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 )NrJ   rK   r]   rµ   r(   rI   rO   rP   rQ   r£   r`   r   é	   r=   rÄ   rØ   r*   ©rJ   rK   r]   r=   rÄ   rØ   r   c                    sH   t ˆ ˆfddi|—Ž}t || ¡ t ˆ ˆfddi|—Ž}t || ¡ d S )Nr†   r�   rk   ©r   rt   ru   ©r}   rÕ   rw   ©rk   rl   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†   rl   r¥   rß   rà   rá   r%   r&   Úcheck2ï  s    z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2Trp   rÖ   r×   r“   ©r
   r   r¸   r7   r6   rf   r   )rn   Úexp_outrÛ   râ   rã   rÕ   r%   rá   r&   Ú$test_merge_left_empty_right_notemptyÕ  s:    *ú÷þ





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(   rI   rO   rP   rQ   r£   r`   r   rÝ   rJ   rK   r]   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�   rl   rß   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†   rk   r¥   Trp   r=   rÖ   rJ   r×   r“   rß   rà   ©râ   rã   rÛ   rå   rk   rl   r%   r&   rã      s    ü
z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check2rä   rm   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´   rb   r\   rµ   r   r*   )r§   rb   r¨   r§   r¨   rz   )r
   r   Údtypesr   rt   ru   )rn   rF   rG   ri   rv   rx   Úactualr%   r%   r&   Útest_merge_empty_frame0  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´   rb   r\   rµ   ©rb   r§   r¨   r§   r¨   rz   rs   )rn   rF   rH   Zdf_leftZdf_rightrx   rê   r%   r%   r&   Útest_merge_all_na_columnB  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 j d¡dœ¡}|j	|ddd�}t	||ddd�}t
 ||¡ |j ¡ |j ¡ k ¡ �s
t‚d S )Nr   r¬   ©ÚsizerÈ   r(   é   iÛ  rI   rP   iÚ  rO   iØ  rQ   )Zvar1Zvar2Úvar3r`   )rñ   Zvar8rñ   F©r{   r‡   )r   r    Úrandintr   r
   Ú	from_dictrñ   Úuniquer‡   r   rt   ru   r°   rž   )rn   r^   ri   rñ   Únewrw   r}   r%   r%   r&   Útest_merge_nosortW  s,    









öý

zTestMerge.test_merge_nosort)r‡   ÚvaluesFr(   r   r†   rk   rl   c                 C   sB   t ddddgiƒ}|j|d||d�}t |dgd�}t ||¡ d S )NrJ   r(   r   )r{   r†   r‡   rµ   rs   )rn   r‡   rø   r†   ri   rw   rx   r%   r%   r&   Ú test_merge_same_order_left_rightu  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û   Ú_)r{   Úrsuffixç        ©r   r(   )rû   rü   Úi1_rþ   Nrü   r  rþ   F)Zcheck_dtype)r
   r�   r   r7   r‚   Úreset_indexrt   ru   ©rn   rT   rU   rw   rx   r%   r%   r&   Útest_merge_nan_right�  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   r{   r  r  )rû   r  rü   rþ   rü   r  rþ   )r
   r�   r   r7   rt   ru   r  r%   r%   r&   Útest_merge_nan_right2”  s    

üÿ
ùzTestMerge.test_merge_nan_right2c                    s@   G ‡ fdd„dt ƒ‰ ˆ | jƒ}|j| jdd�}t|ˆ ƒs<t‚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%   rm   ©ÚNotADataFramer%   r&   Ú_constructor¤  s    z=TestMerge.test_merge_type.<locals>.NotADataFrame._constructorN)Ú__name__Ú
__module__Ú__qualname__Úpropertyr  r%   r	  r%   r&   r
  £  s   r
  rX   rz   )r
   ri   r   rU   Ú
isinstancerž   )rn   Znadrw   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Ý  é   rQ   é8   r   iäW  )r^   ÚtrÆ   rµ   T)Zignore_index)
r
   rô   r   r   r   r   r   r6   rt   ru   )rn   r²   r^   ri   rw   rx   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ÚBre   Úrrk   )r   r†   ZAB)Ú0Z0r)
r   Ztimedelta64r
   r   r�   r   r2   r8   rt   ru   )rn   ÚtdÚlhsÚrhsrw   rx   r%   r%   r&   Útest_join_append_timedeltas2Â  s    
þÿz&TestMerge.test_join_append_timedeltas2c                 C   sš   t dddgiƒ}td d gddgdd�}dD ]j}| |¡ d¡}|d jdksPt‚|j|ddd	�}t ddgtjd
d
gdd�dœddgd�}t	 
||¡ q*d S )NÚ	entity_idée   éf   Údays©rf   r;   )zdatetime64[D]zdatetime64[h]zdatetime64[m]zdatetime64[s]zdatetime64[ms]zdatetime64[us]údatetime64[ns]r#  Tr×   Únatr*   ©r  r!  rµ   ©r
   r   r   Zto_framer+   rž   r   r   r¸   rt   ru   )rn   rT   Úsr+   rU   rw   r}   r%   r%   r&   Útest_other_datetime_unitÒ  s    
þûz"TestMerge.test_other_datetime_unitÚunitÚDrÌ   Úmr'  ÚmsÚusÚnsc                 C   sœ   t dddgiƒ}td d gddgdd�}d|› d�}| |¡ d¡}|d jdksTt‚|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[ú]zm8[ns]Tr×   r$  r*   r%  rµ   r&  )rn   r)  rT   r'  r+   rU   rw   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(   rI   rO   rP   rQ   r£   r`   r   rÝ   ©rb   rc   rd   rb   r-   r¡   )rb   rc   rd   Zv3Zv4rX   z;Data columns not unique: Index\(\['foo'\], dtype='object'\)r‘   )r
   rŠ   rt   ru   r   r”   r•   r   )rn   ri   rU   rx   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Ú20151010rI   r/   ©Úperiodsr1   r(   r´   Ú20151011rO   rP   rì   rb   r¥   r·   )r
   r2   Ú
date_ranger   r7   r   rt   ru   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(   rI   r3  r/   r4  r´   rO   r6  rì   rb   r¥   r·   r§   zdatetime64[ns, US/Eastern]r¨   )
r
   r2   r7  r   r8   r   rt   ru   r+   rž   r€   r%   r%   r&   Útest_merge_datetime64tz_values4  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ÚUTCr0   Z2018g      @Z2019)r   r\   Údate2r   r\   r;  rµ   r   rz   r*   )r§   Údate2_xr   r¨   Údate2_yr§   r<  r¨   r=  )
r2   ZDatetimeTZDtyper
   r3   r1   r   r   r5   rt   ru   )rn   Zdtzrl   rk   rw   rx   r%   r%   r&   Ú test_merge_on_datetime64tz_emptyO  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:00rP   ÚHzEurope/Madrid)r5  Úfreqr1   r   rµ   r(   r\   z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00rI   )r   r\   r:  r¥   ©r†   r{   r`   rO   )r   r§   r¨   )r
   r2   r7  Úto_datetimerÆ   Ztz_localizeZ
tz_convertr   r   r7   rt   ru   r  r%   r%   r&   Ú+test_merge_datetime64tz_with_dst_transitionh  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©r5  r@  Zpnum©rf   rŠ   Tr�   )rq   rr   r†   r*   rI   éÿÿÿÿr(   Zpnum_xZpnum_y©rŠ   rf   )r2   Úperiod_ranger
   r   r   r   r   r   r   r   rÂ   r)   ÚrepeatÚreshapeÚ
sort_indexrf   rt   ru   )rn   rf   ri   rU   rw   rx   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 )Nr3  rI   r*  rF  r(   r´   r6  rO   rP   rì   rb   r¥   r·   )r
   r2   rJ  r   r7   r   rt   ru   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(   rI   r3  r*  rF  r´   rO   r6  rì   rb   r¥   r·   r§   z	Period[D]r¨   )
r
   r2   rJ  r   r8   r   rt   ru   r+   rž   )rn   rk   rl   Zexp_xZexp_yrx   rw   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(   rI   rO   rP   rQ   rJ   rK   )rL   Úcol_conflict_xrN   Úcol_conflict_yrR   Ú	left_onlyÚbothÚ
right_only©Ú
categoriesÚ_mergerL   rQ  rN   rR  rR   r¥   T©r{   r†   Z	indicatorZcustom_namerµ   )	r¯   r
   r   r7   r   r   rt   ru   Úrename)
rn   rV   rT   rU   Ú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‘   rL   r¥   rQ   rY  )r”   r•   r—   r   )rn   rV   rT   rU   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 )
NrL   rk   TrY  rU  rl   rS  r�   rT  )r   rX  r°   rž   )rn   rV   rT   rU   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_indicatorrX  rL   r(   rI   zECannot use `indicator=True` option when data contains a column named z;|Cannot use name of an existing column for indicator columnr‘   r¥   TrY  )rL   Úcustom_column_namez:Cannot use name of an existing column for indicator columnra  ©r
   r”   r•   r—   r   )rn   rV   rT   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(   rJ   rK   )rL   Úcol2rO   r=   rÄ   rS  rT  rU  rV  rX  rL   rd  r¥   TrY  ©r
   r   r   rt   ru   )rn   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 )4NrJ   rK   r]   r^   ÚcatÚdogZweaselÚhorser«   rP   re   r_   ZmeowZbarkzum... weasel noise?ZnayZchirp©rJ   r]   rQ   Tz1:1)rq   rr   Úvalidate)Úa_xrK   Úa_yr]   rl  rm  rG  Z
one_to_one©rJ   rK   r]   )r{   rk  )rK   rJ   r]   rI  )rq   rˆ   rk  ÚmooZone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger‘   ÚcowrO   )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!Not a valid argument for validateZ	jibberishr   r(   )rJ   rK   r^   ©rJ   rK   r]   r^   zQMerge keys are not unique in either left or right dataset; not a one-to-one merge)r
   r   r¯   r   rt   ru   r‚   r   r”   r•   r   r—   )rn   rk   rl   Z	left_copyZ
right_copyrw   rx   Z
expected_2Z
expected_3Zleft_index_resetZright_w_dupsr™   Zleft_w_dupsZexpected_multir%   r%   r&   Útest_validationQ  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 )Nrn  Úraise)Údivider«   rz   )r
   r   Zerrstater   )rn   rJ   r%   r%   r&   Ú)test_merge_two_empty_df_no_division_error  s    z3TestMerge.test_merge_two_empty_df_no_division_errorr¥   zindex,expected_indexrI   rP   Nú
2001-01-01z
2002-02-02z
2003-03-03rO   )r(   rI   )rI   rO   )rO   rP   ú
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(   rI   ©rJ   rb   re   rK   rO   rP   rQ   rb   TrŽ   rJ   rµ   )Úinplace)r
   r   r   r7   r‚   rt   ru   )rn   r†   rf   Úexpected_indexrT   rU   rw   rx   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(   rI   rO   r   ry  rK   ©rJ   rb   rK   rJ   rb   rI  Trl   rŽ   ©r
   r   r7   r   rt   ru   r€   r%   r%   r&   Útest_merge_right_index_rightI  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 )Nrh  Úpigé(   r  )ÚanimalÚ	max_speedZquetzaléP   r‚  rƒ  r·   rl   rs   )rn   r†   Úleft_dfÚright_dfrw   rx   r%   r%   r&   Útest_merge_preserves_row_orderX  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(   rI   rO   rJ   rK   ÚabcrV  ry  r]   re   rb   Trl   rŽ   r}  r   rµ   )
r
   r   r   r	   r   r   r7   Zreindexrt   ru   rƒ   r%   r%   r&   Ú8test_merge_take_missing_values_from_index_of_other_dtyped  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º   )rP   rQ   r(   rJ   rK   r]   r^   r_   rµ   )rQ   rP   r=   rÄ   F)	r
   r   rÂ   rL  Z_mgrZarraysÚflagsZ	writeabler   )rn   rZ   r[   r$   r%   r%   r&   Útest_merge_readonlyy  s     ÿ 
ÿ
zTestMerge.test_merge_readonly)Hr  r  r  ro   ry   r~   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(  r0  r2  r8  r9  r>  rC  rN  rO  rP  r^  r_  r`  rc  rf  rr  ru  r	   r   r2   r8   r   r   r   Úfrom_tuplesr   r7   r   r   r|  r  r‡  r‰  r‹  r%   r%   r%   r&   rW   x   sÆ   		!

üþ	
1* "ÿ
 ?
" ;þÿþ  ÿþþþþæþ"
rW   c                 C   sN   dD ]D}| j ||d�}t|  ¡ | ¡ |dd�}| d¡}tj||dd� qd S )N)r�   rk   r¥   r»   T)r†   r‡   rf   F)Zcheck_names)r�   r   r  r‚   rt   ru   )r=   rÄ   r†   rw   rx   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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(   rI   ç      ð?ç       @Úuint64r*   Úint32)r  r  ÚCr*  ÚEÚFr  rz   )r
   r   r   r   r   r  r+   rž   )rn   r�  rk   rl   rw   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(   rI   r   r*   r-   r¡   rð   é   )Úk1Úk2Úv)rI   r¡   )r(   r-   rd   rQ   r`   re   r�  rž  rz   rÒ   Úfloat64Trò   Z	mergesort)Úkindrz  )r   r+   r
   r¸   rÂ   r)   r   rŽ  r�   r¯   r¡  r7   r‰   r�  rž  rt   ru   Zsort_values)
rn   rš  r›  Zdtype1Zdtype2rk   rf   rl   rw   rx   r%   r%   r&   Útest_join_multi_dtypes¬  s*    


ýÿ

z&TestMergeDtypes.test_join_multi_dtypeszint_vals, float_vals, exp_valsr(   rI   rO   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“   rs   )rn   Zint_valsZ
float_valsZexp_valsr  r  rx   rw   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º   ra   rb   rc   rµ   rI   éÈ   )rb   rd   rd   rk   r·   g      i@r1  )r
   r   r   r7   rt   ru   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(   rI   rO   r¦  çš™™™™™ñ?g      @r£  r¤  r“   )r
   rt   Úassert_produces_warningÚUserWarningr   ru   r   r7   )rn   r  r  rx   rw   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 ©Nrb   TFr*   rz   )r
   r   r6   r   rt   ru   ©rn   rT   rU   rx   rw   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   r7   r6   r   rt   ru   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   rJ   rK   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  rz   )r
   r   r   r  r+   rž   )rn   Údf1_valsÚdf2_valsrT   rU   rw   r%   r%   r&   Ú!test_merge_incompat_dtypes_are_ok  s    z1TestMergeDtypes.test_merge_incompat_dtypes_are_okr”  r]   r•  r  Ú1Ú2z1/1/2011r*  rF  z
2011-01-01z
2011-01-02Z20130101)r5  r/   r4  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‘   rz   )r
   r+   ÚreÚescaper”   r•   r—   r   )rn   r²  r³  rT   rU   r™   r%   r%   r&   Ú test_merge_incompat_dtypes_error6  s    ÿ
ÿ
z0TestMergeDtypes.test_merge_incompat_dtypes_errorzexpected_data, howr¥   r�   rl   rk   c                 C   sR   t dgdg|d�}t dgdg|d�}t|||d�}t |dg|d�}t ||¡ d S )N)r(   ÚidrÁ   ©rI   r»   rs   )rn   Zany_numeric_ea_dtyper†   Úexpected_datarš  r›  rw   rx   r%   r%   r&   Útest_merge_EA_dtypef  s
    z#TestMergeDtypes.test_merge_EA_dtypec                 C   sR   t dgdg|d�}t dgdg|d�}t|||d�}t |dg|d�}t ||¡ d S )N)rJ   rº  rÁ   )rK   r»   rs   )rn   r†   r¼  Zany_string_dtyperš  r›  rw   rx   r%   r%   r&   Útest_merge_string_dtypew  s
    z'TestMergeDtypes.test_merge_string_dtypezhow, expected_datarP   rQ   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(   rQ   ©r  r  rO   rP   ©r  r–  r»   r  r  r–  rµ   rs   )rn   r†   r¼  rT   rU   rw   rx   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È  )rk   rl   r{   r†   ÚOrÊ  rÍ  re   )r
   r2   ZStringDtyper¯   ZNAr   rt   ru   r   r   r+   r   rŽ  r©   ré   )	rn   rÚ   Zstring_dtyperT   r[  rU   r\  rŸ   rx   r%   r%   r&   Útest_merge_ea_with_string™  s0    þûþûÿþz)TestMergeDtypes.test_merge_ea_with_stringzleft_empty, how, exp)Frk   rk   )Frl   Úempty)Fr�   rÐ  )Fr¥   rk   )FÚcrossÚempty_cross)Trk   rÐ  )Trl   rl   )Tr�   rÐ  )Tr¥   rl   )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 )NrI   r(   rO   rP   r¿  rQ   rÀ  r)   r*   r   r»   rk   )r  r  r–  rl   )r  r  r–  rÐ  r  r  r–  rÁ   rÒ  ZA_xZA_y)r
   Úheadr   r   r7   rt   ru   )rn   Z
left_emptyr†   r}   rk   rl   rw   rx   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int16Zint8Zuint8r   Zfloat32Zfloat16r¢  r§  r©  r­  r°  r±  r6   r¼   r´  r2   r7  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&   rk   ã  s    
ÿüÿrk   c                   C   s4   t j d¡ ttddgƒ tddgƒ¡ddgdœƒS )NrÕ  r-   r¡   r(   rI   )r¥  ÚZ)r   r    rÙ  r
   r   r   rÛ  r%   r%   r%   r&   rl   ð  s    "ÿrl   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¥  rz   r-   r¡   rV  rÎ  ZY_xZY_yre   ©	r   ré   rM  r   r   r   r+   rt   r©   )rn   rk   rŸ   rw   rx   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¥  rz   r-   r¡   rV  rÎ  r)   r¦  rÜ  re   rÞ  ©rn   rk   rl   rŸ   rw   rx   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 )NrJ   rK   r]   r^   r_   )r   r(   rI   rO   rP   Únullr­   rÊ   rË   r«   rk   )r†   r…   rˆ   r‘  )r
   r   r¯   r   r   rt   ru   )rn   rl   rk   ri   rx   Zcrightrw   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–  rV  ZA0ÚB0ZC0)ÚFooÚLeftZC1ÚB1ÚA1)rå  ÚRightrå  rz   )rå  ræ  ré  re  r  r%   r%   r&   Ú'tests_merge_categorical_unordered_equal=  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©rW  rë  r–  r*  r*   r   r(   rI   )rº  ÚprJ   rº  rí  r  r¬   r  rð   )rº  rí  rš  rk   Tr›   g      &@g      (@)rº  rí  rJ   rš  )	r   r
   r   r‚   r   r   r7   rt   ru   )rn   rë  ZpcatrT   rU   rw   rx   r%   r%   r&   Ú5test_multiindex_merge_with_unordered_categoricalindexV  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¥  rz   r-   r¡   rV  rÎ  r(   rI   r¦  rÜ  re   )ÚassignrÜ  r   r   ré   rM  r   r   r   r+   rt   r©   r¥  rø   Z#_categories_match_up_to_permutationrž   rà  r%   r%   r&   Útest_other_columnss  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 )
Nr6   )r¥  r¥  r·   rÎ  r)   r¦  rÜ  re   )r¥  r   rï  r   rø   r+   rž   r   ré   rM  r   r   rt   r©   )	rn   rñ  rÚ   rk   rl   r¥  rŸ   rw   rx   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 )NrQ   rJ   rK   r]   r^   r_   rÊ   rË   rÌ   rÒ   Újr  Úwr=   rÄ   rØ   rI   c                    s$   g | ]}|gd  ˆ  D ]}|‘qqS r»  r%   ©Ú.0ZeachÚletter©r+  r%   r&   Ú
<listcomp>¨  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&   rû  ­  s    ó)
ZaaZbbÚccÚddÚeeÚffZggÚhhÚiiZjjrq  c                 S   s
   |   d¡S )Nr‘  )r   r<   r%   r%   r&   r>   Á  r?   zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>rz   )r
   Úapplyr   r   rŠ   rt   ru   )rn   ri   rw   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ª  rI   çÍÌÌÌÌÌô?r   Znum2rµ   r‘  rO   çffffffö?Znum4rv  rw  rx  r¥   rA  r�   )
r
   r   r   r2   r3   r   r7   r   rt   ru   )rn   ri   rU   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_categoriesrI   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(   rI   rO   rP   )rº  rg  rg  ró  rÝ   )rº  Únum)rº  rg  r  )r
   r   rÛ  r   rt   ru   )	rn   Zcategory_columnrW  Zexpected_categoriesrë  rT   rU   rw   rx   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(   rI   r,   r*   r¿  r  rz   )r  ÚB_xZB_y)r
   r   r   r7   r   rt   ru   )rn   ri   rw   rx   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 )NrJ   rº   r¬   r   rI   r(   re   rS   r%   r%   r%   r&   r…    s    r…  c                   C   s   t ddddgidddgd�S )	NrK   é,  éd   r¨  rO   r(   rI   re   rS   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«   rI   r(   re   Trk   r   rl   r  rO   r¥   c                 C   s$   t ||dd||d�}t ||¡ d S )NT)rq   rr   r†   r‡   rß   )rn   r…  r†  r†   r‡   rx   rw   r%   r%   r&   Útest_merge_on_indexes  s    0     ÿz(TestMergeOnIndexes.test_merge_on_indexesN)
r  r  r  r”   rŒ  r�  r
   r   r7   r  r%   r%   r%   r&   r    sV   ""$ý$ý ÿý ÿý
þý	
þýÝþ/r  rf   r  r  Ú	index_col)rW  r;   r’  r“  r¦   r(   rI   )ÚstartÚstopr;   r.   z
2018-01-02c                 C   s
   t | ƒjS r   )Útyper  r<   r%   r%   r&   r>   S  r?   )rA   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(   rI   re   Ú
right_datar’  r“  r  rz   )r  r  rs   )rf   rk   rl   rw   rx   r%   r%   r&   Útest_merge_index_typesI  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(   rI   rO   rP   rJ   rK   r   r¥   r�   ©Únamesre   r"  r¿  )r{   r…   rˆ   rq   rr   z$Cannot merge a Series without a namer‘   )
r
   r   Úfrom_productr   r   rt   ru   r”   r•   r—   )r{   r…   rˆ   rq   rr   ÚnmrJ   rK   rx   rw   r™   r%   r%   r&   Útest_merge_seriesa  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 ddgddgdœtjddgdggd	d
gd�d�}t t¡� t| |d	d
gd�}W 5 Q R X t ||¡ d S )Nr  r(   rI   rO   rP   rJ   rK   r   r¥   r�   r  re   ©r  r–  r"  )r  r  rz   )	r
   r   r  r   rt   r«  ÚFutureWarningr   ru   ©rJ   rK   rx   rw   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'  rJ   )Nr'  r  )r&  Nz0.0_xrK   Úb_yrl  )Nr&  )Z_aNZ0_arm  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(   rI   rO   rP   rQ   r£   rµ   Trp   rs   )rL   rd  ÚkwargsZexpected_colsrJ   rK   rx   rw   r%   r%   r&   Útest_merge_suffixª  s    r*  zhow,expectedr  r¨  r  é<   éF   éX  é¼  é   )r  rç  ZB2r„  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-  r.  r/  r  )r&  r&  )r{   r†   r#  r  )r
   r   rŠ   rt   ru   )r†   rx   r…  r†  rw   r%   r%   r&   Útest_merge_duplicate_suffixÊ  s
    r0  zcol1, col2, suffixes)rJ   rJ   )NN)rJ   rJ   )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(   rI   rO   rP   rQ   z'columns overlap but no suffix specifiedr‘   T©rq   rr   r#  rb  )rL   rd  r#  rJ   rK   r™   r%   r%   r&   Útest_merge_suffix_errorè  s
    r2  rá   c              	   C   sT   t ddddgiƒ}t ddddgiƒ}t t¡� t||ddd	d
hd� W 5 Q R X d S )NrJ   r(   rI   rO   rK   rP   rQ   Trk   rl   r1  )r
   rt   r«  r   r   )r#  rJ   rK   r%   r%   r&   Útest_merge_suffix_warns÷  s    r3  zcol1, col2, suffixes, msg)rJ   rJ   rn  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(   rI   rO   rP   rQ   r‘   Tr1  rb  )rL   rd  r#  r™   rJ   rK   r%   r%   r&   Útest_merge_suffix_length_error 	  s    r4  Ú	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 )NrJ   rK   r]   Frì  )rÖ  r×  rÖ  r(   rI   rO   ©r-   rk   r-   ©r-   rl   Trp   ©rk   rl   r-   )	r   r
   r   r   r‚   r6  r   rt   ru   )	r5  r6  Z
cat_dtypesrT   Zdata_fooZ
data_rightrU   rw   rx   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 )NrJ   rK   r]   Frì  r(   rI   r7  r-   rO   r8  Trp   r9  )r   r
   r   r   r‚   r   rt   ru   )r5  rT   rU   rw   rx   r%   r%   r&   Útest_merge_equal_cat_dtypes24	  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 )
NrJ   r   r(   rI   Úintervalr*   r‘  r�   rA  )	r
   r   r2   ZIntervalr¯   r   r   rt   ru   )rl   rk   rw   rx   r%   r%   r&   Útest_merge_on_cat_and_ext_arrayJ	  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 )NrJ   rK   r]   r^   rµ  r¶  rÂ  r¥   r�   r  rµ   r$  rº  r&  r'  ©r{   r#  c                    s   g | ]}|ˆ  ‘qS r%   r%   ©rø  rù  )Úl_sufr%   r&   rû  l	  s     z1test_merge_multiindex_columns.<locals>.<listcomp>c                    s   g | ]}|ˆ  ‘qS r%   r%   r?  )Úr_sufr%   r&   rû  l	  s    )r   r  r
   r   rt   ru   )	ÚlettersÚnumbersrf   Zframe_xZframe_yrw   Zexpected_labelsr{  rx   r%   )r@  rA  r&   Útest_merge_multiindex_columnsX	  s(    


ÿ ÿ
rD  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 )NrJ   rK   r]   rµ  r¶  rÃ  )r=   rÄ   rÂ  Ú2000Z2001Z2002)rÄ   rØ   rk   rÄ   rA  r8   )r=   rÄ   rØ   )r
   r2   rB  r   rt   ru   ©rT   rU   rw   rx   r%   r%   r&   Ú test_merge_datetime_upcast_dtypex	  s    ÿýÿrG  Ún_categoriesrQ   é€   c                 C   s˜   t dgtt| ƒƒ ƒ}tt| d ƒdg|d�}tdggdgt dgt | ¡d�d�}t||dddd	�}td
d„ t| d ƒD ƒddg|d�}t ||¡ d S )Nr   r(   r\   rI  r£   rV  rk   Tr›   c                 S   s&   g | ]}|d k r|dgn|t jg‘qS )rI   g      @)r   r7   )rø  rÒ   r%   r%   r&   rû  ˜	  s     z9test_categorical_non_unique_monotonic.<locals>.<listcomp>r§   r¨   )	r	   r   r   r
   r   rÂ   r   rt   ru   )rH  rq   rT   rU   rw   rx   r%   r%   r&   Ú%test_categorical_non_unique_monotonic‰	  s    ýýrJ  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 )NrJ   rK   r]   r   r(   )ÚCat1ÚInt1rª  g333333ó?r  r  r  gš™™™™™ù?)ÚCatÚIntÚFactorrM  rN  rO  rK  rL  rk   r¾   )Zaxisrz   Tró  )	r   r
   r‚   r   r  Zdropr�   rt   ru   r!  r%   r%   r&   Ú&test_merge_join_categorical_multiindexŸ	  s\    þýû  ÿü  ÿûûrP  Úfuncr   Z
merge_asof)r)  Úerr_msg)r…   rq   r…   rq   )rˆ   rr   rˆ   rr   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(   rI   rO   rP   r«   rQ   r£   rj  zCan only pass argument "r   ú" OR "z" not both\.r‘   ©r
   r”   r•   r   Úgetattrr2   ©rQ  r)  rR  rk   rl   r™   r%   r%   r&   Ú/test_merge_join_cols_error_reporting_duplicates×	  s
    
rW  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(   rI   rO   rP   r«   rQ   r£   rj  zMust pass "r   rS  z"\.r‘   rT  rV  r%   r%   r&   Ú,test_merge_join_cols_error_reporting_missingè	  s
    
rX  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(   rI   rO   rP   r«   rQ   r£   rj  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r‘   r{   rJ   rT  )rQ  r)  rk   rl   r™   r%   r%   r&   Ú1test_merge_join_cols_error_reporting_on_and_indexù	  s    
ÿrY  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Ø   rl   Tr=   )r†   rq   rˆ   )r=   Zx_xZz_xZx_yZz_yrs   ©rk   rl   rw   rx   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(   rI   r«   rJ   rK   r*   Tr×   rÖ   )r
   r‚   r   r)   r   rt   ru   )rT   rU   rx   rw   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 ddddgddddgddddggddddgd	�}t t¡� t| |dd
�}W 5 Q R X t ||¡ t t¡� t|| ddd� W 5 Q R X t ||¡ d S )Nr(   rI   rO   )rJ   rK   Úb_xr«   rJ   r]  r(  rµ   rz   )r'  r&  r>  ©r
   rt   r«  r   r   ru   )rk   rl   rx   rw   r%   r%   r&   Ú-test_merge_suffixes_produce_dup_columns_warns*
  s      
ÿr_  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(   rI   rJ   rK   rµ   rO   r«   rz   r]  r(  rs   rZ  r%   r%   r&   Ú3test_merge_duplicate_columns_with_suffix_no_warning:
  s
    "r`  c               	   C   s�   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 t¡� t| |dd	�}W 5 Q R X t dddddggddddd
gd�}t ||¡ d S )Nr(   rI   rJ   rK   r]  rµ   rO   r«   rz   r(  r^  rZ  r%   r%   r&   ÚBtest_merge_duplicate_columns_with_suffix_causing_another_duplicateD
  s    ("ra  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(   rI   rO   rP   rJ   g     €\@rµ   rÝ   r¬   r  rð   r=   rÄ   r�   Tr›   ©r
   r2   rÙ   r   rt   ru   rF  r%   r%   r&   Ú%test_merge_string_float_column_resultO
  s    " ÿrc  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Š   rf   iç  zCan only pass argumentr‘   T)r{   rq   )r
   r”   r•   r   r   )Zdf_1Zdf_2r%   r%   r&   Ú/test_mergeerror_on_left_index_mismatched_dtypesZ
  s    re  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(   rI   )rb   rL   r*   rO   rP   )rb   rd  rb   r¥   r·   )rb   rL   rd  )rb   rd  rL   r~  )r+   rk   rl   rw   rx   r%   r%   r&   Útest_merge_outer_with_NaNb
  s(    ýúýúrf  c                  C   sl   t ddgitjdgdd�d�} t ddgitjdgdd�d�}t| |ddd�}t dgddœƒ}t ||¡ d S )	NrJ   r(   r]   r¦   re   r^   r“   )rl  rm  rb  rZ  r%   r%   r&   Ú test_merge_different_index_names
  s
    rg  )Yr   r   r   r    r·  Únumpyr   r”   Zpandas.core.dtypes.commonr   r   Zpandas.core.dtypes.dtypesr   Zpandasr2   r   r	   r
   r   r   r   r   r   r   r   Zpandas._testingZ_testingrt   Zpandas.api.typesrÛ  Zpandas.core.apir   r   r   Zpandas.core.reshape.concatr   Zpandas.core.reshape.merger   r   rh   rj   r'   r4   r9   ZfixturerF   rG   rH   rV   rW   rÎ   r�  rk   rl   rÝ  r…  r†  r  rŒ  r�  r  r  r"  r*  r7   r0  r2  r3  Útupler4  r:  r;  r=  rD  rG  rJ  rP  rW  rX  rY  r[  r\  r_  r`  ra  rc  re  rf  rg  r%   r%   r%   r&   Ú<module>   sZ  0	



            Q

  

7úö
øþ
(óþ
ÿþ
ýÿþùþ
	þ

þþ
# 
8þþ	þþ	þþ

