
    Owgڞ                       d dl mZm Z mZ d dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZm Z  ddZ!d	 Z"d
 Z# ejH                   e"       d       d        Z% ejH                   e"       d       d        Z& ejH                   e#       d       d        Z'ejH                  d        Z( G d d      Z)d Z* G d d      Z+ejH                  d        Z,ejH                  d        Z- G d d      Z.ejH                  d        Z/ejH                  d        Z0 G d d      Z1ejd                  jg                  d ejh                  D  cg c]  }  ed!d"g| d#$       c}  ed%d&gd%d&gd#'       ed d"d#(       ed)d*gd#+      gz   d, -      d.        Z5ejd                  jg                  d/d0d1gddd2d2d&fd3dd0d1gdd2d4d&fddd0d1gd4d2d&fd0d1gddd2d2dfd5dd0d1gdd2d4dfddd0d1gd4d2dfg      d6        Z6d7 Z7ejd                  jg                  d8d d d9d:id;d<gfd d d9d=id d<gfd d d9d>id?d@gfd d d9dAdBgid?d@gfdCd d9dDidCd gfdEdEd9dFidGdEgfdHdHd9dDidHdIgfdCdCd9dFidJdCgfdCdHd9dFidCdHgfdCdCd9dKidCdJgfd d d9dLidMd gfdCdCi dJdNgfd d i d?d@gfg      dO        Z8ejd                  jg                  dPdQ eg dRdSdTejr                  gg dUdV      fd0 eg dWdXdSdTejr                  gejr                  dYdZd[gdV      fg      d\        Z:ejd                  jg                  d]g d^      d_        Z;ejd                  jg                  d9d`dQhd d dag      db        Z<ejd                  jg                  dcdddCdC e=dC      defg      df        Z>ejd                  jg                  dgdhdig      ejd                  jg                  djd4d2g      dk               Z?dl Z@dm ZAdn ZBdo ZCejd                  jg                  dpdqdrg      ds        ZDdt ZEejd                  jg                  dudvdwg      ejd                  jg                  dxdCd4dydzd{gfdCd4d|d}d~gfg      d               ZFejd                  jg                  dudvdwg      ejd                  jg                  dxdzdCid}d~gfd}dCidzd{gfg      d               ZGejd                  jg                  dudvdwg      ejd                  jg                  dd~d4id{d4ig      d               ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPejd                  jg                  dddg      d        ZQd ZRd ZSd ZTejd                  jg                  dddg      d        ZUejd                  jg                  dg d      ejd                  jg                  dddg      d               ZVd ZWejd                  jg                  dg d      ejd                  jg                  dd4d2g      ejd                  jg                  dd4d2g      ejd                  jg                  dd4d2g      ejd                  jg                  dd4d2g      ejd                  jg                  dd4d2g      ejd                  jg                  dd4d2g      d                                                  ZXd ZYd ZZejd                  jg                  dd4d2g      ejd                  jg                  dd4d2g      d               Z[ejd                  jg                  dg d      d        Z\yc c} w )    )datedatetime	timedeltaN)is_object_dtypeis_string_dtype)CategoricalDtype)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndexIntervalIndex
MultiIndexPeriodIndex
RangeIndexSeriesTimedeltaIndex)concat)
MergeErrormergec           	      ^   t        t        |             }t        j                  t        j                  ||| z              }t        |      |k  r0t        j                  t        |      |d |t        |      z
   z         }t        j                  j                  d      j                  |       |S )N   )	listrangenpasarraytilelenrandomdefault_rngshuffle)ngroupsnunique_groupsarrs       \/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/reshape/merge/test_merge.pyget_test_datar'   '   s    w(M
**RWW]AL9
:C
3x!|jjc]>QS\%BBCII!$$S)J    c                      t        dgd      t        dgd      t        dg      t        dg      t        dg      t        t        j                  d      g      t        t        j                  dd	
      g      gS )N   int64dtypeInt64gGz?fooT
2018-01-01
US/Easterntz)r   pd	Timestamp r(   r&   
get_seriesr7   2   si    s'"s'"vwv\*+,\l;<= r(   c                      t        t        j                  gd      t        t        j                  gd      t        t        j                  gd      t        t        j                  g      gS )Nr.   r,   floatobject)r   r   nanr4   NaTr6   r(   r&   get_series_nar=   >   sJ    xw'xw'xx(x	 r(   c                 .    | j                   j                  S Nr-   namexs    r&   <lambda>rD   G       177<< r(   )paramsidsc                     | j                   S )zV
    A parametrized fixture returning a variety of Series of different
    dtypes
    paramrequests    r&   series_of_dtyperM   G        ==r(   c                 .    | j                   j                  S r?   r@   rB   s    r&   rD   rD   P   rE   r(   c                     | j                   S )zk
    A duplicate of the series_of_dtype fixture, so that it can be used
    twice by a single function
    rI   rK   s    r&   series_of_dtype2rQ   P   rN   r(   c                 .    | j                   j                  S r?   r@   rB   s    r&   rD   rD   Y   s    aggll r(   c                     | j                   S )zU
    A parametrized fixture returning a variety of Series with all NA
    values
    rI   rK   s    r&   series_of_dtype_all_narT   Y   rN   r(   c                  ^    t        ddgddgddgd      } t        g dg dg dd	      }| |fS )
Nr   r*   r   ab)col1col_conflictcol_left)r*   r            )r   r   r   r   r   )rX   rY   	col_rightr   )df1df2s     r&   dfs_for_indicatorrb   b   sB    
aVaV#sT
UC
#+(	
C 8Or(   c                   F   e Zd Zej                  d        Zej                  d        Zej                  d        Zej                  d        Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej8                  j;                  dg d      d        Zej8                  j;                  dddddddd dd!d dd"g      d#        Zd$ Z d% Z!d& Z"d' Z#d( Z$ej8                  j;                  d)d*g d+fdg d,fg      ej8                  j;                  dd-d.g      d/               Z%d0 Z&d1 Z'ej8                  jQ                  d2      d3        Z)d4 Z*d5 Z+ej8                  j;                  d6g d7      d8        Z,ej8                  j;                  d6g d7      d9        Z-d: Z.d; Z/d< Z0d= Z1d> Z2d? Z3d@ Z4dA Z5dB Z6dC Z7dD Z8dE Z9dF Z:dG Z;dH Z<ej8                  j;                  dd.dIg      ej8                  j;                  dJ e=g dK       e=g dL      f e>g dMdNO       e>dPdQdRe?j                  e?j                  e?j                  gdNO      fgeAj                  D  cg c].  }t        g dS|O      t        g dTt        j                  O      f0 c}}}}  eFj                  g dU       eFj                  dVdWdXeDj                  eDj                  eDj                  g      f eIg dYdZ[       eIdPd\d]e?j                  e?j                  e?j                  gdZ[      f eJg d^       eJd_d`dae?j                  e?j                  e?j                  g      f      db               ZKdc ZLej8                  j;                  dd-d.g      dd        ZMde ZNdf ZOygc c}}}} w )h	TestMergec                    t        t               t               t        j                  j	                  d      j                  d      t        j                  j	                  d      j                  d      d      }||d   dkD     }|S )Nr   2   )key1key2data1data2rh   r*   r   r'   r   r   r    standard_normal)selfdfs     r&   rn   zTestMerge.dfp   sn    %%..q1AA"E..q1AA"E	
 6
Q	r(   c                     t        t        d      t        dd      t        j                  j	                  d      j                  d      d      S )N
   )r#   r\   )r"   r#   r   )rg   rh   valuerk   rm   s    r&   ra   zTestMerge.df2   sC    %+%a26..q1AA"E
 	
r(   c                 z    t        g dt        j                  j                  d      j	                  d      d      S )NrV   rW   cderw   rV   r      keyv1r   r   r   r    rl   rr   s    r&   leftzTestMerge.left   s4    :ii++A.>>qA
 	
r(   c                 |    t        dt        j                  j                  d      j	                  d      ig d      S )Nv2r   r\   rv   rW   ru   rV   indexr|   rr   s    r&   rightzTestMerge.right   s4    299((+;;A>?&
 	
r(   c                     t               }t        dddgiddgd      }t        ||dd      }t        dg id	      }t        j                  ||       y )
NrV   r*   r   r   r+   )r   r-   T
left_indexright_indexr,   r   r   tmassert_frame_equal)rm   df_emptydf_aresultexpecteds        r&   test_merge_inner_join_emptyz%TestMerge.test_merge_inner_join_empty   sS    ;#1vq!fGDx$DIc2Yg6
fh/r(   c                 h    t        ||      }t        ||ddg      }t        j                  ||       y )Nrg   rh   onr   r   r   )rm   rn   ra   joinedexps        r&   test_merge_commonzTestMerge.test_merge_common   s0    r3B 01
fc*r(   c                     t        g dg dg dg dd      }|j                  t              }|}t        ||      }t	        j
                  ||       y )N)r*   r   r*   r   )r   r*   r   r   )r   r   r   r   )r*   r   r   r[   r   r*   r   r[   )r   astyper9   r   r   r   rm   r}   r   r   r   s        r&   test_merge_non_string_columnsz'TestMerge.test_merge_non_string_columns   sK     ,<P
 E"tU#
h/r(   c                     |j                  d      }|j                  d      }t        ||d      }t        ||d      j                  d      }t        j                  ||       y )Nrg   r   )	set_indexr   r   r   )rm   rn   ra   r}   r   r   r   s          r&   test_merge_index_as_on_argz$TestMerge.test_merge_index_as_on_arg   sW     ||F#f%tUv.SV,66v>
fh/r(   c                 B   t        g dt        j                  j                  d      j	                  d      d      }t        dt        j                  j                  d      j	                  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          y )Nrt   r   rx   ry   r   r\   r   r   rz   Tr}   F)left_onr   howsortr   )right_onr   r   r   )
r   r   r   r    rl   r   r   r   loccolumns)rm   r}   r   merged1merged2s        r&   (test_merge_index_singlekey_right_vs_leftz2TestMerge.test_merge_index_singlekey_right_vs_left   s   :ii++A.>>qA
 299((+;;A>?&

 %Df5
 4%DgE
 	gw{{1goo3E'FG%Df4
 4%DgD
 	gw{{1goo3E'FGr(   c                 l   t        g dt        j                  j                  d      j	                  d      d      }t        dt        j                  j                  d      j	                  d      ig d      }t        ||d	d
d      }|j                  |d	      j                  |j                     }t        j                  ||       t        ||d	d
d      }|j                  |d	      j                  |j                     }t        j                  ||j                  d d |j                  f          y )Nrt   r   rx   ry   r   r\   r   r   rz   Tinnerr   r   r   r   )r   r   r   )r   r   r   r    rl   r   joinr   r   r   r   r   rm   r}   r   r   r   s        r&    test_merge_index_singlekey_innerz*TestMerge.test_merge_index_singlekey_inner   s    :ii++A.>>qA
 299((+;;A>?&
 tUEtQ99Uu9-11&,,?
fh/udUtQ99Uu9-11&,,?
fhll1fnn3D&EFr(   c                    d}t        j                  t        j                  j                  |      5  t        ||d       d d d        d}t        j                  t        j                  j                  |      5  t        ||d       d d d        d}t        j                  t        j                  j                  |      5  t        ||dd	       d d d        d
}t        j                  t        |      5  t        ||dgddg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   y xY w)Nz&Must pass right_on or right_index=TruematchT)r   z$Must pass left_on or left_index=True)r   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothrz   )r   r   z)len\(right_on\) must equal len\(left_on\)rg   rh   r   r   )pytestraisesr4   errorsr   r   
ValueError)rm   rn   ra   r}   r   msgs         r&   test_merge_misspecifiedz!TestMerge.test_merge_misspecified   s   6]]299//s; 	0$$/	04]]299//s; 	1$40	1$ 	 ]]299//s; 	7$e6	7 ;]]:S1 	H"cF8vv6FG	H 	H	0 	0	1 	1	7 	7	H 	Hs/   D:DD+7D7DD(+D47E c           	         d}t        j                  t        |      5  t        ||ddddg       d d d        d}t        j                  t        |      5  t        ||dddgd       d d d        t        j                  t        |      5  t        ||dddgddg       d d d        y # 1 sw Y   zxY w# 1 sw Y   NxY w# 1 sw Y   y xY w)	Nz>right_index parameter must be of type bool, not <class 'list'>r   r}   Frg   rh   r   r   r   z=left_index parameter must be of type bool, not <class 'list'>r   r   r   r   )rm   rn   ra   r   s       r&   &test_index_and_on_parameters_confusionz0TestMerge.test_index_and_on_parameters_confusion   s    N]]:S1 	 #V,	 N]]:S1 	"F+!	 ]]:S1 	"F+#V,	 	#	 		 		 	s#   B*B6C*B36B?Cc                     t        ||d      }|d   j                         dz  j                         }t        |      |k(  sJ d|v sJ d|v sJ y )Nrz   r   r   v1_xv1_y)r   value_countssumr   )rm   r}   mergedexp_lens       r&   test_merge_overlapzTestMerge.test_merge_overlap  s^    tTe,;++-27796{g%%%r(   c           	      P   t        g dg dd      }t        g dg dd      }|j                  |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   |       y )N)r/   barbazr/   r*   r   r[   r\   )lkeyrq   )r/   r   quxr/   )r]      rx      )rkeyrq   r   r   outerT)r   r   r   r   r   r   r/   rA   r   r   r[   r*   r\   value_xr   r]   r   rx   value_y)r   r   r   r   r;   r   assert_series_equal)rm   r}   r   r   r   s        r&   %test_merge_different_column_key_namesz/TestMerge.test_merge_different_column_key_names"  s   ">VW#?,WX6Fd  
 eUE5%GfU
vf~s3eRVVUE5%GfU
vf~s3aAq!Q/i@
vi0#6aAq!Q/i@
vi0#6r(   c                     t        dddt        d            }t        dddt        d            }t        ||d	d	d	
      }d|d<   |d   dk(  j                         sJ d|d<   |d   dk(  j                         sJ y )Nr   r*   rV   rW   rp   r   r/   r   ru   rv   Tr   r   copyr   rV   peekaboorv   )r   r   r   all)rm   r}   r   r   s       r&   test_merge_copyzTestMerge.test_merge_copy6  s    qq)r;E2%)DtUtDQsS	Q##%%% sc
e#((***r(   c                 V   t        dddt        d            }t        dddt        d            }t        ||d	d	d
      }t        j                  |d   j
                  |d   j
                        sJ |s3t        j                  |d   j
                  |d   j
                        sJ y y )Nr   r*   r   rp   r   r/   r   r   TFr   rV   rv   )r   r   r   r   shares_memory_values)rm   using_array_managerusing_infer_stringr}   r   r   s         r&   test_merge_nocopyzTestMerge.test_merge_nocopyB  s    qq)r;E2%)DtUtERs 3 3T#Y5F5FGGG!##F3K$7$7s9K9KLLL "r(   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                  ||       y )Nr*   r*   r   r   r[   r]   rz   rq   rq   rz   r   r*   r*   r   r[   r\   r]   r   )rz   rvaluer   r   r   	r*   r*   r*   r*   r   r   r[   r\   r]   r   r*   r   r[   r\   )	r   r*   r   r*   r   r   r[   r\   r]   )rz   rq   r   )rq   rz   r   )	r   r   r   r   r   arrayr;   r   r   )rm   r}   r   r   r   s        r&   "test_intelligently_handle_join_keyz,TestMerge.test_intelligently_handle_join_keyL  s     #d58n=QVGW
 "4U1XOPtUu':21aAq!Q"GH5
 /
 	fh/r(   c                    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 y )Nr*   rp   ry   r      r   r   rz   r+   TFr   boolvalr   r   r   key_0)r   r   r-   r   r   int)rm   r`   ra   rn   r   r   s         r&   test_merge_join_key_dtype_castz(TestMerge.test_merge_join_key_dtype_cast_  s
    B401B4013)%y')))qc23s343) %y&(((%%xx}xx}3TDgF'{  BHHSM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   j                         j                         sJ |d   j                         j                         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             y )Nr   r]   r   rq   rz   r+   r   r-   r   r   r,   r   r   r   r   r   r   r@   r[   )r   r*   r*   r   r   r[   T)r   r   r   r   )r   r   aranger   r   r   r   notnar   r   r   r+   )	rm   r}   r   rz   r   r   r   r   r   s	            r&   test_handle_join_key_pass_arrayz)TestMerge.test_handle_join_key_pass_arrayv  s   #biil;e$

 8RYYq\2'Bhh)9tUECWMtS5gN
ve}gen=e}""$((***u~##%))+++'299Q<07)D8RYYq\23xx(xx*+tUD4WM5SwO
vg9'299Q<018RYYq\23hh):tUtcwO
vgs0I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        y # 1 sw Y   y xY w)NrC   rV   r   yrW   ru   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   )rm   dtr`   ra   r   s        r&   &test_no_overlap_more_informative_errorz0TestMerge.test_no_overlap_more_informative_error  s    \\^seRD1sCj)"b:&&*V;tf =ug7 	 ]]:S1 	#sO	 	 	s   "A88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        ||       y )N  r]   r*   r   r[   r\   rC   rV   r   r   rW   ru   )rV   rW   q)ru   rv   rw   fghrv   r   r   _check_merge)rm   r   dt2dt3dt4r`   ra   s          r&   test_merge_non_unique_indexesz'TestMerge.test_merge_non_unique_indexes  s    dAq!tQ"tQ"tQ"seRD1sCj)"b:S# o.sBnE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        ||       y )Nr   r]   r*   r   r[   rC   rV   rW   ru   rv   r   r   )rw   r  r  z hir  )rm   r   r  r  r`   ra   s         r&   (test_merge_non_unique_index_many_to_manyz2TestMerge.test_merge_non_unique_index_many_to_many  ss    dAq!tQ"tQ"23Cb";M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                  ||       y )Nr*   r   r   rz   r}   r   r   r   )rm   r}   r   r   s       r&   test_left_merge_empty_dataframez)TestMerge.test_left_merge_empty_dataframe  sc    !s345"+&tUu&9
fd+udu':
fd+r(   r   )r   r}   r   r   c                     t        g |d d       }|j                         }|j                  ||      }t        j                  ||       y )Nr   r   r   )r   r   r   r   r   )rm   r   r   r}   r   r   s         r&   test_merge_empty_dataframez$TestMerge.test_merge_empty_dataframe  sC     5!9-		5c*
fd+r(   kwargTr   rC   r   r   rV   r   r   r   c                     t        g d      }t        g d      }t        g dt              }t        ||fd|i|}t        j                  ||       y )NrV   rW   ru   r   rC   r   zrV   rW   ru   rC   r   r  r   r   )r   r:   r   r   r   )rm   	join_typer  r}   r   exp_inr   s          r&   !test_merge_left_empty_right_emptyz+TestMerge.test_merge_left_empty_right_empty  sK     1/2#A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<    |||       y )Nr  r   r*   r   r[   r\   r]   r   rx   r   	   r  r[   r,   r*   r\   rx   r   r]   r   r[   r   r"  r  r   c                     t        fddi|}t        j                  ||        t        fddi|}t        j                  ||        y )Nr   r   r}   r   r   r  r   r}   r   s      r&   check1z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check1  sO    4=G=u=F!!&#.4<F<e<F!!&#.r(   c                     t        fddi|}t        j                  ||        t        fddi|}t        j                  ||        y )Nr   r   r   r   r'  s      r&   check2z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2  O    4=G=u=F!!&#.4=G=u=F!!&#.r(   Tr   rC   r  rV   r  r   r*   r   r   )r   r   r   r;   r:   )rm   exp_outr  r(  r*  r  r}   r   s         @@r&   $test_merge_left_empty_right_notemptyz.TestMerge.test_merge_left_empty_right_notempty  s:   19i;_UXXrvvhl&9XXrvvhl&9XXrvvhl&9 3

 1	/	/  5S1
 	#E 65!7E"	#  5vu wS1vuxx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
                  j                  t              _        fdfdy )Nr  r   r!  r  r   r  r#  r$  r%  r[   r,   r  r   c                     t        fddi|}t        j                  ||        t        fddi|}t        j                  ||        y )Nr   r   r   r   r'  s      r&   r(  z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check1-  r+  r(   c                     t        fddi|}t        j                  ||        t        fddi|}t        j                  ||        ddddddddd	ddd
fD ]  } |        |        y )Nr   r}   r   Tr   rC   r  rV   r  r   r   )	r   r  r   r(  r*  r  r-  r}   r   s	      r&   r*  z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check23  s    4<F<e<F!!&#.4=G=u=F!!&#.  $D9#55S1	 ' vu%w&'r(   )r   r   r   r;   r:   r   r   )rm   r(  r*  r  r-  r}   r   s    @@@@@@r&   $test_merge_left_notempty_right_emptyz.TestMerge.test_merge_left_notempty_right_empty  s    )Y	:OT/2XXrvvhl&9XXrvvhl&9XXrvvhl&9 3

 1||**62	/	' 	'r(   c                 4   t        ||dddg      }|d d }t        t        |j                  d         t        |j                  d         t        |j                  d         dg d      }|j                  |d      }t	        j
                  ||       y )	Nr   rz   rq   r   r   r,   rz   r   r   r   )r   r   dtypesr   r   r   )rm   rM   rQ   rn   r   r   actuals          r&   test_merge_empty_framez TestMerge.test_merge_empty_frameC  s    #.>?G$
 bq6BIIe$45!		'(:;!		'(:;
 2
 u-
fh/r(   c                     t        ||dddg      }t        ||dddg      }t        |||dg d      }|j                  |d      }t        j                  ||       y )Nr   rz   rq   r   r4  r   r   )rm   rM   rT   df_leftdf_rightr   r6  s          r&   test_merge_all_na_columnz"TestMerge.test_merge_all_na_columnU  s}    #.DEG$
 #.DEG$
 &11
 2
 xE2
fh/r(   c                    t         j                  j                  d      j                  ddd      t         j                  j                  d      j                  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                  j                         }t        j                  |      }t        j                  |t         j                  j                  d      j                  d      d      }|j                  |dd      }t        ||dd      }t        j                  ||       |j                  j                         |j                  j                         k(  j                         sJ y )Nr   r   rp   sizer   r*      i  r\   i  r[   i  r]   )var1var2var3rx   )rB  var8rB  Fr   r   )r   r   r    integersr   r   	from_dictrB  uniquer   r   r   r   r   )rm   rv   rn   rB  newr   r   s          r&   test_merge_nosortzTestMerge.test_merge_nosortj  s    II))!,55a"5EII))!,55a"5Eq"%q!$q!$q"%q!$q!$q!$q!$q!$q!$
    #ww~~wwt}!!299#8#8#;#B#B1#EF
 #&u5BU3
fc* FKK$6$6$88==???r(   )r   valuesF)r*   r*   r   r*   r*   )r   r*   r*   r*   r*   r}   r   c                     t        dg di      }|j                  |d||      }t        |dg      }t        j                  ||       y )NrV   )r*   r   r*   )r   r   r   r   r   )rm   r   rJ  r   rn   r   r   s          r&    test_merge_same_order_left_rightz*TestMerge.test_merge_same_order_left_right  sG     Y'("#D9VcU3
fh/r(   c           	         t        ddgddgd      }t        dgdgd      }|j                  |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
                    j                  d       j                         g d   }|j                  j                  d      |_        t        j                  ||d       y )Nr   r*   i1i2rO  i3rO  _)r   rsuffix        r   r*   )rO  rP  i1_rR  Nr,   r   rO  rP  rW  rR  r:   Fcheck_dtype)r   r   r   r;   r   r:   r   reset_indexr   r   r   r   rm   r`   ra   r   r   s        r&   test_merge_nan_rightzTestMerge.test_merge_nan_right  s    1vaV45s1#./#$4!a.A, RVV,!bff-A, =VL	 Yt_[]46 	  ..x8
fhEBr(   c                    t        ddgddgd      }t        dgdgd      }|j                  |dd	
      }t        ddddt        j                  dddddt        j                  dd      g d   }t	        j
                  ||       y )Nr   r*   g      ?      ?rN  gffffff?rQ  rS  rO  )rT  r   rV  rU  )rO  rW  rP  rR  rX  )r   r   r   r;   r   r   r\  s        r&   test_merge_nan_right2zTestMerge.test_merge_nan_right2  s    1vc3Z89s3%01#st4l266*#&-"&&9	
 $% 	fh/r(   zMignore:Passing a BlockManager|Passing a SingleBlockManager:DeprecationWarningc                 z     G fddt                |      }|j                  |d      }t        |      sJ y )Nc                   "    e Zd Ze fd       Zy)0TestMerge.test_merge_type.<locals>.NotADataFramec                     S r?   r6   )rm   NotADataFrames    r&   _constructorz=TestMerge.test_merge_type.<locals>.NotADataFrame._constructor  s	    $$r(   N)__name__
__module____qualname__propertyrf  )re  s   r&   re  rc    s    % %r(   re  rg   r   )r   r   
isinstance)rm   rn   ra   nadr   re  s        @r&   test_merge_typezTestMerge.test_merge_type  s=    	%I 	%
 B36*&-000r(   c           
         t        j                  t        ddddd      gt        dd      gd      }t        t	        d      	      }d
}t
        }|rd }t        j                  ||      5  t        ||gd      }t        ||gd      }d d d        t        t        ddddd      t        ddddd      gt        dd      t        dd      gd      }|r|j                  t              }t        j                  |       y # 1 sw Y   wxY w)Ni     r]   8   r   iW  )rv   tr   r   zDThe behavior of DataFrame concatenation with empty or all-NA entriesr   Tignore_index)r   rF  r   r   r   FutureWarningr   assert_produces_warningr   r   r:   r   )rm   r   rv   rn   r   warnr   r   s           r&   test_join_append_timedeltasz%TestMerge.test_join_append_timedeltas  s	    D"aB/0	!U8K7LM
 tDz*TD''C8 	8Qd3BRG$7F	8 tRAr2HT2q!R4PQ5)9Q+>?
 v.H
fh/	8 	8s   *C??Dc           	      v   t        j                  d      }t        t        ||gddg            }t        t        |gdg            }|j	                  |dd      }t        t        ||gt        d            t        |t        j                  gt        d            d	      }t        j                  ||       y )
Ni ABr   rr}   )rT  r   AB)00r)
r   timedelta64r   r   r   r   r4   r<   r   r   )rm   tdlhsrhsr   r   s         r&   test_join_append_timedeltas2z&TestMerge.test_join_append_timedeltas2  s     ^^I&BxSz:;tC512#s7RHDJ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|}|j                  |      j                  d      }|d   j                  |k(  sJ |j                  |dd
      }t        j                  ddg|      }t        j                  j                  j                  j                  ||j                        }t        ddg|dddg      }	|	d   j                  |k(  sJ t        j                  ||	       y )N	entity_ide   f   daysr   rA   zdatetime64[]r  r  r  zdatetime64[s]Tr  natr,   r  r  r   )r   r   r   to_framer-   r   r   r   r4   corearraysDatetimeArray_simple_newr   r   )
rm   r  r`   serr-   	exp_dtypera   r   r  r   s
             r&   test_other_datetime_unitz"TestMerge.test_other_datetime_unit  s    sCj12dD\#s&AdV1%?"'IIjj#,,V46{  I---3Fxxi8ww~~++77DJJ7O!3Z !&)
 6{  I---
fc*r(   c                 4   t        dddgi      }t        d d gddgd      }d| d}|dv rXd	}t        j                  t        |
      5  |j                  |       d d d        |j                  d      j                  d      }n4|j                  |      j                  d      }|d   j                  |k(  sJ |j                  |dd      }t        ddgt        j                  ddg|      dddg      }t        j                  ||       y # 1 sw Y   xY w)Nr  r  r  r  r  zm8[r  r  z/Supported resolutions are 's', 'ms', 'us', 'ns'r   zm8[s]Tr  r  r,   r  r   )r   r   r   r   r   r   r  r-   r   r   r   r   r   )	rm   r  r`   r  r-   r   ra   r   r   s	            r&   test_other_timedelta_unitz#TestMerge.test_other_timedelta_unit  s    sCj12dD\#s&AdV1?"CCz5 "

5!" **W%..v6C**U#,,V4Cv;$$---3F*bhhu~U.ST &)
 	fc*" "s   	DD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        y # 1 sw Y   y xY w)Nr  r   r!  rz   r{   r   )rz   r/   r/   )rz   r   r   )rz   r{   r   v3v4)rz   r/   r/   r   r   )rg   r/   r/   zBData columns not unique: Index\(\['foo'\], dtype='object|string'\)r   )r   r   r   r   r   r   r   r   )rm   rn   ra   r   r   s        r&   &test_overlapping_columns_error_messagez0TestMerge.test_overlapping_columns_error_message)  s    y	KL	)LM*
+ 
 ?
eBnh7 -S]]:S1 	"cN	 	 	s   'B==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                  ||       y )N20151010r   r1   periodsr3   r*   r   20151011r[   r  r\   r4  rz   r   r   )r   r4   
date_ranger   r;   r   r   r   r   s        r&   test_merge_on_datetime64tzz$TestMerge.test_merge_on_datetime64tzA  s    }}Z|LQ
 }}Z|L"
 }}Z|Lq"&&"&&1FFAq!,
 tUu':
fh/r(   c                    t        ddgt        j                  ddd      d      }t        ddgt        j                  ddd      d      }t        g d	t        t        j                  ddd            t        j                  gz   t        j                  gt        t        j                  ddd            z   d
      }t        ||dd      }t        j                  ||       |d   j                  dk(  sJ |d   j                  dk(  sJ y )Nr*   r   r  r1   r  r   r[   r  r  r4  rz   r   r   r   zdatetime64[ns, US/Eastern]r   )	r   r4   r  r   r<   r   r   r   r-   r   s        r&   test_merge_datetime64tz_valuesz(TestMerge.test_merge_datetime64tz_valuesZ  s   1vz1N
 1vz1N
  j! UV66(FF8r}}Z|LMN	
 tUu':
fh/i &&*FFFFi &&*FFFFr(   c           	         t        j                  d      }t        t        dg|      dgt        dg|      dg d      }|d d	 }|j	                  |d
      }t        t        |      t        t              t        |      t        t              t        |      dg d      }t        j                  ||       y )NUTCr2   2018r,   g      @2019)r   rq   date2r   r   r   r   )r   r   date2_xr   date2_y)	r4   DatetimeTZDtyper   r   r   r   r9   r   r   )rm   dtzr   r}   r   r   s         r&    test_merge_on_datetime64tz_emptyz*TestMerge.test_merge_on_datetime64tz_emptyu  s      E*%vhc:&xs;
 /
 RayEf-S)!.!,!.!, I	
 	fh/r(   c                    t        t        j                  dddd      dg      }d|d	<   t        t        j                  g d
      dd      }|d   j                  j                  d      j                  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                  ||       y )Nz2017-10-29 01:00r\   r  zEurope/Madrid)r  freqr3   r   r   r*   rq   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00r   )r   rq   r  r   r   r   rx   r[   )r   r   r   )r   r4   r  to_datetimer   tz_localize
tz_convertr   r   r;   r   r   r\  s        r&   +test_merge_datetime64tz_with_dst_transitionz5TestMerge.test_merge_datetime64tz_with_dst_transition  s    MM,acoVH
 G 	
 &knn007::EEoVFsCW8& 37bffX\1FF8a<1#'1
 	fh/r(   c           	         t        j                  ddd      }t        t        t	        t        |                  |dg      }t        ||g      }|j                  |ddd	      }t        t        j                  t        j                  dt        j                  
      j                  d      j                  dd      d      ddg|j                         j                        }t!        j"                  ||       y )Nz
2016-01-01   Mr  r  pnumr   r   Tr   )r   r   r   r,   r   r*   pnum_xpnum_yr   r   )r4   period_ranger   r   r   r   r   r   r   r   r   r+   repeatreshape
sort_indexr   r   r   )rm   r   rn   ra   r   r   s         r&   "test_merge_non_unique_period_indexz,TestMerge.test_merge_non_unique_period_index  s    bsCtE#e*-.efXNb"X#$DgNGGBIIb188;CCBJA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                  ||       y )Nr  r   r  r  r*   r   r  r[   r  r\   r4  rz   r   r   )r   r4   r  r   r;   r   r   r   r   s        r&   test_merge_on_periodszTestMerge.test_merge_on_periods  s    OOJDPQSTvV
 z13G"
 z13Gq"&&"&&1FFAq!,
 tUu':
fh/r(   c                 $   t        ddgt        j                  ddd      d      }t        ddgt        j                  ddd      d      }t        j                  ddd      }t        j                  ddd      }t        g d	t        |      t        j                  gz   t        j                  gt        |      z   d
      }t        ||dd      }t        j                  ||       |d   j                  dk(  sJ |d   j                  dk(  sJ y )Nr*   r   r  r  r  r   r[   r  r  r4  rz   r   r   r   z	Period[D]r   )	r   r4   r  r   r<   r   r   r   r-   )rm   r}   r   exp_xexp_yr   r   s          r&   test_merge_period_valuesz"TestMerge.test_merge_period_values  s    FR__ZQT%UV
 FR__ZQT%UV
 
AC@
AC@ ;"&&1FF8d5k1
 tUu':
fh/i &&+555i &&+555r(   c                    |\  }}|j                         }|j                         }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                  ||       |j                  |ddd      }t        j                  ||       t        j                  ||       t        j                  ||       |}|j                  ddi      }t        ||ddd      }	t        j                  |	|       |j                  |ddd      }	t        j                  |	|       y )Nr   r*   r   r[   r\   r]   r*   r   rV   rW   r[   r\   r]   )rX   col_conflict_xrZ   col_conflict_yr^   )	left_onlyboth
right_onlyr  r  r  r  r  r  
categories_merge)rX   r  rZ   r  r^   r  rX   r   Tr   r   	indicatorcustom_namer   )	r   r   r   r;   r	   r   r   r   rename)
rm   rb   r`   ra   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 #rvvrvvrvvrvvF#%661aAq"9 ffaAq!4
	 * ;

	( 	
	 S#&gF
dI.yyWyE
dI. 	c8,
c8, !* 5 < <}- != !
 !W
 	.0EF99F= % 
 	.0EFr(   c                    |\  }}d}t        j                  t        |      5  t        ||ddd       d d d        t        j                  t        |      5  |j                  |ddd       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nz<indicator option can only accept boolean or string argumentsr   rX   r   r]   r  r   )rm   rb   r`   ra   r   s        r&   #test_merge_indicator_arg_validationz-TestMerge.test_merge_indicator_arg_validation%  s    $SL]]:S1 	A#sv7a@	A]]:S1 	@IIcf'QI?	@ 	@	A 	A	@ 	@s   A6B6A?Bc                 `   |\  }}t        ||ddd      }|j                  dk7  j                         sJ |j                  |ddd      }|j                  dk7  j                         sJ t        ||ddd      }|j                  dk7  j                         sJ |j                  |ddd      }|j                  dk7  j                         sJ t        ||ddd      }|j                  d	k(  j                         sJ |j                  |ddd      }|j                  d	k(  j                         sJ y )
NrX   r}   Tr  r  r   r  r   r  )r   r  r   )rm   rb   r`   ra   test2test3test4s          r&   %test_merge_indicator_result_integrityz/TestMerge.test_merge_indicator_result_integrity/  s%   $Sc36vF,11333		#&f	E,11333c36w$G+00222		#&g	F+00222c36w$G&++---		#&g	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        t        j                  t        |      5  |j	                  |ddd	
       d d d         t        ddgddgd      }d}t        j                  t        |      5  t	        ||ddd
       d d d        t        j                  t        |      5  |j	                  |ddd
       d d d        y # 1 sw Y   xY w# 1 sw Y   #xY w# 1 sw Y   \xY w# 1 sw Y   y xY w)N)_right_indicator_left_indicatorr  rX   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  )rX   custom_column_namez:Cannot use name of an existing column for indicator columnr  r   r   r   r   r   )rm   rb   r`   rS  r  df_badcolumnr   s          r&   test_merge_indicator_invalidz&TestMerge.test_merge_indicator_invalidB  si   "QB 	PA$fq!fa!Q%@AL  !s #MM 
 z5 Qc<F4PQz5 P		,6w$	OP P	P !1a&A!OPJ]]:S1 	.	 ]]:S1 	IIW@T  	 	#Q QP P	 		 	s/   D3D!D.6D:D	!D+	.D7:Ec                 B   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                  ||       |j                  |ddgdd      }t        j                  ||       y )Nr   r*   rV   rW   )rX   col2)r*   r*   r[   )rW   rC   r   )r   r*   r*   r[   rV   rW   rC   r   )r  r  r  r  r  r  r  rX   r  r   Tr  r   r	   r   r   r   )rm   df3df4hand_coded_resulttest5s        r&   %test_merge_indicator_multiple_columnsz/TestMerge.test_merge_indicator_multiple_columnsd  s    !Q#s<=ODE%!+?@
 '2=:'
(#
 c3FF#3DQ
e%67		#66"24	P
e%67r(   c                 	   t        g dg ddt        d            }t        g dg ddt        d	            }|j                         }|j                         }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            }|j                  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        t        j                  t        |      5  t        ||
dd       d d d        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        t        j                  t        |      5  t        ||dd       d d d        t        ||
dd!       d"}t        j                  t        |      5  t        ||
d
d
d       d d d        d#}t        j                  t        |      5  t        ||
dd       d d d        d$}t        j                  t        |      5  t        ||dd%       d d d        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        t        ||dd.gd      }t	        j
                  ||       y # 1 sw Y   ExY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   @xY w# 1 sw Y   xY w# 1 sw Y   xY w)/Nr  )catdogweaselhorser   r\   r   rV   rW   ru   rv   rw   )meowbarkum... weasel noise?naychirprV   ru   r]   Tz1:1)r   r   validate)r  r  r  r	  )a_xrW   a_yru   r  
one_to_oner  rV   )r   r  rW   rV   ru   r  )r   r   r  rw   mooone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger   cowr[   )r   many_to_onezAMerge keys are not unique in left dataset; not a one-to-one mergemany_to_manyzCMerge keys are not unique in right dataset; not a many-to-one mergezBMerge keys are not unique in left dataset; not a one-to-many mergez"jibberish" is not a valid argument. Valid arguments are:
- "1:1"
- "1:m"
- "m:1"
- "m:m"
- "one_to_one"
- "one_to_many"
- "many_to_one"
- "many_to_many"	jibberish)rV   rV   rW   rW   )r   r*   r   r*   rV   rV   rW   )r   r*   r   )r  r  r  )rV   rW   rv   )r  r  r  zQMerge keys are not unique in either left or right dataset; not a one-to-one mergerW   )r   r   r   r   r   r   r   r   r   r   r   r   )rm   r}   r   	left_copy
right_copyr   r   
expected_2
expected_3left_index_resetright_w_dupsr   left_w_dupsexpected_multis                 r&   test_validationzTestMerge.test_validationw  s   &-NO(

 .L (
 IIK	ZZ\
tUtPUV
dI.
eZ0 +6+C	 (,	
 %Dd\
 	fh/)6C
 (

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

  >>#.!
 	fj1 uise5'0JSTRU&VWX"	
 S]]:S1 	 %	 ]]:S1 	E$|D	E 9C5w7sCD4
 	"	
 R]]:S1 	 %	 ]]:S1 	E+u|D	E 	k<C.IS]]:S1 	 &	 S]]:S1 	M+|mL	M
	 	 ]]:S1 	=$#<	= )!6
 (
 $<
 (
 #$-<	 (
% 	 ]]:S1 	7$#6	7 tUSzEB
fn5W	 		E 	E 	 		E 	E	 		M 	M 	= 	=H	7 	7s`   Q2Q?7R+R/R&%R3S 2S2Q<?R	RR#&R03R= S
Sc                     t        g g g d      }t        j                  d      5  t        ||d       d d d        y # 1 sw Y   y xY w)Nr  raise)divider   r   )r   r   errstater   )rm   rV   s     r&   )test_merge_two_empty_df_no_division_errorz3TestMerge.test_merge_two_empty_df_no_division_error<  s@    BRb12[[( 	'!Q:&	' 	' 	's	   >Ar   zindex,expected_index)r*   r   r\   )r*   r   r\   NNN)
2001-01-01
2002-02-02
2003-03-03zM8[ns]r,   r&  r'  r(  r  )r*   r   r[   NNN)r*   r   r   r[   r[   r\   r)  r*  r+  )r&  
2001-01-02
2001-01-03r  )r  r,  r-  )1d2d3dr.  r/  r0  c           
      b   t        g dg dd|      }t        dg di      }|j                  |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      }|j	                  |d       t        j                  ||       y )Nr,  rV   rz   r   rW   r  rz   Tr   )r   r   r   r*   r*   r*   r   r   r   r[   r\   r]   rV   rz   rW   r   )inplace)r   r   r   r;   r   r   r   )rm   r   r   expected_indexr`   ra   r   r   s           r&   $test_merge_on_index_with_more_valuesz.TestMerge.test_merge_on_index_with_more_valuesB  s    ^ i	:%H01234SIAAA &

 	>4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      }|j                  |ddd      }t	        j
                  ||       y )Nr  )r   r*   r*   r2  rW   r*   r   r[   N)r   r*   r*   r   )r*   r   r   r[   r5  r   r*   r   r  rz   Tr   r   r   r   r;   r   r   r   r   s        r&   test_merge_right_index_rightz&TestMerge.test_merge_right_index_right  sq     y;<3	*+!,\J%aBFF#

 E5dP
fh/r(   c                     t        ddgddgd      }t        ddgddgd      }|j                  |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                  ||       y )Nr  pig(   ro  )animal	max_speedquetzalP   r@  rA  r   r   r   )rm   r   left_dfright_dfr   r   s         r&   test_merge_preserves_row_orderz(TestMerge.test_merge_preserves_row_order  s     u~RHMNE(:"bRSxX{,CM'> Y,>bRTX!VWH UEN"b!RSH
fh/r(   c           	      j   t        g dt        g dt        d            d      }t        dg dit        g d            }|j	                  |d	d
d      }t        g dt        g d      g dddddt
        j                  g      }|j                  g d      }t        j                  ||       y )Nr  r  abcr  r2  rW   r  r   rz   Tr   r   r:  )rV   rV   rW   ru   )r*   r*   r   r[   r5  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    "?tE{K
 3	*2B?2STE5dP$"#78!
 aBFF#
 ##,=#>
fh/r(   c                 N   t        t        j                  d      j                  d      dz   g d      }t        t        j                  d      j                  d      dz   g d      }|j                  j
                  D ]  }d|j                  _         |j                  |       y )	Nr   )r\   r]   r*   r  r   )r]   r\   r  F)	r   r   r   r  _mgrr  flags	writeabler   )rm   ri   rj   r%   s       r&   test_merge_readonlyzTestMerge.test_merge_readonly  s    IIbM!!&)A-7P
 IIbM!!&)A-7K

 ::$$ 	(C"'CII	( 	Er(   N)Prg  rh  ri  r   fixturern   ra   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  markparametrizer  r  r.  r2  r7  r;  rI  rL  r]  r`  filterwarningsrm  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r%  r
   r   r4   r<   r   ALL_REAL_NUMPY_DTYPESr   r   float64r   from_tuplesr;   r   r   r8  r<  rF  rJ  rO  ).0dtypr   r   s   0000r&   rd   rd   o   sk   ^^  ^^
 
 ^^
 
 ^^
 
0+

00H8G*H&8 7(
+M0&2.K@*, [[U$GH, I, [[5S1D1-		
..-^('T0$0*@@ [[e_5o7NO [[UVW$560 70C*0 [[W	1	1040  [[V%KL+ M+: [[V%KL+ M+2002G6020@00*6,=G~@.& D8&C6J' [[UWg$67[[ !+ !<=
 >h !<rvvrvvrvvV"	&	
& 44 
  )405RZZH&	
, *))*BC)))VVRVVRVVRVVD+&	
8 FSQ!<rvvrvvrvvV7&	
F 12dD"&&"&&"&&IJE&	
)T0U) 8V0*0 [[UVW$56	0 7	00*s   +3Nrd   c                     dD ]q  }dD ]j  }| j                  |||      }t        | j                         |j                         ||      }|j                  d      }t	        j
                  ||d       l s y )N)r   r}   r   )TFr   r   r   F)check_names)r   r   r[  r   r   r   )rC   r   r   r   r   r   s         r&   r  r    sx    ) G! 	GDVVA3TV2FQ]]_ammo3TRH))'2H !!&(F	GGr(   c                      e Zd Zej                  j                  dddg eddg      j                  d      g      d        Zej                  j                  de	j                  e	j                  e	j                  e	j                  e	j                  e	j                  g      ej                  j                  de	j                  e	j                   e	j"                  e	j$                  g      d               Zej                  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                  j                  dg d eg d      j                  d      fg d eg d      j                  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                  j                  d eddgd!      g d"f eddgd#      g d"fg dg d$fg dg d$fg dg d$f ej:                  d%dd&'      d(d)gf ej:                  d%dd&'      ddgf ej:                  d%dd&'      d*dgf ej:                  d+d,       ej:                  d+dd-.      fg	      d/        Zej                  j                  d0ddgd1fg d2fdgd3fdgd4fg      d5        Zej                  j                  d0d6d7gd1fg d2fd7gd3fd6gd4fg      d8        Z ej                  j                  d9d2g d:g d;gfd1g d;g d:gfd4g d:g d;gfd3g d;g d:gfg      d<        Z!d= Z"ej                  j                  d>g d?      d@        Z#yA)BTestMergeDtypes
right_valsr/   r   categoryc                 T   t        ddgt        ddg      j                  d      ddgddgt        ddgd	      t        ddgd
	      d      }t        d|i      }t        ||d      }t	        |j
                  j                        s"t        |j
                  j                        sJ y y )Nr/   r   r_  r*   r         ?       @uint64r,   int32)ry  rz  Cr  EFry  r   )r   r   r   r   r   ry  r-   r   )rm   r^  r}   r   r   s        r&   test_differentzTestMergeDtypes.test_different  s     U^UEN+22:>V3ZQF(3QF'2	
 3
+,
 tUs+vxx~~./&((..2QQQ2Q.r(   d1d2c           	         t        j                  |      }t        j                  |      }t        t        j                  g ddz  |      ddgdz  t        j                  t        j                  d      t         j
                        d      }t        j                  d	d
g      }t        dt        j                  ddg|      i|      }|j                  |ddg      }|j                         }	|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                   ||	       |j                  |ddgd      }|	j#                  ddgdd       t        j                   ||	       y )Nr,  r   r,   r/   r   r?     )k1k2v)r   r   )r*   r/   r   r]   rx   r   rm  rn  r   r  rU  r   r*   TrD  	mergesort)kindr6  )r   r-   r   r   r   r+   r   rV  r   r   rq  r;   r   rm  rn  r   r   sort_values)
rm   ri  rj  dtype1dtype2r}   r   r   r   r   s
             r&   test_join_multi_dtypesz&TestMergeDtypes.test_join_multi_dtypes  s   
 ""hhy1}F;enr)XXbiim288<
 &&
J'?@41a&!?@N5dD\299;;;#XXi(F"&&7JKhkkQ&8;;%+?@$FGJKhkkQ&8;;%+?@$FG
fh/5dD\=dD\TJ
fh/r(   zint_vals, float_vals, exp_valsr  )ra  rb        @XYra  rv  r*   r[   r   rb  c                     t        d|i      }t        d|i      }t        |      }|j                  |dd      }t        j                  ||       |j                  |dd      }t        j                  ||ddg          y )Nrx  ry  r   r   )rm   int_vals
float_valsexp_valsry  rz  r   r   s           r&   test_merge_on_ints_floatsz)TestMergeDtypes.test_merge_on_ints_floats  s|     sHo&sJ'(X&C#6
fh/C#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      }|j                  |dd      }t        ddgddgt        j                  dgdg d      }t	        j
                  ||       y )Nra  rb  rp   r   ry   rz   r{   r   r      )rz   r   r   r}   r   g      i@r  )r   r   r   r;   r   r   r\  s        r&   test_merge_key_dtype_castz)TestMergeDtypes.test_merge_key_dtype_cast  s    c
2r(;eT]SC51E4=I35f5#Jr2hrvvuoF'
 	fh/r(   c                    t        dg di      }t        dg di      }t        dgdgd      }t        j                  t              5  |j	                  |dd      }t        j
                  ||       d d d        t        j                  t              5  |j	                  |dd      }t        j
                  ||ddg          d d d        t        dt        j                  t        j                  dgi      }t        j                  d       5  |j	                  |dd      }t        j
                  ||ddg          d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	Nrx  r  ry  )皙?g      @rv  r[   rv  rw  r   )r   r   ru  UserWarningr   r   r   r;   )rm   ry  rz  r   r   s        r&   !test_merge_on_ints_floats_warningz1TestMergeDtypes.test_merge_on_ints_floats_warning)  sL   
 sI&'sO,-A3cU34''4 	4WWQcW:F!!&(3	4 ''4 	@WWQcW:F!!&(C:*>?	@
 sRVVRVVS123''- 	@WWQcW:F!!&(C:*>?	@ 	@	4 	4	@ 	@	@ 	@s$   +E0E0EEEE'c                    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
                  ||       y Nrz   TFr,   r   )r   r   r:   r   r   r   rm   r`   ra   r   r   s        r&   (test_merge_incompat_infer_boolean_objectz8TestMergeDtypes.test_merge_incompat_infer_boolean_objectA  s    e}F CDEu./edE]36BsCE*
fh/sCE*
fh/r(   c                 6   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                  ||       y r  )r   r   r   r;   r:   r   r   r   r  s        r&   5test_merge_incompat_infer_boolean_object_with_missingzETestMergeDtypes.test_merge_incompat_infer_boolean_object_with_missingL  s     eRVV'<F KLMu./edE]36BsCE*
fh/sCE*
fh/r(   zdf1_vals, df2_valsr,  )rV   rW   rV   )rU  ra  rb  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 y y )Nry  r   )r   r   r   ry  r-   r   )rm   df1_valsdf2_valsr`   ra   r   s         r&   !test_merge_incompat_dtypes_are_okz1TestMergeDtypes.test_merge_incompat_dtypes_are_okX  s      h(h(sCSE*vxx~~...sCSE*vxx~~./&((..2QQQ2Q.r(   rc  r  rd  )r}  12z1/1/2011r  r  z
2011-01-01z
2011-01-02rU  20130101)r  r1   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        d|d   j                   d|d   j                   d}t        j                  |      }t	        j
                  t        |      5  t        ||dg       d d d        t        |      t        |      k(  rt        |||d      }t        |||d      }d|d   j                   d|d   j                   d	}t        j                  |      }t	        j
                  t        |      5  t        ||       d d d        d|d
   j                   d|d
   j                   d}t        j                  |      }t	        j
                  t        |      5  t        ||dd
g       d d d        y y # 1 sw Y   xY w# 1 sw Y   "xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nry  You are trying to merge on  and zE columns for key 'A'. If you wish to proceed you should use pd.concatr   r   ry  rz  re  rz  zE columns for key 'B'. If you wish to proceed you should use pd.concatre  zE columns for key 'C'. If you wish to proceed you should use pd.concat)	r   r-   reescaper   r   r   r   r   )rm   r  r  r`   ra   r   r  r  s           r&    test_merge_incompat_dtypes_errorz0TestMergeDtypes.test_merge_incompat_dtypes_errorp  s)   4 h(h( *#c(..)9s3x~~>N OS S 	 iin]]:S1 	&#su%	&
 *#c(..)9s3x~~>N OS S 	 iin]]:S1 	&#su%	&
 x=CM) (IJC(IJC
 .c#hnn-=U3s8>>BR SW W  ))C.Cz5  c3  .c#hnn-=U3s8>>BR SW W  ))C.Cz5 /c3C:./ // *	& 	&	& 	&$   / /s0   .G<H	9H!H"<H	HH"H+zexpected_data, howr   r   r   r}   c                     t        dgdg|      }t        dgdg|      }t        |||      }t        t        |            }t        ||dg|      }t	        j
                  ||       y )N)r*   idr   )r   r   r   r   r-   r   r   r   r   r   r   )	rm   any_numeric_ea_dtyper   expected_datari  rj  r   	exp_indexr   s	            r&   test_merge_EA_dtypez#TestMergeDtypes.test_merge_EA_dtype  so     vv5IJvv5IJr23's=12	TFBV
 	fh/r(   rV   rW   c                     t        dgdg|      }t        dgdg|      }t        |||      }t        t        |            }t        ||dg|      }t	        j
                  ||       y )N)rV   r  r   )rW   r   r  r  )	rm   r   r  any_string_dtyperi  rj  r   exp_idxr   s	            r&   test_merge_string_dtypez'TestMergeDtypes.test_merge_string_dtype  so     x$7GHx$7GHr23'S/04&@P
 	fh/r(   zhow, expected_data)Tr*   r\   )Fr]   r[   c                     t        ddgddgd      }t        ddgddgd      }t        |||	      }t        |g d
      }t        j                  ||       y )NTFr*   r]   ry  rz  r[   r\   ry  re  r   r  r   r   )rm   r   r  r`   ra   r   r   s          r&   test_merge_bool_dtypez%TestMergeDtypes.test_merge_bool_dtype  s\     tUm1a&9:udm1a&9:sCS)]OD
fh/r(   c                 n   t        g dg ddt        j                               }|j                         }t        dddt        j                  dgd	d
dt        j                  dgd|      }|j                         }t        ||dg|      }t        j                  ||       t        j                  ||       t        t        j                  d      t        j                         t        j                  d      gt        j                  g d            }t        j                  |j                  |       y )N)r  r  34N)r  5678)lvl0zlvl1-ar  zlvl1-b)datar-   r  r  r  r  r  r  911)r  r  zlvl1-cr  )r}   r   r   r   O)r  r  r  r   )r   r4   StringDtyper   NAr   r   r   r   r   r-   r   rV  r   r5  )	rm   r  string_dtyper`   r  ra   r  r   r   s	            r&   test_merge_ea_with_stringz)TestMergeDtypes.test_merge_ea_with_string  s    $>$= .."
 88:%(#sBEE3$?%(#sBEE4$@ 
 88:Cs0B/CS 	c8,
c8, XXc]BNN,bhhsm<((L
 	v}}h7r(   zleft_empty, how, exp)
)Fr}   r}   )Fr   empty)Fr   r  )Fr   r}   )Fcrossempty_cross)Tr}   r  )Tr   r   )Tr   r  )Tr   r   )Tr  r  c                 $   t        ddgddgd      }t        dgdgdd	      }|r|j                  d
      }n|j                  d
      }|j                  ||      }|dk(  r2t        ddgddgt        j                  t        j                  gd      }nO|dk(  r!t        dgt        j                  gdgd      }n)|dk(  rt        g dd      }n|dk(  rt        g dd      }|dk(  rj                  dd      }t        j                  |       y )Nr   r*   r[   r\   r  r]   r  r+   r,   r   r   r}   r  r   r  r   r  )A_xrz  A_yre  r   ry  Trr  )r   headr   r   r;   rr  r   r   )rm   
left_emptyr   r   r}   r   r   r   s           r&   test_merge_emptyz TestMergeDtypes.test_merge_empty  s     1vQF341#.g>99Q<DJJqMEEs+&= 1vQF"&&"&&AQ!RSHG^ s"&&!DEHG^ HHM! )AQH'>++Cd+CH
fh/r(   N)$rg  rh  ri  r   rQ  rR  r   r   rh  r   r+   rd  intcint16int8uint8rU  float32float16ru  r~  r  r  r  r  r:   r   r  r4   r  r  r  r  r  r  r  r6   r(   r&   r]  r]    s   [[u~vuen'='D'DZ'PQRR& [[rxx277BHHbggrxxH [[TBHHbjj"**bjj#QR0 S0> [[(y)OPc
1a&Sz$BCV_QF#s&DE	
<<	0@0	0
0 [[ /66zBCf_5<<ZHIVVUDM89VVUDM67	

R
R [[ QF(+_=QF'*O<(o.(j!#>|, R]]:qs;aVDR]]:qs;c3ZHj!4j!E	
*3/+*3/j [[VWMS'NS&M		
	0	0 [[3Z!MUGUFO		
	0	0 [[|]34}l34lM23}l34		
008B [[	
00r(   r]  c                  $   t        t        t        j                  j	                  d      j                  ddgd            j                  t        ddg            t        j                  j	                  d      j                  g dd      d      S )Nr   r/   r   )rp   r=  )onetwothreerw  )r   r   r   r   r    choicer   r   r6   r(   r&   r}   r}   =  sy    		%%a(//U/Kf%uen56&&q)001Hu0U		
 r(   c                  l    t        t        ddg      j                  t        ddg            ddgd      S )Nr/   r   r*   r   )rx  Z)r   r   r   r   r6   r(   r&   r   r   I  s<    '../?/OPQ	
 r(   c            
          e Zd Zd Zd Zd Zd Zej                  j                  dddg      d        Z
d	 Zej                  j                  d
d d d g      d        Zd Zd Zej                  j                  dddg      ej                  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y)TestMergeCategoricalc                     t        ||d      }|j                  j                         }|st        j                  d      nd}t        t        ddg      ||gg d	      }t        j                  ||       y )
Nrx  r   r  stringr/   r   r  )rx  Y_xY_yr   	r   r5  r  r   r-   r   r   r   r   )rm   r}   r   r   r   r-   r   s          r&   test_identicalz#TestMergeCategorical.test_identicalT  se    tTc*))+%7X%8%G%
 	vx0r(   c                    t        ||d      }|j                  j                         }|st        j                  d      nd}t        t        ddg      |t        j                  d      gg d	
      }t        j                  ||       y )Nrx  r   r  r  r/   r   r  r+   rx  ry  r  r   r  rm   r}   r   r   r   r   r-   r   s           r&   
test_basiczTestMergeCategorical.test_basic_  sv     tUs+))+%7X UEN;!
 "
 	vx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      }|j                         }|j                         }|d   j                  d      |d<   t        ||ddd      }|d   j                  t	        dg            |d<   t        j                  ||       |j                         }|d   j                  d      |d<   t        ||ddd      }t        j                  ||       |j                         }|d   j                  d      |d<   |j                         }|d   j                  d      |d<   t        ||ddd      }t        j                  ||       y )NrV   rW   ru   rv   rw   )r   r*   r   r[   r\   nullr   r  r  r   r}   )r   r   r   r_  )r   r   r   r   r   r   r   )rm   r   r}   rn   r   crightr   clefts           r&   test_merge_categoricalz+TestMergeCategorical.test_merge_categoricalo  s    =Fv&VL
 ==
 4FC#F 779
 Sk((4stVsK ,,-=vh-GH
fh/ 		3Z&&z2c
uf&#L
fh/ Sk((4s		3Z&&z2c
uf&#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                  ||       y )Nr  r  )A0B0C0)FooLeft)re  rz  ry  )C1B1A1)r  Rightr  r   )r  r  r  )r  r  r  r  r\  s        r&   'tests_merge_categorical_unordered_equalz<TestMergeCategorical.tests_merge_categorical_unordered_equal  s}    "?O*
 "?O+
 sCUG,"?3*+
 	fh/r(   orderedTFc                    t        ddg|      }t        g dt        g d|      g dd      j                  d	d
g      }t        g dt        g d|      g dd      j                  d	d
g      }t	        ||ddd      }t        g dt        g d|      g dddt
        j                  gd      j                  d	d
g      }t        j                  ||       y )NP2P1r  r  )re  re  r  )r  r  r  r,   r,  )r  prV   r  r  )ry  re  re  )r  r  r  )rp   ro  r?  )r  r  ri  r}   Tr   g      &@g      (@)r  r  rV   ri  )	r   r   r	   r   r   r   r;   r   r   )rm   r  pcatr`   ra   r   r   s          r&   5test_multiindex_merge_with_unordered_categoricalindexzJTestMergeCategorical.test_multiindex_merge_with_unordered_categoricalindex  s      D$<I% !34@
 )T3K
  	 % !34@"
 )T3K
  	 sCV$O% !34@T266*	
 )T3K
  	 	fh/r(   c                 H   |j                  |j                  j                  d            }t        ||d      }|j                  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                  j                        sJ |j                  j                  j                  |j                  j                        sJ y )Nr_  )r  rx  r   r  r  r/   r   r  r*   r   r  r   )assignr  r   r   r5  r  r   r-   r   r   r   r   rx  rJ  #_categories_match_up_to_permutationr  s           r&   test_other_columnsz'TestMergeCategorical.test_other_columns  s    uww~~j9:tUs+))+%7X UEN; QF3
 "
 	vx0 vv}}@@QQQww~~AA&((//RRRr(   changec                     | S r?   r6   rB   s    r&   rD   zTestMergeCategorical.<lambda>  s    a r(   c                 :    | j                  t        g d            S )N)r/   r   bahr   r   rB   s    r&   rD   zTestMergeCategorical.<lambda>  s    ahh/0EFG r(   c                 8    | j                  t        d            S )NTr  r  rB   s    r&   rD   zTestMergeCategorical.<lambda>  s    ahh/=> r(   c                     ||j                   j                  d            }|j                  |      }t        |j                   j                  j
                  t              sJ t        ||d|      }|j                  j                         }|st        j
                  d      nd}	t        |	|	t        j
                  d      gg d	      }
t        j                  ||
       y )
Nr:   )rx  rx  r   r  r  r+   r  r   )rx  r   r  rk  rJ  r-   r   r   r5  r  r   r   r   r   )rm   r  r  r}   r   r   rx  r   r   r-   r   s              r&   test_dtype_on_merged_differentz3TestMergeCategorical.test_dtype_on_merged_different  s     577>>(+,q!$&&----/?@@@ tUs	:))+%7X5%'):;?S
vx0r(   c                 ^   d}t        g d|z  g ddz  |z  dD cg c]  }|gdz  |z  D ]  }|  c}}dD cg c]  }|g|z  D ]  }|  c}}d      }|j                  d       }t        ||t        |j                        	      }t        j                  ||       y c c}}w c c}}w )
Nr]   )
rV   rW   ru   rv   rw   r  r  r  r  j)rq  wrC   r   r  r   )r  r#   ur  o)
aabbccddeeffgghhiijjr  c                 $    | j                  d      S )Nr_  )r   rB   s    r&   rD   zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>   s     4 r(   r   )r   applyr   r   r   r   r   )rm   r  eachletterrn   r   s         r&   "test_self_join_multiple_categoriesz7TestMergeCategorical.test_self_join_multiple_categories  s     G!K.2Q6 !:#'&1*q.  ! $(&1*  
: XX45 r2$rzz"23
fb)=
s
   B#B)c                 @   t        t        ddd      dgt        ddd      dggddg      }|d   j                  d	      |d<   t        t        ddd      dgt        ddd
      dggddg      }|d   j                  d	      |d<   t        t        j                  d      j                         ddgt        j                  d      j                         dt
        j                  gt        j                  d      j                         t
        j                  dggg d      }t        ||ddg      }t        j                  ||       t        t        j                  d      j                         ddggg d      }t        ||ddg      }t        j                  ||       y )Ni  r*   r  r   ?r   num2r   r_  r[   ffffff?num4r&  r,  r-  )r   r  r  r   r  r   )
r   r   r   r4   r5   r   r;   r   r   r   )rm   rn   ra   expected_outerresult_outerexpected_innerresult_inners          r&   test_dtype_on_categorical_datesz4TestMergeCategorical.test_dtype_on_categorical_dates'  s    4A$tD!Q'7&=>QWHX
 Z&&z26
4A$tD!Q'7&=>QWHX
 &k((4F"l+002C=l+002C@l+002BFFC@
 -
 R'vh?
lN;"ll<(--/c:;,
 R'vh?
lN;r(   z.category_column,categories,expected_categories)FTTF)r   r*   r*   r   r*   r   )FalseTruer#  r"  r#  r"  c                 D   t        g d|d      }|d   j                  t        ||            |d<   t        ddgddgd	      }|j                  |      }t        ddg|ddgd
      }|d   j                  t        ||            |d<   t	        j
                  ||       y )Nr   )r  r  r  r  r   r\   r*   r"  )r  num)r  r  r%  )r   r   r   r   r   r   )	rm   category_columnr  expected_categoriesr  r`   ra   r   r   s	            r&   /test_merging_with_bool_or_int_cateorical_columnzDTestMergeCategorical.test_merging_with_bool_or_int_cateorical_columnG  s     |ODEZ&&'7
G'TUE
1vq!f563QF3FPQSTvVW"5/00Z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                  ||       y )	Nr*   r   r.   r,   r  ry  r   )ry  B_xB_y)r   r   r   r;   r   r   r   )rm   rn   r   r   s       r&   test_merge_on_int_arrayz,TestMergeCategorical.test_merge_on_int_array_  sg    VQ266N'BKLr2#&!Qw7!L
 	fh/r(   N)rg  rh  ri  r  r  r  r  r   rQ  rR  r  r  r  r  r!  r(  r,  r6   r(   r&   r  r  S  s   	11 )0V02 [[Yu60 708S* [[G>	
11$&*P<@ [[Yu6[[8'$uFAq6Aq6*/&'1BVWDUV	
0 700r(   r  c                  (    t        dg dig d      S )NrV   r   rp   r   r   r*   r   r   r_   r6   r(   r&   rD  rD  i  s    c;'y99r(   c                  (    t        dg dig d      S )NrW   ,  d   r  r[   r*   r   r   r_   r6   r(   r&   rE  rE  n  s    c?+9==r(   c                   X   e Zd Zej                  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	y)TestMergeOnIndexeszhow, sort, expectedr   Fr   rp   r  r3  r   r   r*   r   Tr}   r.  r/  )r   rp   r   r,  r   r1  r4  r3  r  r2  r  r   r   r2  r   c                 R    t        ||dd||      }t        j                  ||       y )NT)r   r   r   r   r   )rm   rD  rE  r   r   r   r   s          r&   test_merge_on_indexesz(TestMergeOnIndexes.test_merge_on_indexest  s/    ` X$DcPT
 	fh/r(   N)
rg  rh  ri  r   rQ  rR  r   r   r;   r9  r6   r(   r&   r6  r6  s  s   [[eYb"XS#J'GPQSTvVWdIRHC:&FqRSfUV3RVV2DEYW 26632DEYW 662r*A r266*A b"bff-RVVS#s4KL& b"bff-RVVS#s4KL&G+	
.^0_.^0r(   r6  r   r*   r   	index_colr@   ry  rz  )r  rA   )startstoprA   r0   z
2018-01-02r   c                 L    t        |       j                   d| j                   dS )N[r  )typerg  r-   rB   s    r&   rD   rD     s"    T!W%%&ay2 r(   )rG   c                     t        dddgi|       }t        dddgi|       }|j                  |dg	      }t        ddgddgd
|       }t        j                  ||       y )N	left_datar*   r   r   
right_datara  rb  r:  r   )rA  rB  r   )r   r}   r   r   r   s        r&   test_merge_index_typesrC    sl     kAq6*%8D|c3Z0>EZZ;-Z0F1vc3ZHPUVH&(+r(   z-on,left_on,right_on,left_index,right_index,nmr   r   F)NNNTTrz  T)NNNTTNc           
         t        dg dit        j                  ddgddggddg	      
      }t        g dt        j                  ddgddggddg	      |      }t        ddgddgdt        j                  ddgdggddg	      
      }|)t	        ||| ||||      }	t        j                  |	|       y d}
t        j                  t        |
      5  t	        ||| ||||      }	d d d        y # 1 sw Y   y xY w)Nry  r   rV   rW   r   r*   r   r   namesr   r   r  r\   r[   r  )r   r   r   r   r   z$Cannot merge a Series without a namer   )
r   r   from_productr   r   r   r   r   r   r   )r   r   r   r   r   nmrV   rW   r   r   r   s              r&   test_merge_seriesrI    s'    		l%%SzAq6&:7GBTU	A 	%%SzAq6&:7GBTU	A
 !fAq6"%%SzA3&7?QRH 
~!#
 	fh/4]]:S1 		!%'F		 		 		s   C00C9c                  :   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        y # 1 sw Y   y xY w)Nry  r   rV   rW   r   r*   r   r   rE  r   r   )rz  re  r  z-Not allowed to merge between different levelsr   r   )r   r   rG  r   r   r   r   r   r   s     r&   test_merge_series_multilevelrK    s     		l%%SzAq6&:7GBTU	A 	%%SzAq6&:7GBTU	A
 
I
 + 	a)*+ + +s   7BBz!col1, col2, kwargs, expected_colssuffixes) _dupr}  0_dup)NrN  )_x_y0_x0_yrP  rQ  rV   )NrQ  rU  )rP  Nz0.0_xrW   b_yr  )NrP  )_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                  ||       y )Nr  r   r*   r\   r   r]   r[   r   r   Tr   r   )rX   r  kwargsexpected_colsrV   rW   r   r   s           r&   test_merge_suffixrZ  	  s    ( 	4#$A4#$A1a&1a&1a&1=IHQWWQD4TDVDF&(+1aEDdEfEF&(+r(   zhow,expectedr   r7  <   F   X       )ry  r  B2)r*   r3  r  r2  rC  r^  r_  r`  c                     t        g dg dd      }t        g dg dd      }t        ||d| d      }g d	|_        t        j                  ||       y )
N)r3  r  r*   )r[  r\  rC  r  r7  r]  ry  )rP  rP  )r   r   rL  )ry  r*  r*  )r   r   r   r   r   )r   r   rD  rE  r   s        r&   test_merge_duplicate_suffixrc  '	  sL    , m,?@G_EFH7H#MF*H&(+r(   zcol1, col2, suffixes))rV   rV   )NN)rV   rV   )rM  N)r   r   )NrM  c                     t        | g di      }t        |g di      }d}t        j                  t        |      5  t	        ||dd|       d d d        y # 1 sw Y   y xY w)Nr  r[   r\   r]   z'columns overlap but no suffix specifiedr   Tr   r   rL  r  )rX   r  rL  rV   rW   r   s         r&   test_merge_suffix_errorrg  E	  s`     	4#$A4#$A 4C	z	- JatIJ J Js   AAr}   r}   r   c                     t        dg di      }t        dg di      }t        j                  t        d      5  t	        ||dd|        d d d        y # 1 sw Y   y xY w)	NrV   r  rW   re  zPassing 'suffixes' as ar   Trf  )r   r   r   	TypeErrorr   )rL  rV   rW   s      r&   test_merge_suffix_raisesrk  T	  sX    3	"#A3	"#A	y(A	B JatIJ J J   AAzcol1, col2, suffixes, msg)rV   rV   r  z(too many values to unpack \(expected 2\)z1not enough values to unpack \(expected 2, got 1\)c                     t        | g di      }t        |g di      }t        j                  t        |      5  t	        ||dd|       d d d        y # 1 sw Y   y xY w)Nr  re  r   Trf  r  )rX   r  rL  r   rV   rW   s         r&   test_merge_suffix_length_errorrn  ]	  sY     	4#$A4#$A	z	- JatIJ J Jrl  	cat_dtyper  r  reversec                 P   t        g dd      t        g dd      d}t        t        g d      j                  |d         g dd      j	                  d      }g d}g d}|r |j                          |j                          t        t        |      j                  ||          |d	      j	                  d      }|j                  |d
d
      }t        g dg dt        g d      j                  |d         d      j	                  d      }t        j                  ||       y )Nr  Fr  )r  r  r  r  r/   r}   r/   r/   r   Tr   r}   r   r/   )	r   r   r   r   r   rp  r   r   r   )	ro  rp  
cat_dtypesr`   data_foo
data_rightra   r   r   s	            r&   test_merge_equal_cat_dtypesrx  l	  s   
  ?EJ?EJJ
 '..z%/@A9Ui  HJ
x ''
9(=>Ti  YYstY>F/*11*U2CD	
 i  &(+r(   c                     t        g dd      } t        t        ddg      j                  |       ddgd      j	                  d	      }t        t        g d      j                  |       g d
d      j	                  d	      }|j                  |dd      }t        ddgddgt        ddg      j                  |       d      j	                  d	      }t        j                  ||       y )Nr  Fr  rV   rW   r*   r   rr  r/   )r[   r   r*   rs  Tr   r[   rt  )r   r   r   r   r   r   r   r   )ro  r`   ra   r   r   s        r&   test_merge_equal_cat_dtypes2rz  	  s     OUKI Sz")))4q!fEi  '..y9INi  YYstY>FQ1a&c
1C1J1J91UVi  &(+r(   c            
      @   t        dt        t        j                  dd      t        j                  dd      gd      i      } | j	                         }|d   j                  d      |d<   t        || dd	      }| j	                         }t        j                  ||       y )
NrV   r   r*   r   intervalr,   r_  r   r  )	r   r   r4   Intervalr   r   r   r   r   )r   r}   r   r   s       r&   test_merge_on_cat_and_ext_arrayr~  	  s    	fbkk!Q'Q):;:NOE ::<DS	  ,DI4G4Fzz|H&(+r(   c                     g d} g d}t        j                  | |fddg      }t        |      }d|d<   t        |      }d|d<   d	}d
}|j                  |d||f      }| D 	cg c]  }|D ]	  }	||z   |	f  }
}}	|
dgz  }
|
| D 	cg c]  }|D ]	  }	||z   |	f  c}	}z  }
t        j                  |
ddg      }t        |      }t        j                  ||d       y c c}	}w c c}	}w )Nr  r  r  r  r   r   rE  r   rM  r  rP  rQ  r   rL  )r  rM  FrY  )r   rG  r   r   rV  r   r   )lettersnumbersr   frame_xframe_yl_sufr_sufr   r  r%  tuplesr7  r   s                r&   test_merge_multiindex_columnsr  	  s    #GG##Wg$6w>PQE&GGDM&GGDMEE]]7tu~]GF 3:MWMcv~s#M#MFM
zlF
7NgNs$N$NNF++F7G:LMN0H&(> NNs   %C"	C(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
                  ||       y )Nr  )r  r  r  )rC   r   r  )200020012002)r   r  r}   r   r  )r  r  r<   r  )r   r4   r  r   r   r   r`   ra   r   r   s       r&    test_merge_datetime_upcast_dtyper  	  ss    
/@
AC
BNN3K$LMC 3C0F   78	
H &(+r(   n_categoriesr]      c                    t        dgt        t        |             z         }t        t        | dz         dg|      }t        dggdgt        dgt        t        |                         }t	        ||ddd	      }t        t        | dz         D cg c]  }|d
k  r|dgn|t
        j                  g c}ddg|      }t        j                  ||       y c c}w )Nr   r*   rq   r  r   r  r}   Tr   r   g      @r   r   )	r
   r   r   r   r   r   r;   r   r   )r  r   r`   ra   r   r  r   s          r&   %test_categorical_non_unique_monotonicr  	  s    
 "1#U<-@(A"ABJ
E,*+gYj
QC

	stE,4G/HIC 3DdKF5:<!;K5LMQU!SBFF	+MI&H
 (F+	 	Ns   "Cc                     t        g dg d      g dd} t        |       } t        g dg d      g dg dd}t        |      j                  d	d
g      d   }t        | |j	                         ddgd	d
gd      }|j                  d	d
gd      }| j                  |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        |      j                  d	d
g      d   }t        | |j	                         ddgd	d
gd      }|j                  d	d
gd      }| j                  |ddg      }t        j                  ||       y )N)rV   rW   rV   ru   rV   rW   r  )r   r*   r   r*   r   r   )Cat1Int1)rV   rW   ru   rV   rW   ru   )r   r   r   r*   r*   r*   )r  g333333?r  r  r_  g?)CatIntFactorr  r  r  r  r  r}   r   r*   )axisr   r  Tr  )	r	   r   r   r   r[  dropr   r   r   )rV   rW   r   r   s       r&   &test_merge_join_categorical_multiindexr  	  s    :OL"	A 	!A 9?K!0	A
 	!u~.x8A		 H }}eU^!}4HVVA66*V+F(F+ *OT
 #		A 	!A *OT
 "0	A 	!u~.x8A		 H }}eU^!}4HVVA66*V+F(F+r(   funcr   
merge_asof)rX  err_msg)r   r   r   r   )r   r   r   r   c                     t        ddgddgd      }t        ddgddgd      }d	|d
    d|d    d}t        j                  t        |      5   t	        t
        |       ||fi | d d d        y # 1 sw Y   y xY w)Nr*   r   r[   r\   r   r]   r   r  zCan only pass argument "r   " OR "z" not both\.r   r   r   r   r   getattrr4   r  rX  r  r}   r   r   s         r&   /test_merge_join_cols_error_reporting_duplicatesr  2
  s     Aq6A/0DQF!Q01E%gaj\
|<
PC	z	- 1D$001 1 1   A11A: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        y # 1 sw Y   y xY w)Nr*   r   r[   r\   r   r]   r   r  zMust pass "r   r  z"\.r   r  r  s         r&   ,test_merge_join_cols_error_reporting_missingr  C
  s     Aq6A/0DQF!Q01EF71:,c
:C	z	- 1D$001 1 1r  rX  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        y # 1 sw Y   y xY w)Nr*   r   r[   r\   r   r]   r   r  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r   r   rV   r  )r  rX  r}   r   r   s        r&   1test_merge_join_cols_error_reporting_on_and_indexr  T
  s~     Aq6A/0DQF!Q01E	:  
z	- 9D$8#889 9 9s   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                  ||       y )	Nr*   r/   )rC   r  r   TrC   )r   r   r   )rC   x_xz_xx_yz_yr   r}   r   r   r   s       r&   test_merge_right_left_indexr  h
  s    Aq678DQF%89E4GsKFQq65>q65>	
H &(+r(   c                  x   t        dgdgd      j                  ddg      } t        ddgi      j                  dg      }t        g g dt        j                        j                  ddg      }t	        | |dgd      }t        j                  ||       t	        || ddg	      }t        j                  ||       y )
Nr*   r   r   rV   rW   r,   Tr  r  )r   r   r   r+   r   r   r   r`   ra   r   r   s       r&   $test_merge_result_empty_index_and_onr  y
  s    
1#QC(
)
3
3S#J
?C
S1#J

)
)3%
0Cr+288<FFSzRH3cU=F&(+3u=F&(+r(   c                  @   t        g dddd      } t        g ddd      }t        j                  t        d      5  t	        | |d	       d d d        t        j                  t        d      5  t	        || dd
       d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)Nr  r*   r   )rV   rW   b_xr   (Passing 'suffixes' which cause duplicater   rV   r   )rQ  rP  r  r   r   r   r   r   rh  s     r&   .test_merge_suffixes_produce_dup_columns_raisesr  
  s    91Q78DIA./E	z)S	T #dEc"# 
z)S	T :eTcL9: :# #: :s   B/BB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                  ||       y )Nr3  r4  )rV   rW   rW   r   r*   r[   r   r   rV   r   )r*   r*   r*   r   )rV   r  r  rT  r   r  s       r&   3test_merge_duplicate_columns_with_suffix_no_warningr  
  sU     i+_EDQF+,E43'F,1K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        y # 1 sw Y   y xY w)N)r*   r*   r*   r*   )r   r   r   r   )rV   rW   rW   r  r   r*   r[   r   r   r  r   rV   r   r  rh  s     r&   Itest_merge_duplicate_columns_with_suffix_causing_another_duplicate_raisesr  
  sY     lL1;QRDQF+,E	z)S	T #dEc"# # #s   A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                  ||       y )Nr*   r   r[   r\   rV        \@r   r"  rp   ro  r?  rC   r   r   Tr   )r"  rp   r*   r   )ro  r?  r[   r\   )rC   r   rV   r  r   r   r   r   r   r  s       r&   %test_merge_string_float_column_resultr  
  s    
aVaV$eS%L.A
BC
aWr2h'#s
<C3TtLF	'7M1N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        y # 1 sw Y   y xY w)
Nrx  re     )r  r   r   i  zCan only pass argumentr   T)r   r   r  )df_1df_2s     r&   /test_mergeerror_on_left_index_mismatched_dtypesr  
  s^    3%#rd;D3%#se<D	z)A	B 5dDcUt45 5 5s   AA!c                     t        t        d            } t        | t        d      d      }t        dt        dd      i      }t        ||| d      }t        ||| j                  d      }t        j                  ||       y )Nr[   r  re  r   ry  r   )r
   r   r   r   _datar   r   )cir   r}   resr   s        r&   #test_merge_on_left_categoricalindexr  
  sl    	%(	#BBU1X./Ec5A;'(D
eR#
6CT5"((SAH#x(r(   r-   r.   c                    t        ddgddgd|       }t        t        j                  t        j                  gddgd|       }t        ||dd	
      }t        ddt        j                  t        j                  gddt        j                  t        j                  gt        j                  t        j                  ddgd|       }t	        j
                  ||       t        ||dd	
      }t        ddt        j                  t        j                  gt        j                  t        j                  ddgddt        j                  t        j                  gd|       }t	        j
                  ||       y )Nr*   r   )rz   rX   r,   r[   r\   )rz   r  rz   r   r   )rz   rX   r  )rz   r  rX   r;  )r-   r}   r   r   r   s        r&   test_merge_outer_with_NaNr  
  s%    aVaV4EBDrvvrvv.A?uME45g6Fq"&&"&&)266266*VVRVVQ*	

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

 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                  ||       y )	NrV   r*   ru   r   r   rv   r   )r  r  r  r  s       r&    test_merge_different_index_namesr  
  si    cA3ZuaSs';<DsQCjqc(<=E4c:F!Q/0H&(+r(   c                     t        g ddd|       }t        g ddd|       }|j                  ||      }t        g dddd|       }t        j                  ||       y )	Nr  r*   r   r,   r   r  r   r  r   r  r  r}   r   r   r   s         r&   test_merge_ear  
  s\    91-5IJDIA.6JKEZZ9Z-Fyqq9AUVH&(+r(   c           	      B   t        g ddd|       }t        g ddd| j                               }|j                  ||      }t        t        g d|       t        g d|       t        g d	| j                               d
      }t	        j
                  ||       y )Nr  r*   r   r,   r   r  r   r3  r4  r  )r   lowerr   r   r   r   r  s         r&   test_merge_ea_and_non_ear  
  s    91-5IJDIA.6J6P6P6RSEZZ9Z-F	)=>	)=>	)=)C)C)EF	
H &(+r(   r+   int64[pyarrow]c                 N   t        j                  d       t        dddgi|       }t        dddgid      }|j                  |      }|j	                         }t        j                  ||       |j                  |      }|j	                         }t        j                  ||       y )NpyarrowrV   r*   r   r,   r  )r   importorskipr   r   r   r   r   )r-   rn   ra   r   r   s        r&   !test_merge_arrow_and_numpy_dtypesr    s     	"	C!Q=	.B
S1a&M)9
:CXXc]FwwyH&(+YYr]FxxzH&(+r(   r   )r   r}   r   r   r3   zAmerica/Chicagoc                 &   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                  j	                  d      |d<   t        |dd  dd	gd      }|d   j                  j	                  d      |d<   t        |dd	t
        j                  gt
        j                  dd	gd      }|d   j                  j	                  d      |d<   |dk(  r!|j                  dg   j                  d      }n=|dk(  r|j                  ddg   }n&|dk(  r!|j                  ddg   j                  d      }|j                  |d|      }t        j                  ||       y )Ni  r]   r?  r2         r   ra  rb  )rq  rV   rq  r  r*   )rq  rW   r  )rq  rV   rW   r   Tr  r}   r   r   r   )r4   r5   r   r   as_unitr   r;   ilocr[  r   r   r   )r3   r   valsr`   ra   r   r   s          r&   (test_merge_datetime_different_resolutionr    s|   
 	T1bR(
T1bR(
T1bR(D
 $r(#s4
5C3x{{""4(CH
$qr(#s4
5C3x{{""3'CHt3RVV*<BFFCQTCUVWHSM$$,,T2HSM
g~==!%11t1<	==!Q(	==!Q(44$4?YYssY,F&(+r(   c                  
   t        dddgi      } t        ddgit        j                  ddgdg      	      }t        ddgdt        j                  gd
      }| j                  |dgdd      }t        j                  ||       y )Ncolry  rz  rW   r3  )ry  )re  rE  )r  r   )r  rW   Tr}   r   )r   r   rV  r   r;   r   r   r   )rn   ra   r   r   s       r&   "test_merge_multiindex_single_levelr  +  s    	EC:&	'B
C5\$$ff%5eWEC #s3-@AHXXcE7&XIF&(+r(   )r}   r   r   r   r   on_indexleft_uniqueleft_monotonicright_uniqueright_monotonicc                    ddg}|r|j                  |rdnd       n|j                  |rdnd       ddg}|r|j                  |rdnd       n|j                  |rdnd       t        d|i      }t        d|i      }|r(|j                  d      }|j                  d      }ddd}	nddi}	t        ||f| |d	|	}
|r |j	                         }|j	                         }| d
v r| dv r|||}}}n|||}}}| dk(  rMt        |d   j                        j                  |d   j                        }|d   j                  |      }||   }|r|j                  d      }|s+|d   j                         }|j                  |d   j                  d      }|j                  t        j                        }|d   j                  |j                        }|j!                         }n| dk(  r|d   j                         }|d   j                         }|j#                  |d      }|j                  t        j                        }|j$                  j                  j                  |j                        }t        d|i      }|j                  d      }|rj                  d      }nj	                  d      }t'        j(                  |
|       y )Nr   r[   r\   r*   rz   Tr   r   rZ  )r}   r   r   )r}   r   r   )
fill_valuer   r  )appendr   r   r   r[  setrJ  intersectionisinrr  r   rI  r   r   intpr  r  mulr   r   r   )r   r   r  r  r  r  r  r}   r   	on_kwargsr   r   otherother_uniquekeep_values	keep_maskother_value_countsrepeatsleft_countsright_countsexpected_countss                        r&   test_merge_combinationsr  8  s    q6DAQ/AQ/FE/Qq1/Qq1eT]#Duen%E~~e$&#'=	5M	4@Cd@i@F!!!#
((##,0%\eH,14\eH'>d5k001>>uU|?R?RSK ,,[9I	*H++E2H!&u!:!:!<(00%1G1GTU0VGnnRWW-G--gnn=H((*H	5k..0U|002%//,1/E)009"((//667M7MNeX./''.%%e,''T'2&(+r(   c                     t        dt        j                  gt        j                               } t        dg      }t        dgd      }t        j                  t        d      5  | j                  |      }d d d        t        j                  |       t        j                  t        d      5  |j                  |       }d d d        t        j                  ||j                  d	             t        dg      }t        d
gdgd      }| j                  |      }t        j                  ||       |j                  |       }t        j                  ||j                  d	             y # 1 sw Y   xY w# 1 sw Y   xY w)Nra  r,   r_  r   r.   r   zYou are mergingr   rU  r*   )r   r   r;   r4   
Int64Dtyper   ru  r  r   r   r   r  s       r&   !test_merge_ea_int_and_float_numpyr     s&   
S"&&M
9C
SE
C!G4H		#	#K7H	I  3 &(+		#	#K7H	I  3 &(//)"<=
SE
C!qc9HYYs^F&(+YYs^F&(//)"<=      s   %E)0E5)E25E>c                 4   t        j                  d       t        dddgi|       }t        ddit        ddg|             }|j	                  |ddd	
      }t        t        ddg|       dt        j                  gd      }t        j                  ||       y )Nr  rV   rW   r,   r*   ru   r   Tr}   r   r   )
r   r  r   r   r   r   r   r;   r   r   )r  r}   r   r   r   s        r&   test_merge_arrow_string_indexr    s    
	"cC:&.>?DsAheS#J>N&OPEZZs&ZIFc3Z'78266{KH &(+r(   r  right_emptyc                 |   t        ddgddg      }t        ddgg d      }| r|j                  d d }|r|j                  d d }t        ||dgd      }t        ddgg d	      }| r|r|j                  d d }n-| rt        j                  |d<   n|rt        j                  |d
dg<   t        j                  ||       y )Nr*   r   ry  rz  r  )ry  re  r  r   r   )ry  rz  re  r  re  r  )r   r  r   r   r;   r   r   )r  r  r`   ra   r   r   s         r&   $test_merge_empty_frames_column_orderr    s     AaS3*
5C
AaS/
:Chhrlhhrl373F1#/CDHk==!$		!vv#s&(+r(   c                 R   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  |j                  |d| 
       d d d        d|d   j                   d|d   j                   d}t        j                  t
        t        j                  |      	      5  |j                  |d| 
       d d d        y # 1 sw Y   xxY w# 1 sw Y   y xY w)Nrz   r*   zdatetime64[ns]r,   ztimedelta64[ns]r  r  zG columns for key 'key'. If you wish to proceed you should use pd.concatr   r   )	r   r   r-   r   r   r   r  r  r   )r   r}   r   r   s       r&   !test_merge_datetime_and_timedeltar    s'   eVQI5EFGHDufaS0ABCDE &d5k&7&7%8eEl>P>P=Q RQ 	Q  
z3	8 -

5U
,- &eEl&8&8%9tE{?P?P>Q RQ 	Q  
z3	8 -DU,- -- -- -s   D3DDD&)r   rf   )]r   r   r   r  numpyr   r   pandas.core.dtypes.commonr   r   pandas.core.dtypes.dtypesr   pandasr4   r	   r
   r   r   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.core.reshape.concatr   pandas.core.reshape.merger   r   r'   r7   r=   rP  rM   rQ   rT   rb   rd   r  r]  r}   r   r  rD  rE  r6  rQ  rR  rT  rC  rI  rK  rZ  r;   rc  rg  rk  tuplern  rx  rz  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  )rX  s   0r&   <module>r     s	   
 
   7      -	 z|)?@ A z|)?@ A },BC D 	 	P Pf*	Gl0 l0^    S0 S0l : : > >40 40n =?=U=UVTUAq6K0V#sc
M5|\2E 	3  		,		, 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"bff-=_U	
 +r2rvv.663S1		
*,+*, JJ	J vw&7!a9P%QRJ SJ P	c5:STJJ uen5T5M2 , 3 6 ,F,,,?<," !S2, 3,*5,p '<!89	-	</HI$	/*m1LM1 :1 '<!89
S	J67
c	Y561 :1 '<!89		t	9 :	9,"	,	:,#,5	) 4/2, 3,8,,, 7,<"=>, ?,  CD&789, : E,2
,  CD$/dE]3u6)D%=9$7*T5M:?, ; 8 : 7 4 0 E?,D>.	, e}5u6, 7 6,*  CD- E-a Ws   *[<
