
    Pi                       d dl mZm Z mZ d dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dlmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dl m!Z!m"Z" dd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+ G d d          Z,ej-        .                    dd ej/        D              eg dg dd           ed dd           eg dd           gz   d! "          d#             Z0ej-        .                    d$d%d&gddd'd'd(fd)dd%d&gdd'd*d(fddd%d&gd*d'd(fd%d&gddd'd'dfd+dd%d&gdd'd*dfddd%d&gd*d'dfg          d,             Z1d- Z2ej-        .                    d.d d d/d0id1d2gfd d d/d3id d2gfd d d/d4id5d6gfd d d/d7d8gid5d6gfd9d d/d:id9d gfd;d;d/d<id=d;gfd>d>d/d:id>d?gfd9d9d/d<id@d9gfd9d>d/d<id9d>gfd9d9d/dAid9d@gfd d d/dBidCd gfd9d9i d@dDgfd d i d5d6gfg          dE             Z3ej-        .                    dFdGg dHdIdJej4        gg dKdLfd%g dMdNdIdJej4        gej4        dOdPdQgdLfg          dR             Z5ej-        .                    dSg dT          dU             Z6ej-        .                    d/dVdGhd d dWg          dX             Z7erdYndZZ8ej-        .                    d[d9d9d\d]e8 d^fd9d9 e9d9          d_fg          d`             Z:ej-        .                    dadbdcg          ej-        .                    ddd*d'g          de                         Z;df Z<dg Z=dh Z>di Z?ej-        .                    djdkdlg          dm             Z@dn ZAej-        .                    dodpdqg          ej-        .                    drd9d*dsdtdugfd9d*dvdwdxgfg          dy                         ZBej-        .                    dodpdqg          ej-        .                    drdtd9idwdxgfdwd9idtdugfg          dz                         ZCej-        .                    dodpdqg          ej-        .                    d{dxd*idud*ig          d|                         ZDd} ZEd~ ZFd ZGd ZHd ZId ZJd ZKd ZLej-        .                    dddg          d             ZMd ZNd ZOd ZPej-        .                    dddg          d             ZQej-        .                    dddg          d             ZRd ZSd ZTej-        .                    dd*d'g          ej-        .                    dd*d'g          ej-        .                    dd*d'g          ej-        .                    dd*d'g          ej-        .                    dd*d'g          d                                                             ZUd ZVd ZWej-        .                    dd*d'g          ej-        .                    dd*d'g          d                         ZXej-        .                    dg d          d             ZYd ZZej-        .                    d/dd0g          d             Z[d Z\d Z]d Z^dS )    )datedatetime	timedeltaN)PY314)is_object_dtypeis_string_dtype)CategoricalDtype)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndexIntervalIndex
MultiIndexPeriodIndex
RangeIndexSeriesTimedeltaIndex)concat)
MergeErrormerge   2   c           	         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       y/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/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                  n    t          ddgddgddgd          } t          g dg dg dd	          }| |fS )
Nr      r   ab)col1col_conflictcol_left)r-   r            )r   r   r   r   r   )r0   r1   	col_right)r   df1df2s     r)   dfs_for_indicatorr:   4   s^    
aVaV#sTT
U
UC
#OO+OO(	
 	
 C 8Or+   c                   b
   e Z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d Zej                            dddddddddddddg          d              Zd! Zd" Z ej                            d# e!d$gd%&           e!d$gd'&           e!d(g           e!d)g           e!dg           e! e"j#        d*          g           e! e"j#        d*d+,          g          g          ej                            d- e!d$gd%&           e!d$gd'&           e!d(g           e!d)g           e!dg           e! e"j#        d*          g           e! e"j#        d*d+,          g          g          d.                         Z$ej                            d# e!d$gd%&           e!d$gd'&           e!d(g           e!d)g           e!dg           e! e"j#        d*          g           e! e"j#        d*d+,          g          g          ej                            d/ e!e"j%        gd'&           e!e&j'        gd0&           e!e&j'        gd1&           e!e"j(        g          g          d2                         Z)d3 Z*ej                            d4d5g d6fdg d7fg          ej                            d8d9d:g          d;                         Z+d< Z,d= Z-ej        .                    d>          d?             Z/d@ Z0dA Z1ej                            dBg dC          dD             Z2ej                            dBg dC          dE             Z3dF Z4dG Z5dH Z6dI Z7dJ Z8dK Z9dL Z:dM Z;dN Z<dO Z=dP Z>dQ Z?dR Z@dS ZAdT ZBdU ZCej                            d8d:dVg          ej                            dW eDg dX           eDg dY          f eEg dZd[&           eEd\d]d^e"j(        e"j(        e"j(        gd[&          fgd_ eFjG        D              eHjI        g d`           eHjI        dadbdce&j'        e&j'        e&j'        g          f eJg dddef           eJd\dgdhe"j(        e"j(        e"j(        gdef          f eKg di           eKdjdkdle"j(        e"j(        e"j(        g          f          dm                         ZLdn ZMej                            d8d9d:g          do             ZNdp ZOdq ZPdr ZQdsS )t	TestMergec                 B   t          t                      t                      t          j                            d                              d          t          j                            d                              d          d          }||d         dk             }|S )Nr   r   )key1key2data1data2r?   r-   r   r*   r   r"   r#   standard_normal)selfdfs     r)   rE   zTestMerge.dfB   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&   r4   )r%   r&   r   )r>   r?   valuerB   rD   s    r)   r9   zTestMerge.df2Q   s]    %+++%a2666..q11AA"EE 
 
 	
r+   c                     t          g dt          j                            d                              d          d          S )Nr.   r/   cderN   r.   r      keyv1)r   r   r"   r#   rC   rI   s    r)   leftzTestMerge.left[   sH    :::i++A..>>qA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 )
Nr.   r-   r   r   int64)indexdtypeT
left_indexright_indexrW   r   r   tmassert_frame_equal)rD   df_emptydf_aresultexpecteds        r)   test_merge_inner_join_emptyz%TestMerge.test_merge_inner_join_emptyd   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 )Nr>   r?   onr   r]   r^   )rD   rE   r9   joinedexps        r)   test_merge_commonzTestMerge.test_merge_commonl   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   r3   r   r-   r   r3   )r   astypefloatr   r]   r^   rD   rS   rightrb   ra   s        r)   test_merge_non_string_columnsz'TestMerge.test_merge_non_string_columnsq   sr     ,,,<<<PP
 
 E""tU##
h/////r+   c                     |                     d          }|                     d          }t          ||d          }t          ||d                               d          }t          j        ||           d S )Nr>   re   )	set_indexr   r]   r^   )rD   rE   r9   rS   rp   ra   rb   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 )NrK   r   rO   rP   v2r4   rM   r/   rL   r.   rV   rQ   TrS   F)left_onrZ   howsortrp   )right_onrY   rz   r{   )
r   r   r"   r#   rC   r   r]   r^   loccolumns)rD   rS   rp   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 )NrK   r   rO   rP   rv   r4   rw   rx   rQ   Tinnerry   rZ   rz   re   )r|   rY   rz   )r   r   r"   r#   rC   r   joinr}   rV   r]   r^   r~   rD   rS   rp   ra   rb   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                    t          dt          j                            d                              d          ig d          }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 )Nrv   r   r4   rw   rx   z&Must pass right_on or right_index=TruematchT)rY   z$Must pass left_on or left_index=True)rZ   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothrQ   )ry   rf   z)len\(right_on\) must equal len\(left_on\)r>   r?   ry   r|   )r   r   r"   r#   rC   pytestraisespderrorsr   r   
ValueError)rD   rE   r9   rS   rp   msgs         r)   test_merge_misspecifiedz!TestMerge.test_merge_misspecified   s   29((++;;A>>?&&&
 
 
 7]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sH   -BBB>CC!$C!D//D36D3E;;E?E?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   rS   Fr>   r?   rz   rY   rZ   z=left_index parameter must be of type bool, not <class 'list'>r   r   r   r   )rD   rE   r9   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 )NrQ   re   r   v1_xv1_y)r   value_countssumr!   )rD   rS   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)foobarbazr   r-   r   r3   r4   )lkeyrH   )r   r   quxr   )r5      rO   r   )rkeyrH   r   r   outerT)ry   r|   rz   r{   r   r   r   namer   r   r3   r-   r4   value_xr   r5   r   rO   value_y)r   r   r   r   nanr]   assert_series_equal)rD   rS   rp   r   ri   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                 D   t          dddt          d                    }t          dddt          d                    }t          ||d	d	
          }d|d<   |d         dk                                    sJ d|d<   |d         dk                                    sJ d S )Nr   r-   r.   r/   rG   rx   r   r   rL   rM   TrX   r   r.   peekaboorM   )r   r   r   all)rD   rS   rp   r   s       r)   test_merge_copyzTestMerge.test_merge_copy  s    qq))r;;;E22%))DDDtUtFFFsS	Q##%%%%% sc
e#((*******r+   c                 l   t          dddt          d                    }t          dddt          d                    }t          ||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   rG   rx   r   r   r   TrX   r.   rM   )r   r   r   r   shares_memory_values)rD   using_infer_stringrS   rp   r   s        r)   test_merge_nocopyzTestMerge.test_merge_nocopy  s    qq))r;;;E22%))DDDtUtFFF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   r3   r5   rQ   rH   rH   rQ   r~   r-   r-   r   r3   r4   r5   r   )rQ   rvaluer   rf   rz   	r-   r-   r-   r-   r   r   r3   r4   r5   r   r-   r   r3   r4   )	r   r-   r   r-   r   r   r3   r4   r5   )rQ   rH   r   )rH   rQ   r   )	r   r   r   r   r   arrayr   r]   r^   )rD   rS   rp   rh   rb   s        r)   "test_intelligently_handle_join_keyz,TestMerge.test_intelligently_handle_join_key  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-   rG   rP   r      r   rz   rQ   rU   TFr   boolvalry   r|   rz   key_0)r   r   rW   r   r   int)rD   r8   r9   rE   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   r5   r   rH   rQ   rU   r~   rW   r   r   r[   r   r   r   r   r   r   rW   r   r3   )r   r-   r-   r   r   r3   T)rY   r|   rz   r   )r   r   aranger   r   r]   r   notnar   r   r   rU   )	rD   rS   rp   rQ   r   r   r   r   rb   s	            r)   test_handle_join_key_pass_arrayz)TestMerge.test_handle_join_key_pass_arrayE  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 )Nxr.   rx   yr/   rL   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   )rD   dtr8   r9   r   s        r)   &test_no_overlap_more_informative_errorz0TestMerge.test_no_overlap_more_informative_errore  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  r5   r-   r   r3   r4   r   r.   rx   r   r/   rL   )r.   r/   q)rL   rM   rN   fghrM   r   r   _check_merge)rD   r   dt2dt3dt4r8   r9   s          r)   test_merge_non_unique_indexesz'TestMerge.test_merge_non_unique_indexest  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   r5   r-   r   r3   r   r.   r/   rL   rM   rx   r   )rN   r   r   z hir   )rD   r   r   r   r8   r9   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   rQ   rS   r   rp   r\   )rD   rS   rp   ra   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+   c                     t          g |d d                   }|                                }|                    ||          }t          j        ||           d S )Nr   rx   r   )r   copyr   r]   r^   )rD   rV   	join_typerS   rp   ra   s         r)   test_merge_empty_dataframez$TestMerge.test_merge_empty_dataframe  sW    5!9---		5i00
fd+++++r+   kwargTrX   r   rY   r|   r.   ry   rZ   r   c                     t          g d          }t          g d          }t          g dt                    }t          ||fd|i|}t          j        ||           d S )Nr.   r/   rL   r   r   r   zr.   r/   rL   r   r   r   r   rz   )r   objectr   r]   r^   )rD   r   r   rS   rp   exp_inra   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   r3   r4   r5   r   rO   r   	   r   r3   r[   r-   r4   rO   r   r5   r   r3   r   r   r   r   c                     t          fddi|}t          j        ||            t          fddi|}t          j        ||            d S )Nrz   r   rS   rg   ri   r   ra   rS   rp   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 )Nrz   rp   r   rg   r  s      r)   check2z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2  g    4==G=u==F!&#...4==G=u==F!&#.....r+   TrX   r   r   r.   r   r   r-   r   r   )r   r   r   r   r   )rD   exp_outr   r  r  r   rS   rp   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  r3   r[   r   r   c                     t          fddi|}t          j        ||            t          fddi|}t          j        ||            d S )Nrz   r   rp   rg   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 )Nrz   rS   r   TrX   r   r   r.   r   r   rg   )	ri   r   ra   r  r  r   r
  rS   rp   s	      r)   r  z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check2  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   rV   rm   )rD   r  r  r   r
  rS   rp   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+   series_of_dtyper-   rU   r[   Int64gGz?r   
2018-01-01
US/Easterntzseries_of_dtype2c                 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   rQ   rH   r   r   r[   rQ   r   r   re   )r   r   dtypesr   r]   r^   )rD   r  r  rE   r_   rb   actuals          r)   test_merge_empty_framez TestMerge.test_merge_empty_frame  s    4 #.>??G$
 
 
 bqb6BIe$4555!	'(:;;;!	'(:;;; 
 211
 
 
 u--
fh/////r+   series_of_dtype_all_narn   r   c                     t          ||dddg          }t          ||dddg          }t          |||dg d          }|                    |d          }t          j        ||           d S )Nr   rQ   rH   r   r  re   r\   )rD   r  r  df_leftdf_rightrb   r  s          r)   test_merge_all_na_columnz"TestMerge.test_merge_all_na_column;  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   rG   sizer   r-      i  r4   i  r3   i  r5   )var1var2var3rO   )r'  var8r'  Frf   r{   )r   r"   r#   integersr   r   	from_dictr'  uniquer{   r   r]   r^   r   )rD   rM   rE   r'  newra   ri   s          r)   test_merge_nosortzTestMerge.test_merge_nosorte  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-   rz   rS   rp   c                     t          dg di          }|                    |d||          }t          |dg          }t          j        ||           d S )Nr.   )r-   r   r-   )rf   rz   r{   r   r\   )rD   r{   r/  rz   rE   ra   rb   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r4  i3r4  _)rf   rsuffix        r   r-   )r4  r5  i1_r7  Nr[   r   r4  r5  r<  r7  r   Fcheck_dtype)r   r   r   r   r   r   rs   reset_indexr~   rm   r]   r^   rD   r8   r9   ra   rb   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      ?      ?r3  gffffff?r6  r8  r4  )r9  rf   r;  r:  )r4  r<  r5  r7  r=  )r   r   r   r   r]   r^   rA  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 N )rD   NotADataFrames    r)   _constructorz=TestMerge.test_merge_type.<locals>.NotADataFrame._constructor  s	    $$r+   N)__name__
__module____qualname__propertyrM  )rL  s   r)   rL  rH    s8        % % % % X% % %r+   rL  r>   re   )r   r   
isinstance)rD   rE   r9   nadra   rL  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          	          }t          ||gd
          }t          ||gd
          }t          t          ddddd          t          ddddd          gt          dd          t          dd          gdt                    }t          j        ||           d S )Ni     r5   8   r   iW  )rM   tr   r   Tignore_indexr[   )	r   r+  r   r   r   r   r   r]   r^   )rD   rM   rE   ra   rb   s        r)   test_join_append_timedeltasz%TestMerge.test_join_append_timedeltas  s    D"aB//0	!U8K8K7LMM
 
 tDzz***RG$///Qd333tRAr22HT2q!R4P4PQ5))9Q+>+>?  
 
 
 	fh/////r+   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Brx   rrS   )r9  rz   AB)00r)
r   timedelta64r   r   r   r   r   NaTr]   r^   )rD   tdlhsrhsra   rb   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rV   r   zdatetime64[]rj  r   rk  zdatetime64[s]Tr   natr[   rq  rt  r   )r   r   rm   to_framerW   r   r   r   r   corearraysDatetimeArray_simple_newr]   r^   )
rD   ri  r8   serrW   	exp_dtyper9   ra   rt  ri   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 )Nrq  rr  rs  rt  ru  zm8[rv  rw  z/Supported resolutions are 's', 'ms', 'us', 'ns'r   zm8[s]Tr   rx  r[   ry  r   )r   r   r   r   r   rm   rz  rW   r   r   r   r]   r^   )	rD   ri  r8   r  rW   r   r9   ra   ri   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   rQ   rR   rv   )rQ   r   r   )rQ   r   r   )rQ   rR   rv   v3v4)rQ   r   r   r   r   )r>   r   r   z?Data columns not unique: Index\(\['foo'\], dtype='object|str'\)r   )r   r~   r]   r^   r   r   r   r   )rD   rE   r9   rb   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   r  periodsr  r-   r   20151011r3   r   r4   r  rQ   r   r   )r   r   
date_ranger   r   r   r]   r^   ro   s        r)   test_merge_on_datetime64tzz$TestMerge.test_merge_on_datetime64tz5  s    }Z|LLLQ 
 
 }Z|LLL" 
 
 }Z|LLLq"&"&1FAq!, 
 
 tUu':::
fh/////r+   c                 6   t          ddgt          j        dddd          d          }t          ddgt          j        d	ddd          d          }t          g d
g t          t          j        dddd                    t          j        t          j        gt          t          j        d	ddd                    d          }t          ||dd          }t          j        ||           |d         j        dk    sJ |d         j        dk    sJ d S )Nr-   r   r  r  ro  )r  r  ri  r   r3   r  r   r  rQ   r   r   r   zdatetime64[ns, US/Eastern]r   )	r   r   r  r   rd  r   r]   r^   rW   ro   s        r)   test_merge_datetime64tz_valuesz(TestMerge.test_merge_datetime64tz_valuesN  st   1vl   
 
 1vl   
 
  yyj!SWXXX  F	 Fj!SWXXX  
 
" 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UTCr  2018r[   g      @2019)r   rH   date2r   r   r   re   )r   r   date2_xr   date2_y)	r   DatetimeTZDtyper   r   r   r   rn   r]   r^   )rD   dtzrp   rS   ra   rb   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:00r4   r   zEurope/Madrid)r  freqr  r   r   r-   rH   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00r   )r   rH   r  r   rz   rf   rO   r3   )r   r   r   )r   r   r  to_datetimer   tz_localize
tz_convertr   r   r   r]   r^   rA  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rV   r~   Tr   rY   rZ   rz   r[   r   r-   pnum_xpnum_yr~   rV   )r   period_ranger   r   r   r!   r   r   r   r    r   rU   repeatreshape
sort_indexrV   r]   r^   )rD   rV   rE   r9   ra   rb   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   rj  r  r-   r   r  r3   r   r4   r  rQ   r   r   )r   r   r  r   r   r   r]   r^   ro   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                 6   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	g t          |          t          j        t          j        gt          |          d
          }t          ||dd          }t          j        ||           |d         j        dk    sJ |d         j        dk    sJ d S )Nr-   r   r  rj  r  r   r3   r  r   r  rQ   r   r   r   z	Period[D]r   )	r   r   r  r   rd  r   r]   r^   rW   )rD   rS   rp   exp_xexp_yrb   ra   s          r)   test_merge_period_valuesz"TestMerge.test_merge_period_values  s=   FR_ZQT%U%U%UVV
 
 FR_ZQT%U%U%UVV
 
 
AC@@@
AC@@@ yy1T%[[1"&1F1T%[[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   r3   r4   r5   r-   r   r.   r/   r3   r4   r5   )r0   col_conflict_xr2   col_conflict_yr6   )	left_onlyboth
right_onlyr  r  r  r  r  r  
categories_merge)r0   r  r2   r  r6   r  r0   r   Trf   rz   	indicatorcustom_namer   )	r   r   r   r   r
   r   r]   r^   rename)
rD   r:   r8   r9   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   r0   r   r5   r  r   )rD   r:   r8   r9   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 )
Nr0   rS   Tr  r  rp   r  r   r  )r   r  r   )rD   r:   r8   r9   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  r0   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  )r0   custom_column_namez:Cannot use name of an existing column for indicator columnr  r   r   r   r   r   )rD   r:   r8   r8  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-   r.   r/   r0   col2)r-   r-   r3   )r/   r   r   )r   r-   r-   r3   r.   r/   r   r   )r  r  r  r  r  r  r  r0   r  r   Tr  r   r
   r   r]   r^   )rD   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   r4   rx   r.   r/   rL   rM   rN   )meowbarkum... weasel noise?naychirpr.   rL   r5   T1:1)rY   rZ   validate)r  r  r  r  )a_xr/   a_yrL   r  
one_to_oner   r.   )rf   r  r/   r.   rL   r  )rY   r|   r  rN   mooone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger   cowr3   )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)r.   r.   r/   r/   )r   r-   r   r-   r.   r.   r/   )r   r-   r   )r  r  r  )r.   r/   rM   )r  r  r  zQMerge keys are not unique in either left or right dataset; not a one-to-one merger/   )r   r   r   r   r]   r^   rs   r   r   r   r   r   )rD   rS   rp   	left_copy
right_copyra   rb   
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          dg di          }t          dg di          }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            n# 1 swxY w Y   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            n# 1 swxY w Y   t          dg di          }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 S # 1 swxY w Y   d S )NrQ   )r-   r-   r   )r-   r   r   z#Duplicates in left:
  key
   1 ...
r   r  )r  z"Duplicates in left:
  key
   1 ...z1:mz#Duplicates in right:
  key
   2 ...zm:1r   z#Duplicates in right:
  key
   1 ...r   r   r   r   r   )rD   rS   rp   s      r)   !test_merge_validate_error_messagez+TestMerge.test_merge_validate_error_message<  sU   %+,,5))),--]:-UVVV 	/ 	/$....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]:-STTT 	/ 	/$....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]:-TUUU 	/ 	/$....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]:-TUUU 	/ 	/$....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 5))),--]:-STTT 	/ 	/$....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]:-TUUU 	/ 	/%....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sl   A!!A%(A%B&&B*-B*C++C/2C/D00D47D4)FFF.GGG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   re   )r   r   errstater   )rD   r.   s     r)   )test_merge_two_empty_df_no_division_errorz3TestMerge.test_merge_two_empty_df_no_division_errorP  s    BRb1122[((( 	' 	'!Q:&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A		AAr   zindex,expected_indexr-   r   r4   )r-   r   r4   NNN)
2001-01-01
2002-02-02
2003-03-03zM8[ns]r  r  r  c                 n    g | ]2}t          g d |          t          g dt          j                  f3S )r   r[   )r-   r   r3   NNN)r   r   float64.0dtyps     r)   
<listcomp>zTestMerge.<listcomp>g  sY       
  )))4000555RZHHH  r+   )r-   r   r   r3   r3   r4   r  r  r  )r  
2001-01-02
2001-01-03rj  )r  r  r  )1D2D3Dr   r!  r"  c           
         |j         dk    r |j         dk    r|                    d          }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 )Nfloat32r  r	  r.   rQ   rx   r/   r  rQ   Tr   )r   r   r   r-   r-   r-   r   r   r   r3   r4   r5   r.   rQ   r/   r   )inplace)	rW   rm   r   r   r   r   rs   r]   r^   )rD   rz   rV   expected_indexr8   r9   ra   rb   s           r)   $test_merge_on_index_with_more_valuesz.TestMerge.test_merge_on_index_with_more_valuesV  s   ^ ;)##(<	(I(I+229==N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-   r%  r/   r-   r   r3   N)r   r-   r-   r   )r-   r   r   r3   r(  r   r-   r   r  rQ   Trp   r   r   r   r   r   r]   r^   ro   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(   rV  )animal	max_speedquetzalP   r3  r4  r   rp   r\   )rD   rz   left_dfright_dfra   rb   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  r%  r/   r   rx   rQ   Trp   r   r-  )r.   r.   r/   rL   )r-   r-   r   r3   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                 \   t          t          j        d                              d          dz   g d          }t          t          j        d                              d          dz   g d          }|j        j        D ]}d|j        j        _        |	                    |           d S )	Nr   r4   r5   r-   r  r   r5   r4   r  F)
r   r   r   r  _mgrblocksr/  flags	writeabler   )rD   r@   rA   blocks       r)   test_merge_readonlyzTestMerge.test_merge_readonly  s    IbMM!!&))A-7P7P7P
 
 
 IbMM!!&))A-7K7K7K
 
 

 Z& 	1 	1E+0EL((Er+   c                    t          t          j        d                              d          dz   g d          }t          t          j        d                              d          dz   g d          }d}t	          j        t          t          j        |          	          5  |	                    |d
           d d d            d S # 1 swxY w Y   d S )Nr   r?  r-   r  r   r@  r  z_'full' is not a valid Merge type: left, right, inner, outer, left_anti, right_anti, cross, asofr   fullr   )
r   r   r   r  r   r   r   reescaper   )rD   r@   rA   r   s       r)   test_merge_how_validationz#TestMerge.test_merge_how_validation  s   IbMM!!&))A-7P7P7P
 
 
 IbMM!!&))A-7K7K7K
 
 
1 	 ]:RYs^^<<< 	+ 	+KK6K***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   &CCCN)RrN  rO  rP  r   fixturerE   r9   rS   rc   rj   rq   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r  r  r   r   	Timestampr  NAr   r   rd  r   r.  r1  rB  rE  filterwarningsrT  r[  rh  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r]   ALL_REAL_NUMPY_DTYPESr   from_tuplesr   r   r+  r/  r9  r=  rF  rK  rK  r+   r)   r<   r<   A   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@    *  , , ,, , , [55S11D11--		
 . . .- - -^(' (' ('T [FA3g&&&FA3g&&&FD6NNFE7OOFD6NNFLBL../00FLBL,???@AA	
  [FA3g&&&FA3g&&&FD6NNFE7OOFD6NNFLBL../00FLBL,???@AA	
 0 0  00$ [FA3g&&&FA3g&&&FD6NNFE7OOFD6NNFLBL../00FLBL,???@AA	
  [ FBE7'***FBF87+++FBF88,,,FBF8		
 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 0&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N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000 0 0 [UVW$566	0 	0 76	00 0 0*  + + + + +r+   r<   c                    dD ]}dD ]}}|                      |||          }t          |                                 |                                ||          }|                    d          }t	          j        ||d           ~d S )N)r   rS   r   )TFrz   r{   rV   F)check_names)r   r   r@  rs   r]   r^   )r   r   rz   r{   ra   rb   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edg          d             Z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 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                            d-ddgd.fg d/fdgd0fdgd1fg          d2             Zej                            d-d3d4gd.fg d/fd4gd0fd3gd1fg          d5             Zej                            d6d/g d7g d8gfd.g d8g d7gfd1g d7g d8gfd0g d8g d7gfg          d9             Zd: Zej                            d;g d<          d=             Zd> Zd? Z d@ Z!dAS )BTestMergeDtypesrW   categoryc                    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dg|	          }t          d|i          }t          ||d          }t	          |j        j                  st          |j        j                  sJ d S d S )Nr   r   rY  r-   r         ?       @uint64r[   int32)r]  r^  Crj  EFr]  re   )r   r   rm   r   r   r]  rW   r   )rD   rW   rS   
right_valsrp   ra   s         r)   test_differentzTestMergeDtypes.test_different  s    U^UEN++22:>>V3ZQF(333QF'222 	
 	
 UEN%888
3
+,,
 tUs+++vx~..Q/&(.2Q2QQQQQQQQr+   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[   r   r   r$     )k1k2v)r   r   )r-   r   rv   r5   rO   rx   rg  rh  re   r   r  r   r-   Tr)  	mergesort)kindr)  )r   rW   r   r   r   rU   r   rS  r   r   rk  r   r}   rg  rh  r]   r^   sort_values)
rD   any_int_numpy_dtyperd  dtype1dtype2rS   rV   rp   ra   rb   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   r[  r\        @XYr[  rr  r-   r3   r   r\  c                 ,   t          d|i          }t          d|i          }t          |          }|                    |dd          }t          j        ||           |                    |dd          }t          j        ||ddg                    d S )Nrt  ru  r   r\   )rD   int_vals
float_valsexp_valsr]  r^  rb   ra   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 )Nr[  r\  rG   r   rP   rQ   rR   r   r      )rQ   rv   rv   rS   r   g      i@r  )r   r   r   r   r]   r^   rA  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          }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 )Nrt  r   ru  )皙?g      @rr  r3   rr  rs  z:the float values are not equal to their int representationr   r   )r   r]   assert_produces_warningUserWarningr   r^   r   r   )rD   r]  r^  rb   r   ra   s         r)   !test_merge_on_ints_floats_warningz1TestMergeDtypes.test_merge_on_ints_floats_warningK  so   
 sIII&''sOOO,--A3cU3344J'3??? 	4 	4WWQcW::F!&(333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 '3??? 	@ 	@WWQcW::F!&(C:*>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@
 sRVRVS1233'-- 	@ 	@WWQcW::F!&(C:*>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s6   .BBB86C::C>C>6F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 NrQ   TFr[   re   )r   r   r   r   r]   r^   rD   r8   r9   rb   ra   s        r)   (test_merge_incompat_infer_boolean_objectz8TestMergeDtypes.test_merge_incompat_infer_boolean_objectd  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_missingo  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	  )r.   r/   r.   )r:  r[  r\  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 )Nr]  re   )r   r   r   r]  rW   r   )rD   df1_valsdf2_valsr8   r9   ra   s         r)   !test_merge_incompat_dtypes_are_okz1TestMergeDtypes.test_merge_incompat_dtypes_are_ok{  s      h((h((sCSE***vx~.....sCSE***vx~..Q/&(.2Q2QQQQQQQQr+   r]  r   r^  )ra  12z1/1/2011rj  r  z
2011-01-01z
2011-01-02r:  20130101)r  r  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 )Nr]  You are trying to merge on  and zE columns for key 'A'. If you wish to proceed you should use pd.concatr   re   r]  r^  r_  r^  zE columns for key 'B'. If you wish to proceed you should use pd.concatr_  zE columns for key 'C'. If you wish to proceed you should use pd.concat)	r   rW   rI  rJ  r   r   r   r   r!   )rD   r  r  r8   r9   r   r  r  s           r)    test_merge_incompat_dtypes_errorz0TestMergeDtypes.test_merge_incompat_dtypes_error  s   2 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   rp   rS   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   rV   r~   rW   r   r   r   r!   r]   r^   )	rD   any_numeric_ea_dtyperz   expected_datad1rd  ra   	exp_indexrb   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+   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.   r  r   )r/   r   r  r  )	rD   rz   r  any_string_dtyper  rd  ra   exp_idxrb   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-   r4   )Fr5   r3   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-   r5   r]  r^  r3   r4   r]  r_  r   r  r   r\   )rD   rz   r  r8   r9   ra   rb   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)datarW   r  r  r  r  r  r  911)r  r  zlvl1-cr  )rS   rp   rf   rz   O)r  r  r  rx   )r   r   StringDtyper   rP  r   r]   r^   r   r   rW   r   rS  r   r  )	rD   r   string_dtyper8   r  r9   r  r   rb   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)
)FrS   rS   )Frp   empty)Fr   r  )Fr   rS   )Fcrossempty_cross)TrS   r  )Trp   rp   )Tr   r  )Tr   rp   )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-   r3   r4   r  r5   r  rU   r[   r   r   rS   r  rp   r  r   r  )A_xr^  A_yr_  r   r]  TrY  )r   headr   r   r   rl  r]   r^   )rD   
left_emptyrz   ri   rS   rp   ra   rb   s           r)   test_merge_emptyz TestMergeDtypes.test_merge_empty6  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+   c                    t          ddgt          j        ddgt          j                  d          }t          ddgt          j        dd	gt          j                  d          }|                    |d
          }t          g dt          j        g dt          j                  d          }t          j        |                    d          |           d S Nr   r   r-   r   r[   r   r   r3   r4   r   r   )r   r   r   r   )r   r4   r-   r3   Tdrop)r   r   r   uintcr   r]   r^   r@  rA  s        r)   test_merge_with_uintc_columnsz-TestMergeDtypes.test_merge_with_uintc_columns^  s    uen28QF"(3S3S3STTUUuen28QF"(3S3S3STTUU3G,,111Xlll"(;;; 
 
 	f00d0;;XFFFFFr+   c                    t          ddgt          j        ddgt          j                  d          }t          ddgt          j        dd	gt          j                  d          }|                    |d
          }t          g dt          j        g dt          j                  d          }t          j        |                    d          |           d S r  )r   r   r   intcr   r]   r^   r@  rA  s        r)   test_merge_with_intc_columnsz,TestMergeDtypes.test_merge_with_intc_columnsj  s    uen28QF"'3R3R3RSSTTuen28QF"'3R3R3RSSTT3G,,111Xlll"'::: 
 
 	f00d0;;XFFFFFr+   c                    t          dt          g dt          j                  i          }t          t          g dt          j                  g dd          }|                    |dd          }t          t          j        g dt          j                  g d	d          }t          j        |                    d
          |           d S )Njoin_key)r   r   r-   r[   r	  r   )r  rH   rS   r   )r.   rL   r/   Tr  )	r   r   r   r  r   r   r]   r^   r@  )rD   rE   
df_detailsr   rb   s        r)   test_merge_intc_non_monotonicz-TestMergeDtypes.test_merge_intc_non_monotonicv  s    
F999BG$D$D$DEFF			999OOOTT
 

 *@@)))27;;;oooVV
 
 	f00d0;;XFFFFFr+   N)"rN  rO  rP  r   rM  rN  r   rc  r   rU   r  r$  float16rp  rz  r}  r  r  r  r   rm   r   r  r   r  r  r  r  r  r  r  r  r  r  rK  r+   r)   rX  rX    s,       [Wvz&:;;R R <;R( [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@ @ @2	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.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 02
G 
G 
G
G 
G 
G	G 	G 	G 	G 	Gr+   rX  c                  T   t          t          t          j                            d                              ddgd                                        t          ddg                    t          j                            d                              g dd          d          S )Nr   r   r   )rG   r"  )onetwothreers  )r   r   r   r"   r#   choicerm   r	   rK  r+   r)   rS   rS     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 )Nr   r   r-   r   )rt  Z)r   r   rm   r	   rK  r+   r)   rp   rp     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 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 )
Nrt  re   r  strr   r   r  )rt  Y_xY_yrx   	r   r  r  r   rW   r   r	   r]   r   )rD   rS   r   r   ra   rW   rb   s          r)   test_identicalz#TestMergeCategorical.test_identical  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 )Nrt  re   r  r  r   r   r  rU   rt  ru  r  rx   r  rD   rS   rp   r   r   ra   rW   rb   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 )Nr.   r/   rL   rM   rN   )r   r-   r   r3   r4   nullr   r   r   r   rS   )rz   ry   r|   rY  )r   r   r   rm   r	   r]   r^   )rD   rp   rS   rE   rb   crightra   clefts           r)   test_merge_categoricalz+TestMergeCategorical.test_merge_categorical  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)r_  r^  r]  )C1B1A1)r  Rightr  re   )r  r  r  )r  r  r  r  rA  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  )r_  r_  rj  )r  r  r  r[   r	  )r  pr.   r  r  )r]  r_  r_  )r  r  r  )rG   rV  r$  )r  r  r  rS   Tr   g      &@g      (@)r  r  r.   r  )	r	   r   r
   rs   r   r   r   r]   r^   )rD   r  pcatr8   r9   ra   rb   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 )NrY  )r  rt  re   r  r  r   r   r  r-   r   r  rx   )assignr  rm   r   r  r  r   rW   r   r	   r]   r   rt  r/  #_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 rJ  rK  r   s    r)   <lambda>zTestMergeCategorical.<lambda>-  s    a r+   c                 J    |                      t          g d                    S )N)r   r   bahrm   r	   r  s    r)   r  zTestMergeCategorical.<lambda>.  s"    ahh/0E0E0EFFGG r+   c                 H    |                      t          d                    S )NTr  r  r  s    r)   r  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   )rt  rt  r   r  r  rU   r  rx   )rt  rm   r  rR  r/  rW   r	   r   r  r  r   r   r]   r   )rD   r  r   rS   rp   r   rt  r   ra   rW   rb   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 )Nr5   )
r.   r/   rL   rM   rN   r   r   r   r   j)rX  wr   r   r   r   c                 ,    g | ]}|gd z  z  D ]}|S r  rK  r  eachletterrk  s      r)   r  zKTestMergeCategorical.test_self_join_multiple_categories.<locals>.<listcomp>L  sJ       #'&1*q.      r+   )rk  r&   ur  oc                 &    g | ]}|gz  D ]}|S rK  rK  r  s      r)   r  zKTestMergeCategorical.test_self_join_multiple_categories.<locals>.<listcomp>Q  sH        $(&1*      r+   )
aabbccddeeffgghhiijjr   c                 ,    |                      d          S )NrY  )rm   r  s    r)   r  zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>e  s     4 4 r+   re   )r   applyr   r   r~   r]   r^   )rD   rE   ra   rk  s      @r)   "test_self_join_multiple_categoriesz7TestMergeCategorical.test_self_join_multiple_categoriesD  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   rY  r3   ffffff?num4r  r  r  )r   r#  r%  r   r  r   )
r   r   rm   r   rO  r   r   r   r]   r^   )rD   rE   r9   expected_outerresult_outerexpected_innerresult_inners          r)   test_dtype_on_categorical_datesz4TestMergeCategorical.test_dtype_on_categorical_datesl  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   r4   r-   r   )r  num)r  r  r.  )r   rm   r	   r   r]   r^   )	rD   category_columnr  expected_categoriesr  r8   r9   ra   rb   s	            r)   /test_merging_with_bool_or_int_cateorical_columnzDTestMergeCategorical.test_merging_with_bool_or_int_cateorical_column  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   r  r[   r  r]  re   )r]  B_xB_y)r   r   r   rP  r   r]   r^   )rD   rE   ra   rb   s       r)   test_merge_on_int_arrayz,TestMergeCategorical.test_merge_on_int_array  s    VQ25MAAAJJKKr2#&&&!Qg666qKK
 
 	fh/////r+   c                    t          t          t          dd                    t          t          dd                    t          t          dd                    t          t          dd                    d          }|                    dddd          }|j        d dd d f                             ddgd	
                              ddi          }|j        dd d d f                             g dd	
                              ddi          }t          ||d	d	d          }t          t          dd                    }t          t          t          dd                    t          t          dd                    z   |          }t          t          t          dd                    t          t          dd                    z   |          }t          t          j
        gdz  t          t          dd                    z   |          }	t          j        |||	gg d          }
t          t          t          t          t          dd                              t          j
        gdz  z   t          j
        gdz  t          t          t          t          dd                              z   d|
          }t          j        ||           d S )Nr-   rG   )r   r   r   rM   rY  r   r4   r   r   T)observedrM   r   rO   )r   r   r   r   r  r5   r   r  namesr   )d_xd_yrx   )r   r   r   rm   ilocgroupbyaggr   r
   r   r   r   from_arraysmaprn   r]   r^   )rD   r8   r9   r  r  ra   catsr   r   r   idxrb   s               r)   .test_merge_category_index_levels_stay_categoryzCTestMergeCategorical.test_merge_category_index_levels_stay_category  s   %2,,''%2,,''%2,,''%2,,''	 
 
 jjz
LLMMhrr111uo%%sCj4%@@DDc5\RRhqrr111uo%%ooo%EEII3PU,WWsCDdPPPE!RLL!!U1a[[))Dq",>,>>4PPPU1a[[))Dq",>,>>4PPP1tE!RLL'9'99dKKK$aAYoooFFFCuQ{{3344x!|Cx!|d3ueArll+C+C&D&DD  
 
 
 	fh/////r+   N)rN  rO  rP  r  r  r  r  r   rM  rN  r  r  r	  r   r*  r1  r5  rC  rK  r+   r)   r  r    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 0 0 0 0r+   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   rG   r|  d   r   r   r-   rx   TrS   r   rG   r   r   r-   r   )r   rG   r   r	  rp   ,  rF  r|  r3   r-   r   rF  r|  rJ  r   r   r   rJ  rl   c                     t          dg dig d          }t          dg dig d          }t          ||dd||	          }t          j        ||           d S )
Nr.   rG  rH  rx   r/   rI  rK  T)rY   rZ   rz   r{   r\   )rD   rz   r{   rb   r7  r8  ra   s          r)   test_merge_on_indexesz(TestMergeOnIndexes.test_merge_on_indexes  s    ` S+++.iii@@@c???3999EEEX$DcPT
 
 
 	fh/////r+   N)
rN  rO  rP  r   rM  rN  r   r   r   rN  rK  r+   r)   rE  rE    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+   rE  rV   c                 6    g | ]}t          g d |d          S )r  	index_colr   )r   r  s     r)   r  r  	  s;        	iiit+666  r+   r  rP  )r  r   r3   )startstopr   )r  z
2018-01-02z
2018-01-03r   c                 @    t          |           j         d| j         dS )N[rv  )typerN  rW   r  s    r)   r  r  	  s"    T!WW%22222 r+   )idsc                     t          dg di|           }t          dg di|           }|                    |dg          }t          g dg dd|           }t          j        ||           d S )	N	left_datar   rx   
right_datarq  rP  re   )rX  rY  r\   )rV   rS   rp   ra   rb   s        r)   test_merge_index_typesrZ  	  s      k999-U;;;D|___5UCCCEZZ;-Z00Fii??u  H &(+++++r+   z-on,left_on,right_on,left_index,right_index,nmr   r   Fr^  )NNNTTr^  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 )Nr]  r   r.   r/   r   r-   r   r   r8  rx   r   ru  r4   r3   r  )rf   ry   r|   rY   rZ   z$Cannot merge a Series without a namer   )
r   r   from_productr   r   r]   r^   r   r   r   )rf   ry   r|   rY   rZ   nmr.   r/   rb   ra   r   s              r)   test_merge_seriesr^  !	  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 )Nr]  r   r.   r/   r   r-   r   r   r8  rx   r   )r^  r_  ru  z-Not allowed to merge between different levelsr   re   )r   r   r\  r   r   r   r   r   r   s     r)   test_merge_series_multilevelr`  V	  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) _dupra  0_dup)Nrc  )_x_y0_x0_yre  rf  r.   )Nrf  r:  )re  Nz0.0_xr/   b_yr  )Nre  )_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-   r4   r   r5   r3   r   r   TrX   r\   )r0   r  kwargsexpected_colsr.   r/   rb   ra   s           r)   test_merge_suffixro  h	  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,expectedrp   rL  <   F   X       )r]  r  B2)r-   rF  r|  rJ  r6  rs  rt  ru  c                     t          g dg dd          }t          g dg dd          }t          ||d| d          }t          |          }g d	|_        t          j        ||           d S )
N)rF  r|  r-   )rp  rq  r6  r  rL  rr  r]  )re  re  )rf   rz   ra  )r]  r3  r3  )r   r   r~   r]   r^   )rz   rb   r7  r8  ra   s        r)   test_merge_duplicate_suffixrx  	  s    $ mmm,,,??@@G___EEFFH7H#MMMF""H***H&(+++++r+   zcol1, col2, suffixes))r.   r.   )NN)r.   r.   )rb  N)r   r   )Nrb  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   r3   r4   r5   z'columns overlap but no suffix specifiedr   TrY   rZ   ra  r  )r0   r  ra  r.   r/   r   s         r)   test_merge_suffix_errorr|  	  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*rS   rS   rp   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 )	Nr.   r   r/   rz  zPassing 'suffixes' as ar   Tr{  )r   r   r   	TypeErrorr   )ra  r.   r/   s      r)   test_merge_suffix_raisesr  	  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2, got 3r  zcol1, col2, suffixes, msgr   z%too many values to unpack \(expected z\)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   rz  r   Tr{  r  )r0   r  ra  r   r.   r/   s         r)   test_merge_suffix_length_errorr  	  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r  	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   r   rS   r   r   rp   TrX   rS   rp   r   )	r	   r   r   rm   rs   r  r   r]   r^   )	r  r  
cat_dtypesr8   data_foo
data_rightr9   ra   rb   s	            r)   test_merge_equal_cat_dtypesr  	  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  r.   r/   r-   r   r  r   )r3   r   r-   r  TrX   r3   r  )r	   r   r   rm   rs   r   r]   r^   )r  r8   r9   ra   rb   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 )
Nr.   r   r-   r   intervalr[   rY  r   r  )	r   r   r   Intervalr   rm   r   r]   r^   )rp   rS   ra   rb   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   r8  r   rb  r  re  rf  rf   ra  c                 (    g | ]}D ]	}|z   |f
S rK  rK  )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  rb  c                 (    g | ]}D ]	}|z   |f
S rK  rK  )r  r  r.  r  r_sufs      r)   r  z1test_merge_multiindex_columns.<locals>.<listcomp>1
  s/    NNNgNNs$NNNNr+   Fr>  )r   r\  r   r   rS  r]   r^   )lettersrV   frame_xframe_yra   tuplesr*  rb   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  )r   r   r  )200020012002)r   r   rS   r   r  )r  r  rd  r   )r   r   r  r   r]   r^   r8   r9   ra   rb   s       r)    test_merge_datetime_upcast_dtyper  9
  s    
///@@
A
AC
ooBN3K3K3K$L$LMM C 3C000F   7 7 788	
 	
 H &(+++++r+   n_categoriesr5      c                    t          dgt          t          |                               }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-   rH   r  r   r  rS   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>Y
  s.    MMMQUU!SBFMMMr+   r   r   )r   r   r   r   r   r]   r^   )r  rY   r8   r9   ra   rb   s         r)   %test_categorical_non_unique_monotonicr  J
  s    
 "1"AtE,,?,?'@'@"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)r.   r/   r.   rL   r.   r/   r   )r   r-   r   r-   r   r   )Cat1Int1)r.   r/   rL   r.   r/   rL   )r   r   r   r-   r-   r-   )r  g333333?r"  r$  rD  g?)CatIntFactorr  r  r  r  r  rS   r   r-   )axisre   r  Tr  )	r
   r   rs   r   r@  r  r   r]   r^   )r.   r/   rb   ra   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)rm  err_msg)ry   rY   ry   rY   )r|   rZ   r|   rZ   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   r3   r4   r   r5   r   r  zCan only pass argument "r   " OR "z" not both\.r   r   r   r   r   getattrr   r  rm  r  rS   rp   r   s         r)   /test_merge_join_cols_error_reporting_duplicatesr  
  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   r3   r4   r   r5   r   r  zMust pass "r   r  z"\.r   r  r  s         r)   ,test_merge_join_cols_error_reporting_missingr  
  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  rm  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   r3   r4   r   r5   r   r  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r   rf   r.   r  )r  rm  rS   rp   r   s        r)   1test_merge_join_cols_error_reporting_on_and_indexr  
  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-   r   )r   r   rp   Tr   )rz   rY   r|   )r   x_xz_xx_yz_yr\   rS   rp   ra   rb   s       r)   test_merge_right_left_indexr  
  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   r.   r/   r[   Tr   r   )r   rs   r   rU   r   r]   r^   r8   r9   rb   ra   s       r)   $test_merge_result_empty_index_and_onr  
  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   )r.   r/   b_xr   (Passing 'suffixes' which cause duplicater   r.   re   )rf  re  r  r
  r}  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 )Nr&  r'  )r.   r/   r/   r   r-   r3   r   r   r.   re   )r-   r-   r-   r   )r.   r  r  ri  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   )r.   r/   r/   r  r   r-   r3   r   r   r  r   r.   re   r
  r}  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   r3   r4   r.        \@r   r   rG   rV  r$  r   r   r   Tr   )r   rG   r-   r   )rV  r$  r3   r4   )r   r   r.   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 )
Nrt  r_     )r  r~   rV   i  zCan only pass argumentr   T)rf   rY   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 )Nr3   r  r_  r   r]  r   )r   r   r   r   _datar]   r^   )cirp   rS   resrb   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+   rW   r  c                    | t           j        nt          j        }t	          ddgddgd|           }t	          ||gddgd|           }t          ||dd	
          }t	          dd||gdd||g||ddgd|           }t          j        ||           t          ||dd	
          }t	          dd||g||ddgdd||gd|           }t          j        ||           d S )Nr-   r   )rQ   r0   r[   r3   r4   )rQ   r  rQ   r   r   )rQ   r0   r  )rQ   r  r0   )r   r   r   rP  r   r   r]   r^   )rW   itemrS   rp   ra   rb   s         r)   test_merge_outer_with_NaNr  )  sE    ]266DaVaV44EBBBDtTlQF;;5IIIE45g666Fq$%4&4A&	
 	

   H &(+++ 5$5g666Fq$%4A&4&	
 	

   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 )	Nr.   r-   rL   r   rx   rM   r   )r  r  r  r  s       r)    test_merge_different_index_namesr  G  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   rS   rp   ra   rb   s         r)   test_merge_ear  P  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   r&  r'  r   )r   lowerr   r   r]   r^   r  s         r)   test_merge_ea_and_non_ear  Y  s    9991--5IJJJDIIIA..6J6P6P6R6RSSSEZZ9Z--F			)=>>>			)=>>>			)=)C)C)E)EFFF	
 	
 H &(+++++r+   rU   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pyarrowr.   r-   r   r[   r  )r   importorskipr   r   r   r]   r^   )rW   rE   r9   ra   rb   s        r)   !test_merge_arrow_and_numpy_dtypesr  h  s     	"""	C!Q=	.	.	.B
S1a&M)9
:
:
:CXXc]]FwwyyH&(+++YYr]]FxxzzH&(+++++r+   r  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  r5   r$  r        r   r[  r\  )rX  r.   rX  ro  r-   )rX  r/   rl  )rX  r.   r/   r   Tr  rS   r   rp   r   )r   rO  r   r   as_unitr   r   r<  r@  r   r]   r^   )r  r   valsr8   r9   rb   ra   s          r)   (test_merge_datetime_different_resolutionr  w  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<<	f		=!Q(	g		=!Q(44$4??YYss	Y22F&(+++++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colr]  r^  r/   rF  )r]  )r_  r8  )r  rV   )r  r/   TrS   r   )r   r   rS  r   r   r   r]   r^   )rE   r9   rb   ra   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+   c                     t          ddgddgdt          j        ddgddggddg          	          } t          ddgt          ddgd
          t          j        dgdgg                    }t          j        t          j        j	                  5  | 
                                                    |
                                d          }d d d            n# 1 swxY w Y   t          g dg dg dg dg dd          }t          j        |j                  |_        t          j        ||           | 
                                                    |
                                dg          }t          j        ||           d S )Nr-   r   )column_1rb  column_2rb  
metadata_1
metadata_2rV   metadatar8  rx   r   new_datarb  )r  rV   r~   re   r  )r  r  r  r  r  )rV   rb  )r  rb  r  r   )r  rb  r  )r   r   r?  r   r\  r]   r  r   r   PerformanceWarningr@  r   rS  r~   r^   )rE   r9   ra   rb   result2s        r)   'test_merge_multiindex_reset_index_mixedr	    s   	q6aV<<$VlL127J:O
 
 

 
 
B VQF)))'*t(<==  C 
	#BI$@	A	A G G!!''(9(9g'FFG G G G G G G G G G G G G G G '<<VVV*ll*ll*ll	
 	
 H "-h.>??H&(+++nn$$S__%6%6M?$KKG'8,,,,,s   <CC"Con_indexleft_uniqueleft_monotonicright_uniqueright_monotonicc                 N   | }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   r3   r4   r-   rQ   TrX   rf   rU  )rS   rp   r   )rS   r   r   )
fill_valuer   r  )appendr   rs   r   r@  setr/  intersectionisinrl  r   r<  rm   r   intpr  rz  mulrV   r]   r^   )r   r{   r
  r  r  r  r  rz   rS   rp   	on_kwargsra   rb   otherother_uniquekeep_values	keep_maskother_value_countsrepeatsleft_countsright_countsexpected_countss                         r)   test_merge_combinationsr!    sQ    C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 )Nr[  r[   rD  r   r  r   zYou are mergingr   r  r-   )
r   r   rP  
Int64Dtyper]   r  r  r   r^   rm   r  s       r)   !test_merge_ea_int_and_float_numpyr$    s   
S"%L
8
8
8C
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  r.   r/   r[   r-   rL   rx   TrS   r   r   )
r   r  r   r   r   r   r   r   r]   r^   )r  rS   rp   ra   rb   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t          d          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   r]  r^  r  )r]  r_  rj  r   r   )r]  r^  r_  rj  r_  rj  )r   r<  r   r   r   r   r]   r^   )r  r'  r8   r9   ra   rb   s         r)   $test_merge_empty_frames_column_orderr)  2  s    AaS3*
5
5
5C
AaS///
:
:
:C hrrl hrrl37333F%((4H4H4HIIIH &k &=!$	 &	 &!v#s&(+++++r+   rz   )rS   rp   r   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 )NrQ   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   rW   r   r   r   rI  rJ  r   )rz   rS   rp   r   s       r)   !test_merge_datetime_and_timedeltar+  I  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c                     t          g dt          j        t          j        t          j        gg dd          } t          g dt          j        t          j        t          j        gg dd          }|                     |ddgd          }t          g dt          j        t          j        t          j        gg dg dd	          }t	          j        ||           d S )
Nr   r   r   )r   r   zzr   r   r   r   )r   r   r   r-  r.  r  s       r)   test_merge_on_all_nan_columnr.  ]  s    999BFBFBF+C)))TTUUDIIIRVRVRV,DIIIVVWWEZZ3*'Z::Fiirvrvrv6YYYiiiXX H &(+++++r+   )rc  rb  c                     t          dgdgd          }t          dgdgdgd          }t          j        t          d          5  t	          ||d| 	           d d d            d S # 1 swxY w Y   d S )
Nr-   r   r  r3   )r0   r  col2_dupzduplicate columnsr   r0   r  r
  )ra  r8   r9   s      r)    test_merge_for_suffix_collisionsr1  i  s     aS1#..
/
/C
aS1#A3??
@
@C	z)<	=	=	= 6 6c36H55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   A''A+.A+c                     t          t          j        g dd                    } t          t          j        g dd                    }t          dt	          ddg|           i          }t          dt	          dd	g|          i          }|                    |dd
          }|                    d                              |                    d          dd
          }t          j        ||           d S )Nr   rU   r[   r  r  rQ   r-   r   r3   r   r   )	r	   r   r   r   r   r   rm   r]   r^   )ltrtrS   rp   ra   rb   s         r)   $test_merge_categorical_key_recursionr5  r  s    	RZ			%I%I%I	J	J	JB	RZ			%K%K%K	L	L	LBeVQF"555677DufaV2666788EZZ%WZ55F{{7##))YEw *  H &(+++++r+   c                     t          j        d           t          j        ddd          } t	          | g dd          }|                    d          }t	          |                     d	          g d
d          }|                    d          }t          ||dd          }t	          |                     d	          g dg d
d          }|                    d          }t          j	        ||           d S )Nr  z
2025-07-06r3   r   r  r   )timeval1)dtype_backendr   )rG   r      r2  r   rp  )r7  val2r7  rS   r   )r-   r-   r   r   r3   r3   )r7  r8  r;  )
r   r  r   r  r   convert_dtypesr  r   r]   r^   )rX  r8   r9   ra   rb   s        r)   &test_merge_pyarrow_datetime_duplicatesr=    s   
	"""
lAC888A
Q			22
3
3C


9

5
5C
QXXa[[2J2J2JKK
L
LC


9

5
5C3F333FHHQKK&&&,,,	
 	
 H &&Y&??H&(+++++r+   c                      t          dg di          } t          dg di          }t          j        t          j        j                  5  |                     |ddd           d d d            d S # 1 swxY w Y   d S )Nr  r   )r   r3   r4   T)ry   r|   rZ   )r   r   r   r   r   r   r   r7   s     r)   #test_merge_right_on_and_right_indexr?    s    
UIII&
'
'C
UIII&
'
'C	ry+	,	, H H		#uu$	GGGH H H H H H H H H H H H H H H H H Hs   
A11A58A5)r   r   )_r   r   r   rI  numpyr   r   pandas.compatr   pandas.core.dtypes.commonr   r   pandas.core.dtypes.dtypesr	   pandasr   r
   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr]   pandas.core.reshape.concatr   pandas.core.reshape.merger   r   r*   rL  r:   r<   r   rX  rS   rp   r  rE  rM  rN  rR  rZ  r^  r`  ro  r   rx  r|  r  TWO_GOT_THREEtupler  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)  r+  r.  r1  r5  r=  r?  rK  r+   r)   <module>rK     s           
 
			                   7 6 6 6 6 6                                    - - - - - -           	 	 	d+ d+ d+ d+ d+ d+ d+ d+N-	G 	G 	GKG KG KG KG KG KG KG KG\      r0 r0 r0 r0 r0 r0 r0 r0j	60 60 60 60 60 60 60 60r  ,  
 	___;WWW
555@@@{SSS	 	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>" $, ,% $,  !//"b"&)9QQ	

 '''2r26*vsC- 	
 ", ,# ", JJJ J J	 J vw&7!a9P9P%QRRJ J SRJ $,

  GmGGG		
 
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,:, , ,, , ,, , , 7,<"=>>, , ?>, &7899, , :9,2
, 
, 
, -  -  -F dE]33u66)D%=99$77*T5M::F, F, ;: 87 :9 76 43
F,R> > >.	, 	, 	, e}55u66, , 76 65,*  C C CDD- - ED-&	, 	, 	, lL%ABB6 6 CB6, , ,, , ,0H H H H Hr+   