
    bMh˞                    l   d dl mZm Z mZ d dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZm Z  dd
Z!d Z"d Z# ej$         e"            d           d             Z% ej$         e"            d           d             Z& ej$         e#            d           d             Z'ej$        d             Z( G d d          Z)d Z* G d d          Z+ej$        d             Z,ej$        d             Z- G d d          Z.ej$        d             Z/ej$        d             Z0 G d  d!          Z1ej2        3                    d"d# ej4        D              ed$d%gd$d%gd&'           ed d(d&)           ed*d+gd&,          gz   d- .          d/             Z5ej2        3                    d0d1d2gddd3d3d%fd4dd1d2gdd3d5d%fddd1d2gd5d3d%fd1d2gddd3d3dfd6dd1d2gdd3d5dfddd1d2gd5d3dfg          d7             Z6d8 Z7ej2        3                    d9d d d:d;id<d=gfd d d:d>id d=gfd d d:d?id@dAgfd d d:dBdCgid@dAgfdDd d:dEidDd gfdFdFd:dGidHdFgfdIdId:dEidIdJgfdDdDd:dGidKdDgfdDdId:dGidDdIgfdDdDd:dLidDdKgfd d d:dMidNd gfdDdDi dKdOgfd d i d@dAgfg          dP             Z8ej2        3                    dQdR eg dSdTdUej9        gg dVdW          fd1 eg dXdYdTdUej9        gej9        dZd[d\gdW          fg          d]             Z:ej2        3                    d^g d_          d`             Z;ej2        3                    d:dadRhd d dbg          dc             Z<ej2        3                    dddedDdD e=dD          dffg          dg             Z>ej2        3                    dhdidjg          ej2        3                    dkd5d3g          dl                         Z?dm Z@dn ZAdo ZBdp ZCej2        3                    dqdrdsg          dt             ZDdu ZEej2        3                    dvdwdxg          ej2        3                    dydDd5dzd{d|gfdDd5d}d~dgfg          d                         ZFej2        3                    dvdwdxg          ej2        3                    dyd{dDid~dgfd~dDid{d|gfg          d                         ZGej2        3                    dvdwdxg          ej2        3                    ddd5id|d5ig          d                         ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPej2        3                    dddg          d             ZQd ZRd ZSd ZTej2        3                    dddg          d             ZUej2        3                    dg d          ej2        3                    dddg          d                         ZVd ZWej2        3                    dg d          ej2        3                    dd5d3g          ej2        3                    dd5d3g          ej2        3                    dd5d3g          ej2        3                    dd5d3g          ej2        3                    dd5d3g          ej2        3                    dd5d3g          d                                                                                     ZXd ZYd ZZej2        3                    dd5d3g          ej2        3                    dd5d3g          d                         Z[ej2        3                    dg d          d             Z\dS )    )datedatetime	timedeltaN)is_object_dtypeis_string_dtype)CategoricalDtype)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndexIntervalIndex
MultiIndexPeriodIndex
RangeIndexSeriesTimedeltaIndex)concat)
MergeErrormerge   2   c           	         t          t          |                     }t          j        t          j        ||| z                      }t          |          |k     r<t          j        t          |          |d |t          |          z
           z             }t          j                            d                              |           |S )N   )	listrangenpasarraytilelenrandomdefault_rngshuffle)ngroupsnunique_groupsarrs       e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/reshape/merge/test_merge.pyget_test_datar)   '   s    w((M
*RW]AL99
:
:C
3xx!||jc]>QS\>%BBCCI!$$S)))J    c                  ,   t          dgd          t          dgd          t          dg          t          dg          t          dg          t          t          j        d          g          t          t          j        dd	
          g          gS )N   int64dtypeInt64gGz?fooT
2018-01-01
US/Easterntz)r   pd	Timestamp r*   r(   
get_seriesr9   2   s    s'"""s'"""vwv\**+,,\l;;;<== r*   c                      t          t          j        gd          t          t          j        gd          t          t          j        gd          t          t          j        g          gS )Nr0   r.   floatobject)r   r   nanr6   NaTr8   r*   r(   get_series_nar?   >   sW    xw'''xw'''xx(((x	 r*   c                     | j         j        S Nr/   namexs    r(   <lambda>rF   G   
    17< r*   )paramsidsc                     | j         S )zV
    A parametrized fixture returning a variety of Series of different
    dtypes
    paramrequests    r(   series_of_dtyperO   G        =r*   c                     | j         j        S rA   rB   rD   s    r(   rF   rF   P   rG   r*   c                     | j         S )zk
    A duplicate of the series_of_dtype fixture, so that it can be used
    twice by a single function
    rK   rM   s    r(   series_of_dtype2rS   P   rP   r*   c                     | j         j        S rA   rB   rD   s    r(   rF   rF   Y   s
    agl r*   c                     | j         S )zU
    A parametrized fixture returning a variety of Series with all NA
    values
    rK   rM   s    r(   series_of_dtype_all_narV   Y   rP   r*   c                  n    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   )rZ   r[   	col_rightr   )df1df2s     r(   dfs_for_indicatorrd   b   s^    
aVaV#sTT
U
UC
#OO+OO(	
 	
 C 8Or*   c                      e Zd Zej        d             Zej        d             Zej        d             Zej        d             Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dg d          d             Zej                            dddddddd dd!d dd"g          d#             Zd$ Z d% Z!d& Z"d' Z#d( Z$ej                            d)d*g d+fdg d,fg          ej                            dd-d.g          d/                         Z%d0 Z&d1 Z'ej        (                    d2          d3             Z)d4 Z*d5 Z+ej                            d6g d7          d8             Z,ej                            d6g d7          d9             Z-d: Z.d; Z/d< Z0d= Z1d> Z2d? Z3d@ Z4dA Z5dB Z6dC Z7dD Z8dE Z9dF Z:dG Z;dH Z<ej                            dd.dIg          ej                            dJ e=g dK           e=g dL          f e>g dMdNO           e>dPdQdRe?j@        e?j@        e?j@        gdNO          fgdS eAjB        D              eCjD        g dT           eCjD        dUdVdWeEjF        eEjF        eEjF        g          f eGg dXdYZ           eGdPd[d\e?j@        e?j@        e?j@        gdYZ          f eHg d]           eHd^d_d`e?j@        e?j@        e?j@        g          f          da                         ZIdb ZJej                            dd-d.g          dc             ZKdd ZLde ZMdfS )g	TestMergec                 B   t          t                      t                      t          j                            d                              d          t          j                            d                              d          d          }||d         dk             }|S )Nr   r   )key1key2data1data2ri   r,   r   r)   r   r!   r"   standard_normal)selfdfs     r(   ro   zTestMerge.dfp   s    %%..q11AA"EE..q11AA"EE	 
 
 6
Q	r*   c                     t          t          d          t          dd          t          j                            d                              d          d          S )N
   )r%   r^   )r$   r%   r   )rh   ri   valuerl   rn   s    r(   rc   zTestMerge.df2   s]    %+++%a2666..q11AA"EE 
 
 	
r*   c                     t          g dt          j                            d                              d          d          S )NrX   rY   cderx   rX   r      keyv1r   r   r!   r"   rm   rs   s    r(   leftzTestMerge.left   sH    :::i++A..>>qAA 
 
 	
r*   c                     t          dt          j                            d                              d          ig d          S )Nv2r   r^   rw   rY   rv   rX   indexr}   rs   s    r(   rightzTestMerge.right   sH    29((++;;A>>?&&&
 
 
 	
r*   c                     t                      }t          dddgiddgd          }t          ||dd          }t          dg id	          }t          j        ||           d S )
NrX   r,   r   r   r-   )r   r/   T
left_indexright_indexr.   r   r   tmassert_frame_equal)rn   df_emptydf_aresultexpecteds        r(   test_merge_inner_join_emptyz%TestMerge.test_merge_inner_join_empty   sp    ;;#1vq!fGDDDx$DIIIc2Yg666
fh/////r*   c                 x    t          ||          }t          ||ddg          }t          j        ||           d S )Nrh   ri   onr   r   r   )rn   ro   rc   joinedexps        r(   test_merge_commonzTestMerge.test_merge_common   sA    r3B 0111
fc*****r*   c                     t          g dg dg dg dd          }|                    t                    }|}t          ||          }t	          j        ||           d S )N)r,   r   r,   r   )r   r,   r   r   )r   r   r   r   )r,   r   r   r]   r   r,   r   r]   )r   astyper;   r   r   r   rn   r~   r   r   r   s        r(   test_merge_non_string_columnsz'TestMerge.test_merge_non_string_columns   sr     ,,,<<<PP
 
 E""tU##
h/////r*   c                     |                     d          }|                     d          }t          ||d          }t          ||d                               d          }t          j        ||           d S )Nrh   r   )	set_indexr   r   r   )rn   ro   rc   r~   r   r   r   s          r(   test_merge_index_as_on_argz$TestMerge.test_merge_index_as_on_arg   su     ||F##f%%tUv...SV,,,66v>>
fh/////r*   c                 d   t          g dt          j                            d                              d          d          }t          dt          j                            d                              d          ig d          }t          ||d	d
dd          }t          ||d	d
dd          }t          j        ||j        d d |j	        f                    t          ||d	d
dd
          }t          ||d	d
dd
          }t          j        ||j        d d |j	        f                    d S )Nru   r   ry   rz   r   r^   r   r   r{   Tr~   F)left_onr   howsortr   )right_onr   r   r   )
r   r   r!   r"   rm   r   r   r   loccolumns)rn   r~   r   merged1merged2s        r(   (test_merge_index_singlekey_right_vs_leftz2TestMerge.test_merge_index_singlekey_right_vs_left   sh   :::i++A..>>qAA 
 
 29((++;;A>>?&&&
 
 

 %Df5
 
 
 4%DgE
 
 
 	gw{111go3E'FGGG%Df4
 
 
 4%DgD
 
 
 	gw{111go3E'FGGGGGr*   c                    t          g dt          j                            d                              d          d          }t          dt          j                            d                              d          ig d          }t          ||d	d
d          }|                    |d	          j        |j                 }t          j
        ||           t          ||d	d
d          }|                    |d	          j        |j                 }t          j
        ||j        d d |j        f                    d S )Nru   r   ry   rz   r   r^   r   r   r{   Tinnerr   r   r   r   )r   r   r   )r   r   r!   r"   rm   r   joinr   r   r   r   r   rn   r~   r   r   r   s        r(    test_merge_index_singlekey_innerz*TestMerge.test_merge_index_singlekey_inner   s8   :::i++A..>>qAA 
 
 29((++;;A>>?&&&
 
 
 tUEtQQQ99Uu9--1&,?
fh///udUtQQQ99Uu9--1&,?
fhl111fn3D&EFFFFFr*   c                    d}t          j        t          j        j        |          5  t          ||d           d d d            n# 1 swxY w Y   d}t          j        t          j        j        |          5  t          ||d           d d d            n# 1 swxY w Y   d}t          j        t          j        j        |          5  t          ||dd	           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t          ||dgddg           d d d            d S # 1 swxY w Y   d S )Nz&Must pass right_on or right_index=TruematchT)r   z$Must pass left_on or left_index=True)r   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothr{   )r   r   z)len\(right_on\) must equal len\(left_on\)rh   ri   r   r   )pytestraisesr6   errorsr   r   
ValueError)rn   ro   rc   r~   r   msgs         r(   test_merge_misspecifiedz!TestMerge.test_merge_misspecified   sX   6]29/s;;; 	0 	0$$////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	04]29/s;;; 	1 	1$40000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1$ 	 ]29/s;;; 	7 	7$e6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 ;]:S111 	H 	H"cF8vv6FGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	HsG   AAA9BBB
C**C.1C.D66D:=D:c           	         d}t          j        t          |          5  t          ||ddddg           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ||dddgd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||dddgddg           d d d            d S # 1 swxY w Y   d S )	Nz>right_index parameter must be of type bool, not <class 'list'>r   r~   Frh   ri   r   r   r   z=left_index parameter must be of type bool, not <class 'list'>r   r   r   r   )rn   ro   rc   r   s       r(   &test_index_and_on_parameters_confusionz0TestMerge.test_index_and_on_parameters_confusion   s   N]:S111 	 	 #V,   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 N]:S111 	 	"F+!   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	 	"F+#V,   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   AAA)BBB2CCCc                     t          ||d          }|d                                         dz                                  }t          |          |k    sJ d|v sJ d|v sJ d S )Nr{   r   r   v1_xv1_y)r   value_countssumr    )rn   r~   mergedexp_lens       r(   test_merge_overlapzTestMerge.test_merge_overlap  s{    tTe,,,;++--277996{{g%%%%r*   c           	      z   t          g dg dd          }t          g dg dd          }|                    |ddd	d
          }t          ddddddt          j        gd          }t          j        |d         |           t          dt          j        dddddgd          }t          j        |d         |           t          ddddddt          j        gd          }t          j        |d         |           t          dt          j        dddddgd          }t          j        |d         |           d S )N)r1   barbazr1   r,   r   r]   r^   )lkeyrr   )r1   r   quxr1   )r_      ry   r   )rkeyrr   r   r   outerT)r   r   r   r   r   r   r1   rC   r   r   r]   r,   r^   value_xr   r_   r   ry   value_y)r   r   r   r   r=   r   assert_series_equal)rn   r~   r   r   r   s        r(   %test_merge_different_column_key_namesz/TestMerge.test_merge_different_column_key_names"  sW   ">">">VVWW#?#?#?,,,WWXX6Fd  
 
 eUE5%GfUUU
vf~s333eRVUE5%GfUUU
vf~s333aAq!Q/i@@@
vi0#666aAq!Q/i@@@
vi0#66666r*   c                 F   t          dddt          d                    }t          dddt          d                    }t          ||d	d	d	
          }d|d<   |d         dk                                    sJ d|d<   |d         dk                                    sJ d S )Nr   r,   rX   rY   rq   r   r1   r   rv   rw   Tr   r   copyr   rX   peekaboorw   )r   r   r   all)rn   r~   r   r   s       r(   test_merge_copyzTestMerge.test_merge_copy6  s    qq))r;;;E22%))DDDtUtDQQQsS	Q##%%%%% sc
e#((*******r*   c                 n   t          dddt          d                    }t          dddt          d                    }t          ||d	d	d
          }t          j        |d         j        |d         j                  sJ |s-t          j        |d         j        |d         j                  sJ d S d S )Nr   r,   r   rq   r   r1   r   r   TFr   rX   rw   )r   r   r   r   shares_memory_values)rn   using_array_managerusing_infer_stringr~   r   r   s         r(   test_merge_nocopyzTestMerge.test_merge_nocopyB  s    qq))r;;;E22%))DDDtUtERRRs 3T#Y5FGGGGG! 	M#F3K$7s9KLLLLL	M 	MLLr*   c                    t          g dt          t          d                    dddg          }t          g dt          t          d                    d	          }t          ||dd
          }t          g dt	          j        dddddddt          j        t          j        g	          g ddg d          }t          j        ||           d S )Nr,   r,   r   r   r]   r_   r{   rr   rr   r{   r   r,   r,   r   r]   r^   r_   r   )r{   rvaluer   r   r   	r,   r,   r,   r,   r   r   r]   r^   r_   r   r,   r   r]   r^   )	r   r,   r   r,   r   r   r]   r^   r_   )r{   rr   r   )rr   r{   r   )	r   r   r   r   r   arrayr=   r   r   )rn   r~   r   r   r   s        r(   "test_intelligently_handle_join_keyz,TestMerge.test_intelligently_handle_join_keyL  s     #OOd588nn==QVGW
 
 
 "4"4"4U1XXOOPPtUu':::2221aAq!Q"GHH555 
 /..
 
 
 	fh/////r*   c                 R   t          dgdgd          }t          dgdgd          }t          ||d          }|d         j        d	k    sJ t          d
gdgd          }t          dgdgd          }t          ||d          }|d         j        dk    sJ t          ddgi          }t          ddgi          }t          j        dg          }t          j        dg          }t          ||||d          }|d         j        t          j        t
                    k    sJ d S )Nr,   rq   rz   r      r   r   r{   r-   TFr   boolvalr   r   r   key_0)r   r   r/   r   r   int)rn   rb   rc   ro   r   r   s         r(   test_merge_join_key_dtype_castz(TestMerge.test_merge_join_key_dtype_cast_  sB    B40011B400113)))%y'))))qc2233s33443))) %y&((((%%%%x}}x}}3TDgFFF'{ BHSMM111111r*   c                    t          g dt          j        d          dddgd          }t          dt          j        d	          id
          }t          j        g dd
          }t	          ||d|d          }t	          |||dd          }t          j        |d         |d                    |d                                                                         sJ |d                                                                         sJ t          dt          j        d          idg          }t          dt          j        d	          i          }t          j        g d          }t          j        g d          }t	          ||||d          }t          g dt          d          }t          j        |d         |           t          dt          j        d          i          }t          dt          j        d	          i          }t          j        g dt          j        
          }t	          ||d|d          }t          j        |d         t          |d                     d S )Nr   r_   r   rr   r{   r-   r   r/   r   r   r.   r   r   r   r   r   r   rB   r]   )r   r,   r,   r   r   r]   T)r   r   r   r   )r   r   aranger   r   r   r   notnar   r   r   r-   )	rn   r~   r   r{   r   r   r   r   r   s	            r(   test_handle_join_key_pass_arrayz)TestMerge.test_handle_join_key_pass_arrayv  sP   #OObill;;e$
 
 

 8RYq\\2'BBBh)))999tUECWMMMtS5gNNN
ve}gen===e}""$$((*****u~##%%))+++++'29Q<<07)DDD8RYq\\233x((x***++tUD4WMMM555SwOOO
vg999'29Q<<0118RYq\\233h))):::tUtcwOOO
vgs0I0I0IJJJJJr*   c                 (   t          j                    }t          ddgi|g          }t          dddgi||g          }dd  dd  d	d
 dd
 }t          j        t
          |          5  t          ||           d d d            d S # 1 swxY w Y   d S )NrE   rX   r   yrY   rv   z>No common columns to perform merge on. Merge options: left_on=z, right_on=z, left_index=Fz, right_index=r   )r   nowr   r   r   r   r   )rn   dtrb   rc   r   s        r(   &test_no_overlap_more_informative_errorz0TestMerge.test_no_overlap_more_informative_error  s   \^^seRD111sCj)"b:::7&*7 77;7 77 7/47 7 	 ]:S111 	 	#sOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   )BBBc           	         t          ddd          }t          ddd          }t          ddd          }t          ddd          }t          ddgi|g	          }t          d
ddgi||g	          }t          ||           t          dg di|||g	          }t          d
g di||||||g	          }t          ||           t          dddgi||g	          }t          d
ddgi||g	          }t          ||           d S )N  r_   r,   r   r]   r^   rE   rX   r   r   rY   rv   )rX   rY   q)rv   rw   rx   fghrw   r   r   _check_merge)rn   r   dt2dt3dt4rb   rc   s          r(   test_merge_non_unique_indexesz'TestMerge.test_merge_non_unique_indexes  sK   dAq!!tQ""tQ""tQ""seRD111sCj)"b:::S# ooo.sBnEEE0001#sCbRT9U
 
 
 	S#sCj)"b:::sCj)"b:::S#r*   c                     t          ddd          }t          ddd          }t          ddd          }t          dg di||||g          }t          d	g d
i|||||g          }t          ||           d S )Nr   r_   r,   r   r]   rE   rX   rY   rv   rw   r   r   )rx   r  r  z hir  )rn   r   r  r  rb   rc   s         r(   (test_merge_non_unique_index_many_to_manyz2TestMerge.test_merge_non_unique_index_many_to_many  s    dAq!!tQ""tQ""2223Cb";MNNN,,,-c3R5L
 
 
 	S#r*   c                     t          dgdgd          }t          dg i          }t          ||dd          }t          j        ||           t          ||dd          }t          j        ||           d S )Nr,   r   r   r{   r~   r   r   r   )rn   r~   r   r   s       r(   test_left_merge_empty_dataframez)TestMerge.test_left_merge_empty_dataframe  s    !s33445"+&&tUu&999
fd+++udu':::
fd+++++r*   r   )r   r~   r   r   c                     t          g |d d                   }|                                }|                    ||          }t          j        ||           d S )Nr   r   r   )r   r   r   r   r   )rn   r   r   r~   r   r   s         r(   test_merge_empty_dataframez$TestMerge.test_merge_empty_dataframe  sY     5!9---		5c**
fd+++++r*   kwargTr   rE   r   r   rX   r   r   r   c                     t          g d          }t          g d          }t          g dt                    }t          ||fd|i|}t          j        ||           d S )NrX   rY   rv   r   rE   r   zrX   rY   rv   rE   r   r  r   r   )r   r<   r   r   r   )rn   	join_typer  r~   r   exp_inr   s          r(   !test_merge_left_empty_right_emptyz+TestMerge.test_merge_left_empty_right_empty  sz     111///222#A#A#APPPtU;;	;U;;
ff-----r*   c           	         t          g d          t          g dg dg dgg d          t          t          j        t          j        gdz  t                    t          j        t          j        gdz  t                    t          j        t          j        gdz  t                    g d	g d
g ddg d          }|dd         }fd}fd}ddddddfD ]} |||            |||           ddd} |||           g d|d<    |||           ddd} |||           t          j        t          j        gdz  t                    |d<    |||           d S )Nr  r   r,   r   r]   r^   r_   r   ry   r   	   r  r]   r.   r,   r^   ry   r   r_   r   r]   r   r"  r  r   c                     t          fddi|}t          j        ||            t          fddi|}t          j        ||            d S )Nr   r   r~   r   r   r  r   r~   r   s      r(   check1z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check1  sg    4==G=u==F!&#...4<<F<e<<F!&#.....r*   c                     t          fddi|}t          j        ||            t          fddi|}t          j        ||            d S )Nr   r   r   r   r'  s      r(   check2z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2  g    4==G=u==F!&#...4==G=u==F!&#.....r*   Tr   rE   r  rX   r  r   r,   r   r   )r   r   r   r=   r<   )rn   exp_outr  r(  r*  r  r~   r   s         @@r(   $test_merge_left_empty_right_notemptyz.TestMerge.test_merge_left_empty_right_notempty  s   111999iii;___UUUXrvhl&999Xrvhl&999Xrvhl&999YYYYYY  322

 

 

 1	/ 	/ 	/ 	/ 	/ 	/	/ 	/ 	/ 	/ 	/ 	/  55S11
 	# 	#E F65!!!F7E""""55vu yywS11vux1F;;;wr*   c                    t          g dg dg dgg d          t          g d          t          g dg dg d	t          j        t          j        gd
z  t                    t          j        t          j        gd
z  t                    t          j        t          j        gd
z  t                    dg d          dd         j                            t                    _        fdfdd S )Nr  r   r!  r  r   r  r#  r$  r%  r]   r.   r  r   c                     t          fddi|}t          j        ||            t          fddi|}t          j        ||            d S )Nr   r   r   r   r'  s      r(   r(  z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check1-  r+  r*   c                     t          fddi|}t          j        ||            t          fddi|}t          j        ||            ddddddddd	ddd
fD ]} |            |           d S )Nr   r~   r   Tr   rE   r  rX   r  r   r   )	r   r  r   r(  r*  r  r-  r~   r   s	      r(   r*  z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check23  s    4<<F<e<<F!&#...4==G=u==F!&#...  $D99#5555S11	 ' ' vu%%%w&&&&' 'r*   )r   r   r   r=   r<   r   r   )rn   r(  r*  r  r-  r~   r   s    @@@@@@r(   $test_merge_left_notempty_right_emptyz.TestMerge.test_merge_left_notempty_right_empty  sQ   )))YYY			:OOOTTT///222YYYYYYXrvhl&999Xrvhl&999Xrvhl&999  322

 

 

 1|**622	/ 	/ 	/ 	/ 	/ 	/	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'r*   c                 b   t          ||dddg          }|d d         }t          t          |j        d                   t          |j        d                   t          |j        d                   dg d          }|                    |d          }t	          j        ||           d S )	Nr   r{   rr   r   r   r.   r{   r   r   r   )r   r   dtypesr   r   r   )rn   rO   rS   ro   r   r   actuals          r(   test_merge_empty_framez TestMerge.test_merge_empty_frameC  s    #.>??G$
 
 
 bqb6BIe$4555!	'(:;;;!	'(:;;; 
 211
 
 
 u--
fh/////r*   c                     t          ||dddg          }t          ||dddg          }t          |||dg d          }|                    |d          }t          j        ||           d S )Nr   r{   rr   r   r4  r   r   )rn   rO   rV   df_leftdf_rightr   r6  s          r(   test_merge_all_na_columnz"TestMerge.test_merge_all_na_columnU  s    #.DEEG$
 
 
 #.DEEG$
 
 
 &11 
 211
 
 
 xE22
fh/////r*   c                 >   t           j                            d                              ddd          t           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        |          }|j                                        }t          j	        |          }t          j        |t           j                            d                              d          d          }|
                    |dd          }t          ||dd          }t          j        ||           |j                                        |j                                        k                                    sJ d S )Nr   r   rq   sizer   r,      i  r^   i  r]   i  r_   )var1var2var3ry   )rB  var8rB  Fr   r   )r   r!   r"   integersr   r   	from_dictrB  uniquer   r   r   r   r   )rn   rw   ro   rB  newr   r   s          r(   test_merge_nosortzTestMerge.test_merge_nosortj  s    I))!,,55a"5EEI))!,,55a"5EEq"%%q!$$q!$$q"%%q!$$q!$$q!$$q!$$q!$$q!$$
 
   ##w~~wt}}!29#8#8#;#;#B#B1#E#EFF
 
 #&u55BU333
fc***  FK$6$6$8$88==???????r*   )r   valuesF)r,   r,   r   r,   r,   )r   r,   r,   r,   r,   r~   r   c                     t          dg di          }|                    |d||          }t          |dg          }t          j        ||           d S )NrX   )r,   r   r,   )r   r   r   r   r   )rn   r   rJ  r   ro   r   r   s          r(    test_merge_same_order_left_rightz*TestMerge.test_merge_same_order_left_right  s`     YYY'(("#D99VcU333
fh/////r*   c           	         t          ddgddgd          }t          dgdg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                                           g d         }|j        	                    d          |_        t          j        ||d           d S )Nr   r,   i1i2rO  i3rO  _)r   rsuffix        r   r,   )rO  rP  i1_rR  Nr.   r   rO  rP  rW  rR  r<   Fcheck_dtype)r   r   r   r=   r   r<   r   reset_indexr   r   r   r   rn   rb   rc   r   r   s        r(   test_merge_nan_rightzTestMerge.test_merge_nan_right  s   1vaV4455s1#..//#$44!a..A,, RV,,!bf--A,,  ===VLLL	 	 	 Yt__[]]4446 	  ..x88
fhEBBBBBBr*   c                 ,   t          ddgddgd          }t          dgdgd          }|                    |dd	
          }t          ddddt          j        dddddt          j        dd          g d         }t	          j        ||           d S )Nr   r,   g      ?      ?rN  gffffff?rQ  rS  rO  )rT  r   rV  rU  )rO  rW  rP  rR  rX  )r   r   r   r=   r   r   r\  s        r(   test_merge_nan_right2zTestMerge.test_merge_nan_right2  s    1vc3Z8899s3%0011#st44ll26**#&&-"&99	 
 
 $
#
#% 	fh/////r*   zMignore:Passing a BlockManager|Passing a SingleBlockManager:DeprecationWarningc                      G fddt                      |          }|                    |d          }t          |          sJ d S )Nc                   *    e Zd Ze fd            ZdS )0TestMerge.test_merge_type.<locals>.NotADataFramec                     S rA   r8   )rn   NotADataFrames    r(   _constructorz=TestMerge.test_merge_type.<locals>.NotADataFrame._constructor  s	    $$r*   N)__name__
__module____qualname__propertyrf  )re  s   r(   re  rc    s8        % % % % X% % %r*   re  rh   r   )r   r   
isinstance)rn   ro   rc   nadr   re  s        @r(   test_merge_typezTestMerge.test_merge_type  sy    	% 	% 	% 	% 	% 	% 	%I 	% 	% 	%
 mB36**&-0000000r*   c           
      |   t          j        t          ddddd          gt          dd          gd          }t          t	          d          	          }d
}t
          }|rd }t          j        ||          5  t          ||gd          }t          ||gd          }d d d            n# 1 swxY w Y   t          t          ddddd          t          ddddd          gt          dd          t          dd          gd          }|r|	                    t                    }t          j        ||           d S )Ni     r_   8   r   iW  )rw   tr   r   zDThe behavior of DataFrame concatenation with empty or all-NA entriesr   Tignore_index)r   rF  r   r   r   FutureWarningr   assert_produces_warningr   r   r<   r   )rn   r   rw   ro   r   warnr   r   s           r(   test_join_append_timedeltasz%TestMerge.test_join_append_timedeltas  s    D"aB//0	!U8K8K7LMM
 
 tDzz***T 	D'C888 	8 	8Qd333BRG$777F	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 tRAr22HT2q!R4P4PQ5))9Q+>+>? 
 
  	/v..H
fh/////s   9'B,,B03B0c           	         t          j        d          }t          t          ||gddg                    }t          t          |gdg                    }|                    |dd          }t          t          ||gt          d                    t          |t          j        gt          d                    d	          }t          j	        ||           d S )
Ni ABr   rr~   )rT  r   AB)00r)
r   timedelta64r   r   r   r   r6   r>   r   r   )rn   tdlhsrhsr   r   s         r(   test_join_append_timedeltas2z&TestMerge.test_join_append_timedeltas2  s     ^I&&BxSz:::;;tC511122#s77RHDJJ777b"&\d<<< 
 
 	fh/////r*   unit)Dr  msmsusnsc                 ,   t          dddgi          }t          d d gddgd          }d| d}|dv rd	}n|}|                    |                              d          }|d         j        |k    sJ |                    |dd
          }t          j        ddg|          }t          j	        j
        j                            ||j                  }t          ddg|dddg          }	|	d         j        |k    sJ t          j        ||	           d S )N	entity_ide   f   daysr   rC   zdatetime64[]r  r  r  zdatetime64[s]Tr  natr.   r  r  r   )r   r   r   to_framer/   r   r   r   r6   corearraysDatetimeArray_simple_newr   r   )
rn   r  rb   serr/   	exp_dtyperc   r   r  r   s
             r(   test_other_datetime_unitz"TestMerge.test_other_datetime_unit  sI    sCj122dD\#s&AAA%d%%%?""'IIIjj##,,V446{ I----3FFxi888w~+77DJ7OO!3Z  !&)
 
 
 6{ I----
fc*****r*   c                 ~   t          dddgi          }t          d d gddgd          }d| d}|dv rsd	}t          j        t          |
          5  |                    |           d d d            n# 1 swxY w Y   |                    d                              d          }n;|                    |                              d          }|d         j        |k    sJ |                    |dd          }t          ddgt          j
        ddg|          dddg          }t          j        ||           d S )Nr  r  r  r  r  zm8[r  r  z/Supported resolutions are 's', 'ms', 'us', 'ns'r   zm8[s]Tr  r  r.   r  r   )r   r   r   r   r   r   r  r/   r   r   r   r   r   )	rn   r  rb   r  r/   r   rc   r   r   s	            r(   test_other_timedelta_unitz#TestMerge.test_other_timedelta_unit  s    sCj122dD\#s&AAAd?""CCz555 " "

5!!!" " " " " " " " " " " " " " " **W%%..v66CC**U##,,V44Cv;$----3FF*bhu~U.S.S.STT &)
 
 
 	fc*****s   A33A7:A7c                    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          j        t	          ||          |           g d	|_        d
}t          j        t          |          5  t	          ||           d d d            d S # 1 swxY w Y   d S )Nr  r   r!  r{   r|   r   )r{   r1   r1   )r{   r   r   )r{   r|   r   v3v4)r{   r1   r1   r   r   )rh   r1   r1   z?Data columns not unique: Index\(\['foo'\], dtype='object|str'\)r   )r   r   r   r   r   r   r   r   )rn   ro   rc   r   r   s        r(   &test_overlapping_columns_error_messagez0TestMerge.test_overlapping_columns_error_message)  sc   yyy			KKLL			)))LLMM***
+++ yyiiiiiiii 
 
 ?>>
eBnnh777 -,,P]:S111 	 	"cNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   6CCCc                    t          t          j        ddd          ddgd          }t          t          j        ddd          g d	d          }t          t          j        dd
d          ddt          j        t          j        gt          j        dddgd          }t          ||dd          }t          j        ||           d S )N20151010r   r3   periodsr5   r,   r   20151011r]   r  r^   r4  r{   r   r   )r   r6   
date_ranger   r=   r   r   r   r   s        r(   test_merge_on_datetime64tzz$TestMerge.test_merge_on_datetime64tzA  s    }Z|LLLQ 
 
 }Z|LLL" 
 
 }Z|LLLq"&"&1FAq!, 
 
 tUu':::
fh/////r*   c                 0   t          ddgt          j        ddd          d          }t          ddgt          j        ddd          d          }t          g d	t          t          j        ddd                    t          j        gz   t          j        gt          t          j        ddd                    z   d
          }t          ||dd          }t          j        ||           |d         j        dk    sJ |d         j        dk    sJ d S )Nr,   r   r  r3   r  r   r]   r  r  r4  r{   r   r   r   zdatetime64[ns, US/Eastern]r   )	r   r6   r  r   r>   r   r   r   r/   r   s        r(   test_merge_datetime64tz_valuesz(TestMerge.test_merge_datetime64tz_valuesZ  sD   1vz1NNN 
 
 1vz1NNN 
 
  yyj! U U UVV6(F8r}Z|LLLMMN	 
 
 tUu':::
fh///i &*FFFFFi &*FFFFFFFr*   c           	         t          j        d          }t          t          dg|          dgt          dg|          dg d          }|d d	         }|                    |d
          }t          t          |          t          t                    t          |          t          t                    t          |          dg d          }t          j        ||           d S )NUTCr4   2018r.   g      @2019)r   rr   date2r   r   r   r   )r   r   date2_xr   date2_y)	r6   DatetimeTZDtyper   r   r   r   r;   r   r   )rn   dtzr   r~   r   r   s         r(    test_merge_on_datetime64tz_emptyz*TestMerge.test_merge_on_datetime64tz_emptyu  s    E***%vhc:::&xs;;; 
 /..
 
 
 RaRyEf--S)))!...!,,,!...!,,,  IHH	
 	
 	
 	fh/////r*   c                    t          t          j        dddd          dg          }d|d	<   t          t          j        g d
          dd          }|d         j                            d          j                            d          |d<   t          ||dd          }t          t          j        dddd          dgdz  t          j	        gdz  z   t          j	        gdz  dgdz  z   d          }t          j        ||           d S )Nz2017-10-29 01:00r^   r  zEurope/Madrid)r  freqr5   r   r   r,   rr   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00r   )r   rr   r  r   r   r   ry   r]   )r   r   r   )r   r6   r  to_datetimer   tz_localize
tz_convertr   r   r=   r   r   r\  s        r(   +test_merge_datetime64tz_with_dst_transitionz5TestMerge.test_merge_datetime64tz_with_dst_transition  s>   M,acoVVVH
 
 
 G    	 	
 
 &kn0077:EEoVVFsCW888&   37bfX\1F8a<1#'1 
 
 	fh/////r*   c           	      ,   t          j        ddd          }t          t          t	          t          |                              |dg          }t          ||g          }|                    |ddd	          }t          t          j	        t          j
        dt          j        
                              d                              dd          d          ddg|                                j                  }t!          j        ||           d S )Nz
2016-01-01   Mr  r  pnumr   r   Tr   )r   r   r   r.   r   r,   pnum_xpnum_yr   r   )r6   period_ranger   r   r   r    r   r   r   r   r   r-   repeatreshape
sort_indexr   r   r   )rn   r   ro   rc   r   r   s         r(   "test_merge_non_unique_period_indexz,TestMerge.test_merge_non_unique_period_index  s    bsCCCtE#e**--..efXNNNb"X#$DgNNGBIb11188;;CCBJJANNx(..""(
 
 

 	fh/////r*   c                    t          t          j        ddd          ddgd          }t          t          j        ddd          g d	d          }t          t          j        dd
d          ddt          j        t          j        gt          j        dddgd          }t          ||dd          }t          j        ||           d S )Nr  r   r  r  r,   r   r  r]   r  r^   r4  r{   r   r   )r   r6   r  r   r=   r   r   r   r   s        r(   test_merge_on_periodszTestMerge.test_merge_on_periods  s    OJDDDPQSTvVV
 
 z13GGG" 
 
 z13GGGq"&"&1FAq!, 
 
 tUu':::
fh/////r*   c                 8   t          ddgt          j        ddd          d          }t          ddgt          j        ddd          d          }t          j        ddd          }t          j        ddd          }t          g d	t          |          t          j        gz   t          j        gt          |          z   d
          }t          ||dd          }t          j        ||           |d         j        dk    sJ |d         j        dk    sJ d S )Nr,   r   r  r  r  r   r]   r  r  r4  r{   r   r   r   z	Period[D]r   )	r   r6   r  r   r>   r   r   r   r/   )rn   r~   r   exp_xexp_yr   r   s          r(   test_merge_period_valuesz"TestMerge.test_merge_period_values  s9   FR_ZQT%U%U%UVV
 
 FR_ZQT%U%U%UVV
 
 
AC@@@
AC@@@ yy;;"&1F8d5kk1 
 
 tUu':::
fh///i &+5555i &+555555r*   c                    |\  }}|                                 }|                                 }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<   |g d         }t          ||ddd          }t          j        ||           |                    |ddd          }t          j        ||           t          j        ||           t          j        ||           |}|                    ddi          }t          ||ddd          }	t          j        |	|           |                    |ddd          }	t          j        |	|           d S )Nr   r,   r   r]   r^   r_   r,   r   rX   rY   r]   r^   r_   )rZ   col_conflict_xr\   col_conflict_yr`   )	left_onlyboth
right_onlyr  r  r  r  r  r  
categories_merge)rZ   r  r\   r  r`   r  rZ   r   Tr   r   	indicatorcustom_namer   )	r   r   r   r=   r	   r   r   r   rename)
rn   rd   rb   rc   df1_copydf2_copy	df_resulttestdf_result_custom_nametest_custom_names
             r(   test_indicatorzTestMerge.test_indicator  s   $S88::88::***#$a"H #rvrvrvrvF#%61aAq"9 faAq!4 
 
	 *   ;::

 

 

	(   	
	 S#&gFFF
dI...yyWyEE
dI... 	c8,,,
c8,,, !* 5 < <}- != !
 !
 !W
 
 
 	.0EFFF99F= % 
 
 	.0EFFFFFr*   c                 <   |\  }}d}t          j        t          |          5  t          ||ddd           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    |ddd           d d d            d S # 1 swxY w Y   d S )Nz<indicator option can only accept boolean or string argumentsr   rZ   r   r_   r  r   )rn   rd   rb   rc   r   s        r(   #test_merge_indicator_arg_validationz-TestMerge.test_merge_indicator_arg_validation%  sK   $SL]:S111 	A 	A#sv7a@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A]:S111 	@ 	@IIcf'QI???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s#   AAA*BBBc                    |\  }}t          ||ddd          }|j        dk                                    sJ |                     |ddd          }|j        dk                                    sJ t          ||ddd          }|j        dk                                    sJ |                     |ddd          }|j        dk                                    sJ t          ||ddd          }|j        d	k                                    sJ |                     |ddd          }|j        d	k                                    sJ d S )
NrZ   r~   Tr  r  r   r  r   r  )r   r  r   )rn   rd   rb   rc   test2test3test4s          r(   %test_merge_indicator_result_integrityz/TestMerge.test_merge_indicator_result_integrity/  s^   $Sc36vFFF,1133333		#&f	EE,1133333c36w$GGG+0022222		#&g	FF+0022222c36w$GGG&++-----		#&g	FF&++-------r*   c           	         |\  }}dD ]}t          dddg|ddgi          }d| d}t          j        t          |          5  t	          ||ddd	
           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    |ddd	
           d d d            n# 1 swxY w Y   t          ddgddgd          }d}t          j        t          |          5  t	          ||ddd
           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    |ddd
           d d d            d S # 1 swxY w Y   d S )N)_right_indicator_left_indicatorr  rZ   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  )rZ   custom_column_namez:Cannot use name of an existing column for indicator columnr  r   r   r   r   r   )rn   rd   rb   rS  r  df_badcolumnr   s          r(   test_merge_indicator_invalidz&TestMerge.test_merge_indicator_invalidB  s   "QB 	P 	PA$fq!fa!Q%@AALM !M M M 
 z555 Q Qc<F4PPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Qz555 P P		,6w$	OOOP P P P P P P P P P P P P P P !1a&A!O!OPPJ]:S111 	 	.   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	 	IIW@T    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   A##A'	*A'		B//B3	6B3	.DDD5EE #E c                 p   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<   t          ||ddgdd          }t          j        ||           |                    |ddgdd          }t          j        ||           d S )Nr   r,   rX   rY   )rZ   col2)r,   r,   r]   )rY   rE   r   )r   r,   r,   r]   rX   rY   rE   r   )r  r  r  r  r  r  r  rZ   r  r   Tr  r   r	   r   r   r   )rn   df3df4hand_coded_resulttest5s        r(   %test_merge_indicator_multiple_columnsz/TestMerge.test_merge_indicator_multiple_columnsd  s    !Q#s<<==OOODDEE%!\\+?+?+?@@
 
 '2===:::'
 '
 '
(#
 c3FF#3DQQQ
e%6777		#66"24	PP
e%677777r*   c                    t          g dg ddt          d                    }t          g dg ddt          d	                    }|                                }|                                }t          ||d
d
d          }t	          j        ||           t	          j        ||           t          g dg dg dg ddt          d          g d          }t          ||d
d
d          }t	          j        ||           t          g dg dg ddt          d                    }t          ||dd          }t	          j        ||           t	          j        ||           t	          j        ||           t          ||dd          }t	          j        ||           t          g dg dg ddg dt          d                    }|                    d          }	t          |	|d
dd          }t	          j        ||           t          |t          dgdgddg          g          }
t          ||
d
d
d           d}t          j	        t          |          5  t          ||
d
d
d           d d d            n# 1 swxY w Y   t          j	        t          |          5  t          ||
dd           d d d            n# 1 swxY w Y   t          |t          dgdgddg          gd
          }t          ||d
d
d           d }t          j	        t          |          5  t          ||d
d
d           d d d            n# 1 swxY w Y   t          j	        t          |          5  t          ||dd           d d d            n# 1 swxY w Y   t          ||
dd!           d"}t          j	        t          |          5  t          ||
d
d
d           d d d            n# 1 swxY w Y   d#}t          j	        t          |          5  t          ||
dd           d d d            n# 1 swxY w Y   d$}t          j	        t          |          5  t          ||dd%           d d d            n# 1 swxY w Y   t          g d&g d'g ddt          d                    }t          g d(g d)g d*d+t          d                    }t          g d(g d)g d,g d*dt          d                    }d-}t          j	        t          |          5  t          ||dd           d d d            n# 1 swxY w Y   t          ||dd.gd          }t	          j        ||           d S )/Nr  )catdogweaselhorser   r^   r   rX   rY   rv   rw   rx   )meowbarkum... weasel noise?naychirprX   rv   r_   Tz1:1)r   r   validate)r  r  r  r	  )a_xrY   a_yrv   r  
one_to_oner  rX   )r   r  rY   rX   rv   r  )r   r   r  rx   mooone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger   cowr]   )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)rX   rX   rY   rY   )r   r,   r   r,   rX   rX   rY   )r   r,   r   )r  r  r  )rX   rY   rw   )r  r  r  zQMerge keys are not unique in either left or right dataset; not a one-to-one mergerY   )r   r   r   r   r   r   r   r   r   r   r   r   )rn   r~   r   	left_copy
right_copyr   r   
expected_2
expected_3left_index_resetright_w_dupsr   left_w_dupsexpected_multis                 r(   test_validationzTestMerge.test_validationw  s.	   &&&-N-N-NOO((
 
 

 ...LLL  ((
 
 
 IIKK	ZZ\\
tUtPUVVV
dI...
eZ000 +++666+++CCC	  ((,,,	
 	
 	
 %Dd\
 
 
 	fh///)))666CCC 
 ((
 
 

 tUsU;;;
dI...
eZ000
fj111tUs\BBB
fj111 666)))CCC 
 $OO((
 
 

  >>#..!
 
 
 	fj111 uise5'0J0JSTRU&V&V&VWXX"	
 	
 	
 	
 S]:S111 	 	 %   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	E 	E$|DDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 9C5w77sCCCD4
 
 
 	"	
 	
 	
 	
 R]:S111 	 	 %   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	E 	E+u|DDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	k<C.IIIIS]:S111 	 	 &   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 S]:S111 	M 	M+|mLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M
	 	 ]:S111 	= 	=$#<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= )))!\\666 
 ((
 
 
 $__YY<<< 
 ((
 
 
 #$__YY---<<<	  ((
 
 
% 	 ]:S111 	7 	7$#6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 tUSzEBBB
fn55555s   *JJJ1KKK5MMM<NN #N O88O<?O< Q  QQ(RRR+UUUc                     t          g g g d          }t          j        d          5  t          ||d           d d d            d S # 1 swxY w Y   d S )Nr  raise)divider   r   )r   r   errstater   )rn   rX   s     r(   )test_merge_two_empty_df_no_division_errorz3TestMerge.test_merge_two_empty_df_no_division_error<  s    BRb1122[((( 	' 	'!Q:&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A		AAr   zindex,expected_index)r,   r   r^   )r,   r   r^   NNN)
2001-01-01
2002-02-02
2003-03-03zM8[ns]r.   r&  r'  r(  c                 n    g | ]2}t          g d |          t          g dt          j                  f3S )r  r.   )r,   r   r]   NNN)r   r   float64.0dtyps     r(   
<listcomp>zTestMerge.<listcomp>S  sY       
  )))4000555RZHHH  r*   )r,   r   r   r]   r]   r^   r/  r0  r1  )r&  
2001-01-02
2001-01-03r  )r  r2  r3  )1d2d3dr4  r5  r6  c           
      r   t          g dg dd|          }t          dg di          }|                    |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           t          j        ||           d S )Nr,  rX   r{   r   rY   r  r{   Tr   )r   r   r   r,   r,   r,   r   r   r   r]   r^   r_   rX   r{   rY   r   )inplace)r   r   r   r=   r   r   r   )rn   r   r   expected_indexrb   rc   r   r   s           r(   $test_merge_on_index_with_more_valuesz.TestMerge.test_merge_on_index_with_more_valuesB  s    ^ iii			::%HHH00012234SII						AAA &%%

 

 

 	>4888
fh/////r*   c                    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dd          }t	          j        ||           d S )Nr  )r   r,   r,   r8  rY   r,   r   r]   N)r   r,   r,   r   )r,   r   r   r]   r;  r   r,   r   r  r{   Tr   r   r   r   r=   r   r   r   r   s        r(   test_merge_right_index_rightz&TestMerge.test_merge_right_index_right  s     yyy;;<<3			*++!//,,,\\\JJ%%%aBF#
 
 

 E5dPP
fh/////r*   c                 "   t          ddgddgd          }t          ddgddgd          }|                    |dd	g|
          }|dk    rt          ddgddgd          }nt          ddgddgd          }t          j        ||           d S )Nr  pig(   ro  )animal	max_speedquetzalP   rF  rG  r   r   r   )rn   r   left_dfright_dfr   r   s         r(   test_merge_preserves_row_orderz(TestMerge.test_merge_preserves_row_order  s     u~RHMMNNE(:"bRRSSxX{,CMM'>> Y,>bRTX!V!VWWHH UEN"b!R!RSSH
fh/////r*   c           	         t          g dt          g dt          d                    d          }t          dg dit          g d                    }|                    |d	d
d          }t          g dt          g d          g dddddt
          j        g          }|                    g d          }t          j	        ||           d S )Nr  r  abcr  r8  rY   r  r   r{   Tr   r   r@  )rX   rX   rY   rv   )r,   r,   r   r]   r;  r   r,   r   r   )
r   r	   r   r
   r   r   r=   reindexr   r   r   s        r(   8test_merge_take_missing_values_from_index_of_other_dtypezBTestMerge.test_merge_take_missing_values_from_index_of_other_dtype  s   YY"???tE{{KKK 
 
 3			*2B???2S2STTTE5dPP$__"#7#7#788!\\ 
 aBF#
 
 
 ##,=,=,=#>>
fh/////r*   c                 R   t          t          j        d                              d          dz   g d          }t          t          j        d                              d          dz   g d          }|j        j        D ]}d|j        _        |                    |           d S )	Nr   )r^   r_   r,   r  r   )r_   r^   r  F)	r   r   r   r  _mgrr  flags	writeabler   )rn   rj   rk   r'   s       r(   test_merge_readonlyzTestMerge.test_merge_readonly  s    IbMM!!&))A-7P7P7P
 
 
 IbMM!!&))A-7K7K7K
 
 

 :$ 	( 	(C"'CIEr*   N)Nrg  rh  ri  r   fixturero   rc   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  markparametrizer  r  r.  r2  r7  r;  rI  rL  r]  r`  filterwarningsrm  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r%  r
   r   r6   r>   r   ALL_REAL_NUMPY_DTYPESr   from_tuplesr   r=   r   r   r>  rB  rL  rP  rU  r8   r*   r(   rf   rf   o   s"       ^  ^ ^
 
 ^
 ^
 
 ^
 ^
 
 ^
0 0 0+ + +

0 
0 
00 0 0H H H8G G G*H H H&  8     7 7 7(
+ 
+ 
+M M M0 0 0&2 2 2.K K K@    *  , , , [U$G$G$GHH, , IH, [55S11D11--		
 . . .- - -^(' (' ('T0 0 0$0 0 0*@ @ @@ [e___5ooo7NO  [UVW$5660 0 76 0C C C*0 0 0 [W 	1 	1 	10 0 040 0 0  [V%K%K%KLL+ + ML+: [V%K%K%KLL+ + ML+2  00 0 02G G G60 0 020 0 0@0 0 00 0 0*6 6 6,=G =G =G~@ @ @. . .&     D8 8 8&C6 C6 C6J' ' ' [UWg$677[ ! ++  !<!<!<==
 >>>h   !<rvrvrvV"  	&	
 
 4  &	
, *)*B*B*BCC))VVRVRVRVD +&	
8 FFFSQQQ!<rvrvrvV  7&	
F 11122dD"&"&"&IJJE&	
) )T0 0U) ) 87V0*0 0 0 [UVW$566	0 	0 76	00 0 0*    r*   rf   c                    dD ]}dD ]}}|                      |||          }t          |                                 |                                ||          }|                    d          }t	          j        ||d           ~d S )N)r   r~   r   )TFr   r   r   F)check_names)r   r   r[  r   r   r   )rE   r   r   r   r   r   s         r(   r  r    s    ) G G! 	G 	GDVVA3TV22FQ]]__ammoo3TRRRH))'22H !&(FFFFF	GG Gr*   c                      e Zd Zej                            dddg eddg                              d          g          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                         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             Zd Zd Zd Z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          fddg eddge          fg          d              Zej                            d eddgd!          g d"f eddg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(d)gf ej        d%dd&'          ddgf ej        d%dd&'          d*dgf ej        d+d,           ej        d+dd-.          fg	          d/             Zej                            d0ddgd1fg d2fdgd3fdgd4fg          d5             Zej                            d0d6d7gd1fg d2fd7gd3fd6gd4fg          d8             Z ej                            d9d2g d:g d;gfd1g d;g d:gfd4g d:g d;gfd3g d;g d:gfg          d<             Z!d= Z"ej                            d>g d?          d@             Z#dAS )BTestMergeDtypes
right_valsr1   r   categoryc                 x   t          ddgt          ddg                              d          ddgddgt          ddgd	          t          ddgd
	          d          }t          d|i          }t          ||d          }t	          |j        j                  st          |j        j                  sJ d S d S )Nr1   r   rb  r,   r         ?       @uint64r.   int32)ry  rz  Cr  EFry  r   )r   r   r   r   r   ry  r/   r   )rn   ra  r~   r   r   s        r(   test_differentzTestMergeDtypes.test_different  s     U^UEN++22:>>V3ZQF(333QF'222 	
 	
 3
+,,
 tUs+++vx~..Q/&(.2Q2QQQQQQQQr*   d1d2c           	         t          j        |          }t          j        |          }t          t          j        g ddz  |          ddgdz  t          j        t          j        d          t           j                  d          }t          j        d	d
g          }t          dt          j        ddg|          i|          }|                    |ddg          }|	                                }	|j
        dk    rt          j        d          }t          j        t           j        |          |	d<   d|	j        |	j        dk    |	j        dk    z  df<   d|	j        |	j        dk    |	j        dk    z  df<   t          j        ||	           |                    |ddgd          }|	                    ddgdd           t          j        ||	           d S )Nr,  r   r.   r1   r   r?     )k1k2v)r   r   )r,   r1   r   r_   ry   r   rp  rq  r   r  r*  r   r,   TrD  	mergesort)kindr<  )r   r/   r   r   r   r-   r   r[  r   r   rt  r=   r   rp  rq  r   r   sort_values)
rn   rl  rm  dtype1dtype2r~   r   r   r   r   s
             r(   test_join_multi_dtypesz&TestMergeDtypes.test_join_multi_dtypes  s   
 ""hyyy1}F;;;enr)Xbimm28<<< 
 
 &
J'?@@41a&!?!?!?@NNN5dD\2299;;;#Xi((F"&777JKhkQ&8;%+?@$FGJKhkQ&8;%+?@$FG
fh///5dD\==dD\TJJJ
fh/////r*   zint_vals, float_vals, exp_valsr  )rd  re        @XYrd  ry  r,   r]   r   re  c                 ,   t          d|i          }t          d|i          }t          |          }|                    |dd          }t          j        ||           |                    |dd          }t          j        ||ddg                    d S )Nr{  r|  r   r   )rn   int_vals
float_valsexp_valsry  rz  r   r   s           r(   test_merge_on_ints_floatsz)TestMergeDtypes.test_merge_on_ints_floats  s     sHo&&sJ'((X&&C#66
fh///C#66
fhSz&:;;;;;r*   c                    t          ddgddgdddg          }t          d	gd
gdddg          }|                    |dd          }t          ddgddgt          j        dgdg d          }t	          j        ||           d S )Nrd  re  rq   r   rz   r{   r|   r   r      )r{   r   r   r~   r   g      i@r  )r   r   r   r=   r   r   r\  s        r(   test_merge_key_dtype_castz)TestMergeDtypes.test_merge_key_dtype_cast  s    c
2r(;;eT]SSSC511E4=III35f55#Jr2hrvuoFF'''
 
 
 	fh/////r*   c                    t          dg di          }t          dg di          }t          dgdgd          }t          j        t                    5  |                    |dd          }t          j        ||           d d d            n# 1 swxY w Y   t          j        t                    5  |                    |dd          }t          j        ||ddg                    d d d            n# 1 swxY w Y   t          dt          j        t          j        dgi          }t          j        d           5  |                    |dd          }t          j        ||ddg                    d d d            d S # 1 swxY w Y   d S )	Nr{  r  r|  )皙?g      @ry  r]   ry  rz  r   )r   r   ru  UserWarningr   r   r   r=   )rn   ry  rz  r   r   s        r(   !test_merge_on_ints_floats_warningz1TestMergeDtypes.test_merge_on_ints_floats_warning)  s`   
 sIII&''sOOO,--A3cU3344'44 	4 	4WWQcW::F!&(333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 '44 	@ 	@WWQcW::F!&(C:*>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@
 sRVRVS1233'-- 	@ 	@WWQcW::F!&(C:*>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s6   .BBB26C44C8;C8;6E>>FFc                 J   t          dt          ddgt                    i          }t          dddgi          }t          dddgit                    }t          ||d          }t	          j        ||           t          ||d          }t	          j        ||           d S Nr{   TFr.   r   )r   r   r<   r   r   r   rn   rb   rc   r   r   s        r(   (test_merge_incompat_infer_boolean_objectz8TestMergeDtypes.test_merge_incompat_infer_boolean_objectA  s    e}F C C CDEEu.//edE]36BBBsCE***
fh///sCE***
fh/////r*   c                 `   t          dt          ddt          j        gt                    i          }t          dddgi          }t          dddgit                    }t          ||d          }t          j        ||           t          ||d          }t          j        ||           d S r  )r   r   r   r=   r<   r   r   r   r  s        r(   5test_merge_incompat_infer_boolean_object_with_missingzETestMergeDtypes.test_merge_incompat_infer_boolean_object_with_missingL  s     eRV'<F K K KLMMu.//edE]36BBBsCE***
fh///sCE***
fh/////r*   zdf1_vals, df2_valsr,  )rX   rY   rX   )rU  rd  re  r   FTr.   c                 8   t          d|i          }t          d|i          }t          ||dg          }t          |j        j                  sJ t          ||dg          }t          |j        j                  st          |j        j                  sJ d S d S )Nry  r   )r   r   r   ry  r/   r   )rn   df1_valsdf2_valsrb   rc   r   s         r(   !test_merge_incompat_dtypes_are_okz1TestMergeDtypes.test_merge_incompat_dtypes_are_okX  s      h((h((sCSE***vx~.....sCSE***vx~..Q/&(.2Q2QQQQQQQQr*   rf  r  rg  )r}  12z1/1/2011r  r  z
2011-01-01z
2011-01-02rU  20130101)r  r3   r  c                    t          d|i          }t          d|i          }d|d         j         d|d         j         d}t          j        |          }t	          j        t          |          5  t          ||dg           d d d            n# 1 swxY w Y   d|d         j         d|d         j         d}t          j        |          }t	          j        t          |          5  t          ||dg           d d d            n# 1 swxY w Y   t          |          t          |          k    rt          |||d          }t          |||d          }d|d         j         d|d         j         d	}t          j        |          }t	          j        t          |          5  t          ||           d d d            n# 1 swxY w Y   d|d
         j         d|d
         j         d}t          j        |          }t	          j        t          |          5  t          ||dd
g           d d d            d S # 1 swxY w Y   d S d S )Nry  You are trying to merge on  and zE columns for key 'A'. If you wish to proceed you should use pd.concatr   r   ry  rz  rh  rz  zE columns for key 'B'. If you wish to proceed you should use pd.concatrh  zE columns for key 'C'. If you wish to proceed you should use pd.concat)	r   r/   reescaper   r   r   r   r    )rn   r  r  rb   rc   r   r  r  s           r(    test_merge_incompat_dtypes_errorz0TestMergeDtypes.test_merge_incompat_dtypes_errorp  s   4 h((h((S#c(. S Ss3x~ S S S 	 inn]:S111 	& 	&#su%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&
S#c(. S Ss3x~ S S S 	 inn]:S111 	& 	&#su%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&
 x==CMM)) (IIJJC(IIJJC
Wc#hn W W3s8> W W W  )C..Cz555    c3                             Wc#hn W W3s8> W W W  )C..Cz555 / /c3C:..../ / / / / / / / / / / / / / / / / // *)sH   1BBB*D

DD*GGG II	Izexpected_data, howr   r   r   r~   c                    t          dgdg|          }t          dgdg|          }t          |||          }t          t          |                    }t          ||dg|          }t	          j        ||           d S )N)r,   idr   r   r   r   r   r/   r   r   r   r    r   r   )	rn   any_numeric_ea_dtyper   expected_datarl  rm  r   	exp_indexr   s	            r(   test_merge_EA_dtypez#TestMergeDtypes.test_merge_EA_dtype  s     vv5IJJJvv5IJJJr23'''s=1122	TFBV
 
 
 	fh/////r*   rX   rY   c                    t          dgdg|          }t          dgdg|          }t          |||          }t          t          |                    }t          ||dg|          }t	          j        ||           d S )N)rX   r  r   )rY   r   r  r  )	rn   r   r  any_string_dtyperl  rm  r   exp_idxr   s	            r(   test_merge_string_dtypez'TestMergeDtypes.test_merge_string_dtype  s     x$7GHHHx$7GHHHr23'''S//004&@P
 
 
 	fh/////r*   zhow, expected_data)Tr,   r^   )Fr_   r]   c                     t          ddgddgd          }t          ddgddgd          }t          |||	          }t          |g d
          }t          j        ||           d S )NTFr,   r_   ry  rz  r]   r^   ry  rh  r   r  r   r   )rn   r   r  rb   rc   r   r   s          r(   test_merge_bool_dtypez%TestMergeDtypes.test_merge_bool_dtype  s     tUm1a&99::udm1a&99::sCS)))]OOODDD
fh/////r*   c                 v   t          g dg ddt          j                              }|                                }t          dddt          j        dgd	d
dt          j        dgd|          }|                                }t          ||dg|          }t          j        ||           t          j        ||           t          t          j
        d          t          j                    t          j
        d          gt          j        g d                    }t          j        |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  911)r  r  zlvl1-cr  )r~   r   r   r   O)r  r  r  r   )r   r6   StringDtyper   NAr   r   r   r   r   r/   r   r[  r   r5  )	rn   r  string_dtyperb   r  rc   r  r   r   s	            r(   test_merge_ea_with_stringz)TestMergeDtypes.test_merge_ea_with_string  sP   $>$>$>$=$=$=  .""
 
 
 88::%(#sBE3$?%(#sBE4$@  
 
 
 88::Cs0B/CSSS 	c8,,,
c8,,, Xc]]BN,,bhsmm<(LLL 
 
 
 	v}h77777r*   zleft_empty, how, exp)
)Fr~   r~   )Fr   empty)Fr   r  )Fr   r~   )Fcrossempty_cross)Tr~   r  )Tr   r   )Tr   r  )Tr   r   )Tr  r  c                 f   t          ddgddgd          }t          dgdgdd	          }|r|                    d
          }n|                    d
          }|                    ||          }|dk    r.t          ddgddgt          j        t          j        gd          }nZ|dk    r!t          dgt          j        gdgd          }n3|dk    rt          g dd          }n|dk    rt          g dd          }|dk    r|                    dd          }t          j        ||           d S )Nr   r,   r]   r^   r  r_   r  r-   r.   r   r   r~   r  r   r  r   r  )A_xrz  A_yrh  r   ry  Trr  )r   headr   r   r=   ru  r   r   )rn   
left_emptyr   r   r~   r   r   r   s           r(   test_merge_emptyz TestMergeDtypes.test_merge_empty  sX     1vQF33441#..g>>> 	"99Q<<DDJJqMMEEs++&== 1vQF"&"&AQ!R!RSSHHG^^ s"&!D!DEEHHG^^ HHHHHM!! )A)A)AQQQH'>>++Cd+CCH
fh/////r*   N)$rg  rh  ri  r   rW  rX  r   r   rk  r   r-   rg  intcint16int8uint8r*  float32float16rx  r  r  r  r  r  r<   r   r  r6   r  r  r  r  r  r  r  r8   r*   r(   r`  r`    sj       [u~vvuen'='='D'DZ'P'PQ R R R& [rx27BHbgrxH  [TBHbj"*bj#QRR0 0 SR 0> [(YYyyy)O)OPYYc
1a&Sz$B$BCV___QF#s&D&DE	
 < < <	0 	0 	0@ @ @0	0 	0 	0
0 
0 
0 [ YY//66zBBC__ff___55<<ZHHIVVVUDM8889VVVUDM6667	

 
R R
 
R [ VQF(+++___=VQF'***OOO<YY(__ooo.YY(j!#>>>|, R]:qs;;;aVDR]:qs;;;c3ZHj!444j!EEE	
 *3/ 3/+ *3/j [VWMS'NS&M		
 	0 	0 	0 [3Z!MUGUFO		
 	0 	0 	0 [|||]]]34}}}lll34lllMMM23}}}lll34		
 0 0 08 8 8B [	
 	
 	
 0 0 0 0 0r*   r`  c                  T   t          t          t          j                            d                              ddgd                                        t          ddg                    t          j                            d                              g dd          d          S )Nr   r1   r   )rq   r=  )onetwothreerz  )r   r   r   r!   r"   choicer   r   r8   r*   r(   r~   r~   =  s    	%%a((//U/KK f%uen5566&&q))001H1H1Hu0UU		
 	
  r*   c                      t          t          ddg                              t          ddg                    ddgd          S )Nr1   r   r,   r   )r{  Z)r   r   r   r   r8   r*   r(   r   r   I  sO    ''../?/O/OPPQ	
 	
  r*   c            
          e Zd Zd Zd Zd Zd Zej        	                    dddg          d             Z
d	 Zej        	                    d
d d d g          d             Zd Z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                         Zd ZdS )TestMergeCategoricalc                    t          ||d          }|j                                        }|st          j        d          nd}t          t          ddg          ||gg d	          }t          j        ||           d S )
Nr{  r   r  strr1   r   r  )r{  Y_xY_yr   	r   r5  r  r   r/   r   r   r   r   )rn   r~   r   r   r   r/   r   s          r(   test_identicalz#TestMergeCategorical.test_identicalT  s    tTc***))++%7BU%888%G%%%
 
 
 	vx00000r*   c                 &   t          ||d          }|j                                        }|st          j        d          nd}t          t          ddg          |t          j        d          gg d	
          }t          j        ||           d S )Nr{  r   r  r  r1   r   r  r-   r{  r|  r  r   r  rn   r~   r   r   r   r   r/   r   s           r(   
test_basiczTestMergeCategorical.test_basic_  s     tUs+++))++%7BU UEN;;;!!
 "//
 
 
 	vx00000r*   c           	         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<   t          ||ddd          }|d                             t	          dg                    |d<   t          j        ||           |                                }|d                             d          |d<   t          ||ddd          }t          j        ||           |                                }|d                             d          |d<   |                                }|d                             d          |d<   t          ||ddd          }t          j        ||           d S )NrX   rY   rv   rw   rx   )r   r,   r   r]   r^   nullr   r  r  r   r~   )r   r   r   rb  )r   r   r   r   r   r   r   )rn   r   r~   ro   r   crightr   clefts           r(   test_merge_categoricalz+TestMergeCategorical.test_merge_categoricalo  s    ==Fv&VLL 
 
 ==== 
 
 4FC#FFF 7799
 Sk((44stVsKKK ,,-=vh-G-GHH
fh/// 		3Z&&z22c
uf&#LLL
fh/// Sk((44s		3Z&&z22c
uf&#LLL
fh/////r*   c                 >   t          t          g dg d          g dd          }t          t          g dg d          g dd          }t          ||dg	          }t          t          g d          g dg d
d          }t          j        ||           d S )Nr  r  )A0B0C0)FooLeft)rh  rz  ry  )C1B1A1)r  Rightr  r   )r  r  r  )r  r  r  r  r\  s        r(   'tests_merge_categorical_unordered_equalz<TestMergeCategorical.tests_merge_categorical_unordered_equal  s    "???OOO*** 
 
 "???OOO+++ 
 
 sCUG,,,"???33***+++ 
 
 	fh/////r*   orderedTFc                    t          ddg|          }t          g dt          g d|          g dd                              d	d
g          }t          g dt          g d|          g dd                              d	d
g          }t	          ||ddd          }t          g dt          g d|          g dddt
          j        gd                              d	d
g          }t          j        ||           d S )NP2P1r  r  )rh  rh  r  )r  r  r  r.   r,  )r  prX   r  r  )ry  rh  rh  )r  r  r  )rq   ro  r?  )r  r  rl  r~   Tr   g      &@g      (@)r  r  rX   rl  )	r   r   r	   r   r   r   r=   r   r   )rn   r  pcatrb   rc   r   r   s          r(   5test_multiindex_merge_with_unordered_categoricalindexzJTestMergeCategorical.test_multiindex_merge_with_unordered_categoricalindex  sY     D$<III%oo !3!3!34@@@YY 
 
 )T3K
 
  	 %oo !3!3!34@@@"ll 
 
 )T3K
 
  	 sCV$OOO%oo !3!3!34@@@YYT26*	 
 
 )T3K
 
  	 	fh/////r*   c                 *   |                     |j                            d                    }t          ||d          }|j                                        }|st          j        d          nd}t          t          ddg	          |t          d
dg	          gg d          }t          j        ||           |j        j                            |j        j                  sJ |j        j                            |j        j                  sJ d S )Nrb  )r  r{  r   r  r  r1   r   r  r,   r   r  r   )assignr  r   r   r5  r  r   r/   r   r   r   r   r{  rJ  #_categories_match_up_to_permutationr  s           r(   test_other_columnsz'TestMergeCategorical.test_other_columns  s
   uw~~j99::tUs+++))++%7BU UEN;;; QF333
 "//
 
 
 	vx000 v}@@QQQQQw~AA&(/RRRRRRRr*   changec                     | S rA   r8   rD   s    r(   rF   zTestMergeCategorical.<lambda>  s    a r*   c                 J    |                      t          g d                    S )N)r1   r   bahr   r   rD   s    r(   rF   zTestMergeCategorical.<lambda>  s"    ahh/0E0E0EFFGG r*   c                 H    |                      t          d                    S )NTr  r  rD   s    r(   rF   zTestMergeCategorical.<lambda>  s    ahh/===>> r*   c                     ||j                             d                    }|                    |          }t          |j         j        j        t                    sJ t          ||d|          }|j        	                                }|st          j        d          nd}	t          |	|	t          j        d          gg d	          }
t          j        ||
           d S )
Nr<   )r{  r{  r   r  r  r-   r  r   )r{  r   r  rk  rJ  r/   r   r   r5  r  r   r   r   r   )rn   r  r  r~   r   r   r{  r   r   r/   r   s              r(   test_dtype_on_merged_differentz3TestMergeCategorical.test_dtype_on_merged_different  s     F57>>(++,,q!!$&--/?@@@@@ tUs	:::))++%7BU5%'):):;???SSS
vx00000r*   c                    dt          g dz  g ddz  z  fddD             fddD             d	          }|                    d
           }t          ||t          |j                            }t          j        ||           d S )Nr_   )
rX   rY   rv   rw   rx   r  r  r  r  j)rq  wrE   r   r  r   c                 ,    g | ]}|gd z  z  D ]}|S r  r8   r,  eachletterr  s      r(   r.  zKTestMergeCategorical.test_self_join_multiple_categories.<locals>.<listcomp>  sJ       #'&1*q.      r*   )r  r%   ur  oc                 &    g | ]}|gz  D ]}|S r8   r8   r  s      r(   r.  zKTestMergeCategorical.test_self_join_multiple_categories.<locals>.<listcomp>  sH        $(&1*      r*   )
aabbccddeeffgghhiijjr  c                 ,    |                      d          S )Nrb  )r   rD   s    r(   rF   zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>   s     4 4 r*   r   )r   applyr   r   r   r   r   )rn   ro   r   r  s      @r(   "test_self_join_multiple_categoriesz7TestMergeCategorical.test_self_join_multiple_categories  s     GGG!K...2Q6    9  
   !   
 
: XX4455 r2$rz"2"2333
fb)))))r*   c                    t          t          ddd          dgt          ddd          dggddg          }|d                             d	          |d<   t          t          ddd          dgt          ddd
          dggddg          }|d                             d	          |d<   t          t          j        d                                          ddgt          j        d                                          dt
          j        gt          j        d                                          t
          j        dggg d          }t          ||ddg          }t          j	        ||           t          t          j        d                                          ddggg d          }t          ||ddg          }t          j	        ||           d S )Ni  r,   r  r   ?r   num2r   rb  r]   ffffff?num4r&  r2  r3  )r   r!  r#  r   r  r   )
r   r   r   r6   r7   r   r=   r   r   r   )rn   ro   rc   expected_outerresult_outerexpected_innerresult_inners          r(   test_dtype_on_categorical_datesz4TestMergeCategorical.test_dtype_on_categorical_dates'  s    4A$tD!Q'7'7&=>QWHX
 
 
 Z&&z226
4A$tD!Q'7'7&=>QWHX
 
 
 &k((44F"l++0022C=l++0022C@l++0022BFC@
 -,,
 
 
 R'vh???
lN;;;"l<((--//c:;,,,
 
 
 R'vh???
lN;;;;;r*   z.category_column,categories,expected_categories)FTTF)r   r,   r,   r   r,   r   )FalseTruer*  r)  r*  r)  c                    t          g d|d          }|d                             t          ||                    |d<   t          ddgddgd	          }|                    |          }t          ddg|ddgd
          }|d                             t          ||                    |d<   t	          j        ||           d S )Nr   )r  r  r  r  r   r^   r,   r"  )r  num)r  r  r,  )r   r   r   r   r   r   )	rn   category_columnr  expected_categoriesr  rb   rc   r   r   s	            r(   /test_merging_with_bool_or_int_cateorical_columnzDTestMergeCategorical.test_merging_with_bool_or_int_cateorical_columnG  s     |||ODDEEZ&&'7
G'T'T'TUUE
1vq!f55663QF3FPQSTvVVWW"5/00Z999
 
 	h/////r*   c                    t          t          ddt          j        gd          dd          }t	          ||d          }t          t          ddt          j        gd          ddd          }t          j        ||           d S )	Nr,   r   r0   r.   r  ry  r   )ry  B_xB_y)r   r   r   r=   r   r   r   )rn   ro   r   r   s       r(   test_merge_on_int_arrayz,TestMergeCategorical.test_merge_on_int_array_  s    VQ26N'BBBKKLLr2#&&&!Qw777!LL
 
 	fh/////r*   N)rg  rh  ri  r  r  r  r  r   rW  rX  r  r  r  r  r(  r/  r3  r8   r*   r(   r  r  S  s       	1 	1 	11 1 1 )0 )0 )0V0 0 02 [Yu660 0 7608S S S* [KGG>>	
 1 1 1$&* &* &*P< < <@ [Yu66[8'''$uF\\Aq6Aq6*///&'1BVWDUV	
 0 0  7600 0 0 0 0r*   r  c                  0    t          dg dig d          S )NrX   r   rq   r   r   r,   r   r   ra   r8   r*   r(   rJ  rJ  i  s"    c;;;'yyy9999r*   c                  0    t          dg dig d          S )NrY   ,  d   r  r]   r,   r   r   ra   r8   r*   r(   rK  rK  n  s"    c???+999====r*   c                   >   e Zd Zej                            ddd eddgddgdd	d
g          fdd eddgddgdd
d	g          fdd eg dddej        gdg d          fdd eg dej        ddgdg d          fdd eej        ddgg ddg d          fdd eddej        gg ddg d          fdd edddej        gej        dddgdg d          fdd edddej        gej        dddgdg d          fg          d             Z	dS )TestMergeOnIndexeszhow, sort, expectedr   Fr   rq   r  r:  r   r   r,   r   Tr~   r5  r6  )r   rq   r   r,  r   r8  r;  r:  r  r9  r  r   r   r9  r   c                 Z    t          ||dd||          }t          j        ||           d S )NT)r   r   r   r   r   )rn   rJ  rK  r   r   r   r   s          r(   test_merge_on_indexesz(TestMergeOnIndexes.test_merge_on_indexest  sB    ` X$DcPT
 
 
 	fh/////r*   N)
rg  rh  ri  r   rW  rX  r   r   r=   r@  r8   r*   r(   r=  r=  s  s)       [eYYb"XS#J'G'GPQSTvVVVWdIIRHC:&F&FqRSfUUUV	3RV2DEEYYYWWW 	2632DEEYYYWWW 	62r*AA   	r26*AA   	b"bf-RVS#s4KLL&,,   	b"bf-RVS#s4KLL&,,  G+	
. .^0 0_. .^0 0 0r*   r=  r   c                 6    g | ]}t          d dg|d          S )r,   r   	index_colrB   )r   r+  s     r(   r.  r.    s+    VVVTUAq6K000VVVr*   ry  rz  rB  )r  rC   r   )startstoprC   r2   z
2018-01-02r   c                 @    t          |           j         d| j         dS )N[r  )typerg  r/   rD   s    r(   rF   rF     s"    T!WW%22222 r*   )rI   c                     t          dddgi|           }t          dddgi|           }|                    |dg	          }t          ddgddgd
|           }t          j        ||           d S )N	left_datar,   r   r   
right_datard  re  rB  r   )rI  rJ  r   )r   r~   r   r   r   s        r(   test_merge_index_typesrK    s     kAq6*%888D|c3Z0>>>EZZ;-Z00F1vc3ZHHPUVVVH&(+++++r*   z-on,left_on,right_on,left_index,right_index,nmr   r   F)NNNTTrz  T)NNNTTNc           
      $   t          dg dit          j        ddgddggddg	          
          }t          g dt          j        ddgddggddg	          |          }t          ddgddgdt          j        ddgdggddg	          
          }|-t	          ||| ||||          }	t          j        |	|           d S d}
t          j        t          |
          5  t	          ||| ||||          }	d d d            d S # 1 swxY w Y   d S )Nry  r   rX   rY   r   r,   r   r   namesr   r   r  r^   r]   r  )r   r   r   r   r   z$Cannot merge a Series without a namer   )
r   r   from_productr   r   r   r   r   r   r   )r   r   r   r   r   nmrX   rY   r   r   r   s              r(   test_merge_seriesrQ    s    		lll%SzAq6&:7GBTUUU	 	 	A 	%SzAq6&:7GBTUUU	 	 	A
 !fAq6""%SzA3&7?QRRR  H 
~!#
 
 
 	fh/////4]:S111 		 		!%'  F		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   !DD	D	c                  X   t          dg dit          j        ddgddggddg	          
          } t          g dt          j        ddgddggddg	          d          }t	          j        t          d          5  t          | |ddg           d d d            d S # 1 swxY w Y   d S )Nry  r   rX   rY   r   r,   r   r   rM  r   r   )rz  rh  r  z-Not allowed to merge between different levelsr   r   )r   r   rO  r   r   r   r   r   r   s     r(   test_merge_series_multilevelrS    s-    		lll%SzAq6&:7GBTUUU	 	 	A 	%SzAq6&:7GBTUUU	 	 	A
 
I
 
 
 + + 	a)****+ + + + + + + + + + + + + + + + + +s   =BB#&B#z!col1, col2, kwargs, expected_colssuffixes) _dupr}  0_dup)NrV  )_x_y0_x0_yrX  rY  rX   )NrY  rU  )rX  Nz0.0_xrY   b_yr  )NrX  )_aN0_ar  c                    t          | g di          }t          |g di          }t          ddgddgddgg|	          } |j        |fd
d
d|}t          j        ||           t          ||fd
d
d|}t          j        ||           d S )Nr  r   r,   r^   r   r_   r]   r   r   Tr   r   )rZ   r  kwargsexpected_colsrX   rY   r   r   s           r(   test_merge_suffixrb  	  s    ( 	4#$$A4#$$A1a&1a&1a&1=IIIHQWQD4TDDVDDF&(+++1aEDdEEfEEF&(+++++r*   zhow,expectedr   r>  <   F   X       )ry  r  B2)r,   r:  r  r9  rI  rf  rg  rh  c                     t          g dg dd          }t          g dg dd          }t          ||d| d          }g d	|_        t          j        ||           d S )
N)r:  r  r,   )rc  rd  rI  r  r>  re  ry  )rX  rX  )r   r   rT  )ry  r1  r1  )r   r   r   r   r   )r   r   rJ  rK  r   s        r(   test_merge_duplicate_suffixrk  '	  s}    , mmm,,,??@@G___EEFFH7H#MMMF***H&(+++++r*   zcol1, col2, suffixes))rX   rX   )NN)rX   rX   )rU  N)r   r   )NrU  c                     t          | g di          }t          |g di          }d}t          j        t          |          5  t	          ||dd|           d d d            d S # 1 swxY w Y   d S )Nr  r]   r^   r_   z'columns overlap but no suffix specifiedr   Tr   r   rT  r  )rZ   r  rT  rX   rY   r   s         r(   test_merge_suffix_errorro  E	  s     	4#$$A4#$$A 4C	z	-	-	- J JatIIIIJ J J J J J J J J J J J J J J J J Js   A&&A*-A*r~   r~   r   c                     t          dg di          }t          dg di          }t          j        t          d          5  t	          ||dd|            d d d            d S # 1 swxY w Y   d S )	NrX   r  rY   rm  zPassing 'suffixes' as ar   Trn  )r   r   r   	TypeErrorr   )rT  rX   rY   s      r(   test_merge_suffix_raisesrs  T	  s    3			"##A3			"##A	y(A	B	B	B J JatIIIIJ J J J J J J J J J J J J J J J J J   A$$A(+A(zcol1, col2, suffixes, msg)rX   rX   r  z(too many values to unpack \(expected 2\)z1not enough values to unpack \(expected 2, got 1\)c                     t          | g di          }t          |g di          }t          j        t          |          5  t	          ||dd|           d d d            d S # 1 swxY w Y   d S )Nr  rm  r   Trn  r  )rZ   r  rT  r   rX   rY   s         r(   test_merge_suffix_length_errorrv  ]	  s     	4#$$A4#$$A	z	-	-	- J JatIIIIJ J J J J J J J J J J J J J J J J Jrt  	cat_dtyper  r  reversec                    t          g dd          t          g dd          d}t          t          g d                              |d                   g dd                              d          }g d}g d}|r(|                                 |                                 t          t          |                              ||                    |d	                              d          }|                    |d
d
          }t          g dg dt          g d                              |d                   d                              d          }t          j        ||           d S )Nr  Fr  )r  r  r  r  r1   r~   r1   r1   r   Tr   r~   r   r1   )	r   r   r   r   r   rx  r   r   r   )	rw  rx  
cat_dtypesrb   data_foo
data_rightrc   r   r   s	            r(   test_merge_equal_cat_dtypesr  l	  s   
  ???EJJJ???EJJJ J
 ''..z%/@AA999UU i  HJ 
x  ''
9(=>>TT i  YYstY>>FIIYY///**11*U2CDD	
 	
  i  &(+++++r*   c                  B   t          g dd          } t          t          ddg                              |           ddgd                              d	          }t          t          g d                              |           g d
d                              d	          }|                    |dd          }t          ddgddgt          ddg                              |           d                              d	          }t          j        ||           d S )Nr  Fr  rX   rY   r,   r   rz  r1   )r]   r   r,   r{  Tr   r]   r|  )r   r   r   r   r   r   r   r   )rw  rb   rc   r   r   s        r(   test_merge_equal_cat_dtypes2r  	  s.    OOOUKKKI Sz"")))44q!fEE i  ''..y99IIINN i  YYstY>>FQ1a&c
1C1C1J1J91U1UVV i  &(+++++r*   c            
      r   t          dt          t          j        dd          t          j        dd          gd          i          } |                                 }|d                             d          |d<   t          || dd	          }|                                 }t          j        ||           d S )
NrX   r   r,   r   intervalr.   rb  r   r  )	r   r   r6   Intervalr   r   r   r   r   )r   r~   r   r   s       r(   test_merge_on_cat_and_ext_arrayr  	  s    	fbk!Q''Q):):;:NNNO E ::<<DS	  ,,DI4G444Fzz||H&(+++++r*   c                    	
 g d} g d	t          j        | 	fddg          }t          |          }d|d<   t          |          }d|d<   d	d

|                    |d
f          }	fd| D             }|dgz  }|	
fd| D             z  }t          j        |ddg          }t          |          }t          j        ||d           d S )Nr  r  r  r  r   r   rM  r   rU  r  rX  rY  r   rT  c                 (    g | ]}D ]	}|z   |f
S r8   r8   )r,  r  r,  l_sufnumberss      r(   r.  z1test_merge_multiindex_columns.<locals>.<listcomp>	  s/    MMMWMMcv~s#MMMMr*   )r  rU  c                 (    g | ]}D ]	}|z   |f
S r8   r8   )r,  r  r,  r  r_sufs      r(   r.  z1test_merge_multiindex_columns.<locals>.<listcomp>	  s/    NNNgNNs$NNNNr*   FrY  )r   rO  r   r   r[  r   r   )lettersr   frame_xframe_yr   tuplesr=  r   r  r  r  s           @@@r(   test_merge_multiindex_columnsr  	  s&    #""GooG#Wg$6w>PQQQE&&&GGDM&&&GGDMEE]]7tu~]GGF NMMMM'MMMF
zlF
NNNNN7NNNNF+F7G:LMMMN000H&(>>>>>>r*   c                  (   t          g dg dd          } t          g dt          j        g d          d          }t          | |dd	          }t          g dg dt          j        g d
          d          }t	          j        ||           d S )Nr  )r  r  r  )rE   r   r  )200020012002)r   r  r~   r   r  )r  r  r>   r  )r   r6   r  r   r   r   rb   rc   r   r   s       r(    test_merge_datetime_upcast_dtyper  	  s    
///@@
A
AC
ooBN3K3K3K$L$LMM C 3C000F   7 7 788	
 	
 H &(+++++r*   n_categoriesr_      c                    t          dgt          t          |                     z             }t          t          | dz             dg|          }t          dggdgt          dgt          t          |                                         }t	          ||ddd	          }t          d
 t          | dz             D             ddg|          }t          j        ||           d S )Nr   r,   rr   r  r   r  r~   Tr   c                 >    g | ]}|d k     r|dgn|t           j        gS )r   g      @)r   r=   )r,  r  s     r(   r.  z9test_categorical_non_unique_monotonic.<locals>.<listcomp>	  s.    MMMQUU!SBFMMMr*   r   r   )r
   r   r   r   r   r   r   )r  r   rb   rc   r   r   s         r(   %test_categorical_non_unique_monotonicr  	  s    
 "1#U<-@-@(A(A"ABBJ
E,*++gYj
Q
Q
QC

	stE,4G4G/H/HIII  C 3DdKKKFMMU<!;K5L5LMMMI&  H
 (F+++++r*   c                     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	d
gd          }|                     |ddg          }t          j        ||           t          g dg dd          g dd} t          |           } t          g dg dd          g dg dd}t          |                              d	d
g          d         }t          | |                                ddgd	d
gd          }|                    d	d
gd          }|                     |ddg          }t          j        ||           d S )N)rX   rY   rX   rv   rX   rY   r  )r   r,   r   r,   r   r   )Cat1Int1)rX   rY   rv   rX   rY   rv   )r   r   r   r,   r,   r,   )r  g333333?r   r"  r_  g?)CatIntFactorr  r  r  r  r  r~   r   r,   )axisr   r  Tr  )	r	   r   r   r   r[  dropr   r   r   )rX   rY   r   r   s       r(   &test_merge_join_categorical_multiindexr  	  sJ    :::OOOLL"""	 	A 	!A 999???KK!!!000	 	A
 	!u~..x8A		   H }}eU^!}44HVVA66*V++F(F+++ ***OOOT
 
 
 #""		 	A 	!A ***OOOT
 
 
 "!!000	 	A 	!u~..x8A		   H }}eU^!}44HVVA66*V++F(F+++++r*   funcr   
merge_asof)r`  err_msg)r   r   r   r   )r   r   r   r   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          |          5   t	          t
          |           ||fi | d d d            d S # 1 swxY w Y   d S )Nr,   r   r]   r^   r   r_   r   r  zCan only pass argument "r   " OR "z" not both\.r   r   r   r   r   getattrr6   r  r`  r  r~   r   r   s         r(   /test_merge_join_cols_error_reporting_duplicatesr  2
  s     Aq6A//00DQF!Q0011E
Pgaj
P
P

P
P
PC	z	-	-	- 1 1D$000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1   BBB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          |          5   t	          t
          |           ||fi | d d d            d S # 1 swxY w Y   d S )Nr,   r   r]   r^   r   r_   r   r  zMust pass "r   r  z"\.r   r  r  s         r(   ,test_merge_join_cols_error_reporting_missingr  C
  s     Aq6A//00DQF!Q0011E
:
:
:71:
:
:
:C	z	-	-	- 1 1D$000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1r  r`  c                    t          ddgddgd          }t          ddgddgd          }d	}t          j        t          |
          5   t	          t
          |           ||fddi| d d d            d S # 1 swxY w Y   d S )Nr,   r   r]   r^   r   r_   r   r  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r   r   rX   r  )r  r`  r~   r   r   s        r(   1test_merge_join_cols_error_reporting_on_and_indexr  T
  s     Aq6A//00DQF!Q0011E	:  
z	-	-	- 9 9D$88#88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   
 A77A;>A;c                      t          ddgddgd          } t          ddgddgd          }t          | |ddd          }t          ddgddgddgddgddgd          }t          j        ||           d S )	Nr,   r1   )rE   r  r   TrE   )r   r   r   )rE   x_xz_xx_yz_yr   r~   r   r   r   s       r(   test_merge_right_left_indexr  h
  s    Aq67788DQF%8899E4GsKKKFQq65>q65>	
 	
 H &(+++++r*   c                     t          dgdgd                              ddg          } t          ddgi                              dg          }t          g g dt          j                                      ddg          }t	          | |dgd          }t          j        ||           t	          || ddg	          }t          j        ||           d S )
Nr,   r   r   rX   rY   r.   Tr  r  )r   r   r   r-   r   r   r   rb   rc   r   r   s       r(   $test_merge_result_empty_index_and_onr  y
  s    
1#QC((
)
)
3
3S#J
?
?C
S1#J


)
)3%
0
0Cr++28<<<FFSzRRH3cU===F&(+++3u===F&(+++++r*   c                  p   t          g dddd          } t          g ddd          }t          j        t          d          5  t	          | |d	           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          || dd
           d d d            d S # 1 swxY w Y   d S )Nr  r,   r   )rX   rY   b_xr   (Passing 'suffixes' which cause duplicater   rX   r   )rY  rX  r  r   r   r   r   r   rp  s     r(   .test_merge_suffixes_produce_dup_columns_raisesr  
  sI   9991Q7788DIIIA..//E	z)S	T	T	T # #dEc""""# # # # # # # # # # # # # # # 
z)S	T	T	T : :eTcL9999: : : : : : : : : : : : : : : : : :s$   A$$A(+A(
B++B/2B/c                      t          g dg dgg d          } t          ddgdd          }t          | |d	
          }t          g dgg d          }t          j        ||           d S )Nr9  r:  )rX   rY   rY   r   r,   r]   r   r   rX   r   )r,   r,   r,   r   )rX   r  r  r\  r   r  s       r(   3test_merge_duplicate_columns_with_suffix_no_warningr  
  s     iii+___EEEDQF++,,E43'''F,,,1K1K1KLLLH&(+++++r*   c                      t          g dg dgg d          } t          ddgdd          }t          j        t          d	
          5  t	          | |d           d d d            d S # 1 swxY w Y   d S )N)r,   r,   r,   r,   )r   r   r   r   )rX   rY   rY   r  r   r,   r]   r   r   r  r   rX   r   r  rp  s     r(   Itest_merge_duplicate_columns_with_suffix_causing_another_duplicate_raisesr  
  s     lllLLL1;Q;Q;QRRRDQF++,,E	z)S	T	T	T # #dEc""""# # # # # # # # # # # # # # # # # #s   	A))A-0A-c                  "   t          ddgddggt          ddg                    } t          dd	gd
dggddg          }t          || ddd          }t          g dg dgt          g d                    }t          j        ||           d S )Nr,   r   r]   r^   rX        \@r   r"  rq   ro  r?  rE   r   r   Tr   )r"  rq   r,   r   )ro  r?  r]   r^   )rE   r   rX   r  r   r   r   r   r   r  s       r(   %test_merge_string_float_column_resultr  
  s    
aVaV$eS%L.A.A
B
B
BC
aWr2h'#s
<
<
<C3TtLLLF	'7M7M7M1N1N  H &(+++++r*   c                      t          dgdgdg          } t          dgdgdg          }t          j        t          d          5  t	          | |dgd	           d d d            d S # 1 swxY w Y   d S )
Nr{  rh     )r  r   r   i  zCan only pass argumentr   T)r   r   r  )df_1df_2s     r(   /test_mergeerror_on_left_index_mismatched_dtypesr  
  s    3%#rd;;;D3%#se<<<D	z)A	B	B	B 5 5dDcUt44445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   A((A,/A,c                  :   t          t          d                    } t          | t          d          d          }t          dt          dd          i          }t          ||| d          }t          ||| j        d          }t          j        ||           d S )Nr]   r  rh  r   ry  r   )r
   r   r   r   _datar   r   )cir   r~   resr   s        r(   #test_merge_on_left_categoricalindexr  
  s    	%((	#	#BBU1XX..//Ec5A;;'((D
eR#
6
6
6CT5"(SAAAH#x(((((r*   r/   r0   c                    t          ddgddgd|           }t          t          j        t          j        gddgd|           }t          ||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|           }t	          j        ||           t          ||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|           }t	          j        ||           d S )Nr,   r   )r{   rZ   r.   r]   r^   )r{   r  r{   r   r   )r{   rZ   r  )r{   r  rZ   rA  )r/   r~   r   r   r   s        r(   test_merge_outer_with_NaNr  
  sQ    aVaV44EBBBDrvrv.A??uMMME45g666Fq"&"&)2626*VRVQ*	
 	

   H &(+++ 5$5g666Fq"&"&)VRVQ*2626*	
 	

   H &(+++++r*   c                     t          ddgit          dgd                    } t          ddgit          dgd                    }t          | |dd          }t          dgdd          }t          j        ||           d S )	NrX   r,   rv   r   r   rw   r   )r  r  r  r  s       r(    test_merge_different_index_namesr  
  s    cA3ZuaSs';';';<<<DsQCjqc(<(<(<===E4c:::F!Q//00H&(+++++r*   c                     t          g ddd|           }t          g ddd|           }|                    ||          }t          g dddd|           }t          j        ||           d S )	Nr  r,   r   r.   r   r  r   r  r   r  r  r~   r   r   r   s         r(   test_merge_ear  
  s    9991--5IJJJDIIIA..6JKKKEZZ9Z--Fyyyqq99AUVVVH&(+++++r*   c           	         t          g ddd|           }t          g ddd|                                           }|                    ||          }t          t          g d|           t          g d|           t          g d	|                                           d
          }t	          j        ||           d S )Nr  r,   r   r.   r   r  r   r9  r:  r  )r   lowerr   r   r   r   r  s         r(   test_merge_ea_and_non_ear  
  s    9991--5IJJJDIIIA..6J6P6P6R6RSSSEZZ9Z--F			)=>>>			)=>>>			)=)C)C)E)EFFF	
 	
 H &(+++++r*   r-   int64[pyarrow]c                 z   t          j        d           t          dddgi|           }t          dddgid          }|                    |          }|                                }t          j        ||           |                    |          }|                                }t          j        ||           d S )NpyarrowrX   r,   r   r.   r  )r   importorskipr   r   r   r   r   )r/   ro   rc   r   r   s        r(   !test_merge_arrow_and_numpy_dtypesr    s     	"""	C!Q=	.	.	.B
S1a&M)9
:
:
:CXXc]]FwwyyH&(+++YYr]]FxxzzH&(+++++r*   r   )r   r~   r   r   r5   zAmerica/Chicagoc                 Z   t          j        ddd|           t          j        ddd|           t          j        ddd|           g}t          |d d         dd	gd
          }|d         j                            d          |d<   t          |dd          dd	gd          }|d         j                            d          |d<   t          |dd	t
          j        gt
          j        dd	gd          }|d         j                            d          |d<   |dk    r#|j        dg                             d          }n?|dk    r|j        ddg         }n)|dk    r#|j        ddg                             d          }|	                    |d|          }t          j        ||           d S )Ni  r_   r?  r4         r   rd  re  )rq  rX   rq  r  r,   )rq  rY   r  )rq  rX   rY   r   Tr  r~   r   r   r   )r6   r7   r   r   as_unitr   r=   ilocr[  r   r   r   )r5   r   valsrb   rc   r   r   s          r(   (test_merge_datetime_different_resolutionr    s   
 	T1bR(((
T1bR(((
T1bR(((D
 $rr(#s44
5
5C3x{""4((CH
$qrr(#s44
5
5C3x{""3''CHt3RV*<BFCQTCUVVWWHSM$,,T22HSM
g~~=!%11t1<<	=!Q(	=!Q(44$4??YYssY,,F&(+++++r*   c                      t          dddgi          } t          ddgit          j        ddgdg          	          }t          ddgdt          j        gd
          }|                     |dgdd          }t          j        ||           d S )Ncolry  rz  rY   r:  )ry  )rh  rM  )r  r   )r  rY   Tr~   r   )r   r   r[  r   r=   r   r   r   )ro   rc   r   r   s       r(   "test_merge_multiindex_single_levelr  +  s    	EC:&	'	'B
C5\$ff%5eWEEE  C #s3-@@AAHXXcE7&XIIF&(+++++r*   )r~   r   r   r   r   on_indexleft_uniqueleft_monotonicright_uniqueright_monotonicc                 J   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          }|r0|                    d          }|                    d          }ddd}	nddi}	t          ||f| |d	|	}
|r(|                                }|                                }| d
v r| dv r|||}}}n|||}}}| dk    r[t          |d         j                                      |d         j                  }|d                             |          }||         }|r|	                    d          }|s|d         
                                }|                    |d         j        d          }|                    t          j                  }|d                             |j                  }|                                }n| dk    r|d         
                                }|d         
                                }|                    |d          }|                    t          j                  }|j        j                            |j                  }t          d|i          }|	                    d          }|r|                    d          }n|                    d          }t'          j        |
|           d S )Nr   r]   r^   r,   r{   Tr   r   r]  )r~   r   r   )r~   r   r   )
fill_valuer   r  )appendr   r   r   r[  setrJ  intersectionisinru  r   rO  r   r   intpr  r  mulr   r   r   )r   r   r  r  r  r  r  r~   r   	on_kwargsr   r   otherother_uniquekeep_values	keep_maskother_value_countsrepeatsleft_countsright_countsexpected_countss                        r(   test_merge_combinationsr  8  sL    q6D 0.AAQ////.AAQ///FE 2/0QQq1111/0QQq111eT]##Duen%%E "~~e$$&&#'==		5M	4@Cd@@i@@F $!!!!##
(((###,0%\eHH,14\eH'>>d5k011>>uU|?RSSK ,,[99I	*H 	3++E22H 	+!&u!:!:!<!<(00%1GTU0VVGnnRW--G--gn==H((**H	5k..00U|0022%//,1/EE)0099"(/667MNNeX.//''.. 3%%e,,''T'22&(+++++r*   c                  V   t          dt          j        gt          j                              } t          dg          }t          dgd          }t          j        t          d          5  |                     |          }d d d            n# 1 swxY w Y   t          j	        ||           t          j        t          d          5  |                    |           }d d d            n# 1 swxY w Y   t          j	        ||
                    d	                     t          dg          }t          d
gdgd          }|                     |          }t          j	        ||           |                    |           }t          j	        ||
                    d	                     d S )Nrd  r.   r_  r   r0   r   zYou are mergingr   r*  r,   )r   r   r=   r6   
Int64Dtyper   ru  r  r   r   r   r  s       r(   !test_merge_ea_int_and_float_numpyr    s   
S"&M
9
9
9C
SE

C!G444H		#K7H	I	I	I    3                             &(+++		#K7H	I	I	I    3                             &(//)"<"<===
SE

C!qc999HYYs^^F&(+++YYs^^F&(//)"<"<=====s$   ,BBB	C++C/2C/c                 Z   t          j        d           t          dddgi|           }t          ddit          ddg|                     }|                    |ddd	
          }t          t          ddg|           dt          j        gd          }t          j	        ||           d S )Nr  rX   rY   r.   r,   rv   r   Tr~   r   r   )
r   r  r   r   r   r   r   r=   r   r   )r  r~   r   r   r   s        r(   test_merge_arrow_string_indexr    s    
	"""cC:&.>???DsAheS#J>N&O&O&OPPPEZZs&ZIIFc3Z'788826{KK H &(+++++r*   r  right_emptyc                    t          ddgddg          }t          ddgg d          }| r|j        d d         }|r|j        d d         }t          ||dgd          }t          ddgg d	          }| r|r|j        d d         }n%| rt          j        |d<   n|rt          j        |d
dg<   t          j        ||           d S )Nr,   r   ry  rz  r  )ry  rh  r  r   r   )ry  rz  rh  r  rh  r  )r   r  r   r   r=   r   r   )r  r  rb   rc   r   r   s         r(   $test_merge_empty_frames_column_orderr    s    AaS3*
5
5
5C
AaS///
:
:
:C hrrl hrrl37333F1#/C/C/CDDDH &k &=!$	 &	 &!v#s&(+++++r*   c                 ~   t          dt          dd gd          i          }t          dt          dgd          i          }d|d         j         d|d         j         d}t          j        t
          t          j        |          	          5  |                    |d| 
           d d d            n# 1 swxY w Y   d|d         j         d|d         j         d}t          j        t
          t          j        |          	          5  |                    |d| 
           d d d            d S # 1 swxY w Y   d S )Nr{   r,   zdatetime64[ns]r.   ztimedelta64[ns]r  r  zG columns for key 'key'. If you wish to proceed you should use pd.concatr   r   )	r   r   r/   r   r   r   r  r  r   )r   r~   r   r   s       r(   !test_merge_datetime_and_timedeltar    s   eVQI5EFFFGHHDufaS0ABBBCDDE	Qd5k&7 	Q 	QeEl>P 	Q 	Q 	Q  
z3	8	8	8 - -

5U
,,,- - - - - - - - - - - - - - -	QeEl&8 	Q 	QtE{?P 	Q 	Q 	Q  
z3	8	8	8 - -DU,,,- - - - - - - - - - - - - - - - - -s$   B55B9<B9D22D69D6)r   r   )]r   r   r   r  numpyr   r   pandas.core.dtypes.commonr   r   pandas.core.dtypes.dtypesr   pandasr6   r	   r
   r   r   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.core.reshape.concatr   pandas.core.reshape.merger   r   r)   r9   r?   rV  rO   rS   rV   rd   rf   r  r`  r~   r   r  rJ  rK  r=  rW  rX  rZ  rK  rQ  rS  rb  r=   rk  ro  rs  tuplerv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r8   r*   r(   <module>r     sK           
 
			             7 6 6 6 6 6                                    - - - - - -          	 	 	   zz||)?)?@@@  A@ zz||)?)?@@@  A@ }},B,BCCC  DC 	 	 	P P P P P P P Pf*	G 	G 	Gl0 l0 l0 l0 l0 l0 l0 l0^      S0 S0 S0 S0 S0 S0 S0 S0l : : : > > >40 40 40 40 40 40 40 40n VVR=UVVV#sc
MMM
555|\2EEE 	32  	 		, 	,	 		, 3
7	T4s;+	!4c:	tgw'uc:
7	T4t<,	!4d;	tgw'ud;	 % % %P+ + +$ '	
A
L)C>:	
A
N+a\:	
A
L)E5>:	
A
T4L)E5>:	a*l+c1X6	cJ-~>	cJ-U|<	cJ-s|<	cJ-Sz:	cJ-U|<	
A
L)E1:6	c2u~&	
ArE5>" $, ,% $,  I%oob"bf-=___UU 	
 I+++r2rv.63S1  		
 *, ,+ *, JJJ J J	 J vw&7!a9P9P%QRRJ J SRJ P	c55::ST J J J uen55T5M22 ,  , 32 65 ,F, , ,,, , ,? ? ?<, , ," !S22, , 32,*5, 5, 5,p '<!899	-	-	</HI$	/	/*m1LM 1 1  :91 '<!899
S	J67
c	Y56 1 1  :91 '<!899		t 	9 	9  :9	9, , ,"	, 	, 	,	: 	: 	:, , ,# # #, , ,5 5 5	) 	) 	) 4/22, , 32,8, , ,, , ,, , , 7,<"=>>, , ?>,  C C CDD&7899, , :9 ED,2
, 
, 
,  C C CDD$//dE]33u66)D%=99$77*T5M::?, ?, ;: 87 :9 76 43 0/ ED?,D> > >.	, 	, 	, e}55u66, , 76 65,*  C C CDD- - ED- - -r*   