
    .i                       d dl mZm Z mZ d dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dlmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dl m!Z!m"Z" dd	Z#e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+ G d d      Z,ejZ                  j]                  dej^                  D  cg c]  }  eg d| d       c}  eg dg dd       ed dd       eg dd      gz   d  !      d"        Z0ejZ                  j]                  d#d$d%gddd&d&d'fd(dd$d%gdd&d)d'fddd$d%gd)d&d'fd$d%gddd&d&dfd*dd$d%gdd&d)dfddd$d%gd)d&dfg      d+        Z1d, Z2ejZ                  j]                  d-d d d.d/id0d1gfd d d.d2id d1gfd d d.d3id4d5gfd d d.d6d7gid4d5gfd8d d.d9id8d gfd:d:d.d;id<d:gfd=d=d.d9id=d>gfd8d8d.d;id?d8gfd8d=d.d;id8d=gfd8d8d.d@id8d?gfd d d.dAidBd gfd8d8i d?dCgfd d i d4d5gfg      dD        Z3ejZ                  j]                  dEdFg dGdHdIejh                  gg dJdKfd$g dLdMdHdIejh                  gejh                  dNdOdPgdKfg      dQ        Z5ejZ                  j]                  dRg dS      dT        Z6ejZ                  j]                  d.dUdFhd d dVg      dW        Z7erdXndYZ8ejZ                  j]                  dZd8d8d[d\e8 d]fd8d8 e9d8      d^fg      d_        Z:ejZ                  j]                  d`dadbg      ejZ                  j]                  dcd)d&g      dd               Z;de Z<df Z=dg Z>dh Z?ejZ                  j]                  didjdkg      dl        Z@dm ZAejZ                  j]                  dndodpg      ejZ                  j]                  dqd8d)drdsdtgfd8d)dudvdwgfg      dx               ZBejZ                  j]                  dndodpg      ejZ                  j]                  dqdsd8idvdwgfdvd8idsdtgfg      dy               ZCejZ                  j]                  dndodpg      ejZ                  j]                  dzdwd)idtd)ig      d{               ZDd| ZEd} ZFd~ ZGd ZHd ZId ZJd ZKd ZLejZ                  j]                  dddg      d        ZMd ZNd ZOd ZPejZ                  j]                  dddg      d        ZQejZ                  j]                  dddg      d        ZRd ZSd ZTejZ                  j]                  dd)d&g      ejZ                  j]                  dd)d&g      ejZ                  j]                  dd)d&g      ejZ                  j]                  dd)d&g      ejZ                  j]                  dd)d&g      d                                    ZUd ZVd ZWejZ                  j]                  dd)d&g      ejZ                  j]                  dd)d&g      d               ZXejZ                  j]                  dg d      d        ZYd ZZejZ                  j]                  d.dd/g      d        Z[d Z\d Z]d Z^yc c} w )    )datedatetime	timedeltaN)PY314)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       c/var/www/app/trading-bot/venv/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dgddgddgd      } t        g dg dg dd	      }| |fS )
Nr      r   ab)col1col_conflictcol_left)r+   r            )r   r   r   r   r   )r.   r/   	col_right)r   df1df2s     r'   dfs_for_indicatorr8   4   sB    
aVaV#sT
UC
#+(	
C 8Or)   c                   
   e Zd Zej                  d        Zej                  d        Zej                  d        Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej8                  j;                  dddddddddddddg      d         Zd! Zd" Z ej8                  j;                  d# e!d$gd%&       e!d$gd'&       e!d(g       e!d)g       e!dg       e! e"jF                  d*      g       e! e"jF                  d*d+,      g      g      ej8                  j;                  d- e!d$gd%&       e!d$gd'&       e!d(g       e!d)g       e!dg       e! e"jF                  d*      g       e! e"jF                  d*d+,      g      g      d.               Z$ej8                  j;                  d# e!d$gd%&       e!d$gd'&       e!d(g       e!d)g       e!dg       e! e"jF                  d*      g       e! e"jF                  d*d+,      g      g      ej8                  j;                  d/ e!e"jJ                  gd'&       e!e&jN                  gd0&       e!e&jN                  gd1&       e!e"jP                  g      g      d2               Z)d3 Z*ej8                  j;                  d4d5g d6fdg d7fg      ej8                  j;                  d8d9d:g      d;               Z+d< Z,d= Z-ej8                  j]                  d>      d?        Z/d@ Z0dA Z1ej8                  j;                  dBg dC      dD        Z2ej8                  j;                  dBg dC      dE        Z3dF Z4dG Z5dH Z6dI Z7dJ Z8dK Z9dL Z:dM Z;dN Z<dO Z=dP Z>dQ Z?dR Z@dS ZAdT ZBdU ZCej8                  j;                  d8d:dVg      ej8                  j;                  dW eDg dX       eDg dY      f eEg dZd[&       eEd\d]d^e"jP                  e"jP                  e"jP                  gd[&      fgeFj                  D  cg c].  }t        g d_|&      t        g d`tL        j                  &      f0 c}}}}  eJj                  g da       eJj                  dbdcdde&jN                  e&jN                  e&jN                  g      f eLg dedfg       eLd\dhdie"jP                  e"jP                  e"jP                  gdfg      f eMg dj       eMdkdldme"jP                  e"jP                  e"jP                  g      f      dn               ZNdo ZOej8                  j;                  d8d9d:g      dp        ZPdq ZQdr ZRds ZSytc c}}}} w )u	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data2r>   r+   r   r(   r   r    r!   standard_normal)selfdfs     r'   rD   zTestMerge.dfB   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$   r2   )r#   r$   r   )r=   r>   valuerA   rC   s    r'   r7   zTestMerge.df2Q   sC    %+%a26..q1AA"E
 	
r)   c                 z    t        g dt        j                  j                  d      j	                  d      d      S )Nr,   r-   cderM   r,   r      keyv1)r   r   r    r!   rB   rH   s    r'   leftzTestMerge.left[   s4    :ii++A.>>q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 )
Nr,   r+   r   r   int64)indexdtypeT
left_indexright_indexrV   r   r   tmassert_frame_equal)rC   df_emptydf_aresultexpecteds        r'   test_merge_inner_join_emptyz%TestMerge.test_merge_inner_join_emptyd   sS    ;#1vq!fGDx$DIc2Yg6
fh/r)   c                 h    t        ||      }t        ||ddg      }t        j                  ||       y )Nr=   r>   onr   r\   r]   )rC   rD   r7   joinedexps        r'   test_merge_commonzTestMerge.test_merge_commonl   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   r1   r   r+   r   r1   )r   astypefloatr   r\   r]   rC   rR   rightra   r`   s        r'   test_merge_non_string_columnsz'TestMerge.test_merge_non_string_columnsq   sK     ,<P
 E"tU#
h/r)   c                     |j                  d      }|j                  d      }t        ||d      }t        ||d      j                  d      }t        j                  ||       y )Nr=   rd   )	set_indexr   r\   r]   )rC   rD   r7   rR   ro   r`   ra   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 )NrJ   r   rN   rO   v2r2   rL   r-   rK   r,   rU   rP   TrR   F)left_onrY   howsortro   )right_onrX   ry   rz   )
r   r   r    r!   rB   r   r\   r]   loccolumns)rC   rR   ro   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 )NrJ   r   rN   rO   ru   r2   rv   rw   rP   Tinnerrx   rY   ry   rd   )r{   rX   ry   )r   r   r    r!   rB   r   joinr|   rU   r\   r]   r}   rC   rR   ro   r`   ra   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                     t        dt        j                  j                  d      j	                  d      ig 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}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)Nru   r   r2   rv   rw   z&Must pass right_on or right_index=TruematchT)rX   z$Must pass left_on or left_index=True)rY   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothrP   )rx   re   z)len\(right_on\) must equal len\(left_on\)r=   r>   rx   r{   )r   r   r    r!   rB   pytestraisespderrorsr   r   
ValueError)rC   rD   r7   rR   ro   msgs         r'   test_merge_misspecifiedz!TestMerge.test_merge_misspecified   s?   299((+;;A>?&
 7]]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s0   /E7E?E(4E4EE%(E14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   rR   Fr=   r>   ry   rX   rY   z=left_index parameter must be of type bool, not <class 'list'>r   r   r   r   )rC   rD   r7   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 )NrP   rd   r   v1_xv1_y)r   value_countssumr   )rC   rR   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)foobarbazr   r+   r   r1   r2   )lkeyrG   )r   r   quxr   )r3      rN      )rkeyrG   r   r   outerT)rx   r{   ry   rz   r   r   r   namer   r   r1   r+   r2   value_xr   r3   r   rN   value_y)r   r   r   r   nanr\   assert_series_equal)rC   rR   ro   r   rh   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k(  j                         sJ d|d<   |d   dk(  j                         sJ y )Nr   r+   r,   r-   rF   rw   r   r   rK   rL   TrW   r   r,   peekaboorL   )r   r   r   all)rC   rR   ro   r   s       r'   test_merge_copyzTestMerge.test_merge_copy  s    qq)r;E2%)DtUtFsS	Q##%%% sc
e#((***r)   c                 T   t        dddt        d            }t        dddt        d            }t        ||d	d	
      }t        j                  |d   j
                  |d   j
                        sJ |s3t        j                  |d   j
                  |d   j
                        sJ y y )Nr   r+   r   rF   rw   r   r   r   TrW   r,   rL   )r   r   r   r   shares_memory_values)rC   using_infer_stringrR   ro   r   s        r'   test_merge_nocopyzTestMerge.test_merge_nocopy  s    qq)r;E2%)DtUtF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   r1   r3   rP   rG   rG   rP   r}   r+   r+   r   r1   r2   r3   r   )rP   rvaluer   re   ry   	r+   r+   r+   r+   r   r   r1   r2   r3   r   r+   r   r1   r2   )	r   r+   r   r+   r   r   r1   r2   r3   )rP   rG   r   )rG   rP   r   )	r   r   r   r   r   arrayr   r\   r]   )rC   rR   ro   rg   ra   s        r'   "test_intelligently_handle_join_keyz,TestMerge.test_intelligently_handle_join_key  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+   rF   rO   r      r   ry   rP   rT   TFr   boolvalrx   r{   ry   key_0)r   r   rV   r   r   int)rC   r6   r7   rD   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   r3   r   rG   rP   rT   r}   rV   r   r   rZ   r   r   r   r   r   r   rV   r   r1   )r   r+   r+   r   r   r1   T)rX   r{   ry   r   )r   r   aranger   r   r\   r   notnar   r   r   rT   )	rC   rR   ro   rP   r   r   r   r   ra   s	            r'   test_handle_join_key_pass_arrayz)TestMerge.test_handle_join_key_pass_arrayE  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)Nxr,   rw   yr-   rK   z>No common columns to perform merge on. Merge options: left_on=z, right_on=z, left_index=Fz, right_index=r   )r   nowr   r   r   r   r   )rC   dtr6   r7   r   s        r'   &test_no_overlap_more_informative_errorz0TestMerge.test_no_overlap_more_informative_errore  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  r3   r+   r   r1   r2   r   r,   rw   r   r-   rK   )r,   r-   q)rK   rL   rM   fghrL   r   r   _check_merge)rC   r   dt2dt3dt4r6   r7   s          r'   test_merge_non_unique_indexesz'TestMerge.test_merge_non_unique_indexest  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   r3   r+   r   r1   r   r,   r-   rK   rL   rw   r   )rM   r   r   z hir   )rC   r   r   r   r6   r7   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   rP   rR   r   ro   r[   )rC   rR   ro   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)   c                     t        g |d d       }|j                         }|j                  ||      }t        j                  ||       y )Nr   rw   r   )r   copyr   r\   r]   )rC   rU   	join_typerR   ro   r`   s         r'   test_merge_empty_dataframez$TestMerge.test_merge_empty_dataframe  sA    5!9-		5i0
fd+r)   kwargTrW   r   rX   r{   r,   rx   rY   r   c                     t        g d      }t        g d      }t        g dt              }t        ||fd|i|}t        j                  ||       y )Nr,   r-   rK   r   r   r   zr,   r-   rK   r   r   r   r   ry   )r   objectr   r\   r]   )rC   r   r   rR   ro   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   r1   r2   r3   r   rN   r   	   r   r1   rZ   r+   r2   rN   r   r3   r   r1   r   r   r   r   c                     t        fddi|}t        j                  ||        t        fddi|}t        j                  ||        y )Nry   r   rR   rf   rh   r   r`   rR   ro   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 )Nry   ro   r   rf   r  s      r'   check2z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2  O    4=G=u=F!!&#.4=G=u=F!!&#.r)   TrW   r   r   r,   r   r   r+   r   r   )r   r   r   r   r   )rC   exp_outr   r  r  r   rR   ro   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  r1   rZ   r   r   c                     t        fddi|}t        j                  ||        t        fddi|}t        j                  ||        y )Nry   r   ro   rf   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 )Nry   rR   r   TrW   r   r   r,   r   r   rf   )	rh   r   r`   r  r  r   r
  rR   ro   s	      r'   r  z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check2  s    4<F<e<F!!&#.4=G=u=F!!&#.  $D9#55S1	 ' vu%w&'r)   )r   r   r   r   r   rU   rl   )rC   r  r  r   r
  rR   ro   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)   series_of_dtyper+   rT   rZ   Int64gGz?r   
2018-01-01
US/Easterntzseries_of_dtype2c                 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   rP   rG   r   r   rZ   rP   r   r   rd   )r   r   dtypesr   r\   r]   )rC   r  r  rD   r^   ra   actuals          r'   test_merge_empty_framez TestMerge.test_merge_empty_frame  s    4 #.>?G$
 bq6BIIe$45!		'(:;!		'(:;
 2
 u-
fh/r)   series_of_dtype_all_narm   r   c                     t        ||dddg      }t        ||dddg      }t        |||dg d      }|j                  |d      }t        j                  ||       y )Nr   rP   rG   r   r  rd   r[   )rC   r  r  df_leftdf_rightra   r  s          r'   test_merge_all_na_columnz"TestMerge.test_merge_all_na_column;  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   rF   sizer   r+      i  r2   i  r1   i  r3   )var1var2var3rN   )r'  var8r'  Fre   rz   )r   r    r!   integersr   r   	from_dictr'  uniquerz   r   r\   r]   r   )rC   rL   rD   r'  newr`   rh   s          r'   test_merge_nosortzTestMerge.test_merge_nosorte  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)   )rz   valuesF)r+   r+   r   r+   r+   )r   r+   r+   r+   r+   ry   rR   ro   c                     t        dg di      }|j                  |d||      }t        |dg      }t        j                  ||       y )Nr,   )r+   r   r+   )re   ry   rz   r   r[   )rC   rz   r/  ry   rD   r`   ra   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r4  i3r4  _)re   rsuffix        r   r+   )r4  r5  i1_r7  NrZ   r   r4  r5  r<  r7  r   Fcheck_dtype)r   r   r   r   r   r   rr   reset_indexr}   rl   r\   r]   rC   r6   r7   r`   ra   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      ?      ?r3  gffffff?r6  r8  r4  )r9  re   r;  r:  )r4  r<  r5  r7  r=  )r   r   r   r   r\   r]   rA  s        r'   test_merge_nan_right2zTestMerge.test_merge_nan_right2  s    1vc3Z8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 N )rC   NotADataFrames    r'   _constructorz=TestMerge.test_merge_type.<locals>.NotADataFrame._constructor  s	    $$r)   N)__name__
__module____qualname__propertyrM  )rL  s   r'   rL  rH    s    % %r)   rL  r=   rd   )r   r   
isinstance)rC   rD   r7   nadr`   rL  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      	      }t        ||gd
      }t        ||gd
      }t        t        ddddd      t        ddddd      gt        dd      t        dd      gdt              }t        j                  ||       y )Ni     r3   8   r   iW  )rL   tr   r   Tignore_indexrZ   )	r   r+  r   r   r   r   r   r\   r]   )rC   rL   rD   r`   ra   s        r'   test_join_append_timedeltasz%TestMerge.test_join_append_timedeltas  s     D"aB/0	!U8K7LM
 tDz*RG$/Qd3tRAr2HT2q!R4PQ5)9Q+>? 
 	fh/r)   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Brw   rrR   )r9  ry   AB)00r)
r   timedelta64r   r   r   r   r   NaTr\   r]   )rC   tdlhsrhsr`   ra   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rU   r   zdatetime64[]rj  r   rk  zdatetime64[s]Tr   natrZ   rq  rt  r   )r   r   rl   to_framerV   r   r   r   r   corearraysDatetimeArray_simple_newr\   r]   )
rC   ri  r6   serrV   	exp_dtyper7   r`   rt  rh   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)Nrq  rr  rs  rt  ru  zm8[rv  rw  z/Supported resolutions are 's', 'ms', 'us', 'ns'r   zm8[s]Tr   rx  rZ   ry  r   )r   r   r   r   r   rl   rz  rV   r   r   r   r\   r]   )	rC   ri  r6   r  rV   r   r7   r`   rh   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   rP   rQ   ru   )rP   r   r   )rP   r   r   )rP   rQ   ru   v3v4)rP   r   r   r   r   )r=   r   r   z?Data columns not unique: Index\(\['foo'\], dtype='object|str'\)r   )r   r}   r\   r]   r   r   r   r   )rC   rD   r7   ra   r   s        r'   &test_overlapping_columns_error_messagez0TestMerge.test_overlapping_columns_error_message  s    y	KL	)LM*
+ 
 ?
eBnh7 -P]]: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   r  periodsr  r+   r   20151011r1   r   r2   r  rP   r   r   )r   r   
date_ranger   r   r   r\   r]   rn   s        r'   test_merge_on_datetime64tzz$TestMerge.test_merge_on_datetime64tz5  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      d      }t        ddgt        j                  d	ddd      d      }t        g d
g t        t        j                  dddd            t        j                  t        j                  gt        t        j                  d	ddd            d      }t        ||dd      }t        j                  ||       |d   j                  dk(  sJ |d   j                  dk(  sJ y )Nr+   r   r  r  ro  )r  r  ri  r   r1   r  r   r  rP   r   r   r   zdatetime64[ns, US/Eastern]r   )	r   r   r  r   rd  r   r\   r]   rV   rn   s        r'   test_merge_datetime64tz_valuesz(TestMerge.test_merge_datetime64tz_valuesN  s%   1vl
 1vl
  j!SWX FF	 FFj!SWX
" 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UTCr  2018rZ   g      @2019)r   rG   date2r   r   r   rd   )r   r   date2_xr   date2_y)	r   DatetimeTZDtyper   r   r   r   rm   r\   r]   )rC   dtzro   rR   r`   ra   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:00r2   r   zEurope/Madrid)r  freqr  r   r   r+   rG   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00r   )r   rG   r  r   ry   re   rN   r1   )r   r   r   )r   r   r  to_datetimer   tz_localize
tz_convertr   r   r   r\   r]   rA  s        r'   +test_merge_datetime64tz_with_dst_transitionz5TestMerge.test_merge_datetime64tz_with_dst_transition  s    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rU   r}   Tr   rX   rY   ry   rZ   r   r+   pnum_xpnum_yr}   rU   )r   period_ranger   r   r   r   r   r   r   r   r   rT   repeatreshape
sort_indexrU   r\   r]   )rC   rU   rD   r7   r`   ra   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   rj  r  r+   r   r  r1   r   r2   r  rP   r   r   )r   r   r  r   r   r   r\   r]   rn   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	g t        |      t        j                  t        j                  gt        |      d
      }t        ||dd      }t        j                  ||       |d   j                  dk(  sJ |d   j                  dk(  sJ y )Nr+   r   r  rj  r  r   r1   r  r   r  rP   r   r   r   z	Period[D]r   )	r   r   r  r   rd  r   r\   r]   rV   )rC   rR   ro   exp_xexp_yra   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@ 1T%[1"&&1FF1T%[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   r1   r2   r3   r+   r   r,   r-   r1   r2   r3   )r.   col_conflict_xr0   col_conflict_yr4   )	left_onlyboth
right_onlyr  r  r  r  r  r  
categories_merge)r.   r  r0   r  r4   r  r.   r   Tre   ry   	indicatorcustom_namer   )	r   r   r   r   r
   r   r\   r]   rename)
rC   r8   r6   r7   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   r.   r   r3   r  r   )rC   r8   r6   r7   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 )
Nr.   rR   Tr  r  ro   r  r   r  )r   r  r   )rC   r8   r6   r7   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  r.   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  )r.   custom_column_namez:Cannot use name of an existing column for indicator columnr  r   r   r   r   r   )rC   r8   r6   r8  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+   r,   r-   r.   col2)r+   r+   r1   )r-   r   r   )r   r+   r+   r1   r,   r-   r   r   )r  r  r  r  r  r  r  r.   r  r   Tr  r   r
   r   r\   r]   )rC   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   r2   rw   r,   r-   rK   rL   rM   )meowbarkum... weasel noise?naychirpr,   rK   r3   T1:1)rX   rY   validate)r  r  r  r  )a_xr-   a_yrK   r  
one_to_oner   r,   )re   r  r-   r,   rK   r  )rX   r{   r  rM   mooone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger   cowr1   )rz   many_to_onezAMerge keys are not unique in left dataset; not a one-to-one mergemany_to_manyzCMerge keys are not unique in right dataset; not a many-to-one mergezBMerge keys are not unique in left dataset; not a one-to-many mergez"jibberish" is not a valid argument. Valid arguments are:
- "1:1"
- "1:m"
- "m:1"
- "m:m"
- "one_to_one"
- "one_to_many"
- "many_to_one"
- "many_to_many"	jibberish)r,   r,   r-   r-   )r   r+   r   r+   r,   r,   r-   )r   r+   r   )r  r  r  )r,   r-   rL   )r  r  r  zQMerge keys are not unique in either left or right dataset; not a one-to-one merger-   )r   r   r   r   r\   r]   rr   r   r   r   r   r   )rC   rR   ro   	left_copy
right_copyr`   ra   
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                 H   t        dg di      }t        dg di      }t        j                  t        d      5  t	        ||d       d d d        t        j                  t        d      5  t	        ||d	       d d d        t        j                  t        d
      5  t	        ||d       d d d        t        j                  t        d
      5  t	        ||d       d d d        t        dg di      }t        j                  t        d      5  t	        ||d       d d d        t        j                  t        d      5  t	        ||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   xY w# 1 sw Y   mxY w# 1 sw Y   y xY w)NrP   )r+   r+   r   )r+   r   r   z#Duplicates in left:
  key
   1 ...
r   r  )r  z"Duplicates in left:
  key
   1 ...z1:mz#Duplicates in right:
  key
   2 ...zm:1r   z#Duplicates in right:
  key
   1 ...r   r   r   r   r   )rC   rR   ro   s      r'   !test_merge_validate_error_messagez+TestMerge.test_merge_validate_error_message<  sV   %+,5),-]]:-UV 	/$.	/]]:-ST 	/$.	/]]:-TU 	/$.	/]]:-TU 	/$.	/ 5),-]]:-ST 	/$.	/]]:-TU 	/%.	/ 	/	/ 	/	/ 	/	/ 	/	/ 	/	/ 	/	/ 	/sG   E,E(E4F FFE%(E14E= F	FF!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   rd   )r   r   errstater   )rC   r,   s     r'   )test_merge_two_empty_df_no_division_errorz3TestMerge.test_merge_two_empty_df_no_division_errorP  s@    BRb12[[( 	'!Q:&	' 	' 	's	   >Ar   zindex,expected_indexr+   r   r2   )r+   r   r2   NNN)
2001-01-01
2002-02-02
2003-03-03zM8[ns]r  r  r  r   )r+   r   r1   NNN)r+   r   r   r1   r1   r2   r  r  r  )r  
2001-01-02
2001-01-03rj  )r  r  r  )1D2D3Dr  r  r  c           
         |j                   dk(  r |j                   dk(  r|j                  d      }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 )Nfloat32float64r	  r,   rP   rw   r-   r  rP   Tr   )r   r   r   r+   r+   r+   r   r   r   r1   r2   r3   r,   rP   r-   r   )inplace)	rV   rl   r   r   r   r   rr   r\   r]   )rC   ry   rU   expected_indexr6   r7   r`   ra   s           r'   $test_merge_on_index_with_more_valuesz.TestMerge.test_merge_on_index_with_more_valuesV  s    ^ ;;)#(<(<	(I+229=N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+   r   r-   r+   r   r1   N)r   r+   r+   r   )r+   r   r   r1   r#  r   r+   r   r  rP   Tro   r   r   r   r   r   r\   r]   rn   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(   rV  )animal	max_speedquetzalP   r.  r/  r   ro   r[   )rC   ry   left_dfright_dfr`   ra   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  r   r-   r   rw   rP   Tro   r   r(  )r,   r,   r-   rK   )r+   r+   r   r1   r#  r   r+   r   r   )
r   r
   r   r   r   r   r   reindexr\   r]   r   s        r'   8test_merge_take_missing_values_from_index_of_other_dtypezBTestMerge.test_merge_take_missing_values_from_index_of_other_dtype  s    "?tE{K
 3	*2B?2STE5dP$"#78!
 aBFF#
 ##,=#>
fh/r)   c                 b   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                  _         |j                  |       y )	Nr   r2   r3   r+   r  r   r3   r2   r  F)
r   r   r   r  _mgrblocksr/  flags	writeabler   )rC   r?   r@   blocks       r'   test_merge_readonlyzTestMerge.test_merge_readonly  s    IIbM!!&)A-7P
 IIbM!!&)A-7K

 ZZ&& 	1E+0ELL(	1 	Er)   c                    t        t        j                  d      j                  d      dz   g d      }t        t        j                  d      j                  d      dz   g d      }d}t	        j
                  t        t        j                  |      	      5  |j                  |d
       d d d        y # 1 sw Y   y xY w)Nr   r:  r+   r  r   r;  r  z_'full' is not a valid Merge type: left, right, inner, outer, left_anti, right_anti, cross, asofr   fullr   )
r   r   r   r  r   r   r   reescaper   )rC   r?   r@   r   s       r'   test_merge_how_validationz#TestMerge.test_merge_how_validation  s    IIbM!!&)A-7P
 IIbM!!&)A-7K
1 	 ]]:RYYs^< 	+KK6K*	+ 	+ 	+s   B66B?N)TrN  rO  rP  r   fixturerD   r7   rR   rb   ri   rp   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r  r  r   r   	Timestampr  NAr   r   rd  r   r.  r1  rB  rE  filterwarningsrT  r[  rh  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r\   ALL_REAL_NUMPY_DTYPESr   r  r   from_tuplesr   r   r&  r*  r4  r8  rA  rF  ).0dtypr   r   s   0000r'   r:   r:   A   s+   ^^  ^^
 
 ^^
 
0+

00H8G*H.8 7(
+M0&2.K@*,, [[5S1D1-		
..-^('T [[A3g&A3g&D6NE7OD6NLBLL./0LBLL,?@A	
 [[A3g&A3g&D6NE7OD6NLBLL./0LBLL,?@A	
000$ [[A3g&A3g&D6NE7OD6NLBLL./0LBLL,?@A	
 [[ BEE7'*BFF87+BFF88,BFF8		
0*0*@@ [[e_5o7NO [[UVW$560 70C*0 [[W	1	10&0  [[V%KL+ M+: [[V%KL+ M+2002%GN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000 [[UVW$56	0 7	00*+cs   3Ur:   c                     dD ]q  }dD ]j  }| j                  |||      }t        | j                         |j                         ||      }|j                  d      }t	        j
                  ||d       l s y )N)r   rR   r   )TFry   rz   rU   F)check_names)r   r   r@  rr   r\   r]   )r   r   ry   rz   r`   ra   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edg      d        Z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 ej0                  d"dd#$      d%d&gf ej0                  d"dd#$      ddgf ej0                  d"dd#$      d'd
gf ej0                  d(d)       ej0                  d(dd*+      fg      d,        Zej                  j                  d-ddgd.fg d/fdgd0fdgd1fg      d2        Zej                  j                  d-d3d4gd.fg d/fd4gd0fd3gd1fg      d5        Zej                  j                  d6d/g d7g d8gfd.g d8g d7gfd1g d7g d8gfd0g d8g d7gfg      d9        Zd: Zej                  j                  d;g d<      d=        Zd> Zd? Z d@ Z!yA)BTestMergeDtypesrV   categoryc                 r   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dg|	      }t        d|i      }t        ||d      }t	        |j
                  j                        s"t        |j
                  j                        sJ y y )Nr   r   rV  r+   r         ?       @uint64rZ   int32)r]  r^  Crj  EFr]  rd   )r   r   rl   r   r   r]  rV   r   )rC   rV   rR   
right_valsro   r`   s         r'   test_differentzTestMergeDtypes.test_different  s    U^UEN+22:>V3ZQF(3QF'2	
 UEN%8
3
+,
 tUs+vxx~~./&((..2QQQ2Q.r)   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   rZ   r   r   r$     )k1k2v)r   r   )r+   r   ru   r3   rN   rw   rd  re  rd   r   r  r   r+   Tr)  	mergesort)kindr$  )r   rV   r   r   r   rT   r   rN  r   r   rh  r   r|   rd  re  r\   r]   sort_values)
rC   any_int_numpy_dtypera  dtype1dtype2rR   rU   ro   r`   ra   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   rX  rY        @XYrX  ro  r+   r1   r   rY  c                     t        d|i      }t        d|i      }t        |      }|j                  |dd      }t        j                  ||       |j                  |dd      }t        j                  ||ddg          y )Nrq  rr  r   r[   )rC   int_vals
float_valsexp_valsr]  r^  ra   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 )NrX  rY  rF   r   rO   rP   rQ   r   r      )rP   ru   ru   rR   r   g      i@r  )r   r   r   r   r\   r]   rA  s        r'   test_merge_key_dtype_castz)TestMergeDtypes.test_merge_key_dtype_cast@  s    c
2r(;eT]S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      }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)Nrq  r   rr  )皙?g      @ro  r1   ro  rp  z:the float values are not equal to their int representationr   r   )r   r\   assert_produces_warningUserWarningr   r]   r   r   )rC   r]  r^  ra   r   r`   s         r'   !test_merge_on_ints_floats_warningz1TestMergeDtypes.test_merge_on_ints_floats_warningK  sU   
 sI&'sO,-A3cU34J''3? 	4WWQcW:F!!&(3	4 ''3? 	@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 NrP   TFrZ   rd   )r   r   r   r   r\   r]   rC   r6   r7   ra   r`   s        r'   (test_merge_incompat_infer_boolean_objectz8TestMergeDtypes.test_merge_incompat_infer_boolean_objectd  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_missingo  s     eRVV'<F KLMu./edE]36BsCE*
fh/sCE*
fh/r)   zdf1_vals, df2_valsr	  )r,   r-   r,   )r:  rX  rY  r   FTrZ   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 )Nr]  rd   )r   r   r   r]  rV   r   )rC   df1_valsdf2_valsr6   r7   r`   s         r'   !test_merge_incompat_dtypes_are_okz1TestMergeDtypes.test_merge_incompat_dtypes_are_ok{  s      h(h(sCSE*vxx~~...sCSE*vxx~~./&((..2QQQ2Q.r)   rZ  r   r[  )ra  12z1/1/2011rj  r  z
2011-01-01z
2011-01-02r:  20130101)r  r  r  c                 \   t        d|i      }t        d|i      }d|d   j                   d|d   j                   d}t        j                  |      }t	        j
                  t        |      5  t        ||dg       d d d        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)Nr]  You are trying to merge on  and zE columns for key 'A'. If you wish to proceed you should use pd.concatr   rd   r]  r^  r\  r^  zE columns for key 'B'. If you wish to proceed you should use pd.concatr\  zE columns for key 'C'. If you wish to proceed you should use pd.concat)	r   rV   rD  rE  r   r   r   r   r   )rC   r  r  r6   r7   r   r  r  s           r'    test_merge_incompat_dtypes_errorz0TestMergeDtypes.test_merge_incompat_dtypes_error  s)   2 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   ro   rR   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   rU   r}   rV   r   r   r   r   r\   r]   )	rC   any_numeric_ea_dtypery   expected_datad1ra  r`   	exp_indexra   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)   r,   r-   c                     t        dgdg|      }t        dgdg|      }t        |||      }t        t        |            }t        ||dg|      }t	        j
                  ||       y )N)r,   r  r   )r-   r   r  r  )	rC   ry   r  any_string_dtyper  ra  r`   exp_idxra   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+   r2   )Fr3   r1   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+   r3   r]  r^  r1   r2   r]  r\  r   r  r   r[   )rC   ry   r  r6   r7   r`   ra   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)datarV   r  r  r  r  r  r  911)r  r  zlvl1-cr  )rR   ro   re   ry   O)r  r  r  rw   )r   r   StringDtyper   rK  r   r\   r]   r   r   rV   r   rN  r   r  )	rC   r   string_dtyper6   r  r7   r  r   ra   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)
)FrR   rR   )Fro   empty)Fr   r  )Fr   rR   )Fcrossempty_cross)TrR   r  )Tro   ro   )Tr   r  )Tr   ro   )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+   r1   r2   r  r3   r  rT   rZ   r   r   rR   r  ro   r  r   r  )A_xr^  A_yr\  r   r]  TrY  )r   headr   r   r   ri  r\   r]   )rC   
left_emptyry   rh   rR   ro   r`   ra   s           r'   test_merge_emptyz TestMergeDtypes.test_merge_empty6  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)   c                    t        ddgt        j                  ddgt        j                        d      }t        ddgt        j                  dd	gt        j                        d      }|j	                  |d
      }t        g dt        j                  g dt        j                        d      }t        j                  |j                  d      |       y Nr   r   r+   r   rZ   r   r   r1   r2   r   r   )r   r   r   r   )r   r2   r+   r1   Tdrop)r   r   r   uintcr   r\   r]   r@  rA  s        r'   test_merge_with_uintc_columnsz-TestMergeDtypes.test_merge_with_uintc_columns^  s    uen288QF"((3STUuen288QF"((3STU3G,1XXl"((;
 	f00d0;XFr)   c                    t        ddgt        j                  ddgt        j                        d      }t        ddgt        j                  dd	gt        j                        d      }|j	                  |d
      }t        g dt        j                  g dt        j                        d      }t        j                  |j                  d      |       y r  )r   r   r   intcr   r\   r]   r@  rA  s        r'   test_merge_with_intc_columnsz,TestMergeDtypes.test_merge_with_intc_columnsj  s    uen288QF"''3RSTuen288QF"''3RST3G,1XXl"'':
 	f00d0;XFr)   c                    t        dt        g dt        j                        i      }t        t        g dt        j                        g dd      }|j	                  |dd      }t        t        j
                  g dt        j                        g d	d      }t        j                  |j                  d
      |       y )Njoin_key)r   r   r+   rZ   r	  r   )r  rG   rR   r   )r,   rK   r-   Tr  )	r   r   r   r  r   r   r\   r]   r@  )rC   rD   
df_detailsr   ra   s        r'   test_merge_intc_non_monotonicz-TestMergeDtypes.test_merge_intc_non_monotonicv  s    
F9BGG$DEF	9OT

 *@)277;oV
 	f00d0;XFr)   N)"rN  rO  rP  r   rH  rI  r   r`  r   rT   r  r  float16rm  rw  rz  r  r  r  r   rl   r   r  r   r  r  r  r  r  r  r  r  r  r  rK  r)   r'   rU  rU    s   [[Wvz&:;R <R( [[TBHHbjj"**bjj#QR0 S0> [[(y)OPc
1a&Sz$BCV_QF#s&DE	
<<	0@2	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02
G
G	Gr)   rU  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   )rF   r"  )onetwothreerp  )r   r   r   r    r!   choicerl   r	   rK  r)   r'   rR   rR     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   )rq  Z)r   r   rl   r	   rK  r)   r'   ro   ro     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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 )
Nrq  rd   r  strr   r   r  )rq  Y_xY_yrw   	r   r  r  r   rV   r   r	   r\   r   )rC   rR   r   r   r`   rV   ra   s          r'   test_identicalz#TestMergeCategorical.test_identical  se    tTc*))+%7U%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 )Nrq  rd   r  r  r   r   r  rT   rq  rr  r  rw   r  rC   rR   ro   r   r   r`   rV   ra   s           r'   
test_basiczTestMergeCategorical.test_basic  sv     tUs+))+%7U 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 )Nr,   r-   rK   rL   rM   )r   r+   r   r1   r2   nullr   r   r   r   rR   )ry   rx   r{   rV  )r   r   r   rl   r	   r\   r]   )rC   ro   rR   rD   ra   crightr`   clefts           r'   test_merge_categoricalz+TestMergeCategorical.test_merge_categorical  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)r\  r^  r]  )C1B1A1)r  Rightr  rd   )r  r  r  )r  r  r  r  rA  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  )r\  r\  rj  )r  r  r  rZ   r	  )r  pr,   r  r  )r]  r\  r\  )r  r  r  )rF   rV  r$  )r  r  r  rR   Tr   g      &@g      (@)r  r  r,   r  )	r	   r   r
   rr   r   r   r   r\   r]   )rC   r  pcatr6   r7   r`   ra   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 )NrV  )r  rq  rd   r  r  r   r   r  r+   r   r  rw   )assignr  rl   r   r  r  r   rV   r   r	   r\   r   rq  r/  #_categories_match_up_to_permutationr  s           r'   test_other_columnsz'TestMergeCategorical.test_other_columns  s    uww~~j9:tUs+))+%7U UEN; QF3
 "
 	vx0 vv}}@@QQQww~~AA&((//RRRr)   changec                     | S rJ  rK  r   s    r'   <lambda>zTestMergeCategorical.<lambda>-  s    a r)   c                 :    | j                  t        g d            S )N)r   r   bahrl   r	   r  s    r'   r  zTestMergeCategorical.<lambda>.  s    ahh/0EFG r)   c                 8    | j                  t        d            S )NTr  r  r  s    r'   r  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   )rq  rq  r   r  r  rT   r  rw   )rq  rl   r  rR  r/  rV   r	   r   r  r  r   r   r\   r   )rC   r  r   rR   ro   r   rq  r   r`   rV   ra   s              r'   test_dtype_on_merged_differentz3TestMergeCategorical.test_dtype_on_merged_different*  s     577>>(+,q!$&&----/?@@@ tUs	:))+%7U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 )
Nr3   )
r,   r-   rK   rL   rM   r   r   r   r   j)rX  wr   r   r   r   )rk  r$   ur  o)
aabbccddeeffgghhiijjr   c                 $    | j                  d      S )NrV  )rl   r  s    r'   r  zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>e  s     4 r)   rd   )r   applyr   r   r}   r\   r]   )rC   rk  eachletterrD   r`   s         r'   "test_self_join_multiple_categoriesz7TestMergeCategorical.test_self_join_multiple_categoriesD  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   rV  r1   ffffff?num4r  r  r  )r   r  r  r   r  r   )
r   r   rl   r   rJ  r   r   r   r\   r]   )rC   rD   r7   expected_outerresult_outerexpected_innerresult_inners          r'   test_dtype_on_categorical_datesz4TestMergeCategorical.test_dtype_on_categorical_datesl  s    4A$tD!Q'7&=>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   r2   r+   r   )r  num)r  r  r'  )r   rl   r	   r   r\   r]   )	rC   category_columnr  expected_categoriesr  r6   r7   r`   ra   s	            r'   /test_merging_with_bool_or_int_cateorical_columnzDTestMergeCategorical.test_merging_with_bool_or_int_cateorical_column  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  rZ   r  r]  rd   )r]  B_xB_y)r   r   r   rK  r   r\   r]   )rC   rD   r`   ra   s       r'   test_merge_on_int_arrayz,TestMergeCategorical.test_merge_on_int_array  sg    VQ255MAJKr2#&!Qg6qK
 	fh/r)   c                    t        t        t        dd            t        t        dd            t        t        dd            t        t        dd            d      }|j                  dddd      }|j                  d dd d f   j                  ddgd	
      j                  ddi      }|j                  dd d d f   j                  g dd	
      j                  ddi      }t        ||d	d	d      }t        t        dd            }t        t        t        dd            t        t        dd            z   |      }t        t        t        dd            t        t        dd            z   |      }t        t        j                  gdz  t        t        dd            z   |      }	t        j                  |||	gg d      }
t        t        t        t        t        dd                  t        j                  gdz  z   t        j                  gdz  t        t        t        t        dd                  z   d|
      }t        j                   ||       y )Nr+   rF   )r   r   r   rL   rV  r   r2   r   r   T)observedrL   r   rN   )r   r   r   r   r  r3   r   r  namesr   )d_xd_yrw   )r   r   r   rl   ilocgroupbyaggr   r
   r   r   r   from_arraysmaprm   r\   r]   )rC   r6   r7   r  r  r`   catsr   r   r   idxra   s               r'   .test_merge_category_index_levels_stay_categoryzCTestMergeCategorical.test_merge_category_index_levels_stay_category  s   %2,'%2,'%2,'%2,'	
 jjz
LMhhrr1uo%%sCj4%@DDc5\Rhhqr1uo%%o%EII3PU,WsCDdPE!RL!U1a[)Dq",>>4PU1a[)Dq",>>4P1tE!RL'99dK$$aAYoFCuQ{34x!|Cx!|d3ueArl+C&DD 
 	fh/r)   N)rN  rO  rP  r  r  r  r  r   rH  rI  r  r  r  r  r#  r*  r.  r<  rK  r)   r'   r  r    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00r)   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   rF   ry  d   r   r   r+   rw   TrR   r   rF   r   r   r+   r   )r   rF   r   r	  ro   ,  r?  ry  r1   r+   r   r?  ry  rC  r   r   r   rC  rk   c                     t        dg dig d      }t        dg dig d      }t        ||dd||	      }t        j                  ||       y )
Nr,   r@  rA  rw   r-   rB  rD  T)rX   rY   ry   rz   r[   )rC   ry   rz   ra   r2  r3  r`   s          r'   test_merge_on_indexesz(TestMergeOnIndexes.test_merge_on_indexes  sQ    ` S+.i@c?39EX$DcPT
 	fh/r)   N)
rN  rO  rP  r   rH  rI  r   r   r   rG  rK  r)   r'   r>  r>    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)   r>  rU   r  	index_colr   r  )r  r   r1   )startstopr   )r  z
2018-01-02z
2018-01-03r   c                 L    t        |       j                   d| j                   dS )N[rv  )typerN  rV   r  s    r'   r  r  	  s"    T!W%%&ay2 r)   )idsc                     t        dg di|       }t        dg di|       }|j                  |dg      }t        g dg dd|       }t        j                  ||       y )	N	left_datar   rw   
right_datarn  rH  rd   )rP  rQ  r[   )rU   rR   ro   r`   ra   s        r'   test_merge_index_typesrR  	  s`      k9-U;D|_5UCEZZ;-Z0F?uH &(+r)   z-on,left_on,right_on,left_index,right_index,nmr   r   Fr^  )NNNTTr^  T)NNNTTNc           
         t        dg dit        j                  ddgddggddg	      
      }t        g dt        j                  ddgddggddg	      |      }t        ddgddgdt        j                  ddgdggddg	      
      }|)t	        ||| ||||      }	t        j                  |	|       y d}
t        j                  t        |
      5  t	        ||| ||||      }	d d d        y # 1 sw Y   y xY w)Nr]  r   r,   r-   r   r+   r   r   r1  rw   r   ru  r2   r1   r  )re   rx   r{   rX   rY   z$Cannot merge a Series without a namer   )
r   r   from_productr   r   r\   r]   r   r   r   )re   rx   r{   rX   rY   nmr,   r-   ra   r`   r   s              r'   test_merge_seriesrV  !	  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)Nr]  r   r,   r-   r   r+   r   r   r1  rw   r   )r^  r\  ru  z-Not allowed to merge between different levelsr   rd   )r   r   rT  r   r   r   r   r   r   s     r'   test_merge_series_multilevelrX  V	  s     		l%%SzAq6&:7GBTU	A 	%%SzAq6&:7GBTU	A
 
I
 + 	a)*+ + +s   7BBz!col1, col2, kwargs, expected_colssuffixes) _dupra  0_dup)Nr[  )_x_y0_x0_yr]  r^  r,   )Nr^  r:  )r]  Nz0.0_xr-   b_yr  )Nr]  )_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+   r2   r   r3   r1   r   r   TrW   r[   )r.   r  kwargsexpected_colsr,   r-   ra   r`   s           r'   test_merge_suffixrg  h	  s    ( 	4#$A4#$A1a&1a&1a&1=IHQWWQD4TDVDF&(+1aEDdEfEF&(+r)   zhow,expectedro   rE  <   F   X       )r]  r  B2)r+   r?  ry  rC  r1  rk  rl  rm  c                     t        g dg dd      }t        g dg dd      }t        ||d| d      }t        |      }g d	|_        t        j                  ||       y )
N)r?  ry  r+   )rh  ri  r1  r  rE  rj  r]  )r]  r]  )re   ry   rY  )r]  r,  r,  )r   r   r}   r\   r]   )ry   ra   r2  r3  r`   s        r'   test_merge_duplicate_suffixrp  	  sV    $ m,?@G_EFH7H#MF"H*H&(+r)   zcol1, col2, suffixes))r,   r,   )NN)r,   r,   )rZ  N)r   r   )NrZ  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   r1   r2   r3   z'columns overlap but no suffix specifiedr   TrX   rY   rY  r  )r.   r  rY  r,   r-   r   s         r'   test_merge_suffix_errorrt  	  s`     	4#$A4#$A 4C	z	- JatIJ J Js   AArR   rR   ro   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)	Nr,   r   r-   rr  zPassing 'suffixes' as ar   Trs  )r   r   r   	TypeErrorr   )rY  r,   r-   s      r'   test_merge_suffix_raisesrx  	  sX    3	"#A3	"#A	y(A	B JatIJ J J   AAz2, got 3r  zcol1, col2, suffixes, msgr   z%too many values to unpack \(expected z\)z1not enough values to unpack \(expected 2, got 1\)c                     t        | g di      }t        |g di      }t        j                  t        |      5  t	        ||dd|       d d d        y # 1 sw Y   y xY w)Nr   rr  r   Trs  r  )r.   r  rY  r   r,   r-   s         r'   test_merge_suffix_length_errorr{  	  sY     	4#$A4#$A	z	- JatIJ J Jry  	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   rR   r   r   ro   TrW   rR   ro   r   )	r	   r   r   rl   rr   r}  r   r\   r]   )	r|  r}  
cat_dtypesr6   data_foo
data_rightr7   r`   ra   s	            r'   test_merge_equal_cat_dtypesr  	  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  r,   r-   r+   r   r  r   )r1   r   r+   r  TrW   r1   r  )r	   r   r   rl   rr   r   r\   r]   )r|  r6   r7   r`   ra   s        r'   test_merge_equal_cat_dtypes2r  	  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 )
Nr,   r   r+   r   intervalrZ   rV  r   r  )	r   r   r   Intervalr   rl   r   r\   r]   )ro   rR   r`   ra   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   r1  r   rZ  r  r]  r^  re   rY  )r  rZ  Fr>  )r   rT  r   r   rN  r\   r]   )lettersnumbersrU   frame_xframe_yl_sufr_sufr`   r  r'  tuplesr%  ra   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  )r   r   r  )200020012002)r   r   rR   r   r  )r  r  rd  r   )r   r   r  r   r\   r]   r6   r7   r`   ra   s       r'    test_merge_datetime_upcast_dtyper  9
  ss    
/@
AC
BNN3K$LMC 3C0F   78	
H &(+r)   n_categoriesr3      c                    t        dgt        t        |                   }t        t        | dz         dg|      }t        dggdgt        dgt        t        |                         }t	        ||ddd	      }t        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+   rG   r  r   r  rR   Tr   r   g      @r   r   )	r   r   r   r   r   r   r   r\   r]   )r  rX   r6   r7   r`   r   ra   s          r'   %test_categorical_non_unique_monotonicr  J
  s    
 "1"AtE,,?'@"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)r,   r-   r,   rK   r,   r-   r   )r   r+   r   r+   r   r   )Cat1Int1)r,   r-   rK   r,   r-   rK   )r   r   r   r+   r+   r+   )r|  g333333?r  r  rD  g?)CatIntFactorr  r  r  r  r  rR   r   r+   )axisrd   r  Tr  )	r
   r   rr   r   r@  r  r   r\   r]   )r,   r-   ra   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)re  err_msg)rx   rX   rx   rX   )r{   rY   r{   rY   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   r1   r2   r   r3   r   r  zCan only pass argument "r   " OR "z" not both\.r   r   r   r   r   getattrr   r  re  r  rR   ro   r   s         r'   /test_merge_join_cols_error_reporting_duplicatesr  
  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   r1   r2   r   r3   r   r  zMust pass "r   r  z"\.r   r  r  s         r'   ,test_merge_join_cols_error_reporting_missingr  
  s     Aq6A/0DQF!Q01EF71:,c
:C	z	- 1D$001 1 1r  re  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   r1   r2   r   r3   r   r  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r   re   r,   r  )r  re  rR   ro   r   s        r'   1test_merge_join_cols_error_reporting_on_and_indexr  
  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   )r   r   ro   Tr   )ry   rX   r{   )r   x_xz_xx_yz_yr[   rR   ro   r`   ra   s       r'   test_merge_right_left_indexr  
  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   r,   r-   rZ   Tr   r   )r   rr   r   rT   r   r\   r]   r6   r7   ra   r`   s       r'   $test_merge_result_empty_index_and_onr  
  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   )r,   r-   b_xr   (Passing 'suffixes' which cause duplicater   r,   rd   )r^  r]  r  r
  ru  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 )Nr!  r"  )r,   r-   r-   r   r+   r1   r   r   r,   rd   )r+   r+   r+   r   )r,   r  r  ra  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   )r,   r-   r-   r  r   r+   r1   r   r   r  r   r,   rd   r
  ru  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   r1   r2   r,        \@r   r   rF   rV  r$  r   r   r   Tr   )r   rF   r+   r   )rV  r$  r1   r2   )r   r   r,   r  r   r   r   r\   r]   r  s       r'   %test_merge_string_float_column_resultr  
  s    
aVaV$eS%L.A
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)
Nrq  r\     )r  r}   rU   i  zCan only pass argumentr   T)re   rX   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 )Nr1   r  r\  r   r]  r   )r   r   r   r   _datar\   r]   )ciro   rR   resra   s        r'   #test_merge_on_left_categoricalindexr    sl    	%(	#BBU1X./Ec5A;'(D
eR#
6CT5"((SAH#x(r)   rV   r  c                    | t         j                  nt        j                  }t	        ddgddgd|       }t	        ||gddgd|       }t        ||dd	
      }t	        dd||gdd||g||ddgd|       }t        j                  ||       t        ||dd	
      }t	        dd||g||ddgdd||gd|       }t        j                  ||       y )Nr+   r   )rP   r.   rZ   r1   r2   )rP   r  rP   r   r   )rP   r.   r  )rP   r  r.   )r   r   r   rK  r   r   r\   r]   )rV   itemrR   ro   r`   ra   s         r'   test_merge_outer_with_NaNr  )  s     ]266DaVaV4EBDtTlQF;5IE45g6Fq$%4&4A&	

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

 H &(+r)   c                      t        ddgit        dgd            } t        ddgit        dgd            }t        | |dd      }t        dgdd      }t        j                  ||       y )	Nr,   r+   rK   r   rw   rL   r   )r  r  r  r  s       r'    test_merge_different_index_namesr  G  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   rZ   r   r  r   r   r[   r  r   rR   ro   r`   ra   s         r'   test_merge_ear  P  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   rZ   r   r  r   r!  r"  r   )r   lowerr   r   r\   r]   r  s         r'   test_merge_ea_and_non_ear  Y  s    91-5IJDIA.6J6P6P6RSEZZ9Z-F	)=>	)=>	)=)C)C)EF	
H &(+r)   rT   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pyarrowr,   r+   r   rZ   r  )r   importorskipr   r   r   r\   r]   )rV   rD   r7   r`   ra   s        r'   !test_merge_arrow_and_numpy_dtypesr  h  s     	"	C!Q=	.B
S1a&M)9
:CXXc]FwwyH&(+YYr]FxxzH&(+r)   r  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  r3   r$  r        r   rX  rY  )rX  r,   rX  ro  r+   )rX  r-   rl  )rX  r,   r-   r   Tr  rR   r   ro   r   )r   rJ  r   r   as_unitr   r   r5  r@  r   r\   r]   )r  r   valsr6   r7   ra   r`   s          r'   (test_merge_datetime_different_resolutionr  w  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<	f	==!Q(	g	==!Q(44$4?YYss	Y2F&(+r)   c                  
   t        dddgi      } t        ddgit        j                  ddgdg      	      }t        ddgdt        j                  gd
      }| j                  |dgdd      }t        j                  ||       y )Ncolr]  r^  r-   r?  )r]  )r\  r1  )r  rU   )r  r-   TrR   r   )r   r   rN  r   r   r   r\   r]   )rD   r7   ra   r`   s       r'   "test_merge_multiindex_single_levelr    s    	EC:&	'B
C5\$$ff%5eWEC #s3-@AHXXcE7&XIF&(+r)   c                     t        ddgddgdt        j                  ddgddggddg      	      } t        ddgt        ddgd
      t        j                  dgdgg            }t        j                  t        j                  j                        5  | j                         j                  |j                         d      }d d d        t        g dg dg dg dg dd      }t        j                  |j                        |_        t        j                  |       | j                         j                  |j                         dg      }t        j                  ||       y # 1 sw Y   xY w)Nr+   r   )column_1rZ  column_2rZ  
metadata_1
metadata_2rU   metadatar1  rw   r   new_datarZ  )r  rU   r}   rd   r  )r  r  r  r  r  )rU   rZ  )r  rZ  r  r  )r  rZ  r  )r   r   r8  r   rT  r\   r}  r   r   PerformanceWarningr@  r   rN  r}   r]   )rD   r7   r`   ra   result2s        r'   'test_merge_multiindex_reset_index_mixedr    sP   	q6aV<$$VlL127J:O

B VQF)''*t(<=C 
	#	#BII$@$@	A G!''(9g'FG 'V***	
H "--h.>.>?H&(+nn$$S__%6M?$KG'8,#G Gs   0E''E0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   r1   r2   r+   rP   TrW   re   rR  )rR   ro   r   )rR   r   r   )
fill_valuer   r  )appendr   rr   r   r@  setr/  intersectionisinri  r   r7  rl   r   intpr  rz  mulrU   r\   r]   )r   rz   r  r   r  r  r  ry   rR   ro   	on_kwargsr`   ra   otherother_uniquekeep_values	keep_maskother_value_countsrepeatsleft_countsright_countsexpected_countss                         r'   test_merge_combinationsr    s    C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)NrX  rZ   rD  r   r  r   zYou are mergingr   r  r+   )
r   r   rK  
Int64Dtyper\   r}  r~  r   r]   rl   r  s       r'   !test_merge_ea_int_and_float_numpyr    s&   
S"%%L
8C
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  r,   r-   rZ   r+   rK   rw   TrR   r   r   )
r   r  r   r   r   r   r   r   r\   r]   )r  rR   ro   r`   ra   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t        d      g d	      }| r|r|j                  d d }n-| rt        j
                  |d<   n|rt        j
                  |d
dg<   t        j                  ||       y )Nr+   r   r]  r^  r  )r]  r\  rj  r   r   )r]  r^  r\  rj  r\  rj  )r   r5  r   r   r   r   r\   r]   )r  r  r6   r7   r`   ra   s         r'   $test_merge_empty_frames_column_orderr  2  s     AaS3*
5C
AaS/
:Chhrlhhrl373F%(4HIHk==!$		!vv#s&(+r)   ry   )rR   ro   r   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)NrP   r+   zdatetime64[ns]rZ   ztimedelta64[ns]r  r  zG columns for key 'key'. If you wish to proceed you should use pd.concatr   r   )	r   r   rV   r   r   r   rD  rE  r   )ry   rR   ro   r   s       r'   !test_merge_datetime_and_timedeltar   I  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&c                     t        g dt        j                  t        j                  t        j                  gg dd      } t        g dt        j                  t        j                  t        j                  gg dd      }| j                  |ddgd      }t        g dt        j                  t        j                  t        j                  gg dg dd	      }t	        j
                  ||       y )
Nr   r   r   )r   r   zzr   r   r   r   )r   r   r   r"  r)  r  s       r'   test_merge_on_all_nan_columnr#  ]  s    9BFFBFFBFF+C)TUDIRVVRVVRVV,DIVWEZZ3*'Z:Frvvrvvrvv6YiXH &(+r)   )r[  rZ  c                     t        dgdgd      }t        dgdgdgd      }t        j                  t        d      5  t	        ||d| 	       d d d        y # 1 sw Y   y xY w)
Nr+   r   r  r1   )r.   r  col2_dupzduplicate columnsr   r.   r  r
  )rY  r6   r7   s      r'    test_merge_for_suffix_collisionsr&  i  s`     aS1#.
/C
aS1#A3?
@C	z)<	= 6c36H56 6 6s   AA c                     t        t        j                  g dd            } t        t        j                  g dd            }t        dt	        ddg|       i      }t        dt	        dd	g|      i      }|j                  |dd
      }|j                  d      j                  |j                  d      dd
      }t        j                  ||       y )Nr   rT   rZ   r  r  rP   r+   r   r1   r   r   )	r	   r   r   r   r   r   rl   r\   r]   )ltrtrR   ro   r`   ra   s         r'   $test_merge_categorical_key_recursionr*  r  s    	RZZ	%I	JB	RZZ	%K	LBeVQF"567DufaV2678EZZ%WZ5F{{7#))YEw * H &(+r)   c                     t        j                  d       t        j                  ddd      } t	        | g dd      }|j                  d      }t	        | j                  d	      g d
d      }|j                  d      }t        ||dd      }t	        | j                  d	      g dg d
d      }|j                  d      }t        j                  ||       y )Nr  z
2025-07-06r1   r   r  r   )timeval1)dtype_backendr   )rF   r      r-  r<   rh  )r,  val2r,  rR   r   )r+   r+   r   r   r1   r1   )r,  r-  r0  )
r   r  r   r  r   convert_dtypesr  r   r\   r]   )rX  r6   r7   r`   ra   s        r'   &test_merge_pyarrow_datetime_duplicatesr2    s    
	"
lAC8A
Q	2
3C


9

5C
QXXa[2JK
LC


9

5C3F3FHHQK&,	
H &&Y&?H&(+r)   c                      t        dg di      } t        dg di      }t        j                  t        j                  j
                        5  | j                  |ddd       d d d        y # 1 sw Y   y xY w)Nr  r   )r   r1   r2   T)rx   r{   rY   )r   r   r   r   r   r   r   r5   s     r'   #test_merge_right_on_and_right_indexr4    sc    
UI&
'C
UI&
'C	ryy++	, H		#uu$	GH H Hs   A++A4)r   r<   )_r   r   r   rD  numpyr   r   pandas.compatr   pandas.core.dtypes.commonr   r   pandas.core.dtypes.dtypesr	   pandasr   r
   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr\   pandas.core.reshape.concatr   pandas.core.reshape.merger   r   r(   rG  r8   r:   r   rU  rR   ro   r  r>  rH  rI  rM  rR  rV  rX  rg  r   rp  rt  rx  TWO_GOT_THREEtupler{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r&  r*  r2  r4  )rP  s   0r'   <module>r@     se   
 
    7      - 	 	d+ d+N-	GKG KG\    r0 r0j	60 60r  ,, 	it+6
 	_;W5@{S	 	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"&&)9Q	

 '2r266*vvsC-	
",#", JJ	J vw&7!a9P%QRJ SJ $
  5m_BG		
 
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,:,,, 7,<"=>, ?, &789, :,2
, -F dE]3u6)D%=9$7*T5M:F, ; 8 : 7 4
F,R>.	, e}5u6, 7 6,*  CD- E-&	, lL%AB6 C6,,0Has   &Y

