o
    Û­jgŸ ã                   @   sD  d dl mZm Z mZ d dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dlmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dl m!Z!m"Z" dàdd„Z#dd„ Z$dd„ Z%ej&e$ƒ dd„ d�dd„ ƒZ'ej&e$ƒ dd„ d�dd„ ƒZ(ej&e%ƒ dd„ d�dd„ ƒZ)ej&dd„ ƒZ*G dd„ dƒZ+d d!„ Z,G d"d#„ d#ƒZ-ej&d$d%„ ƒZ.ej&d&d'„ ƒZ/G d(d)„ d)ƒZ0ej&d*d+„ ƒZ1ej&d,d-„ ƒZ2G d.d/„ d/ƒZ3ej4j5d0d1d2„ ej6D ƒed3d4gd3d4gd5d6�ed d7d5d8�ed9d:gd5d;�g d<d„ d=�d>d?„ ƒZ7ej4 5d@dAdBgdddCdCd4fdDddAdBgddCdEd4fdddAdBgdEdCd4fdAdBgdddCdCdfdFddAdBgddCdEdfdddAdBgdEdCdfg¡dGdH„ ƒZ8dIdJ„ Z9ej4 5dKd d dLdMidNdOgfd d dLdPid dOgfd d dLdQidRdSgfd d dLdTdUgidRdSgfdVd dLdWidVd gfdXdXdLdYidZdXgfd[d[dLdWid[d\gfdVdVdLdYid]dVgfdVd[dLdYidVd[gfdVdVdLd^idVd]gfd d dLd_id`d gfdVdVi d]dagfd d i dRdSgfg¡dbdc„ ƒZ:ej4 5ddd'eg de¢dfdgej;gg dh¢diœƒfdAeg dj¢dkdfdgej;gej;dldmdngdiœƒfg¡dodp„ ƒZ<ej4 5dqg dr¢¡dsdt„ ƒZ=ej4 5dLd%d'hd d duœg¡dvdw„ ƒZ>e�rdxndyZ?ej4 5dzdVdVd{d|e?› d}�fdVdVe@dVƒd~fg¡dd€„ ƒZAej4 5d�d‚dƒg¡ej4 5d„dEdCg¡d…d†„ ƒƒZBd‡dˆ„ ZCd‰dŠ„ ZDd‹dŒ„ ZEd�dŽ„ ZFej4 5d�d�d‘g¡d’d“„ ƒZGd”d•„ ZHej4 5d–d—d˜g¡ej4 5d™dVdEdšœd›dœgfdVdEd�œdždŸgfg¡d d¡„ ƒƒZIej4 5d–d—d˜g¡ej4 5d™d›dVidždŸgfdždVid›dœgfg¡d¢d£„ ƒƒZJej4 5d–d—d˜g¡ej4 5d¤dŸdEidœdEig¡d¥d¦„ ƒƒZKd§d¨„ ZLd©dª„ ZMd«d¬„ ZNd­d®„ ZOd¯d°„ ZPd±d²„ ZQd³d´„ ZRdµd¶„ ZSej4 5d·dd¸g¡d¹dº„ ƒZTd»d¼„ ZUd½d¾„ ZVd¿dÀ„ ZWej4 5d·dÁdÂg¡dÃdÄ„ ƒZXej4 5dÅg dÆ¢¡ej4 5dÇddÈg¡dÉdÊ„ ƒƒZYdËdÌ„ ZZej4 5dÅg dÍ¢¡ej4 5dÎdEdCg¡ej4 5dÏdEdCg¡ej4 5dÐdEdCg¡ej4 5dÑdEdCg¡ej4 5dÒdEdCg¡ej4 5dÓdEdCg¡dÔdÕ„ ƒƒƒƒƒƒƒZ[dÖd×„ Z\dØdÙ„ Z]ej4 5dÚdEdCg¡ej4 5dÛdEdCg¡dÜdÝ„ ƒƒZ^ej4 5dÅg dÍ¢¡dÞdß„ ƒZ_dS )áé    )ÚdateÚdatetimeÚ	timedeltaN)ÚPY314)Úis_object_dtypeÚis_string_dtype)ÚCategoricalDtype)ÚCategoricalÚCategoricalIndexÚ	DataFrameÚDatetimeIndexÚIndexÚIntervalIndexÚ
MultiIndexÚPeriodIndexÚ
RangeIndexÚSeriesÚTimedeltaIndex)Úconcat)Ú
MergeErrorÚmergeé   é2   c                 C   sf   t t| ƒƒ}t t |||  ¡¡}t|ƒ|k r(t t |ƒ|d |t|ƒ …  ¡}tj d¡ |¡ |S )Né   )	ÚlistÚrangeÚnpÚasarrayÚtileÚlenÚrandomÚdefault_rngÚshuffle)ÚngroupsÚnÚunique_groupsÚarr© r'   úb/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/reshape/merge/test_merge.pyÚget_test_data)   s   "r)   c                   C   sT   t dgdd�t dgdd�t dgƒt dgƒt dgƒt t d¡gƒt tjdd	d
�gƒgS )Né   Úint64©ÚdtypeÚInt64g®Gáz®ó?ÚfooTú
2018-01-01ú
US/Eastern©Útz)r   ÚpdÚ	Timestampr'   r'   r'   r(   Ú
get_series4   s   ùr6   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   Únanr4   ÚNaTr'   r'   r'   r(   Úget_series_na@   s
   
ür;   c                 C   ó   | j jS ©N©r-   Úname©Úxr'   r'   r(   Ú<lambda>I   ó    rB   )ÚparamsÚidsc                 C   ó   | j S )zV
    A parametrized fixture returning a variety of Series of different
    dtypes
    ©Úparam©Úrequestr'   r'   r(   Úseries_of_dtypeI   ó   rK   c                 C   r<   r=   r>   r@   r'   r'   r(   rB   R   rC   c                 C   rF   )zk
    A duplicate of the series_of_dtype fixture, so that it can be used
    twice by a single function
    rG   rI   r'   r'   r(   Úseries_of_dtype2R   rL   rM   c                 C   r<   r=   r>   r@   r'   r'   r(   rB   [   rC   c                 C   rF   )zU
    A parametrized fixture returning a variety of Series with all NA
    values
    rG   rI   r'   r'   r(   Úseries_of_dtype_all_na[   rL   rN   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*   r   ÚaÚb)Úcol1Úcol_conflictÚcol_left)r*   r   é   é   é   )r   r   r   r   r   )rQ   rR   Ú	col_right©r   )Údf1Údf2r'   r'   r(   Údfs_for_indicatord   s   ýÿr[   c                   @   sš  e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zej d/g d0¢¡d1d2„ ƒZej d3d4d4d5œd4d6d7œd8d4d9œd8d6d:œg¡d;d<„ ƒZd=d>„ Z d?d@„ Z!dAdB„ Z"dCdD„ Z#dEdF„ Z$ej dGdHg dI¢fd4g dJ¢fg¡ej d/dKdLg¡dMdN„ ƒƒZ%dOdP„ Z&dQdR„ Z'ej (dS¡dTdU„ ƒZ)dVdW„ Z*dXdY„ Z+ej dZg d[¢¡d\d]„ ƒZ,ej dZg d[¢¡d^d_„ ƒZ-d`da„ Z.dbdc„ Z/ddde„ Z0dfdg„ Z1dhdi„ Z2djdk„ Z3dldm„ Z4dndo„ Z5dpdq„ Z6drds„ Z7dtdu„ Z8dvdw„ Z9dxdy„ Z:dzd{„ Z;d|d}„ Z<ej d/dLd~g¡ej de=g d€¢ƒe=g d�¢ƒfe>g d‚¢dƒd„�e>d…d†d‡e?j@e?j@e?j@gdƒd„�fgdˆd‰„ eAjBD ƒ¢eC Dg dŠ¢¡eC Dd‹dŒd�eEjFeEjFeEjFg¡f‘eGg dŽ¢d�d��eGd…d‘d’e?j@e?j@e?j@gd�d��f‘eHg d“¢ƒeHd”d•d–e?j@e?j@e?j@gƒf‘¡d—d˜„ ƒƒZId™dš„ ZJej d/dKdLg¡d›dœ„ ƒZKd�dž„ ZLdŸd „ ZMd¡S )¢Ú	TestMergec                 C   sF   t tƒ tƒ tj d¡ d¡tj d¡ d¡dœƒ}||d dk }|S )Nr   r   )Úkey1Úkey2Údata1Údata2r^   r*   ©r   r)   r   r    r!   Ústandard_normal)ÚselfÚdfr'   r'   r(   rd   r   s   üÿ
zTestMerge.dfc                 C   s,   t tdd�tddd�tj d¡ d¡dœƒS )Né
   )r$   rU   )r#   r$   r   )r]   r^   Úvaluera   ©rc   r'   r'   r(   rZ   �   s   
ýÿzTestMerge.df2c                 C   s    t g d¢tj d¡ d¡dœƒS )N©rO   rP   ÚcÚdÚerk   rO   r   é   ©ÚkeyÚv1©r   r   r    r!   rb   rg   r'   r'   r(   Úleft‹   s
   þÿzTestMerge.leftc                 C   s"   t dtj d¡ d¡ig d¢d�S )NÚv2r   rU   ©rj   rP   ri   rO   ©Úindexrp   rg   r'   r'   r(   Úright”   s   þzTestMerge.rightc                 C   sP   t ƒ }t dddgiddgdd�}t||ddd�}t dg idd	�}t ||¡ d S )
NrO   r*   r   r   r+   )ru   r-   T©Ú
left_indexÚright_indexr,   ©r   r   ÚtmÚassert_frame_equal)rc   Údf_emptyÚdf_aÚresultÚexpectedr'   r'   r(   Útest_merge_inner_join_empty›   s
   z%TestMerge.test_merge_inner_join_emptyc                 C   s,   t ||ƒ}t ||ddgd�}t ||¡ d S )Nr]   r^   ©Úon©r   r{   r|   )rc   rd   rZ   Ú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   r   r   )r*   r   r   rT   ©r   r*   r   rT   )r   Úastyper7   r   r{   r|   ©rc   rq   rv   r€   r   r'   r'   r(   Útest_merge_non_string_columns¨   s   ÿ

z'TestMerge.test_merge_non_string_columnsc                 C   sF   |  d¡}|  d¡}t||dd�}t||dd�  d¡}t ||¡ d S )Nr]   r‚   )Ú	set_indexr   r{   r|   )rc   rd   rZ   rq   rv   r   r€   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¡dœƒ}t dtj d¡ 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 )Nrh   r   rl   rm   rr   rU   rs   rt   rn   Trq   F)Úleft_onry   ÚhowÚsortrv   )Úright_onrx   r�   r�   )
r   r   r    r!   rb   r   r{   r|   ÚlocÚcolumns)rc   rq   rv   Ú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¡dœƒ}t dtj d¡ 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 )Nrh   r   rl   rm   rr   rU   rs   rt   rn   TÚinner©rŽ   ry   r�   r‚   )r‘   rx   r�   )r   r   r    r!   rb   r   Újoinr’   ru   r{   r|   r“   ©rc   rq   rv   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||dd� W d   ƒ n1 sw   Y  d}t jtjj|d�� t||dd� W d   ƒ n1 s?w   Y  d}t jtjj|d�� t||ddd	� W d   ƒ n1 sbw   Y  d
}t jt|d�� t||dgddgd� W d   ƒ d S 1 s‡w   Y  d S )Nz&Must pass right_on or right_index=True©ÚmatchT)rx   z$Must pass left_on or left_index=True)ry   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothrn   )rŽ   rƒ   z)len\(right_on\) must equal len\(left_on\)r]   r^   ©rŽ   r‘   )ÚpytestÚraisesr4   Úerrorsr   r   Ú
ValueError)rc   rd   rZ   rq   rv   Úmsgr'   r'   r(   Útest_merge_misspecifiedî   s"   ÿÿÿÿ"ÿz!TestMerge.test_merge_misspecifiedc                 C   sÞ   d}t jt|d�� t||ddddgd� W d   ƒ n1 sw   Y  d}t jt|d�� t||dddgdd� W d   ƒ n1 sCw   Y  t jt|d�� t||dddgddgd� W d   ƒ d S 1 shw   Y  d S )	Nz>right_index parameter must be of type bool, not <class 'list'>rœ   rq   Fr]   r^   ©r�   rx   ry   z=left_index parameter must be of type bool, not <class 'list'>©rŸ   r    r¢   r   )rc   rd   rZ   r£   r'   r'   r(   Ú&test_index_and_on_parameters_confusion  s:   ûÿûÿû"ÿz0TestMerge.test_index_and_on_parameters_confusionc                 C   sN   t ||dd�}|d  ¡ d  ¡ }t|ƒ|ksJ ‚d|v sJ ‚d|v s%J ‚d S )Nrn   r‚   r   Úv1_xÚv1_y)r   Úvalue_countsÚsumr   )rc   rq   ÚmergedÚ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*   r   rT   rU   )Úlkeyrf   )r/   r¯   Úquxr/   )rV   é   rl   r   )Úrkeyrf   r²   rµ   ÚouterT)rŽ   r‘   r�   r�   r¯   r°   r/   ©r?   r³   r   rT   r*   rU   Úvalue_xr´   rV   r   rl   Úvalue_y)r   r   r   r   r9   r{   Úassert_series_equal)rc   rq   rv   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 ¡ s-J ‚d|d< |d dk ¡ s;J ‚d S )Nr   r*   ©rO   rP   re   rt   r/   r¯   ©ri   rj   T©rx   ry   Úcopyr´   rO   Úpeekaboorj   )r   r   r   Úall)rc   rq   rv   r¬   r'   r'   r(   Útest_merge_copy8  s   zTestMerge.test_merge_copyc                 C   s‚   t dddœtdƒd�}t dddœtdƒd�}t||d	d	d
d�}t |d j|d j¡s-J ‚|s=t |d j|d j¡s?J ‚d S d S )Nr   r*   r¼   re   rt   r/   r¯   r½   TFr¾   rO   rj   )r   r   r   r   Úshares_memoryÚ_values)rc   Úusing_array_managerÚusing_infer_stringrq   rv   r¬   r'   r'   r(   Útest_merge_nocopyD  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*   r   r   rT   rV   ©rn   rf   rf   rn   ©r“   ©r*   r*   r   rT   rU   rV   r´   )rn   Úrvaluer¶   ©rƒ   r�   ©	r*   r*   r*   r*   r   r   rT   rU   rV   r   r*   r   rT   rU   )	r   r*   r   r*   r   r   rT   rU   rV   )rn   rf   rÌ   )rf   rn   rÌ   )	r   r   r   r   r   Úarrayr9   r{   r|   )rc   rq   rv   r…   r€   r'   r'   r(   Ú"test_intelligently_handle_join_keyN  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s"J ‚t d
gdgdœƒ}t dgdgdœƒ}t||dd�}|d jdksDJ ‚t ddgiƒ}t ddgiƒ}t dg¡}t dg¡}t||||dd�}|d jt t¡kssJ ‚d S )Nr*   re   rm   r   é   r¶   ©r�   rn   r+   TFr   ÚboolÚval©rŽ   r‘   r�   Úkey_0)r   r   r-   r   rÏ   Úint)rc   rY   rZ   rd   r²   rµ   r'   r'   r(   Útest_merge_join_key_dtype_casta  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  ¡  ¡ sKJ ‚|d  ¡  ¡ sUJ ‚t dt d¡idgd�}t dt d	¡iƒ}t g d¢¡}t g d¢¡}t||||dd�}t	g d¢t
dd�}t |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È   rV   rÉ   rf   rn   r+   ©r“   r-   rÌ   r´   r,   rË   r¶   rÕ   rÊ   rÎ   rÖ   r>   rT   )r   r*   r*   r   r   rT   T)rx   r‘   r�   r·   )r   r   ÚarangerÏ   r   r{   rº   ÚnotnarÁ   r   r×   r+   )	rc   rq   rv   rn   r¬   r•   r²   rµ   r€   r'   r'   r(   Útest_handle_join_key_pass_arrayx  s0   ý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   ƒ d S 1 s@w   Y  d S )NrA   rO   rt   ÚyrP   ri   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   )rc   ÚdtrY   rZ   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éÜ  rV   r*   r   rT   rU   rA   rO   rt   rÝ   rP   ri   )rO   rP   Úq)ri   rj   rk   ÚfÚgÚhrj   ©r   r   Ú_check_merge)rc   rß   Údt2Údt3Údt4rY   rZ   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á   rV   r*   r   rT   rA   ©rO   rP   ri   rj   rt   rÝ   )rk   rã   rä   z hÚiræ   )rc   rß   rè   ré   rY   rZ   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*   r   rÉ   rn   rq   rÍ   rv   rz   )rc   rq   rv   r   r'   r'   r(   Útest_left_merge_empty_dataframeÆ  s   z)TestMerge.test_left_merge_empty_dataframer�   )r—   rq   rv   r¶   c                 C   s:   t g |d d… d�}| ¡ }|j||d�}t ||¡ d S )Nr   rt   rÒ   )r   r¿   r™   r{   r|   )rc   ru   r�   rq   rv   r   r'   r'   r(   Útest_merge_empty_dataframeÐ  s   z$TestMerge.test_merge_empty_dataframeÚkwargTrw   rA   ©rx   r‘   rO   ©rŽ   ry   rž   c                 C   sR   t g d¢d�}t g d¢d�}t g d¢td�}t||fd|i|¤Ž}t ||¡ d S )N©rO   rP   ri   rÊ   ©rA   rÝ   Úz©rO   rP   ri   rA   rÝ   rö   rÙ   r�   )r   r8   r   r{   r|   )rc   Ú	join_typerñ   rq   rv   Úexp_inr   r'   r'   r(   Ú!test_merge_left_empty_right_emptyÙ  s
   z+TestMerge.test_merge_left_empty_right_emptyc                    sL  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… }‡ ‡fdd„}‡ ‡fdd„}dddœdddœfD ]}|||ƒ |||ƒ qfdddœ}|||ƒ g d¢|d< |||ƒ dddœ}|||ƒ tjtjgd td�|d< |||ƒ d S )Nrô   rÊ   ©r*   r   rT   ©rU   rV   r´   ©rl   r   é	   rõ   rT   r,   ©r*   rU   rl   ©r   rV   r   ©rT   r´   rþ   r÷   r   c                    óH   t ˆ ˆfddi|¤Ž}t || ¡ t ˆ ˆfddi|¤Ž}t || ¡ d S )Nr�   r—   rq   r„   ©r†   rñ   r   ©rq   rv   r'   r(   Úcheck1þ  ó   z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check1c                    r  )Nr�   rv   r¶   r„   r  r  r'   r(   Úcheck2  r  z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2Trw   rA   rò   rO   ró   ©r   r*   r   rž   )r   r   rÏ   r9   r8   )rc   Úexp_outrù   r  r  rñ   r'   r  r(   Ú$test_merge_left_empty_right_notemptyì  s8   "ú÷þ





z.TestMerge.test_merge_left_empty_right_notemptyc              
      sÒ   t 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  rT   r,   r÷   r   c                    r  )Nr�   r—   rv   r„   r  r  r'   r(   r  /  r  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 ]}ˆ ˆ|ƒ ˆˆ|ƒ q4d S )Nr�   rq   r¶   Trw   rA   rò   rO   ró   rž   r„   r  ©r  r  rù   r	  rq   rv   r'   r(   r  5  s   ü
ùz>TestMerge.test_merge_left_notempty_right_empty.<locals>.check2)r   r   rÏ   r9   r8   ru   r‰   rg   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É   rn   rf   rÊ   r   r,   ©rn   r¸   r¹   r‚   )r   r   Údtypesr   r{   r|   )rc   rK   rM   rd   r}   r€   Úactualr'   r'   r(   Útest_merge_empty_frameE  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É   rn   rf   rÊ   r  r‚   rz   )rc   rK   rN   Údf_leftÚdf_rightr€   r  r'   r'   r(   Útest_merge_all_na_columnW  s"   þþýúz"TestMerge.test_merge_all_na_columnc                 C   s   t j d¡jdddd�t j d¡jdddd�tdddƒtddd	ƒtd
ddƒtdddƒtddd	ƒtdd	dƒtddd	ƒtdddƒtd
ddƒtdddƒg
dœ}t |¡}|j ¡ }t  	|¡}t |t j d¡ d¡dœ¡}|j
|ddd�}t
||ddd�}t ||¡ |j ¡ |j ¡ k ¡ sŽJ ‚d S )Nr   r   re   ©Úsizerá   r*   é   iÛ  rU   iÚ  rT   iØ  rV   )Úvar1Úvar2Úvar3rl   )r  Úvar8r  F©rƒ   r�   )r   r    r!   Úintegersr   r   Ú	from_dictr  Úuniquer�   r   r{   r|   rÁ   )rc   rj   rd   r  Únewr   r†   r'   r'   r(   Útest_merge_nosortl  s0   









öý


ÿ zTestMerge.test_merge_nosort)r�   ÚvaluesF)r*   r*   r   r*   r*   )r   r*   r*   r*   r*   rq   rv   c                 C   s@   t dg d¢iƒ}|j|d||d�}t |dgd�}t ||¡ d S )NrO   )r*   r   r*   )rƒ   r�   r�   rÊ   rz   )rc   r�   r!  r�   rd   r   r€   r'   r'   r(   Ú test_merge_same_order_left_rightŒ  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
œtg d
¢td�d� d ¡ ¡ g d¢ }|j 	d¡|_t
j||dd� d S )Nr   r*   ©Úi1Úi2©r$  Úi3r$  Ú_)rƒ   Úrsuffixç        ©r   r*   )r$  r%  Úi1_r'  Nr,   rÊ   ©r$  r%  r,  r'  r8   F©Úcheck_dtype)r   r™   r   r9   r   r8   rŒ   Úreset_indexr“   r‰   r{   r|   ©rc   rY   rZ   r   r€   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   r9   r{   r|   r1  r'   r'   r(   Útest_merge_nan_right2­  s   

üÿùzTestMerge.test_merge_nan_right2zMignore:Passing a BlockManager|Passing a SingleBlockManager:DeprecationWarningc                    s<   G ‡ fdd„dt ƒ‰ ˆ |ƒ}|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'   rg   ©ÚNotADataFramer'   r(   Ú_constructorÀ  s   z=TestMerge.test_merge_type.<locals>.NotADataFrame._constructorN)Ú__name__Ú
__module__Ú__qualname__Úpropertyr7  r'   r5  r'   r(   r6  ¿  s    r6  r]   r‚   )r   r   Ú
isinstance)rc   rd   rZ   Únadr   r'   r5  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	�}d
}t}|r"d }tj||d�� t||gdd�}t||gdd�}W d   ƒ n1 sDw   Y  t tdddddƒtdddddƒgtddƒtddƒgdœƒ}|rm| 	t
¡}t ||¡ d S )NiÝ  é   rV   é8   r   iäW  )rj   Útrß   rÊ   zDThe behavior of DataFrame concatenation with empty or all-NA entriesrœ   T©Úignore_index)r   r  r   r   r   ÚFutureWarningr{   Úassert_produces_warningr   r‰   r8   r|   )rc   rÅ   rj   rd   r£   Úwarnr   r€   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ÚBrt   Úrrq   )r)  r�   ÚAB)Ú0Ú0r)
r   Útimedelta64r   r   r™   r   r4   r:   r{   r|   )rc   ÚtdÚlhsÚrhsr   r€   r'   r'   r(   Útest_join_append_timedeltas2ã  s   
þÿz&TestMerge.test_join_append_timedeltas2Úunit)ÚDrå   ÚmÚsÚmsÚusÚnsc           
      C   sÚ   t dddgiƒ}td d gddgdd�}d|› d�}|dv r d	}n|}| |¡ d¡}|d j|ks3J ‚|j|dd
d�}tjddg|d�}tj	j
jj||jd�}t ddg|dœddgd�}	|	d j|kseJ ‚t ||	¡ d S )NÚ	entity_idée   éf   Údays©ru   r?   zdatetime64[ú]©rT  rå   rU  zdatetime64[s]Tró   Únatr,   ©rZ  r]  rÊ   )r   r   r‰   Úto_framer-   r   r   rÏ   r4   ÚcoreÚarraysÚDatetimeArrayÚ_simple_newr{   r|   )
rc   rS  rY   Úserr-   Ú	exp_dtyperZ   r   r]  r†   r'   r'   r(   Útest_other_datetime_unitó  s&   þûz"TestMerge.test_other_datetime_unitc           	      C   sò   t dddgiƒ}td d gddgdd�}d|› d�}|dv rDd	}tjt|d
�� | |¡ W d   ƒ n1 s6w   Y  | d¡ d¡}n| |¡ d¡}|d j|ksUJ ‚|j|ddd�}t ddgt	j
ddg|d�dœddgd�}t ||¡ d S )NrZ  r[  r\  r]  r^  zm8[r_  r`  z/Supported resolutions are 's', 'ms', 'us', 'ns'rœ   zm8[s]Tró   ra  r,   rb  rÊ   )r   r   rŸ   r    r¢   r‰   rc  r-   r   r   rÏ   r{   r|   )	rc   rS  rY   rh  r-   r£   rZ   r   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   ƒ d S 1 sgw   Y  d S )Nrû   rü   rý   ©rn   ro   rr   )rn   r/   r/   )rn   r¯   r¯   )rn   ro   rr   Úv3Úv4)rn   r/   r/   r¯   r¯   )r]   r/   r/   z?Data columns not unique: Index\(\['foo'\], dtype='object|str'\)rœ   )r   r“   r{   r|   r   rŸ   r    r   )rc   rd   rZ   r€   r£   r'   r'   r(   Ú&test_overlapping_columns_error_message+  s&   

ûÿ
	
"ÿz0TestMerge.test_overlapping_columns_error_messagec                 C   óŽ   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Ú20151010r   r1   ©Úperiodsr3   r*   rÉ   Ú20151011rT   rû   rU   r  rn   r¶   rÍ   )r   r4   Ú
date_ranger   r9   r   r{   r|   rŠ   r'   r'   r(   Útest_merge_on_datetime64tzC  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sWJ ‚|d jdks`J ‚d S )Nr*   r   rq  r1   rr  rÉ   rT   rt  rû   r  rn   r¶   rÍ   r¸   zdatetime64[ns, US/Eastern]r¹   )	r   r4   ru  r   r:   r   r{   r|   r-   rŠ   r'   r'   r(   Útest_merge_datetime64tz_values\  s0   þÿþÿÿÿüÿ	z(TestMerge.test_merge_datetime64tz_valuesc                 C   sž   t jdd�}ttdg|d�dgtdg|d�dœg d¢d�}|d d	… }|j|d
d�}tt|d�ttd�t|d�ttd�t|d�dœg d¢d�}t ||¡ d S )NÚUTCr2   Ú2018r,   g      @Ú2019)r   rf   Údate2rÊ   r   r   r‚   )r   r¸   Údate2_xr¹   Údate2_y)	r4   ÚDatetimeTZDtyper   r   r   r   r7   r{   r|   )rc   Údtzrv   rq   r   r€   r'   r'   r(   Ú test_merge_on_datetime64tz_emptyw  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:00rU   rå   zEurope/Madrid)rs  Úfreqr3   r   rÊ   r*   rf   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00r   )r   rf   rx  r¶   ©r�   rƒ   rl   rT   )r   r¸   r¹   )r   r4   ru  Úto_datetimerß   Útz_localizeÚ
tz_convertr   r   r9   r{   r|   r1  r'   r'   r(   Ú+test_merge_datetime64tz_with_dst_transition�  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©rs  r�  Úpnum©ru   r“   Tr—   )rx   ry   r�   r,   r   éÿÿÿÿr*   Úpnum_xÚpnum_y©r“   ru   )r4   Úperiod_ranger   r   r   r   r   r   r   r   rÚ   r+   ÚrepeatÚreshapeÚ
sort_indexru   r{   r|   )rc   ru   rd   rZ   r   r€   r'   r'   r(   Ú"test_merge_non_unique_period_index°  s   $ýz,TestMerge.test_merge_non_unique_period_indexc                 C   rp  )Nrq  r   rT  r‰  r*   rÉ   rt  rT   rû   rU   r  rn   r¶   rÍ   )r   r4   r�  r   r9   r   r{   r|   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sdJ ‚d S )Nr*   r   rq  rT  r‰  rÉ   rT   rt  rû   r  rn   r¶   rÍ   r¸   z	Period[D]r¹   )	r   r4   r�  r   r:   r   r{   r|   r-   )rc   rq   rv   Úexp_xÚexp_yr€   r   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*   r   rT   rU   rV   r*   r   rO   rP   rT   rU   rV   )rQ   Úcol_conflict_xrS   Úcol_conflict_yrW   )Ú	left_onlyÚbothÚ
right_onlyrž  rž  rž  ©rœ  rž  r�  ©Ú
categoriesÚ_merge)rQ   rš  rS   r›  rW   r¢  rQ   r¶   T©rƒ   r�   Ú	indicatorÚcustom_namerÊ   )	r¿   r   r   r9   r	   r   r{   r|   Úrename)
rc   r[   rY   rZ   Údf1_copyÚdf2_copyÚ	df_resultÚtestÚdf_result_custom_nameÚ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 s!w   Y  t jt|d�� |j|dddd� W d   ƒ d S 1 sBw   Y  d S )Nz<indicator option can only accept boolean or string argumentsrœ   rQ   r¶   rV   r£  r¦   )rc   r[   rY   rZ   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J ‚|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 ¡ sLJ ‚t ||dddd�}|jd	k ¡ s^J ‚|j |dddd�}|jd	k ¡ spJ ‚d S )
NrQ   rq   Tr£  rž  rv   rœ  r—   r�  )r   r¢  rÁ   )rc   r[   rY   rZ   Útest2Útest3Útest4r'   r'   r(   Ú%test_merge_indicator_result_integrity1  s   z/TestMerge.test_merge_indicator_result_integrityc              	   C   sV  |\}}dD ]T}t dddg|ddgiƒ}d|› d�}tjt|d�� t||ddd	d
� W d   ƒ n1 s5w   Y  tjt|d�� |j|ddd	d
� W d   ƒ n1 sUw   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ƒw   Y  tjt|d�� |j|dddd
� W d   ƒ d S 1 s¤w   Y  d S )N)Ú_right_indicatorÚ_left_indicatorr¢  rQ   r*   r   zECannot use `indicator=True` option when data contains a column named z;|Cannot use name of an existing column for indicator columnrœ   r¶   Tr£  )rQ   Úcustom_column_namez:Cannot use name of an existing column for indicator columnrµ  ©r   rŸ   r    r¢   r   )rc   r[   rY   r(  rí   Údf_badcolumnr£   r'   r'   r(   Útest_merge_indicator_invalidD  s<   ÿÿÿÿ€ûÿÿ"ÿ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*   rO   rP   )rQ   Úcol2)r*   r*   rT   )rP   rA   rÝ   )r   r*   r*   rT   ©rO   rP   rA   rÝ   )rœ  r�  rž  rž  rŸ  r   r¢  rQ   r¹  r¶   Tr£  ©r   r	   r   r{   r|   )rc   Údf3Údf4Úhand_coded_resultÚtest5r'   r'   r(   Ú%test_merge_indicator_multiple_columnsf  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ûw   Y  tj	t
|d�� t||
ddd� W d   ƒ n	1 �sw   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 �sYw   Y  tj	t
|d�� t||ddd� W d   ƒ n	1 �syw   Y  t||
dd!d� d"}tj	t
|d�� t||
d
d
dd� W d   ƒ n	1 �s¤w   Y  d#}tj	t
|d�� t||
ddd� W d   ƒ n	1 �sÆw   Y  d$}tj	t|d�� t||dd%d� W d   ƒ n	1 �sèw   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 �sCw   Y  t||dd.gdd�}t ||¡ d S )/Nrì   )ÚcatÚdogÚweaselÚhorser¼   rU   rt   ©rO   rP   ri   rj   rk   )ÚmeowÚbarkúum... weasel noise?ÚnayÚchirp©rO   ri   rV   Tz1:1)rx   ry   Úvalidate)rÆ  rÇ  rÈ  rÉ  )Úa_xrP   Úa_yri   r‹  Ú
one_to_onerô   rO   )rƒ   rÌ  ©rP   rO   ri   r�  )rx   r‘   rÌ  rk   ÚmooÚone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one mergerœ   ÚcowrT   )r�   Úmany_to_onezAMerge keys are not unique in left dataset; not a one-to-one mergeÚmany_to_manyzCMerge keys are not unique in right dataset; not a many-to-one mergezBMerge keys are not unique in left dataset; not a one-to-many mergez™"jibberish" is not a valid argument. Valid arguments are:
- "1:1"
- "1:m"
- "m:1"
- "m:m"
- "one_to_one"
- "one_to_many"
- "many_to_one"
- "many_to_many"Ú	jibberish)rO   rO   rP   rP   )r   r*   r   r*   ©rO   rO   rP   )r   r*   r   )rÆ  rÇ  rÈ  )rO   rP   rj   )rÁ  rÂ  rÃ  zQMerge keys are not unique in either left or right dataset; not a one-to-one mergerP   )r   r   r¿   r   r{   r|   rŒ   r   rŸ   r    r   r¢   )rc   rq   rv   Ú	left_copyÚ
right_copyr   r€   Ú
expected_2Ú
expected_3Úleft_index_resetÚright_w_dupsr£   Úleft_w_dupsÚexpected_multir'   r'   r(   Útest_validationy  s.  þþû	üø
ÿýú	ýù

û ûûÿ	ÿÿûûÿ	ÿûÿ	ÿÿÿýú	ýú	üùÿÿzTestMerge.test_validationc                 C   sP   t g g g dœƒ}tjdd�� t||dd� W d   ƒ d S 1 s!w   Y  d S )Nrô   Úraise)Údivider¼   r‚   )r   r   Úerrstater   )rc   rO   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*   r   rU   )r*   r   rU   NNN)ú
2001-01-01ú
2002-02-02ú
2003-03-03zM8[ns]r,   rå  ræ  rç  c                 C   s.   g | ]}t g d ¢|d�t g d¢tjd�f‘qS )rû   r,   )r*   r   rT   NNN)r   r   Úfloat64©Ú.0Údtypr'   r'   r(   Ú
<listcomp>U  s    ýþÿzTestMerge.<listcomp>)©r*   r   ©r   rT   ©rT   rU   rí  rî  rï  )rå  ú
2001-01-02ú
2001-01-03rT  )r�  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  ©rO   rn   rt   rP   r™  rn   Tr˜   )r   r   r   ©r*   r*   r*   ©r   r   r   rT   rU   rV   ©rO   rn   rP   rÊ   )Úinplace)r   r   r   r9   rŒ   r{   r|   )rc   r�   ru   Úexpected_indexrY   rZ   r   r€   r'   r'   r(   Ú$test_merge_on_index_with_more_valuesD  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õ  rP   ©r*   r   rT   N)r   r*   r*   r   )r*   r   r   rT   rø  r   r*   r   r�  rn   Trv   r˜   ©r   r   r9   r   r{   r|   rŠ   r'   r'   r(   Útest_merge_right_index_right„  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r0t ddgddgdœƒ}nt ddgddgdœƒ}t ||¡ d S )NrÂ  Úpigé(   r?  )ÚanimalÚ	max_speedÚquetzaléP   r  r  rÍ   rv   rz   )rc   r�   Úleft_dfÚright_dfr   r€   r'   r'   r(   Útest_merge_preserves_row_order“  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×  Úabcr   rõ  rP   rô   rt   rn   Trv   r˜   rü  )rO   rO   rP   ri   )r*   r*   r   rT   rø  r   r*   r   rÊ   )
r   r	   r   r
   r   r   r9   Úreindexr{   r|   rš   r'   r'   r(   Ú8test_merge_take_missing_values_from_index_of_other_dtypeŸ  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_q$| |¡ d S )	NrÑ   )rU   rV   r*   rÅ  rÊ   )rV   rU   rº  F)	r   r   rÚ   r’  Ú_mgrre  ÚflagsÚ	writeabler   )rc   r_   r`   r&   r'   r'   r(   Útest_merge_readonly´  s   ÿÿ
zTestMerge.test_merge_readonlyN)Nr8  r9  r:  rŸ   Úfixturerd   rZ   rq   rv   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"  r2  r4  Úfilterwarningsr>  rG  rR  rj  rk  ro  rv  rw  r€  r†  r”  r•  r˜  r­  r®  r²  r¸  rÀ  rà  rä  r
   r   r4   r:   r{   ÚALL_REAL_NUMPY_DTYPESr   Úfrom_tuplesr   r9   r   r   rû  rþ  r  r
  r  r'   r'   r'   r(   r\   q   sð    

	

	
 


üþ
	
/* ÿÿ


 ?
" F

þÿþüûûòÿþëþþå
#þÞþ*
r\   c                 C   sZ   dD ](}dD ]#}| j |||d�}t|  ¡ | ¡ ||d�}| d¡}tj||dd� qqd S )N)r—   rq   r¶   )TF©r�   r�   ru   F)Úcheck_names)r™   r   r0  rŒ   r{   r|   )rA   rÝ   r�   r�   r   r€   r'   r'   r(   rç   Ä  s   
ùÿrç   c                   @   s<  e Zd Zej dddgeddgƒ d¡g¡dd„ ƒZej de	j
e	je	je	je	je	jg¡ej de	j
e	je	je	jg¡d	d
„ ƒƒZej d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 dF¢g dE¢gfd=g dE¢g dF¢gfd<g dF¢g dE¢gfg¡dGdH„ ƒZ!dIdJ„ Z"ej dKg dL¢¡dMdN„ ƒZ#dOS )PÚTestMergeDtypesÚ
right_valsr/   r¯   Úcategoryc              
   C   s†   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ƒs?t|jjƒsAJ ‚d S d S )Nr/   r¯   r  r*   r   ç      ð?ç       @Úuint64r,   Úint32)rH  rI  ÚCrT  ÚEÚFrH  r‚   )r   r   r‰   r   r   rH  r-   r   )rc   r  rq   rv   r   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rUt  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)r   r¯   )r*   r/   rr   rV   rl   rt   r%  r&  r‚   rí   rè  r   r*   Tr  Ú	mergesort)Úkindrù  )r   r-   r   rÏ   rÚ   r+   r   r  r™   r¿   r)  r9   r’   r%  r&  r{   r|   Úsort_values)
rc   r"  r#  Údtype1Údtype2rq   ru   rv   r   r€   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*   rT   r   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 )Nr0  r1  rž   rz   )rc   Úint_valsÚ
float_valsÚexp_valsrH  rI  r€   r   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  re   rÑ   rm   rn   ro   rÊ   r   éÈ   )rn   rr   rr   rq   rÍ   g      i@rl  )r   r   r   r9   r{   r|   r1  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 s7w   Y  t t¡� |j|ddd�}t ||ddg ¡ W d   ƒ n1 s^w   Y  t dtjtjdgiƒ}t d ¡� |j|ddd�}t ||ddg ¡ W d   ƒ d S 1 s‘w   Y  d S )	Nr0  rû   r1  )çš™™™™™ñ?g      @r.  rT   r.  r/  rž   )r   r{   rE  ÚUserWarningr   r|   r   r9   )rc   rH  rI  r€   r   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 ©Nrn   TFr,   r‚   )r   r   r8   r   r{   r|   ©rc   rY   rZ   r€   r   r'   r'   r(   Ú(test_merge_incompat_infer_boolean_objectC  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   r9   r8   r   r{   r|   r<  r'   r'   r(   Ú5test_merge_incompat_infer_boolean_object_with_missingN  s   zETestMergeDtypes.test_merge_incompat_infer_boolean_object_with_missingzdf1_vals, df2_valsr  )rO   rP   rO   )r*  r  r  r   FTr,   c                 C   sl   t d|iƒ}t d|iƒ}t||dgd�}t|jjƒsJ ‚t||dgd�}t|jjƒs2t|jjƒs4J ‚d S d S )NrH  r‚   )r   r   r   rH  r-   r   )rc   Údf1_valsÚdf2_valsrY   rZ   r   r'   r'   r(   Ú!test_merge_incompat_dtypes_are_okZ  s   $z1TestMergeDtypes.test_merge_incompat_dtypes_are_okr  rô   r  )rL  Ú1Ú2z1/1/2011rT  r‰  z
2011-01-01z
2011-01-02r*  Ú20130101)rs  r1   rr  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 s:w   Y  d|d j› d|d j› d�}t |¡}tjt|d�� t||dgd� W d   ƒ n1 smw   Y  t|ƒt|ƒkrñt |||dœƒ}t |||dœƒ}d|d j› d|d j› d	�}t |¡}tjt|d�� t||ƒ W d   ƒ n1 sµw   Y  d|d
 j› d|d
 j› d�}t |¡}tjt|d�� t||dd
gd� W d   ƒ d S 1 sêw   Y  d S d S )NrH  úYou are trying to merge on ú and zE columns for key 'A'. If you wish to proceed you should use pd.concatrœ   r‚   ©rH  rI  r  rI  zE columns for key 'B'. If you wish to proceed you should use pd.concatr  zE columns for key 'C'. If you wish to proceed you should use pd.concat)	r   r-   ÚreÚescaperŸ   r    r¢   r   r   )rc   r?  r@  rY   rZ   r£   r¼  r½  r'   r'   r(   Ú test_merge_incompat_dtypes_errorr  s<   ÿ
ÿÿ
ÿÿ
ÿÿ
"ÿéz0TestMergeDtypes.test_merge_incompat_dtypes_errorzexpected_data, howr¶   r—   rv   rq   c           	      C   s`   t dgdg|d�}t dgdg|d�}t|||d�}tt|ƒƒ}t ||dg|d�}t ||¡ d S )N)r*   ÚidrÙ   ©r   rÒ   ©ru   r“   r-   ©r   r   r   r   r{   r|   )	rc   Úany_numeric_ea_dtyper�   Úexpected_datar"  r#  r   Ú	exp_indexr€   r'   r'   r(   Útest_merge_EA_dtype¼  ó   
ÿz#TestMergeDtypes.test_merge_EA_dtyperO   rP   c           	      C   s`   t dgdg|d�}t dgdg|d�}t|||d�}tt|ƒƒ}t ||dg|d�}t ||¡ d S )N)rO   rK  rÙ   )rP   rÒ   rM  rN  )	rc   r�   rP  Úany_string_dtyper"  r#  r   Úexp_idxr€   r'   r'   r(   Útest_merge_string_dtypeÐ  rS  z'TestMergeDtypes.test_merge_string_dtypezhow, expected_data)Tr*   rU   )FrV   rT   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*   rV   ©rH  rI  rT   rU   ©rH  r  rÒ   rG  rÊ   rz   )rc   r�   rP  rY   rZ   r   r€   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)rB  rC  Ú3Ú4N)r[  Ú5Ú6Ú7Ú8)©Úlvl0zlvl1-a©ra  zlvl1-b)Údatar-   rB  rC  rZ  r\  r^  r_  Ú9Ú11)r`  ©ra  zlvl1-cr`  )rq   rv   rƒ   r�   ÚO)r`  rb  rf  rt   )r   r4   ÚStringDtyper¿   ÚNAr   r{   r|   r   r   r-   r   r  rº   r  )	rc   rø   Ústring_dtyperY   r§  rZ   r¨  r¬   r€   r'   r'   r(   Útest_merge_ea_with_stringõ  s0   þûþûÿþz)TestMergeDtypes.test_merge_ea_with_stringzleft_empty, how, exp)
)Frq   rq   )Frv   Úempty)Fr—   rl  )Fr¶   rq   )FÚcrossÚempty_cross)Trq   rl  )Trv   rv   )Tr—   rl  )Tr¶   rv   )Trm  rn  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œƒ}n*|dkrPt dgtjgdgdœƒ}n|dkr]t g d¢dd�}n|dkrit g d¢dd�}|dkrt|jddd�}t ||¡ d S )Nr   r*   rT   rU   rW  rV   rX  r+   r,   r   rÒ   rq   rG  rv   rl  rÙ   rn  )ÚA_xrI  ÚA_yr  r¶   rH  TrB  )r   Úheadr   r   r9   r*  r{   r|   )rc   Ú
left_emptyr�   r†   rq   rv   r   r€   r'   r'   r(   Útest_merge_empty  s"   
"z TestMergeDtypes.test_merge_emptyN)$r8  r9  r:  rŸ   r  r  r   r‰   r!  r   r+   r  ÚintcÚint16Úint8Úuint8rè  Úfloat32Úfloat16r-  r5  r7  r:  r=  r>  r8   rÓ   rA  r4   ru  rJ  rR  rV  rY  rk  rs  r'   r'   r'   r(   r  Ð  s¤    ÿ
ÿýþ
úþ
þþóþ
5
üþ
	
üþ
	üþ
	!þr  c                   C   sL   t ttj d¡jddgdd�ƒ tddgƒ¡tj d¡jg d¢dd�dœƒS )Nr   r/   r¯   )re   r  )ÚoneÚtwoÚthreer/  )r   r   r   r    r!   Úchoicer‰   r   r'   r'   r'   r(   rq   ?  s   ÿüÿrq   c                   C   s(   t tddgƒ tddgƒ¡ddgdœƒS )Nr/   r¯   r*   r   )r0  ÚZ)r   r   r‰   r   r'   r'   r'   r(   rv   K  s
   þÿrv   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   sZ   t ||dd�}|j ¡ }|st d¡nd}ttddgd�||gg d¢d	�}t ||¡ d S )
Nr0  r‚   rg  Ústrr/   r¯   r   )r0  ÚY_xÚY_yrt   ©	r   r  r“  r   r-   r   r   r{   rº   )rc   rq   rÆ   r¬   r   r-   r€   r'   r'   r(   Útest_identicalV  s   
þz#TestMergeCategorical.test_identicalc                 C   s`   t ||dd�}|j ¡ }|st d¡nd}ttddgd�|t d¡gg d	¢d
�}t ||¡ d S )Nr0  r‚   rg  r€  r/   r¯   r   r+   ©r0  r1  r~  rt   rƒ  ©rc   rq   rv   rÆ   r¬   r   r-   r€   r'   r'   r(   Ú
test_basica  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 )NrO   rP   ri   rj   rk   )r   r*   r   rT   rU   Únullr½   rã   rä   r¼   rq   )r�   rŽ   r‘   r  )r   r   r¿   r‰   r   r{   r|   )rc   rv   rq   rd   r€   Úcrightr   Úcleftr'   r'   r(   Útest_merge_categoricalq  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 )NrG  r   )ÚA0ÚB0ÚC0)ÚFooÚLeft)r  rI  rH  )ÚC1ÚB1ÚA1)r�  ÚRightr�  r‚   )r“  r’  r‘  )r�  r�  r”  r»  r1  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©r¡  r–  )r  r  rT  )r—  r˜  r—  r,   r  )rK  ÚprO   rK  rš  )rH  r  r  )r—  r—  r˜  )re   r?  r  )rK  rš  r"  rq   Tr¥   g      &@g      (@)rK  rš  rO   r"  )	r   r   r	   rŒ   r   r   r9   r{   r|   )rc   r–  ÚpcatrY   rZ   r   r€   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 ¡ }|st d¡nd}tt	ddgd	�|t	d
dgd	�gg d¢d�}t
 ||¡ |jj |jj¡sEJ ‚|jj |jj¡sPJ ‚d S )Nr  )r~  r0  r‚   rg  r€  r/   r¯   r   r*   r   r…  rt   )Úassignr~  r‰   r   r  r“  r   r-   r   r   r{   rº   r0  r!  Ú#_categories_match_up_to_permutationr†  r'   r'   r(   Útest_other_columnsÒ  s   
ýúz'TestMergeCategorical.test_other_columnsÚchangec                 C   s   | S r=   r'   r@   r'   r'   r(   rB   ê  s    zTestMergeCategorical.<lambda>c                 C   s   |   tg d¢ƒ¡S )N)r/   r¯   Úbah©r‰   r   r@   r'   r'   r(   rB   ë  s    c                 C   s   |   tdd�¡S )NT©r–  r¢  r@   r'   r'   r(   rB   ì  s    c                 C   sˆ   ||j  d¡ƒ}|j|d�}t|j jjtƒsJ ‚t||d|d�}|j 	¡ }|s,t
 d¡nd}	t|	|	t
 d¡gg d¢d	�}
t ||
¡ d S )
Nr8   )r0  r0  rÍ   rg  r€  r+   r…  rt   )r0  r‰   r�  r<  r!  r-   r   r   r  r“  r   r   r{   rº   )rc   r   rø   rq   rv   rÆ   r0  r¬   r   r-   r€   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 )NrV   )
rO   rP   ri   rj   rk   rã   rä   rå   rí   Új)rA  ÚwrA   rÝ   rö   r   c                    s$   g | ]}|gd  ˆ  D ]}|‘qqS rL  r'   ©rê  ÚeachÚletter©rU  r'   r(   rì  	  s    ýþÿzKTestMergeCategorical.test_self_join_multiple_categories.<locals>.<listcomp>)rU  r$   Úurš  Úoc                    s    g | ]}|gˆ  D ]}|‘q	qS r'   r'   r§  rª  r'   r(   rì    s    òóÿ)
ÚaaÚbbÚccÚddÚeeÚffÚggÚhhÚiiÚjjrì   c                 S   s
   |   d¡S )Nr  )r‰   r@   r'   r'   r(   rB   "  s   
 zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>r‚   )r   Úapplyr   r   r“   r{   r|   )rc   rd   r   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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*   r8  r   çÍÌÌÌÌÌô?r   Únum2rÊ   r  rT   çffffffö?Únum4rå  rð  rñ  )r   rº  r¼  r¶   r‚  r—   )
r   r   r‰   r4   r5   r   r9   r   r{   r|   )rc   rd   rZ   Úexpected_outerÚresult_outerÚexpected_innerÚresult_innerr'   r'   r(   Útest_dtype_on_categorical_dates)  s.   $ÿ$ÿýúþz4TestMergeCategorical.test_dtype_on_categorical_datesz.category_column,categories,expected_categories)FTTF)r   r*   r*   r   r*   r   )Ú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±   )rK  rÁ  rÁ  r£  r   rU   r*   rþ   )rK  Únum)rK  rÁ  rÄ  )r   r‰   r   r   r{   r|   )	rc   Úcategory_columnr¡  Úexpected_categoriesr–  rY   rZ   r   r€   r'   r'   r(   Ú/test_merging_with_bool_or_int_cateorical_columnI  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*   r   r.   r,   rW  rH  r‚   )rH  ÚB_xÚB_y)r   r   r   r9   r   r{   r|   )rc   rd   r   r€   r'   r'   r(   Útest_merge_on_int_arraya  s   ÿz,TestMergeCategorical.test_merge_on_int_arrayN)r8  r9  r:  r„  r‡  r‹  r•  rŸ   r  r  rœ  rŸ  r¤  r¸  rÁ  rÇ  rÊ  r'   r'   r'   r(   r  U  s8    +
ýþ
( ýþr  c                   C   ó   t dg d¢ig d¢d�S )NrO   ©rÑ   re   r   ©r   r*   r   rt   rX   r'   r'   r'   r(   r  k  ó   r  c                   C   rË  )NrP   ©é,  éd   r6  ©rT   r*   r   rt   rX   r'   r'   r'   r(   r  p  rÎ  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Ñ   re   r6  rÑ  r¼   r   r*   rt   Trq   rÌ  rÍ  )r   re   rÑ   r  rv   rÏ  rÒ  ©rÑ  r6  rÐ  rû   r¶   r   rÐ  rˆ   c                 C   s$   t ||dd||d�}t ||¡ d S )NT)rx   ry   r�   r�   r„   )rc   r  r  r�   r�   r€   r   r'   r'   r(   Útest_merge_on_indexesv  s   0ÿz(TestMergeOnIndexes.test_merge_on_indexesN)
r8  r9  r:  rŸ   r  r  r   r   r9   rÕ  r'   r'   r'   r(   rÓ  u  sT    "" ý ýÿýÿýþý	þýÝþ/rÓ  ru   c                 C   s   g | ]}t d dg|dd�‘qS )r*   r   Ú	index_colr>   )r   ré  r'   r'   r(   rì  ®  s    rì  rH  rI  rÖ  )r¡  r?   r   )ÚstartÚstopr?   r0   z
2018-01-02r·   c                 C   s   t | ƒj› d| j› d�S )Nú[r_  )Útyper8  r-   r@   r'   r'   r(   rB   ´  s    )rE   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*   r   rt   Ú
right_datar  r  rÖ  r‚   )rÛ  rÜ  rz   )ru   rq   rv   r   r€   r'   r'   r(   Útest_merge_index_types¬  s
   rÝ  z-on,left_on,right_on,left_index,right_index,nmr¶   r—   F)NNNTTrI  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 |	|¡ d S d}
tjt	|
d�� t||| ||||d�}	W d   ƒ d S 1 s}w   Y  d S )NrH  r±   rO   rP   r   r*   r¶   r—   ©Únamesrt   r   r^  rU   rT   rW  )rƒ   rŽ   r‘   rx   ry   z$Cannot merge a Series without a namerœ   )
r   r   Úfrom_productr   r   r{   r|   rŸ   r    r¢   )rƒ   rŽ   r‘   rx   ry   ÚnmrO   rP   r€   r   r£   r'   r'   r(   Útest_merge_seriesÂ  sH   
þýþù	ù"ÿrâ  c                  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d�}tjtdd�� t| |ddgd� W d   ƒ d S 1 sIw   Y  d S )NrH  r±   rO   rP   r   r*   r¶   r—   rÞ  rt   r   )rI  r  r^  z-Not allowed to merge between different levelsrœ   r‚   )r   r   rà  r   rŸ   r    r   r   r¼   r'   r'   r(   Útest_merge_series_multilevel÷  s   
þýÿ"ýrã  z!col1, col2, kwargs, expected_colsÚsuffixes)Ú Ú_duprL  Ú0_dup)Nræ  )Ú_xÚ_yÚ0_xÚ0_yrè  ré  rO   )Nré  r*  )rè  Nz0.0_xrP   Úb_yrÍ  )Nrè  )Ú_aNÚ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*   rU   r   rV   rT   r´   rÊ   Trw   rz   )rQ   r¹  ÚkwargsÚexpected_colsrO   rP   r€   r   r'   r'   r(   Útest_merge_suffix		  s   rñ  zhow,expectedrÔ  é<   éF   ©éX  é¼  é   )rH  r’  ÚB2)r*   rÑ  r6  rÐ  r  rõ  rö  r÷  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)rÑ  r6  r*   )rò  ró  r  rW  rÔ  rô  rH  )rè  rè  )rƒ   r�   rä  )rH  rÈ  rÈ  )r   r   r“   r{   r|   )r�   r€   r  r  r   r'   r'   r(   Útest_merge_duplicate_suffix)	  s
   
rù  zcol1, col2, suffixes))rO   rO   )NN)rO   rO   )rå  N)r   r   )Nrå  c                 C   sj   t | g d¢iƒ}t |g d¢iƒ}d}tjt|d�� t||dd|d� W d   ƒ d S 1 s.w   Y  d S )Nrû   ©rT   rU   rV   z'columns overlap but no suffix specifiedrœ   T©rx   ry   rä  r¶  )rQ   r¹  rä  rO   rP   r£   r'   r'   r(   Útest_merge_suffix_errorG	  s   "ÿrü  r  c                 C   sf   t dg d¢iƒ}t dg d¢iƒ}tjtdd�� t||dd| d� W d   ƒ d S 1 s,w   Y  d S )	NrO   rû   rP   rú  zPassing 'suffixes' as arœ   Trû  )r   rŸ   r    Ú	TypeErrorr   )rä  rO   rP   r'   r'   r(   Útest_merge_suffix_raisesV	  s
   "ÿrþ  z2, got 3rC  zcol1, col2, suffixes, msgrô   z%too many values to unpack \(expected z\)z1not enough values to unpack \(expected 2, got 1\)c                 C   sf   t | g d¢iƒ}t |g d¢iƒ}tjt|d�� t||dd|d� W d   ƒ d S 1 s,w   Y  d S )Nrû   rú  rœ   Trû  r¶  )rQ   r¹  rä  r£   rO   rP   r'   r'   r(   Útest_merge_suffix_length_errorb	  s
   "ÿrÿ  Ú	cat_dtyperz  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¢}|r8| ¡  | ¡  tt|ƒ ||  ¡|d	œƒ d¡}|j|d
d
d�}tg d¢g d¢tg d¢ƒ |d ¡dœƒ d¡}t ||¡ d S )Nrô   Fr™  )rz  r{  rz  rû   ©r/   rq   r/   ©r/   rv   Trw   ©rq   rv   r/   )	r   r   r   r‰   rŒ   r  r   r{   r|   )	r   r  Ú
cat_dtypesrY   Údata_fooÚ
data_rightrZ   r   r€   r'   r'   r(   Útest_merge_equal_cat_dtypesv	  s8   þÿþÿþýÿúr  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™  rO   rP   r*   r   r  r/   )rT   r   r*   r  Trw   rT   r  )r   r   r   r‰   rŒ   r   r{   r|   )r   rY   rZ   r   r€   r'   r'   r(   Útest_merge_equal_cat_dtypes2›	  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 )
NrO   r   r*   r   Úintervalr,   r  r—   r‚  )	r   r   r4   ÚIntervalr¿   r‰   r   r{   r|   )rv   rq   r   r€   r'   r'   r(   Útest_merge_on_cat_and_ext_array±	  s   "ÿr  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 ƒ}|dg7 }|‡‡fdd„| D ƒ7 }t j|ddgd�}t|d�}tj||dd� d S )Nrì   ©rB  rC  rZ  r¶   r—   rÞ  rÊ   rå  rK  rè  ré  ©rƒ   rä  c                    s"   g | ]}ˆD ]}|ˆ  |f‘qqS r'   r'   ©rê  r©  rÄ  )Úl_sufÚnumbersr'   r(   rì  Ó	  ó   " z1test_merge_multiindex_columns.<locals>.<listcomp>)rK  rå  c                    s"   g | ]}ˆ D ]}|ˆ |f‘qqS r'   r'   r  )r  Úr_sufr'   r(   rì  Õ	  r  Fr.  )r   rà  r   r   r  r{   r|   )Úlettersru   Úframe_xÚframe_yr   Útuplesrú  r€   r'   )r  r  r  r(   Útest_merge_multiindex_columns¿	  s    



r  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ô   )rB  rC  r[  )rA   rÝ   r  )Ú2000Ú2001Ú2002)rÝ   rö   rq   rÝ   r‚  )r  r  r:   rõ   )r   r4   rƒ  r   r{   r|   ©rY   rZ   r   r€   r'   r'   r(   Ú test_merge_datetime_upcast_dtypeÝ	  s   ÿýÿr  Ún_categoriesrV   é€   c                 C   sš   t dgtt| ƒƒ ƒ}tt| d ƒdg|d�}tdggdgt dgtt| ƒƒd�d�}t||dddd	�}td
d„ t| d ƒD ƒddg|d�}t ||¡ d S )Nr   r*   rf   r�  r´   r   rq   Tr¥   c                 S   s&   g | ]}|d k r|dgn|t jg‘qS )r   g      @)r   r9   )rê  rí   r'   r'   r(   rì  ý	  s   & z9test_categorical_non_unique_monotonic.<locals>.<listcomp>r¸   r¹   )r
   r   r   r   r   r{   r|   )r  rx   rY   rZ   r   r€   r'   r'   r(   Ú%test_categorical_non_unique_monotonicî	  s   ýýr   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)rO   rP   rO   ri   rO   rP   rô   )r   r*   r   r*   r   r   )ÚCat1ÚInt1)rO   rP   ri   rO   rP   ri   )r   r   r   r*   r*   r*   )r8  g333333ó?r¹  r»  r3  gš™™™™™ù?)ÚCatÚIntÚFactorr#  r$  r%  r!  r"  rq   rÕ   r*   )Úaxisr‚   rÐ  Tr£  )	r	   r   rŒ   r   r0  Údropr™   r{   r|   )rO   rP   r€   r   r'   r'   r(   Ú&test_merge_join_categorical_multiindex
  sT   þýûÿüÿûûr(  Úfuncr   Ú
merge_asof)rï  Úerr_msg)rŽ   rx   rŽ   rx   )r‘   ry   r‘   ry   c                 C   ó’   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   ƒ d S 1 sBw   Y  d S )Nr*   r   rT   rU   r¼   rV   r´   rË  zCan only pass argument "r   ú" OR "z" not both\.rœ   ©r   rŸ   r    r   Úgetattrr4   ©r)  rï  r+  rq   rv   r£   r'   r'   r(   Ú/test_merge_join_cols_error_reporting_duplicates<
  ó   
"ÿr1  c                 C   r,  )Nr*   r   rT   rU   r¼   rV   r´   rË  zMust pass "r   r-  z"\.rœ   r.  r0  r'   r'   r(   Ú,test_merge_join_cols_error_reporting_missingM
  r2  r3  rï  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   ƒ d S 1 s9w   Y  d S )Nr*   r   rT   rU   r¼   rV   r´   rË  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.rœ   rƒ   rO   r.  )r)  rï  rq   rv   r£   r'   r'   r(   Ú1test_merge_join_cols_error_reporting_on_and_index^
  s   
ÿ"ÿr4  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/   )rA   rö   rv   TrA   )r�   rx   r‘   )rA   Úx_xÚz_xÚx_yÚz_yrz   ©rq   rv   r   r€   r'   r'   r(   Útest_merge_right_left_indexr
  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*   r   r¼   rO   rP   r,   Tró   rò   )r   rŒ   r   r+   r   r{   r|   ©rY   rZ   r€   r   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jtdd�� t| |dd	� W d   ƒ n1 s,w   Y  tjtdd�� t|| dd
d� W d   ƒ d S 1 sLw   Y  d S )Nrû   r*   r   )rO   rP   Úb_xr¼   ú(Passing 'suffixes' which cause duplicaterœ   rO   r‚   )ré  rè  r  ©r   rŸ   r    r   r   r  r'   r'   r(   Ú.test_merge_suffixes_produce_dup_columns_raises�
  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÷  )rO   rP   rP   rÊ   r*   rT   r   r¼   rO   r‚   )r*   r*   r*   r   )rO   r=  r=  rì  rz   r9  r'   r'   r(   Ú3test_merge_duplicate_columns_with_suffix_no_warning›
  s
   rA  c                  C   sp   t g d¢g d¢gg d¢d�} t ddgddœƒ}tjtd	d
�� t| |dd� W d   ƒ d S 1 s1w   Y  d S )N)r*   r*   r*   r*   )r   r   r   r   )rO   rP   rP   r=  rÊ   r*   rT   r   r¼   r>  rœ   rO   r‚   r?  r  r'   r'   r(   ÚItest_merge_duplicate_columns_with_suffix_causing_another_duplicate_raises¥
  s
   "ÿrB  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*   r   rT   rU   rO   ç     €\@rÊ   rþ   re   r?  r  rA   rÝ   r—   Tr¥   )rþ   re   r*   r   )r?  r  rT   rU   )rA   rÝ   rO   rC  ©r   r   r   r{   r|   r  r'   r'   r(   Ú%test_merge_string_float_column_result®
  s    ÿrE  c                  C   sn   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   ƒ d S 1 s0w   Y  d S )
Nr0  r  é   )rc  r“   ru   iç  zCan only pass argumentrœ   T)rƒ   rx   r?  )Údf_1Údf_2r'   r'   r(   Ú/test_mergeerror_on_left_index_mismatched_dtypes¹
  s
   "ÿrI  c                  C   sb   t tdƒƒ} t| tdƒdœƒ}tdtddƒiƒ}t||| dd�}t||| jdd�}t ||¡ d S )NrT   rW  r  r´   rH  rž   )r
   r   r   r   Ú_datar{   r|   )Úcirv   rq   Úresr€   r'   r'   r(   Ú#test_merge_on_left_categoricalindexÁ
  s   rM  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 ddtjtjgtjtjddgddtjtjgdœ| d�}t ||¡ d S )Nr*   r   )rn   rQ   r,   rT   rU   )rn   r¹  rn   r¶   rÍ   )rn   rQ   r¹  )rn   r¹  rQ   rý  )r-   rq   rv   r   r€   r'   r'   r(   Útest_merge_outer_with_NaNÍ
  s(   ýúýúrN  c                  C   sh   t ddgitdgdd�d�} t ddgitdgdd�d�}t| |ddd�}t dgddœƒ}t ||¡ d S )	NrO   r*   ri   r·   rt   rj   rž   )rÍ  rÎ  rD  r9  r'   r'   r(   Ú test_merge_different_index_namesê
  s
   rO  c                 C   sb   t g d¢ddœ| d�}t g d¢ddœ| d�}|j||d�}t g d¢dddœ| d�}t ||¡ d S )	Nrû   r*   r¼   r,   r   rË  rÒ   rô   rz   ©rO  rø   rq   rv   r   r€   r'   r'   r(   Útest_merge_eaó
  s
   rQ  c                 C   s†   t g d¢ddœ| d�}t g d¢ddœ|  ¡ d�}|j||d�}t tg d¢| d�tg d¢| d�tg d	¢|  ¡ d�d
œƒ}t ||¡ d S )Nrû   r*   r¼   r,   r   rË  rÒ   rö  r÷  rô   )r   Úlowerr   r   r{   r|   rP  r'   r'   r(   Útest_merge_ea_and_non_eaü
  s   ýÿrS  r+   úint64[pyarrow]c                 C   sr   t  d¡ tdddgi| d�}tdddgidd�}| |¡}| ¡ }t ||¡ | |¡}| ¡ }t ||¡ d S )NÚpyarrowrO   r*   r   r,   rT  )rŸ   Úimportorskipr   r   r¿   r{   r|   )r-   rd   rZ   r   r€   r'   r'   r(   Ú!test_merge_arrow_and_numpy_dtypes  s   


rW  r�   )r—   rq   r¶   rv   r3   zAmerica/Chicagoc                 C   s8  t jddd| d�t jddd| d�t jddd| d�g}t|d d… dd	gd
œƒ}|d j d¡|d< t|dd … dd	gdœƒ}|d j d¡|d< t|dd	tjgtjdd	gdœƒ}|d j d¡|d< |dkrq|jdg jdd�}n|dkr}|jddg }n|dkrŒ|jddg jdd�}|j	|d|d�}t
 ||¡ d S )Niç  rV   r  r2   é   é   r   r  r  )rA  rO   rA  rY  r*   )rA  rP   rV  )rA  rO   rP   r—   T©r'  rq   r   rv   rÍ   )r4   r5   r   rß   Úas_unitr   r9   Úilocr0  r   r{   r|   )r3   r�   ÚvalsrY   rZ   r€   r   r'   r'   r(   Ú(test_merge_datetime_different_resolution  s$   ý r^  c                  C   sn   t dddgiƒ} t ddgitjddgdgd�d	�}t ddgdtjgd
œƒ}| j|dgddd�}t ||¡ d S )NÚcolrH  rI  rP   rÑ  )rH  )r  rÞ  )rc  ru   )r_  rP   Trq   r˜   )r   r   r  r   r9   r   r{   r|   )rd   rZ   r€   r   r'   r'   r(   Ú"test_merge_multiindex_single_level5  s   þr`  )rq   rv   r—   r¶   r�   Úon_indexÚleft_uniqueÚleft_monotonicÚright_uniqueÚright_monotonicc                 C   s$  ddg}|r|  |rdnd¡ n	|  |rdnd¡ ddg}|r)|  |r%dnd¡ n	|  |r/dnd¡ td|iƒ}td|iƒ}|rP| d¡}| d¡}dddœ}	nddi}	t||f| |d	œ|	¤Ž}
|rj| ¡ }| ¡ }| d
v rË| dv r{|||}}}n|||}}}| dkrŸt|d jƒ |d j¡}|d  |¡}|| }|r¦| 	d¡}|sÊ|d  
¡ }|j|d jdd�}| tj¡}|d  |j¡}| ¡ }n0| dkrû|d  
¡ }|d  
¡ }|j|dd�}| tj¡}|jj |j¡}td|iƒ}| 	d¡}|�r| d¡}n|jdd�}t |
|¡ d S )Nr   rT   rU   r*   rn   Trw   rƒ   r  )rq   rv   r—   )rq   r—   r—   )Ú
fill_valuer¶   rZ  )Úappendr   rŒ   r   r0  Úsetr!  ÚintersectionÚisinr*  rª   r	  r‰   r   Úintpr‘  rc  Úmulru   r{   r|   )r�   r�   ra  rb  rc  rd  re  rq   rv   Ú	on_kwargsr   r€   ÚotherÚother_uniqueÚkeep_valuesÚ	keep_maskÚother_value_countsÚrepeatsÚleft_countsÚright_countsÚexpected_countsr'   r'   r(   Útest_merge_combinationsB  s`   


€
rw  c                  C   s  t dtjgt ¡ d�} t dgƒ}t dgdd�}tjtdd�� |  |¡}W d   ƒ n1 s.w   Y  t 	||¡ tjtdd�� | | ¡}W d   ƒ n1 sPw   Y  t 	|| 
d	¡¡ t dgƒ}t d
gdgdd�}|  |¡}t 	||¡ | | ¡}t 	|| 
d	¡¡ d S )Nr  r,   r3  r   r.   rÙ   zYou are mergingrœ   rè  r*   )r   r   r9   r4   Ú
Int64Dtyper{   rE  r9  r   r|   r‰   r;  r'   r'   r(   Ú!test_merge_ea_int_and_float_numpy‹  s"   
ÿÿ


ry  c                 C   s|   t  d¡ tdddgi| d�}tdditddg| d�d�}|j|ddd	d
�}ttddg| d�dtjgdœƒ}t 	||¡ d S )NrU  rO   rP   r,   r*   ri   rt   Trq   r˜   r¼   )
rŸ   rV  r   r   r   r   r   r9   r{   r|   )rT  rq   rv   r   r€   r'   r'   r(   Útest_merge_arrow_string_index¢  s   
ÿrz  rr  Úright_emptyc                 C   s¼   t ddgddgd�}t ddgg d¢d�}| r|jd d… }|r&|jd d… }t||dgdd�}t ddgg d	¢d�}| rE|rE|jd d… }n| rMtj|d< n	|rVtj|d
dg< t ||¡ d S )Nr*   r   rH  rI  r‹  )rH  r  rT  r¶   rÍ   )rH  rI  r  rT  r  rT  )r   r\  r   r   r9   r{   r|   )rr  r{  rY   rZ   r   r€   r'   r'   r(   Ú$test_merge_empty_frames_column_order®  s   r|  c                 C   sø   t dtdd gdd�iƒ}t dtdgdd�iƒ}d|d j› d|d j› d�}tjtt |¡d	�� |j|d| d
� W d   ƒ n1 sCw   Y  d|d j› d|d j› d�}tjtt |¡d	�� |j|d| d
� W d   ƒ d S 1 suw   Y  d S )Nrn   r*   zdatetime64[ns]r,   ztimedelta64[ns]rE  rF  zG columns for key 'key'. If you wish to proceed you should use pd.concatrœ   rÍ   )	r   r   r-   rŸ   r    r¢   rH  rI  r   )r�   rq   rv   r£   r'   r'   r(   Ú!test_merge_datetime_and_timedeltaÅ  s   ÿÿÿ"ÿr}  )r   r   )`r   r   r   rH  Únumpyr   rŸ   Úpandas.compatr   Úpandas.core.dtypes.commonr   r   Úpandas.core.dtypes.dtypesr   Úpandasr4   r	   r
   r   r   r   r   r   r   r   r   r   Úpandas._testingÚ_testingr{   Úpandas.core.reshape.concatr   Úpandas.core.reshape.merger   r   r)   r6   r;   r  rK   rM   rN   r[   r\   rç   r  rq   rv   r  r  r  rÓ  r  r  r  rÝ  râ  rã  rñ  r9   rù  rü  rþ  ÚTWO_GOT_THREEÚtuplerÿ  r  r	  r  r  r  r   r(  r1  r3  r4  r:  r<  r@  rA  rB  rE  rI  rM  rN  rO  rQ  rS  rW  r^  r`  rw  ry  rz  r|  r}  r'   r'   r'   r(   Ú<module>   sŒ   4
	



          ]  q

	  

7ýÿø

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