a
    oÝEböd ã                   @   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=ej: ;dJd 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j: ;dcd'eg dd¢dedfej?gg dg¢dhœƒfdBeg di¢dedfdjej?gdkdlej?dmgdhœƒfg¡dndo„ ƒZ@ej: ;dpg dq¢¡drds„ ƒZAej: ;dKd%d'hd d dtœg¡dudv„ ƒZBej: ;dwdxdUdUeCdUƒdyfg¡dzd{„ ƒZDej: ;d|d}d~g¡ej: ;ddFdDg¡d€d�„ ƒƒZEd‚dƒ„ ZFd„d…„ ZGd†d‡„ ZHdˆd‰„ ZIej: ;dŠd‹dŒg¡d�dŽ„ ƒZJd�d�„ ZKej: ;d‘d’d“g¡ej: ;d”dUdFd•œd–d—gfdUdFd˜œd™dšgfg¡d›dœ„ ƒƒZLej: ;d‘d’d“g¡ej: ;d”d–dUid™dšgfd™dUid–d—gfg¡d�dž„ ƒƒZMej: ;d‘d’d“g¡ej: ;dŸdšdFid—dFig¡d d¡„ ƒƒZNd¢d£„ ZOd¤d¥„ ZPd¦d§„ ZQd¨d©„ ZRdªd«„ ZSd¬d­„ ZTd®d¯„ ZUej: ;d°dd±g¡d²d³„ ƒZVd´dµ„ ZWd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%   úe/home/ja/django-apps/lartica_env/lib/python3.9/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   s@   t ddgddgddgdœƒ} t g d¢g d¢g d¢d	œƒ}| |fS )
Nr   r(   é   ÚaÚb)Úcol1Úcol_conflictÚcol_left)r(   rI   é   é   é   )rI   rI   rI   rI   rI   )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>g d?¢fd*g d@¢fg¡ej dAdBdCg¡dDdE„ ƒƒZ dFdG„ Z!dHdI„ Z"dJdK„ Z#dLdM„ Z$dNdO„ Z%dPdQ„ Z&ej dRg dS¢¡dTdU„ ƒZ'dVdW„ Z(dXdY„ Z)dZd[„ Z*d\d]„ Z+d^d_„ Z,d`da„ Z-dbdc„ Z.ddde„ Z/dfdg„ Z0dhdi„ Z1djdk„ Z2dldm„ Z3dndo„ Z4dpdq„ Z5drds„ Z6ej dAdCdtg¡ej due7g dv¢ƒe7g dw¢ƒfe8g dx¢ƒe8dydzd{e9j:e9j:e9j:gƒfe;g d|¢ƒe;g d}¢ƒfe<g d|¢ƒe;g d}¢ƒfe= >g d~¢¡e= >dd€d�e?j@e?j@e?j@g¡feAg d‚¢dƒd„�eAdyd…d†e9j:e9j:e9j:gdƒd„�feBg d‡¢ƒ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 g d	¢tj d
¡dœƒ| _	t dtj d¡ig d¢d�| _
d S )N)Úkey1Úkey2Údata1Údata2rY   r(   rQ   )r#   rI   )r"   r#   )rX   rY   Úvalue©rJ   rK   ÚcÚdÚer`   rJ   é   ©ÚkeyÚv1Úv2rP   ©r_   rK   r^   rJ   ©Úindex)r
   r'   r   r    ÚrandnÚNÚdfÚNGROUPSrU   ÚleftÚright)ÚselfÚmethodr%   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)   )rh   r+   T©Ú
left_indexÚright_index©r
   r   ÚtmÚassert_frame_equal)ro   Ú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   rk   rU   rv   rw   )ro   ÚjoinedÚexpr%   r%   r&   Útest_merge_commonœ   s    zTestMerge.test_merge_commonc                 C   sJ   t g d¢g d¢g d¢g d¢dœƒ}| t¡}|}t||ƒ}t ||¡ d S )N)r(   r   r(   r   )r   r(   r   r   )r   r   rI   r   )r(   r   r   rO   ©r   r(   rI   rO   )r
   Úastyper5   r   rv   rw   ©ro   rm   rn   rz   ry   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   r|   )rk   Ú	set_indexrU   r   rv   rw   ©ro   rm   rn   ry   rz   r%   r%   r&   Útest_merge_index_as_on_arg­   s
    z$TestMerge.test_merge_index_as_on_argc                 C   sÂ   t g d¢tj d¡dœƒ}t dtj d¡ig d¢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 )Nr]   ra   rb   re   rP   rf   rg   rc   Trm   F)Úleft_onrt   ÚhowÚsortrn   )Úright_onrs   r‰   rŠ   )	r
   r   r    ri   r   rv   rw   ÚlocÚcolumns)ro   rm   rn   Zmerged1Úmerged2r%   r%   r&   Ú(test_merge_index_singlekey_right_vs_left¶   s$    ÿÿÿÿÿz2TestMerge.test_merge_index_singlekey_right_vs_leftc                 C   s²   t g d¢tj d¡dœƒ}t dtj d¡ig d¢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 )Nr]   ra   rb   re   rP   rf   rg   rc   TÚinner©rˆ   rt   r‰   r|   )r‹   rs   r‰   )r
   r   r    ri   r   ÚjoinrŒ   rh   rv   rw   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 d   ƒ n1 s>0    Y  d}t jtjj|d��" t| j| jdd� W d   ƒ n1 s†0    Y  d}t jtjj|d��$ t| j| jddd	� W d   ƒ n1 sÐ0    Y  d
}t jt|d��* t| j	| j
dgddgd� W d   ƒ n1 �s0    Y  d S )Nz&Must pass right_on or right_index=True©ÚmatchT)rs   z$Must pass left_on or left_index=True)rt   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothrc   )rˆ   r}   z)len\(right_on\) must equal len\(left_on\)rX   rY   ©rˆ   r‹   )ÚpytestÚraisesr2   Úerrorsr   r   rm   rn   Ú
ValueErrorrk   rU   ©ro   Úmsgr%   r%   r&   Útest_merge_misspecifiedÛ   s    00ÿ2z!TestMerge.test_merge_misspecifiedc                 C   sè   d}t jt|d��* t| j| jddddgd� W d   ƒ n1 sB0    Y  d}t jt|d��* t| j| jdddgdd� W d   ƒ n1 sŽ0    Y  t jt|d��. t| j| jdddgddgd� W d   ƒ n1 sÚ0    Y  d S )	Nz>right_index parameter must be of type bool, not <class 'list'>r”   rm   FrX   rY   ©r‰   rs   rt   z=left_index parameter must be of type bool, not <class 'list'>)r—   r˜   rš   r   rk   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s8J ‚d|v sDJ ‚d|v sPJ ‚d S )Nrc   r|   rI   Zv1_xZv1_y)r   rm   Zvalue_countsÚsumr   )ro   ÚmergedZexp_lenr%   r%   r&   Útest_merge_overlap
  s
    zTestMerge.test_merge_overlapc                 C   sô   t g d¢g d¢dœƒ}t g d¢g d¢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 )N)r-   ÚbarÚbazr-   ©r(   rI   rO   rP   )Úlkeyr\   )r-   r£   Úquxr-   )rQ   é   ra   r   )Úrkeyr\   r¦   r©   ÚouterT)rˆ   r‹   r‰   rŠ   r£   r¤   r-   ©r;   r§   rI   rO   r(   rP   Úvalue_xr¨   rQ   r   ra   Úvalue_y)r
   r   r   r   r7   rv   Úassert_series_equal)ro   rm   rn   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 ¡ sZJ ‚d|d< |d dk ¡ svJ ‚d S )Nr   r(   ©rJ   rK   é
   rg   r-   r£   ©r^   r_   T©rs   rt   Úcopyr¨   rJ   Zpeekaboor_   )r
   r   r   Úall)ro   rm   rn   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¡sZJ ‚t |d j|d j¡svJ ‚d S )Nr   r(   r°   r±   rg   r-   r£   r²   TFr³   rJ   r_   )r
   r   r   r   Zshares_memoryZ_values)ro   Zusing_array_managerrm   rn   r¡   r%   r%   r&   Útest_merge_nocopy1  s
    zTestMerge.test_merge_nocopyc                 C   s˜   t g d¢ttdƒƒdœddgd�}t g d¢ttdƒƒd	œƒ}t||dd
d�}t g d¢t dddddddtjtjg	¡g d¢dœg d¢d�}t ||¡ d S )N©r(   r(   rI   rI   rO   rQ   ©rc   r\   r\   rc   ©r�   ©r(   r(   rI   rO   rP   rQ   r¨   )rc   Úrvaluerª   ©r}   r‰   ©	r(   r(   r(   r(   rI   rI   rO   rP   rQ   r   r(   rI   rO   rP   )	r   r(   r   r(   rI   rI   rO   rP   rQ   )rc   r\   r¼   )r\   rc   r¼   )	r
   r   r   r   r   Úarrayr7   rv   rw   )ro   rm   rn   r~   rz   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sDJ ‚t d
gdgdœƒ}t dgdgdœƒ}t||dd�}|d jdksˆJ ‚t ddgiƒ}t ddgiƒ}t dg¡}t dg¡}t||||dd�}|d jd	ksàJ ‚d S )Nr(   r±   rb   rI   é   rª   ©r‰   rc   r)   TFr   ÚboolÚval©rˆ   r‹   r‰   Úkey_0)r
   r   r+   r   r¿   )ro   rT   rU   rk   r¦   r©   r%   r%   r&   Útest_merge_join_key_dtype_castM  s    z(TestMerge.test_merge_join_key_dtype_castc                 C   s„  t g d¢t d¡dœddgdd�}t dt d	¡idd
�}tjg d¢dd
�}t||d|dd�}t|||ddd�}t |d |d ¡ |d  ¡  ¡ s–J ‚|d  ¡  ¡ sªJ ‚t dt d¡idgd�}t dt d	¡iƒ}t g d¢¡}t g d¢¡}t||||dd�}t |d t	g d¢dd�¡ t dt d¡iƒ}t dt d	¡iƒ}tjg d¢tj
d
�}t||d|dd�}t |d t	|dd�¡ d S )Nr¸   rQ   r¹   r\   rc   r)   ©r�   r+   r¼   r¨   r*   r»   rª   rÅ   rº   rÆ   r¾   r«   rO   )r   r(   r(   rI   rI   rO   T)rs   r‹   r‰   )r
   r   Úaranger¿   r   rv   r®   Znotnarµ   r   r)   )ro   rm   rn   rc   r¡   rŽ   r¦   r©   r%   r%   r&   Útest_handle_join_key_pass_arrayd  s2    ýÿz)TestMerge.test_handle_join_key_pass_arrayc                 C   sŒ   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 d   ƒ n1 s~0    Y  d S )Nr=   rJ   rg   Ú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   )ro   Ú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g d¢i|||gd	�}td
g d¢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   rg   rË   rK   r^   )rJ   rK   Úq)r^   r_   r`   ÚfÚgÚhr_   ©r   r
   Ú_check_merge)ro   rÍ   Údt2Údt3Zdt4rT   rU   r%   r%   r&   Útest_merge_non_unique_indexes”  s    
ÿ
z'TestMerge.test_merge_non_unique_indexesc                 C   sl   t dddƒ}t dddƒ}t dddƒ}tdg d¢i||||gd�}td	g d
¢i|||||gd�}t||ƒ d S )NrÏ   rQ   r(   rI   rO   r=   ©rJ   rK   r^   r_   rg   rË   )r`   rÑ   rÒ   z hÚirÔ   )ro   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¹   rc   rm   r½   rn   ru   )ro   rm   rn   ry   r%   r%   r&   Útest_left_merge_empty_dataframe´  s    z)TestMerge.test_left_merge_empty_dataframeÚkwargTrr   r=   ©rs   r‹   rJ   ©rˆ   rt   r–   c                 C   s^   t g d¢d�}t g d¢d�}t g d¢tjg td�td�}t||fd|i|¤Ž}t ||¡ d S )N©rJ   rK   r^   rº   ©r=   rË   Úz©rJ   rK   r^   r=   rË   râ   r*   )r�   rh   r+   r‰   )r
   r2   ÚIndexr6   r   rv   rw   )ro   Ú	join_typerÝ   rm   rn   Úexp_inry   r%   r%   r&   Ú!test_merge_left_empty_right_empty¾  s    ýz+TestMerge.test_merge_left_empty_right_emptyc                    sZ  t g d¢d�‰ t g d¢g d¢g d¢gg d¢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�g d	¢g d
¢g d¢dœg d¢d�}|dd… }|j t¡|_‡ ‡fdd„}‡ ‡fdd„}dddœdddœfD ]}|||ƒ |||ƒ qÚdddœ}|||ƒ g d¢|d< |||ƒ dddœ}|||ƒ tjtjgd td�|d< |||ƒ d S )Nrà   rº   ©r(   rI   rO   ©rP   rQ   r¨   ©ra   r   é	   rá   rO   r*   ©r(   rP   ra   ©rI   rQ   r   ©rO   r¨   rë   rã   r   c                    sH   t ˆ ˆfddi|¤Ž}t || ¡ t ˆ ˆfddi|¤Ž}t || ¡ d S )Nr‰   r�   rm   ©r   rv   rw   ©r   rÝ   ry   ©rm   rn   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‰   rn   rª   rï   rð   rñ   r%   r&   Úcheck2ï  s    z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2Trr   r=   rÞ   rJ   rß   ©r   r(   rI   r–   ©r
   r   r¿   r7   r6   rh   r‚   )ro   Ú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 g d¢g d¢g d¢gg d¢d�‰t g d¢d�‰t g d¢g d¢g d	¢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œg d¢d�‰ˆdd… ‰ˆj t¡ˆ_‡‡fdd„‰ ‡ ‡‡‡‡‡fdd„‰d S )Nrè   ré   rê   rà   rº   rá   rì   rí   rî   rO   r*   rã   r   c                    sH   t ˆ ˆfddi|¤Ž}t || ¡ t ˆ ˆfddi|¤Ž}t || ¡ d S )Nr‰   r�   rn   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‰   rm   rª   Trr   r=   rÞ   rJ   rß   r–   rï   rð   ©rò   ró   ræ   rö   rm   rn   r%   r&   ró      s    ü
z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check2rõ   ©ro   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œg d¢d�}|j|dd�}t ||¡ d S )	Nr¹   rc   r\   rº   r   r*   )r¬   rc   r­   r|   )r
   r   Údtypesr   rv   rw   )ro   rF   rG   rk   rx   rz   Úactualr%   r%   r&   Útest_merge_empty_frame0  s    þýúz TestMerge.test_merge_empty_framec                 C   sb   t ||dœddgd�}t ||dœddgd�}t |||dœg d¢d�}|j|dd�}t ||¡ d S )Nr¹   rc   r\   rº   ©rc   r¬   r­   r|   ru   )ro   rF   rH   Zdf_leftZdf_rightrz   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
J ‚d S )Nr   r±   ©ÚsizerÏ   r(   é   iÛ  rI   rP   iÚ  rO   iØ  rQ   )Zvar1Zvar2Úvar3ra   )r  Zvar8r  F©r}   rŠ   )r   r    Úrandintr   r
   Ú	from_dictr  ÚuniquerŠ   r   rv   rw   rµ   )ro   r_   rk   r  Únewry   r   r%   r%   r&   Útest_merge_nosortW  s,    









öý

zTestMerge.test_merge_nosort)rŠ   ÚvaluesF)r(   r(   r   r(   r(   )r   r(   r(   r(   r(   r‰   rm   rn   c                 C   s@   t dg d¢iƒ}|j|d||d�}t |dgd�}t ||¡ d S )NrJ   )r(   r   r(   )r}   r‰   rŠ   rº   ru   )ro   rŠ   r
  r‰   rk   ry   rz   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 ¡ ¡ g d¢ }tj||dd� d S )Nr   r(   ©Úi1Úi2©r  Úi3r  Ú_)r}   Úrsuffixç        ©r   r(   )r  r  Úi1_r  N©r  r  r  r  F)Zcheck_dtype)r
   r’   r   r7   r…   Úreset_indexrv   rw   ©ro   rT   rU   ry   rz   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œƒg d¢ }t ||¡ d S )Nr   r(   g      à?ç      ø?r  gffffffæ?r  r  r  )r  r}   r  r  )r  r  r  r  r  )r
   r’   r   r7   rv   rw   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<J ‚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  rX   r|   )r
   rk   r   rU   Ú
isinstance)ro   Znadry   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œtd�}t ||¡ d S )NiÝ  é   rQ   é8   r   iäW  )r_   ÚtrÍ   rº   T)Zignore_indexr*   )	r
   r  r   r   r   r   r6   rv   rw   )ro   r_   rk   ry   rz   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ÚBrg   Úrrm   )r  r‰   ZAB)Ú0Z0r)
r   Ztimedelta64r
   r   r’   r   r2   r8   rv   rw   )ro   ÚtdÚlhsÚrhsry   rz   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sPJ ‚|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©rh   r;   )zdatetime64[D]zdatetime64[h]zdatetime64[m]zdatetime64[s]zdatetime64[ms]zdatetime64[us]údatetime64[ns]r6  Trß   Únatr*   ©r1  r4  rº   ©
r
   r   r‚   Zto_framer+   r   r   r¿   rv   rw   )ro   rT   Úsr+   rU   ry   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sTJ ‚|j|dd	d
�}t ddgtjddg|d�dœddgd�}t 	||¡ d S )Nr1  r2  r3  r4  r5  zm8[ú]zm8[ns]Trß   r7  r*   r8  rº   r9  )ro   r<  rT   r:  r+   rU   ry   r   r%   r%   r&   Útest_other_timedelta_unitî  s    þz#TestMerge.test_other_timedelta_unitc                 C   sÚ   t g d¢g d¢g d¢dœƒ}t g d¢g d¢g d¢dœƒ}g d¢|_g d¢|_t g d¢g d¢g d¢g d¢g d¢dœƒ}g d¢|_t t||ƒ|¡ g d	¢|_d
}tjt|d�� t||ƒ W d   ƒ n1 sÌ0    Y  d S )Nrè   ré   rê   ©rc   rd   re   )rc   r-   r-   )rc   r£   r£   )rc   rd   re   Zv3Zv4)rc   r-   r-   r£   r£   )rX   r-   r-   z;Data columns not unique: Index\(\['foo'\], dtype='object'\)r”   )r
   r�   rv   rw   r   r—   r˜   r   )ro   rk   rU   rz   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�g d	¢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   rè   rP   rþ   rc   rª   r½   )r
   r2   Ú
date_ranger   r7   r   rv   rw   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 g d	¢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®J ‚|d jdksÀJ ‚d S )Nr(   rI   rF  r/   rG  r¹   rO   rI  rè   rþ   rc   rª   r½   r¬   zdatetime64[ns, US/Eastern]r­   )	r
   r2   rJ  r   r8   r   rv   rw   r+   rƒ   r%   r%   r&   Útest_merge_datetime64tz_values2  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œg d¢d�}|d d… }|j|d	d
�}tttd�t|d�t|d�ttd�t|d�dœg d¢d�}t 	||¡ d S )NÚUTCr0   Z2018g      @Z2019)r   r\   Zdate2rº   r   r   r|   r*   )r¬   Zdate2_xr   r­   Zdate2_y)
r2   ZDatetimeTZDtyper
   r3   r1   r   r   r5   rv   rw   )ro   Zdtzrn   rm   ry   rz   r%   r%   r&   Ú test_merge_on_datetime64tz_emptyM  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 g d
¢¡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)rH  Ú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\   rM  rª   ©r‰   r}   ra   rO   )r   r¬   r­   )r
   r2   rJ  Úto_datetimerÍ   Ztz_localizeZ
tz_convertr   r   r7   rv   rw   r  r%   r%   r&   Ú+test_merge_datetime64tz_with_dst_transitionf  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©rH  rP  Zpnum©rh   r�   Tr�   )rs   rt   r‰   r*   rI   éÿÿÿÿr(   Zpnum_xZpnum_y©r�   rh   )r2   Úperiod_ranger
   r   r   r   r   r   r   r   rÉ   r)   ÚrepeatÚreshapeÚ
sort_indexrh   rv   rw   )ro   rh   rk   rU   ry   rz   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�g d	¢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 )NrF  rI   r=  rV  r(   r¹   rI  rO   rè   rP   rþ   rc   rª   r½   )r
   r2   rZ  r   r7   r   rv   rw   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 g d	¢t|ƒtjg tjgt|ƒ d
œƒ}t||ddd�}t ||¡ |d jdks¶J ‚|d jdksÈJ ‚d S )Nr(   rI   rF  r=  rV  r¹   rO   rI  rè   rþ   rc   rª   r½   r¬   z	Period[D]r­   )	r
   r2   rZ  r   r8   r   rv   rw   r+   )ro   rm   rn   Zexp_xZexp_yrz   ry   r%   r%   r&   Útest_merge_period_values¨  s$    ÿÿýÿz"TestMerge.test_merge_period_valuesc           
      C   s@  |\}}|  ¡ }|  ¡ }tg d¢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g d
¢g d¢d�|d< |g d¢ }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 )N©r   r(   rI   rO   rP   rQ   r(   rI   rJ   rK   rO   rP   rQ   )rL   Úcol_conflict_xrN   Úcol_conflict_yrR   )Ú	left_onlyÚbothÚ
right_onlyrf  rf  rf  ©rd  rf  re  ©Ú
categoriesÚ_merge)rL   rb  rN   rc  rR   rj  rL   rª   T©r}   r‰   Z	indicatorZcustom_namerº   )	r´   r
   r   r7   r   r   rv   rw   Úrename)
ro   rV   rT   rU   Údf1_copyÚdf2_copyZ	df_resultÚtestZdf_result_custom_nameZtest_custom_namer%   r%   r&   Útest_indicator¾  sH    ûÿ	÷
ÿÿ
ÿÿzTestMerge.test_indicatorc                 C   s�   |\}}d}t jt|d��" t||dddd� W d   ƒ n1 sB0    Y  t jt|d��" |j|dddd� W d   ƒ n1 s‚0    Y  d S )Nz<indicator option can only accept boolean or string argumentsr”   rL   rª   rQ   rk  )r—   r˜   rš   r   )ro   rV   rT   rU   rœ   r%   r%   r&   Ú#test_merge_indicator_arg_validationý  s    0z-TestMerge.test_merge_indicator_arg_validationc                 C   sä   |\}}t ||dddd�}|jdk ¡ s,J ‚|j |dddd�}|jdk ¡ sPJ ‚t ||dddd�}|jdk ¡ stJ ‚|j |dddd�}|jdk ¡ s˜J ‚t ||dddd�}|jd	k ¡ s¼J ‚|j |dddd�}|jd	k ¡ sàJ ‚d S )
NrL   rm   Trk  rf  rn   rd  r�   re  )r   rj  rµ   )ro   rV   rT   rU   Ztest2Ztest3Ztest4r%   r%   r&   Ú%test_merge_indicator_result_integrity  s    z/TestMerge.test_merge_indicator_result_integrityc              	   C   sX  |\}}dD ]¨}t dddg|ddgiƒ}d|› d�}tjt|d��" t||ddd	d
� W d   ƒ n1 sj0    Y  tjt|d��" |j|ddd	d
� W d   ƒ q1 sª0    Y  qt ddgddgdœƒ}d}tjt|d��" t||dddd
� W d   ƒ n1 �s0    Y  tjt|d��" |j|dddd
� W d   ƒ n1 �sJ0    Y  d S )N)Z_right_indicatorZ_left_indicatorrj  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ª   Trk  )rL   Úcustom_column_namez:Cannot use name of an existing column for indicator columnrs  ©r
   r—   r˜   rš   r   )ro   rV   rT   r  rÚ   Zdf_badcolumnrœ   r%   r%   r&   Útest_merge_indicator_invalid  s2    ÿÿ02û&ÿz&TestMerge.test_merge_indicator_invalidc                 C   s¢   t ddgddgdœƒ}t g d¢g d¢dœƒ}t g d¢g d	¢dœƒ}tg d
¢g d¢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   Úcol2)r(   r(   rO   )rK   r=   rË   )r   r(   r(   rO   ©rJ   rK   r=   rË   )rd  re  rf  rf  rg  rh  rj  rL   rv  rª   Trk  ©r
   r   r   rv   rw   )ro   Zdf3Zdf4Zhand_coded_resultZtest5r%   r%   r&   Ú%test_merge_indicator_multiple_columns<  s    ÿþ
z/TestMerge.test_merge_indicator_multiple_columnsc                 C   s¶  t g d¢g d¢dœtdƒd�}t g d¢g d¢dœtd	ƒd�}| ¡ }| ¡ }t||d
d
dd�}t ||¡ t ||¡ t g d¢g d¢g d¢g d¢dœtdƒg d¢d�}t||d
d
dd�}t ||¡ t g d¢g d¢g d¢dœtdƒd�}t||ddd�}t ||¡ t ||¡ t ||¡ t||ddd�}t ||¡ t g d¢g d¢g d¢dœg d¢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 d   ƒ n1 �sø0    Y  tj	t
|d��  t||
ddd� W d   ƒ n1 �s80    Y  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 d   ƒ n1 �s´0    Y  tj	t
|d��  t||ddd� W d   ƒ n1 �sô0    Y  t||
dd!d� d"}tj	t
|d��" t||
d
d
dd� W d   ƒ n1 �sJ0    Y  d#}tj	t
|d��  t||
ddd� W d   ƒ n1 �sŽ0    Y  d$}tj	t|d��  t||dd%d� W d   ƒ n1 �sÒ0    Y  t g d&¢g d'¢g d¢dœtdƒd�}t g d(¢g d)¢g d*¢d+œtdƒd�}t g d(¢g d)¢g d,¢g d*¢dœtdƒd�}d-}tj	t
|d��  t||ddd� W d   ƒ n1 �sˆ0    Y  t||dd.gdd�}t ||¡ d S )/NrÙ   )ÚcatÚdogÚweaselÚhorser°   rP   rg   ©rJ   rK   r^   r_   r`   )ÚmeowÚbarkúum... weasel noise?ÚnayZchirp©rJ   r^   rQ   Tz1:1)rs   rt   Úvalidate)r  r€  r�  r‚  )Úa_xrK   Úa_yr^   rW  Z
one_to_onerà   rJ   )r}   r„  ©rK   rJ   r^   rY  )rs   r‹   r„  r`   Ú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	jibberish)rJ   rJ   rK   rK   )r   r(   r   r(   ©rJ   rJ   rK   )r   r(   r   )r  r€  r�  )rJ   rK   r_   )rz  r{  r|  zQMerge keys are not unique in either left or right dataset; not a one-to-one mergerK   )r
   r   r´   r   rv   rw   r…   r   r—   r˜   r   rš   )ro   rm   rn   Z	left_copyZ
right_copyry   rz   Z
expected_2Z
expected_3Zleft_index_resetZright_w_dupsrœ   Zleft_w_dupsZexpected_multir%   r%   r&   Útest_validationO  s   þþû	üø
ÿýú	ýù

û ûû&0ÿûû&0û&00ýú	ýú	üùÿ0zTestMerge.test_validationc                 C   sN   t g g g dœƒ}tjdd�� t||dd� W d   ƒ n1 s@0    Y  d S )Nrà   Úraise)Údivider°   r|   )r
   r   Zerrstater   )ro   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_index)r(   rI   rP   )r(   rI   rP   NNN)ú
2001-01-01ú
2002-02-02ú
2003-03-03r�  r�  r‘  rè   )r(   rI   rO   NNN)©r(   rI   ©rI   rO   ©rO   rP   r’  r“  r”  )r�  ú
2001-01-02ú
2001-01-03r=  )rP  r•  r–  )Ú1dÚ2dÚ3dr—  r˜  r™  c              	   C   sš   t g d¢g d¢dœ|d�}t dg d¢iƒ}|j|dd|d�}t g d	¢g d
¢g d¢tjddgtjddgtjddggg d¢d�}|j|dd� t ||¡ d S )Nrô   ©rJ   rc   rg   rK   ra  rc   Tr‘   )r   r   r   ©r(   r(   r(   ©rI   rI   rI   rO   rP   rQ   ©rJ   rc   rK   rº   )Úinplace)r
   r   r   r7   r…   rv   rw   )ro   r‰   rh   Úexpected_indexrT   rU   ry   rz   r%   r%   r&   Ú$test_merge_on_index_with_more_values  s    '


ú÷z.TestMerge.test_merge_on_index_with_more_valuesc                 C   sx   t g d¢g d¢dœƒ}t dg d¢iƒ}t g d¢g d¢g d¢dœg d¢d	d
dtjgd�}|j|dddd�}t ||¡ d S )Nrè   )r   r(   r(   rš  rK   ©r(   rI   rO   N)r   r(   r(   rI   )r(   rI   rI   rO   r�  r   r(   rI   rY  rc   Trn   r‘   ©r
   r   r7   r   rv   rw   rƒ   r%   r%   r&   Útest_merge_right_index_rightG  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 )Nr{  Úpigé(   r%  )ÚanimalÚ	max_speedZquetzaléP   r¦  r§  r½   rn   ru   )ro   r‰   Úleft_dfÚright_dfry   rz   r%   r%   r&   Útest_merge_preserves_row_orderV  s    z(TestMerge.test_merge_preserves_row_orderc                 C   sž   t g d¢tg d¢tdƒd�dœƒ}t dg d¢itg d¢ƒd�}|j|d	d
dd�}t g d¢tg d¢ƒg d¢dœdddtjgd�}|jg d¢d�}t 	||¡ d S )Nrè   rŠ  Úabcrh  rš  rK   rà   rg   rc   Trn   r‘   r¡  )rJ   rJ   rK   r^   )r(   r(   rI   rO   r�  r   r(   rI   rº   )
r
   r   r   r	   r   r   r7   Zreindexrv   rw   r†   r%   r%   r&   Ú8test_merge_take_missing_values_from_index_of_other_dtypeb  s     þÿ
ýúzBTestMerge.test_merge_take_missing_values_from_index_of_other_dtypec                 C   sd   t t d¡ d¡d g d¢d�}t t d¡ d¡d g d¢d�}|jjD ]}d|j_qH| |¡ d S )	NrÁ   )rP   rQ   r(   r~  rº   )rQ   rP   rw  F)	r
   r   rÉ   r\  Z_mgrZarraysÚflagsZ	writeabler   )ro   rZ   r[   r$   r%   r%   r&   Útest_merge_readonlyw  s    ÿÿ
zTestMerge.test_merge_readonlyN)Hr  r   r!  rq   r{   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(  r0  r;  rC  rE  rK  rL  rN  rS  r^  r_  r`  rp  rq  rr  ru  ry  r‹  rŽ  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�   rm   rª   rÂ   T)r‰   rŠ   rh   F)Zcheck_names)r’   r   r  r…   rv   rw   )r=   rË   r‰   ry   rz   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g d¢g d¢g d¢g d¢dœfg d¢ddgddgddgdœfddgg d¢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g d ¢eg d!¢ƒ d¡fg d"¢eg d!¢ƒ 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&�g d*¢feddgd+d&�g d*¢fg d ¢g d,¢fg d"¢g d,¢fg d ¢g d,¢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/�d2dgfejd3dd4�ejd3dd5d6�fg	¡d7d8„ ƒZej d9ddgd:fg d;fdgd<fdgd=fg¡d>d?„ ƒZej d9d@dAgd:fg d;fdAgd<fd@gd=fg¡dBdC„ ƒZej dDd;g dE¢g dF¢gfd:g dE¢g dF¢gfd=g dE¢g dF¢gfd<g dF¢g dE¢gfg¡dGdH„ ƒZ dIdJ„ Z!dKS )LÚ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ƒsrJ ‚d S )Nr-   r£   rµ  r(   rI   ç      ð?ç       @Úuint64r*   Úint32)r)  r*  ÚCr=  ÚEÚFr)  r|   )r
   r   r‚   r   r   r)  r+   )ro   r´  rm   rn   ry   r%   r%   r&   Útest_different“  s    úÿ
zTestMergeDtypes.test_differentÚd1Úd2c           
      C   s>  t  |¡}t  |¡}tt jg d¢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   r*   r-   r£   r  é   )Úk1Úk2Úv)rI   r£   )r(   r-   re   rQ   ra   rg   rÁ  rÂ  r|   rÚ   Úfloat64rI   r(   Tr  Z	mergesort)Úkindrž  )r   r+   r
   r¿   rÉ   r)   r   r²  r’   r´   rÅ  r7   rŒ   rÁ  rÂ  rv   rw   Zsort_values)
ro   r¾  r¿  Zdtype1Zdtype2rm   rh   rn   ry   rz   r%   r%   r&   Útest_join_multi_dtypesª  s*    


ýÿ

z&TestMergeDtypes.test_join_multi_dtypeszint_vals, float_vals, exp_valsrè   )r¶  r·  ç      @©ÚXÚYr¶  rÇ  r(   rO   rI   r·  c                 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–   ru   )ro   Zint_valsZ
float_valsZexp_valsr)  r*  rz   ry   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œg d¢d�}t ||¡ d S )Nr¶  r·  r±   rÁ   rb   rc   rd   rº   rI   éÈ   )rc   re   re   rm   r½   g      i@rD  )r
   r   r   r7   rv   rw   r  r%   r%   r&   Útest_merge_key_dtype_castâ  s    þz)TestMergeDtypes.test_merge_key_dtype_castc                 C   s0  t dg d¢iƒ}t dg d¢iƒ}t dgdgdœƒ}t t¡�, |j|ddd�}t ||¡ W d   ƒ n1 sn0    Y  t t¡�4 |j|ddd�}t ||ddg ¡ W d   ƒ n1 s¼0    Y  t dtjtjdgiƒ}t d ¡�4 |j|ddd�}t ||ddg ¡ W d   ƒ n1 �s"0    Y  d S )	NrÉ  rè   rÊ  )çš™™™™™ñ?g      @rÇ  rO   rÇ  rÈ  r–   )r
   rv   Úassert_produces_warningÚUserWarningr   rw   r   r7   )ro   r)  r*  rz   ry   r%   r%   r&   Ú!test_merge_on_ints_floats_warningí  s    *2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 ©Nrc   TFr*   r|   )r
   r   r6   r   rv   rw   ©ro   rT   rU   rz   ry   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   rv   rw   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   rJ   )r  r¶  r·  r   FTr*   c                 C   s\   t d|iƒ}t d|iƒ}t||dgd�}t|jjƒs8J ‚t||dgd�}t|jjƒsXJ ‚d S )Nr)  r|   )r
   r   r   r)  r+   )ro   Údf1_valsÚdf2_valsrT   rU   ry   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=  rV  z
2011-01-01z
2011-01-02r  Z20130101)rH  r/   rG  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 d   ƒ n1 st0    Y  d|d j› d|d j› d�}t |¡}tjt|d��  t||dgd� W d   ƒ n1 sÚ0    Y  d S )Nr)  zYou are trying to merge on z and z9 columns. If you wish to proceed you should use pd.concatr”   r|   )r
   r+   ÚreÚescaper—   r˜   rš   r   )ro   rÖ  r×  rT   rU   rœ   r%   r%   r&   Ú test_merge_incompat_dtypes_error4  s     ÿÿ
.ÿÿ
z0TestMergeDtypes.test_merge_incompat_dtypes_errorzexpected_data, howrª   r�   rn   rm   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Â   ru   )ro   Zany_numeric_ea_dtyper‰   Úexpected_datar¾  r¿  ry   rz   r%   r%   r&   Útest_merge_EA_dtyped  s
    z#TestMergeDtypes.test_merge_EA_dtyperJ   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)rJ   rÞ  rÈ   )rK   rÂ   ru   )ro   r‰   rà  Zany_string_dtyper¾  r¿  ry   rz   r%   r%   r&   Útest_merge_string_dtypeu  s
    z'TestMergeDtypes.test_merge_string_dtypezhow, expected_data)Tr(   rP   )FrQ   rO   c                 C   sZ   t ddgddgdœƒ}t ddgddgdœƒ}t|||d	�}t |g d
¢d�}t ||¡ d S )NTFr(   rQ   ©r)  r*  rO   rP   )r)  rº  rÂ   ©r)  r*  rº  rº   ru   )ro   r‰   rà  rT   rU   ry   rz   r%   r%   r&   Útest_merge_bool_dtype†  s
    z%TestMergeDtypes.test_merge_bool_dtypec           	      C   sÀ   t g d¢g d¢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 g d¢¡d�}t |j|¡ d S )N)rÙ  rÚ  Ú3Ú4N)rç  Ú5Ú6Ú7Ú8)©Úlvl0zlvl1-a©rí  zlvl1-b)Údatar+   rÙ  rÚ  ræ  rè  rê  rë  Ú9Z11)rì  ©rí  zlvl1-crì  )rm   rn   r}   r‰   ÚO)rì  rî  rñ  rg   )r
   r2   ZStringDtyper´   ZNAr   rv   rw   r   r   r+   r   r²  r®   rû   )	ro   rå   Zstring_dtyperT   rm  rU   rn  r¡   rz   r%   r%   r&   Útest_merge_ea_with_string—  s0    þûþûÿþz)TestMergeDtypes.test_merge_ea_with_stringN)"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   rJ  rÝ  rá  râ  rå  ró  r%   r%   r%   r&   r³  ’  s”   ÿ
  ýþ
úþ
þþóþ

üþ	

üþ	
üþ	
r³  c                   C   sL   t j d¡ ttt jjddgdd�ƒ tddgƒ¡t jjg d¢dd�dœƒS )NéÒ  r-   r£   )r±   r   )ÚoneÚtwoÚthreerÈ  )r   r    Úseedr
   r   Úchoicer‚   ÚCDTr%   r%   r%   r&   rm   ¹  s    
ÿüÿrm   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&   rn   Æ  s    "ÿrn   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g d¢d
dgd
dgfg d¢ddgddgfg d ¢d!d"gd!d"gfg¡d#d$„ ƒƒZd%d&„ Zd'S )(ÚTestMergeCategoricalc                 C   sT   t ||dd�}|j ¡ }ttddgd�t d¡t d¡gg d¢d�}t ||¡ d S )	NrÉ  r|   r-   r£   rh  rò  )rÉ  ZY_xZY_yrg   ©	r   rû   r]  r   r   r   r+   rv   r®   )ro   rm   r¡   ry   rz   r%   r%   r&   Útest_identicalÏ  s    
þz#TestMergeCategorical.test_identicalc                 C   sT   t ||dd�}|j ¡ }ttddgd�t d¡t d¡gg d¢d	�}t ||¡ d S )
NrÉ  r|   r-   r£   rh  rò  r)   ©rÉ  rÊ  rû  rg   rý  ©ro   rm   rn   r¡   ry   rz   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°   rm   )r‰   rˆ   r‹   rµ  )r
   r   r´   r‚   r   rv   rw   )ro   rn   rm   rk   rz   Zcrightry   Zcleftr%   r%   r&   Útest_merge_categoricalè  s6    þÿþÿz+TestMergeCategorical.test_merge_categoricalc                 C   s„   t tg d¢g d¢d�g d¢dœƒ}t tg d¢g d¢d�g d¢dœƒ}t||dgd	�}t tg d¢ƒg d¢g d
¢dœƒ}t ||¡ d S )Nrä  rh  )ZA0ÚB0ZC0)ÚFooÚLeft)rº  r*  r)  )ÚC1ÚB1ÚA1)r  ÚRightr  r|   )r	  r  r  )r  r  r
  rx  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g d¢tg d¢|d�g d¢dœƒ d	d
g¡}tg d¢tg d¢|d�g d¢dœƒ d	d
g¡}t||dddd�}tg d¢tg d¢|d�g d¢ddtjgdœƒ d	d
g¡}t ||¡ d S )NÚP2ÚP1©ri  r  )rº  rº  r=  )r  r  r  r*   rô   )rÞ  ÚprJ   rÞ  r  )r)  rº  rº  )r  r  r  )r±   r%  r  )rÞ  r  r¾  rm   Trž   g      &@g      (@)rÞ  r  rJ   r¾  )	r   r
   r   r…   r   r   r7   rv   rw   )ro   r  ZpcatrT   rU   ry   rz   r%   r%   r&   Ú5test_multiindex_merge_with_unordered_categoricalindex,  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g d¢d�}t
 ||¡ |jj |jj¡s~J ‚|jj |jj¡s”J ‚d S )Nrµ  )rû  rÉ  r|   r-   r£   rh  rò  r(   rI   rÿ  rg   )Úassignrû  r‚   r   rû   r]  r   r   r   r+   rv   r®   rÉ  r
  Z#_categories_match_up_to_permutationr   r%   r%   r&   Útest_other_columnsI  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g d¢ƒ¡S )N)r-   r£   Zbah©r‚   rú  r<   r%   r%   r&   r>   a  r?   c                 C   s   |   tdd�¡S )NT©r  r  r<   r%   r%   r&   r>   b  r?   c           	      C   s€   ||j  d¡ƒ}|j|d�}t|j jjƒs.J ‚t||d|d�}|j ¡ }t	t
 d¡t
 d¡t
 d¡gg d¢d�}t ||¡ d S )	Nr6   )rÉ  rÉ  r½   rò  r)   rÿ  rg   )rÉ  r‚   r  r   r
  r+   r   rû   r]  r   r   rv   r®   )	ro   r  rå   rm   rn   rÉ  r¡   ry   rz   r%   r%   r&   Útest_dtype_on_merged_different]  s    
 ÿz3TestMergeCategorical.test_dtype_on_merged_differentc                    sx   d‰ t g d¢ˆ  g d¢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Ú   Új)r'  Ú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jjrÙ   c                 S   s
   |   d¡S )Nrµ  )r‚   r<   r%   r%   r&   r>   —  r?   zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>r|   )r
   Úapplyr   r   r�   rv   rw   )ro   rk   ry   r%   r  r&   Ú"test_self_join_multiple_categoriesv  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g d¢d�}t||ddgd�}t 	||¡ t t d¡ ¡ ddggg d¢d�}t||ddgd�}t 	||¡ d S )NiÑ  r(   rÎ  rI   çÍÌÌÌÌÌô?r   Únum2rº   rµ  rO   çffffffö?Únum4r�  r•  r–  )r   r*  r,  rª   rQ  r�   )
r
   r   r‚   r2   r3   r   r7   r   rv   rw   )ro   rk   rU   Zexpected_outerZresult_outerZexpected_innerZresult_innerr%   r%   r&   Útest_dtype_on_categorical_datesž  s.    $ÿ$ÿýúþz4TestMergeCategorical.test_dtype_on_categorical_datesz.category_column,categories,expected_categories)FTTF)rI   r(   r(   rI   r(   rI   )ÚFalseÚTruer/  r.  r/  r.  c           	      C   sŽ   t g d¢|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¥   )rÞ  rz  rz  r  rI   rP   r(   rë   )rÞ  Únum)rÞ  rz  r0  )r
   r‚   rú  r   rv   rw   )	ro   Zcategory_columnri  Zexpected_categoriesr  rT   rU   ry   rz   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)  r|   )r)  ÚB_xZB_y)r
   r   r   r7   r   rv   rw   )ro   rk   ry   rz   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-  r1  r3  r%   r%   r%   r&   rü  Î  s6   
+
ýþ
( ýþrü  c                   C   s   t dg d¢ig d¢d�S )NrJ   ©rÁ   r±   r   ©rI   r(   r   rg   rS   r%   r%   r%   r&   r©  Þ  s    r©  c                   C   s   t dg d¢ig d¢d�S )NrK   ©é,  éd   rÌ  ©rO   r(   rI   rg   rS   r%   r%   r%   r&   rª  ã  s    rª  c                   @   sZ  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g d¢ddejgdœg d¢d�fddeg d¢ejddgdœg d¢d�fddeejddgg d¢dœg d¢d�fddeddejgg d¢dœg d¢d�fddedddejgejdddgdœg d¢d�fddedddejgejdddgdœg d¢d�fg¡dd„ ƒZ	dS )ÚTestMergeOnIndexeszhow, sort, expectedr�   FrÁ   r±   rÌ  r8  r°   rI   r(   rg   Trm   r4  r5  )r   r±   rÁ   rô   rn   r6  r9  ©r8  rÌ  r7  rè   rª   r   r7  r�   c                 C   s$   t ||dd||d�}t ||¡ d S )NT)rs   rt   r‰   rŠ   rï   )ro   r©  rª  r‰   rŠ   rz   ry   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:  è  sR   "" ý ýÿýÿýþý	þýÝþ/r:  rh   r)  r*  Ú	index_col)ri  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>   )  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   rg   Ú
right_datar¶  r·  r=  r|   )rA  rB  ru   )rh   rm   rn   ry   rz   r%   r%   r&   Útest_merge_index_types  s
    rC  z-on,left_on,right_on,left_index,right_index,nmrª   r�   F)NNNTTr*  T)NNNTTNc              
   C   s  t dg d¢itjddgddggddgd	�d
�}tg d¢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 ur¸t||| ||||d�}	t |	|¡ nHd}
tjt	|
d��& t||| ||||d�}	W d   ƒ n1 sö0    Y  d S )Nr)  r¥   rJ   rK   r   r(   rª   r�   ©Únamesrg   rI   r5  rP   rO   rã  )r}   rˆ   r‹   rs   rt   z$Cannot merge a Series without a namer”   )
r
   r   Úfrom_productr   r   rv   rw   r—   r˜   rš   )r}   rˆ   r‹   rs   rt   ÚnmrJ   rK   rz   ry   rœ   r%   r%   r&   Útest_merge_series7  sF    
þýþù	ùrH  z!col1, col2, kwargs, expected_colsÚsuffixes)Ú Ú_dupr,  Z0_dup)NrK  )Ú_xÚ_yZ0_xZ0_yrL  rM  rJ   )NrM  r  )rL  Nz0.0_xrK   Úb_yr…  )NrL  )Z_aNZ0_ar†  c                 C   sŠ   t | g d¢iƒ}t |g d¢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è   ré   r(   rP   rI   rQ   rO   r¨   rº   Trr   ru   )rL   rv  ÚkwargsZexpected_colsrJ   rK   rz   ry   r%   r%   r&   Útest_merge_suffixl  s    rP  zhow,expectedr;  é<   éF   ©éX  é¼  é   )r)  r  ZB2)r8  rÌ  r(   r7  r¨  rT  rU  rV  c                 C   sX   t g d¢g d¢dœƒ}t g d¢g d¢dœƒ}t||d| dd�}g d	¢|_t ||¡ d S )
N)r8  rÌ  r(   )rQ  rR  r¨  rã  r;  rS  r)  )rL  rL  )r}   r‰   rI  )r)  r2  r2  )r
   r   r�   rv   rw   )r‰   rz   r©  rª  ry   r%   r%   r&   Útest_merge_duplicate_suffixŒ  s
    
rW  zcol1, col2, suffixes))rJ   rJ   )NN)rJ   rJ   )rJ  N)r   r   )NrJ  c                 C   sh   t | g d¢iƒ}t |g d¢iƒ}d}tjt|d��" t||dd|d� W d   ƒ n1 sZ0    Y  d S )Nrè   ©rO   rP   rQ   z'columns overlap but no suffix specifiedr”   T©rs   rt   rI  rt  )rL   rv  rI  rJ   rK   rœ   r%   r%   r&   Útest_merge_suffix_errorª  s
    rZ  rñ   c                 C   sd   t dg d¢iƒ}t dg d¢iƒ}t t¡�& t||ddddhd� W d   ƒ n1 sV0    Y  d S )	NrJ   rè   rK   rX  Trm   rn   rY  )r
   rv   rÏ  ÚFutureWarningr   )rI  rJ   rK   r%   r%   r&   Útest_merge_suffix_warns¹  s    r\  zcol1, col2, suffixes, msg)rJ   rJ   rà   z(too many values to unpack \(expected 2\)z1not enough values to unpack \(expected 2, got 1\)c                 C   sd   t | g d¢iƒ}t |g d¢iƒ}tjt|d��" t||dd|d� W d   ƒ n1 sV0    Y  d S )Nrè   rX  r”   TrY  rt  )rL   rv  rI  rœ   rJ   rK   r%   r%   r&   Útest_merge_suffix_length_errorÂ  s    r]  Ú	cat_dtyperõ  rö  Úreversec           	      C   sâ   t g d¢dd�t g d¢dd�dœ}ttg d¢ƒ |d ¡g d¢dœƒ d¡}g d¢}g d¢}|rp| ¡  | ¡  tt|ƒ ||  ¡|d	œƒ d¡}|j|d
d
d�}tg d¢g d¢tg d¢ƒ |d ¡dœƒ d¡}t ||¡ d S )Nrà   Fr  )rõ  rö  rõ  rè   ©r-   rm   r-   ©r-   rn   Trr   ©rm   rn   r-   )	r   r
   r   r‚   r…   r_  r   rv   rw   )	r^  r_  Z
cat_dtypesrT   Zdata_fooZ
data_rightrU   ry   rz   r%   r%   r&   Útest_merge_equal_cat_dtypesÑ  s8    þÿþÿþýÿúrc  c                  C   s¨   t g d¢dd�} ttddgƒ | ¡ddgdœƒ d	¡}ttg d¢ƒ | ¡g d
¢dœƒ d	¡}|j|ddd�}tddgddgtddgƒ | ¡dœƒ d	¡}t ||¡ d S )Nrà   Fr  rJ   rK   r(   rI   r`  r-   )rO   rI   r(   ra  Trr   rO   rb  )r   r
   r   r‚   r…   r   rv   rw   )r^  rT   rU   ry   rz   r%   r%   r&   Útest_merge_equal_cat_dtypes2ö  s$    ÿþÿþ ÿþrd  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�   rQ  )	r
   r   r2   ZIntervalr´   r‚   r   rv   rw   )rn   rm   ry   rz   r%   r%   r&   Útest_merge_on_cat_and_ext_array	  s    "ÿrf  c            	         sÂ   g d¢} g d¢}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 )NrÙ   ©rÙ  rÚ  ræ  rª   r�   rD  rº   rJ  rÞ  rL  rM  ©r}   rI  c                    s   g | ]}|ˆ  ‘qS r%   r%   ©r  r  )Úl_sufr%   r&   r  .	  r?   z1test_merge_multiindex_columns.<locals>.<listcomp>c                    s   g | ]}|ˆ  ‘qS r%   r%   ri  )Úr_sufr%   r&   r  .	  s   )r   rF  r
   r   rv   rw   )	ÚlettersÚnumbersrh   Zframe_xZframe_yry   Zexpected_labelsrŸ  rz   r%   )rj  rk  r&   Útest_merge_multiindex_columns	  s&    

ÿÿ
rn  c                  C   st   t g d¢g d¢dœƒ} t g d¢t g d¢¡dœƒ}t| |ddd	�}t g d¢g d¢t g d
¢¡dœƒ}t ||¡ d S )Nrà   )rÙ  rÚ  rç  )r=   rË   rg  )Ú2000Ú2001Z2002)rË   râ   rm   rË   rQ  )ro  rp  r8   rá   )r
   r2   rR  r   rv   rw   ©rT   rU   ry   rz   r%   r%   r&   Ú test_merge_datetime_upcast_dtype:	  s    ÿýÿrr  Ú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\   rY  r¨   rh  rm   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  Z	  r?   z9test_categorical_non_unique_monotonic.<locals>.<listcomp>r¬   r­   )	r	   r   r   r
   r   rÉ   r   rv   rw   )rs  rs   rT   rU   ry   rz   r%   r%   r&   Ú%test_categorical_non_unique_monotonicK	  s    ýýru  c                  C   s`  t g d¢g d¢ƒg d¢dœ} t| ƒ} t g d¢g d¢ƒg d¢g d¢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 g d¢g d¢dd�g d¢dœ} t| ƒ} t g d¢g d¢dd�g d¢g d¢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 )N)rJ   rK   rJ   r^   rJ   rK   rà   )r   r(   r   r(   r   r   )ÚCat1ÚInt1)rJ   rK   r^   rJ   rK   r^   )r   r   r   r(   r(   r(   )rÎ  g333333ó?r)  r+  r  gš™™™™™ù?)ÚCatÚIntÚFactorrx  ry  rz  rv  rw  rm   rÅ   r(   )Zaxisr|   r‡  Tr  )	r   r
   r…   r   r  Zdropr’   rv   rw   )rJ   rK   rz   ry   r%   r%   r&   Ú&test_merge_join_categorical_multiindexa	  sT    þýûÿüÿûûr{  Úfuncr   Z
merge_asof)rO  Úerr_msg)rˆ   rs   rˆ   rs   )r‹   rt   r‹   rt   c                 C   s�   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i |¤Ž W d   ƒ n1 s‚0    Y  d S )Nr(   rI   rO   rP   r°   rQ   r¨   rƒ  zCan only pass argument "r   ú" OR "z" not both\.r”   ©r
   r—   r˜   r   Úgetattrr2   ©r|  rO  r}  rm   rn   rœ   r%   r%   r&   Ú/test_merge_join_cols_error_reporting_duplicates™	  s
    
r‚  c                 C   s�   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i |¤Ž W d   ƒ n1 s‚0    Y  d S )Nr(   rI   rO   rP   r°   rQ   r¨   rƒ  zMust pass "r   r~  z"\.r”   r  r�  r%   r%   r&   Ú,test_merge_join_cols_error_reporting_missingª	  s
    
rƒ  rO  c                 C   s~   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 d   ƒ n1 sp0    Y  d S )Nr(   rI   rO   rP   r°   rQ   r¨   rƒ  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r”   r}   rJ   r  )r|  rO  rm   rn   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â   rn   Tr=   )r‰   rs   r‹   )r=   Zx_xZz_xZx_yZz_yru   ©rm   rn   ry   rz   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   rv   rw   )rT   rU   rz   ry   r%   r%   r&   Ú$test_merge_result_empty_index_and_onà	  s    r‡  c                  C   sÖ   t g d¢dddœƒ} t g d¢ddœƒ}t g d¢g d¢g d¢gg d	¢d
�}t t¡� t| |dd�}W d   ƒ n1 sv0    Y  t ||¡ t t¡�  t|| ddd� W d   ƒ n1 s¼0    Y  t ||¡ d S )Nrè   r(   rI   )rJ   rK   Úb_xr°   )r(   r(   rI   rI   )rI   r(   rI   rI   )rO   r(   rI   rI   ©rJ   rˆ  rˆ  rN  rº   rJ   r|   )rM  rL  rh  ©r
   rv   rÏ  r[  r   rw   )rm   rn   rz   ry   r%   r%   r&   Ú-test_merge_suffixes_produce_dup_columns_warnsì	  s    ÿ,.r‹  c                  C   sb   t g d¢g d¢gg d¢d�} t ddgddœƒ}t| |d	d
�}t g d¢gg d¢d�}t ||¡ d S )Nr›  rœ  )rJ   rK   rK   rº   r(   rO   rI   r°   rJ   r|   )r(   r(   r(   rI   r‰  ru   r…  r%   r%   r&   Ú3test_merge_duplicate_columns_with_suffix_no_warningü	  s
    rŒ  c                  C   sŒ   t g d¢g d¢gg d¢d�} t ddgddœƒ}t t¡� t| |d	d
�}W d   ƒ n1 s\0    Y  t g d¢gg d¢d�}t ||¡ d S )N)r(   r(   r(   r(   )rI   rI   rI   rI   )rJ   rK   rK   rˆ  rº   r(   rO   rI   r°   rJ   r|   )r(   r(   r(   r(   rI   )rJ   rˆ  rˆ  rˆ  rN  rŠ  r…  r%   r%   r&   ÚBtest_merge_duplicate_columns_with_suffix_causing_another_duplicate
  s    ,r�  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 g d¢g d¢gt g d¢¡d�}t ||¡ d S )Nr(   rI   rO   rP   rJ   ç     €\@rº   rë   r±   r%  r  r=   rË   r�   Trž   )rë   r±   r(   rI   )r%  r  rO   rP   )r=   rË   rJ   rŽ  ©r
   r2   rä   r   rv   rw   rq  r%   r%   r&   Ú%test_merge_string_float_column_result
  s    "ÿr�  c                  C   sl   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 d   ƒ n1 s^0    Y  d S )
NrÉ  rº  é   )rï  r�   rh   iç  zCan only pass argumentr”   T)r}   rs   )r
   r—   r˜   r   r   )Zdf_1Zdf_2r%   r%   r&   Ú/test_mergeerror_on_left_index_mismatched_dtypes
  s    r’  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   )rc   rL   r*   rO   rP   )rc   rv  rc   rª   r½   )rc   rL   rv  )rc   rv  rL   r¢  )r+   rm   rn   ry   rz   r%   r%   r&   Útest_merge_outer_with_NaN$
  s(    ýúýúr“  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«   rg   r_   r–   )r…  r†  r�  r…  r%   r%   r&   Ú test_merge_different_index_namesA
  s
    r”  )Xr   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_testingrv   Zpandas.api.typesrú  Zpandas.core.apir   r   r   Zpandas.core.reshape.concatr   Zpandas.core.reshape.merger   r   rj   rl   r'   r4   r9   ZfixturerF   rG   rH   rV   rW   rÕ   r³  rm   rn   rü  r©  rª  r:  r°  r±  rC  rH  rP  r7   rW  rZ  r\  Útupler]  rc  rd  rf  rn  rr  ru  r{  r‚  rƒ  r„  r†  r‡  r‹  rŒ  r�  r�  r’  r“  r”  r%   r%   r%   r&   Ú<module>   sX  0	



            )

  

7úö
øþ
(óþ
ÿþýÿþùþ
	þ

þþ
# 
8þþ	þþ	þþ

