
    m*ig                       S SK JrJ r Jr  S SKrS SKrS SKrS SKJr  S SK	J
r
Jr  S SKJr  S SKrS SKJrJrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SK J!r!J"r"  SS	 jr#S
 r$S r%\RL                  " \$" 5       S S9S 5       r'\RL                  " \$" 5       S S9S 5       r(\RL                  " \%" 5       S S9S 5       r)\RL                  S 5       r* " S S5      r+S r, " S S5      r-\RL                  S 5       r.\RL                  S 5       r/ " S S5      r0\RL                  S 5       r1\RL                  S 5       r2 " S S 5      r3\Rh                  Rk                  S!\Rl                   V s/ s H  n \" S"S#/U S$S%9PM     sn \" S&S'/S&S'/S$S(9\" S S#S$S)9\" S*S+/S$S,9/-   S- S.9S/ 5       r7\Rh                  Rk                  S0S1S2/SSS3S3S'4S4SS1S2/SS3S5S'4SSS1S2/S5S3S'4S1S2/SSS3S3S4S6SS1S2/SS3S5S4SSS1S2/S5S3S4/5      S7 5       r8S8 r9\Rh                  Rk                  S9S S S:S;0S<S=/4S S S:S>0S S=/4S S S:S?0S@SA/4S S S:SBSC/0S@SA/4SDS S:SE0SDS /4SFSFS:SG0SHSF/4SISIS:SE0SISJ/4SDSDS:SG0SKSD/4SDSIS:SG0SDSI/4SDSDS:SL0SDSK/4S S S:SM0SNS /4SDSD0 SKSO/4S S 0 S@SA/4/5      SP 5       r:\Rh                  Rk                  SQSR\" / SSQSTSU\Rv                  // SVQSW.5      4S1\" / SXQSYSTSU\Rv                  /\Rv                  SZS[S\/SW.5      4/5      S] 5       r<\Rh                  Rk                  S^/ S_Q5      S` 5       r=\Rh                  Rk                  S:SaSR1S S Sb./5      Sc 5       r>\(       a  SdOSer?\Rh                  Rk                  SfSDSDSgSh\? Si34SDSD\@" SD5      Sj4/5      Sk 5       rA\Rh                  Rk                  SlSmSn/5      \Rh                  Rk                  SoS5S3/5      Sp 5       5       rBSq rCSr rDSs rESt rF\Rh                  Rk                  SuSvSw/5      Sx 5       rGSy rH\Rh                  Rk                  SzS{S|/5      \Rh                  Rk                  S}SDS5S~.SS/4SDS5S.SS/4/5      S 5       5       rI\Rh                  Rk                  SzS{S|/5      \Rh                  Rk                  S}SSD0SS/4SSD0SS/4/5      S 5       5       rJ\Rh                  Rk                  SzS{S|/5      \Rh                  Rk                  SSS50SS50/5      S 5       5       rKS rLS rMS rNS rOS rPS rQS rRS rS\Rh                  Rk                  SSS/5      S 5       rTS rUS rVS rW\Rh                  Rk                  SSS/5      S 5       rX\Rh                  Rk                  S/ SQ5      \Rh                  Rk                  SSS/5      S 5       5       rYS rZ\Rh                  Rk                  S/ SQ5      \Rh                  Rk                  SS5S3/5      \Rh                  Rk                  SS5S3/5      \Rh                  Rk                  SS5S3/5      \Rh                  Rk                  SS5S3/5      \Rh                  Rk                  SS5S3/5      \Rh                  Rk                  SS5S3/5      S 5       5       5       5       5       5       5       r[S r\S r]\Rh                  Rk                  SS5S3/5      \Rh                  Rk                  SS5S3/5      S 5       5       r^\Rh                  Rk                  S/ SQ5      S 5       r_gs  sn f )    )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           	      d   [        [        U 5      5      n[        R                  " [        R                  " X!U -  5      5      n[        U5      U:  a1  [        R                  " [        U5      US U[        U5      -
   -   5      n[        R                  R                  S5      R                  U5        U$ )N   )	listrangenpasarraytilelenrandomdefault_rngshuffle)ngroupsnunique_groupsarrs       e/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/pandas/tests/reshape/merge/test_merge.pyget_test_datar(   )   s~    w(M
**RWW]L9
:C
3x!|jjc]>QS\%BBCII!$$S)J    c                      [        S/SS9[        S/SS9[        S/5      [        S/5      [        S/5      [        [        R                  " S5      /5      [        [        R                  " SS	S
9/5      /$ )N   int64dtypeInt64gGz?fooT
2018-01-01
US/Easterntz)r   pd	Timestamp r)   r'   
get_seriesr8   4   si    s'"s'"vwv\*+,\l;<= r)   c                      [        [        R                  /SS9[        [        R                  /SS9[        [        R                  /SS9[        [        R                  /5      /$ )Nr/   r-   floatobject)r   r   nanr5   NaTr7   r)   r'   get_series_nar>   @   sJ    xw'xw'xx(x	 r)   c                 .    U R                   R                  $ Nr.   namexs    r'   <lambda>rE   I       177<<r)   )paramsidsc                     U R                   $ )zJ
A parametrized fixture returning a variety of Series of different
dtypes
paramrequests    r'   series_of_dtyperN   I        ==r)   c                 .    U R                   R                  $ r@   rA   rC   s    r'   rE   rE   R   rF   r)   c                     U R                   $ )z_
A duplicate of the series_of_dtype fixture, so that it can be used
twice by a single function
rJ   rL   s    r'   series_of_dtype2rR   R   rO   r)   c                 .    U R                   R                  $ r@   rA   rC   s    r'   rE   rE   [   s    aggllr)   c                     U R                   $ )zI
A parametrized fixture returning a variety of Series with all NA
values
rJ   rL   s    r'   series_of_dtype_all_narU   [   rO   r)   c                  \    [        SS/SS/SS/S.5      n [        / SQ/ SQ/ SQS	.5      nX4$ )
Nr   r+   r   ab)col1col_conflictcol_left)r+   r            )r   r   r   r   r   )rY   rZ   	col_rightr   )df1df2s     r'   dfs_for_indicatorrc   d   s@    
aVaV#sT
UC
#+(	
C 8Or)   c                   0   \ rS rSr\R
                  S 5       r\R
                  S 5       r\R
                  S 5       r\R
                  S 5       r	S r
S rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R:                  R=                  S/ SQ5      S 5       r\R:                  R=                  SSSS.SSS .S!SS".S!SS#./5      S$ 5       r S% r!S& r"S' r#S( r$S) r%\R:                  R=                  S*S+/ S,Q4S/ S-Q4/5      \R:                  R=                  SS.S//5      S0 5       5       r&S1 r'S2 r(\R:                  RS                  S35      S4 5       r*S5 r+S6 r,\R:                  R=                  S7/ S8Q5      S9 5       r-\R:                  R=                  S7/ S8Q5      S: 5       r.S; r/S< r0S= r1S> r2S? r3S@ r4SA r5SB r6SC r7SD r8SE r9SF r:SG r;SH r<SI r=\R:                  R=                  SS/SJ/5      \R:                  R=                  SK\>" / SLQ5      \>" / SMQ5      4\?" / SNQSOSP9\?" SQSRSS\@R                  \@R                  \@R                  /SOSP94/\BR                   V VVVs/ s H)  n[        / STQUSP9[        / SUQ[        R                  SP94PM+     snnnn Q\GR                  " / SVQ5      \GR                  " SWSXSY\ER                  \ER                  \ER                  /5      4P\J" / SZQS[S\9\J" SQS]S^\@R                  \@R                  \@R                  /S[S\94P\K" / S_Q5      \K" S`SaSb\@R                  \@R                  \@R                  /5      4P5      Sc 5       5       rLSd rM\R:                  R=                  SS.S//5      Se 5       rNSf rOSg rPShrQgis  snnnn f )j	TestMergeq   c                 
   [        [        5       [        5       [        R                  R	                  S5      R                  S5      [        R                  R	                  S5      R                  S5      S.5      nXS   S:     nU$ )Nr   2   )key1key2data1data2rj   r+   r   r(   r   r    r!   standard_normal)selfdfs     r'   rp   TestMerge.dfr   sl    %%..q1AA"E..q1AA"E	
 6
Q	r)   c                     [        [        SS9[        SSS9[        R                  R	                  S5      R                  S5      S.5      $ )N
   )r$   r]   )r#   r$   r   )ri   rj   valuerm   ro   s    r'   rb   TestMerge.df2   sC    %+%a26..q1AA"E
 	
r)   c                 z    [        / SQ[        R                  R                  S5      R	                  S5      S.5      $ )NrW   rX   cder{   rW   r      keyv1r   r   r    r!   rn   ru   s    r'   leftTestMerge.left   s4    :ii++A.>>qA
 	
r)   c                 v    [        S[        R                  R                  S5      R	                  S5      0/ SQS9$ )Nv2r   r]   rz   rX   ry   rW   indexr   ru   s    r'   rightTestMerge.right   s4    299((+;;A>?&
 	
r)   c                     [        5       n[        SSS/0SS/SS9n[        XSSS9n[        S/ 0SS	9n[        R                  " X45        g )
NrW   r+   r   r   r,   )r   r.   T
left_indexright_indexr-   r   r   tmassert_frame_equal)ro   df_emptydf_aresultexpecteds        r'   test_merge_inner_join_empty%TestMerge.test_merge_inner_join_empty   sO    ;#1vq!fGDx$DIc2Yg6
f/r)   c                 ^    [        X5      n[        XSS/S9n[        R                  " X45        g )Nri   rj   onr   r   r   )ro   rp   rb   joinedexps        r'   test_merge_commonTestMerge.test_merge_common   s*    rB 01
f*r)   c                     [        / SQ/ SQ/ SQ/ SQS.5      nUR                  [        5      nUn[        X5      n[        R
                  " X45        g )N)r+   r   r+   r   )r   r+   r   r   )r   r   r   r   )r+   r   r   r\   r   r+   r   r\   )r   astyper:   r   r   r   ro   r   r   r   r   s        r'   test_merge_non_string_columns'TestMerge.test_merge_non_string_columns   sG     ,<P
 E"t#
h/r)   c                     UR                  S5      nUR                  S5      n[        X4SS9n[        XSS9R                  S5      n[        R                  " XV5        g )Nri   r   )	set_indexr   r   r   )ro   rp   rb   r   r   r   r   s          r'   test_merge_index_as_on_arg$TestMerge.test_merge_index_as_on_arg   sQ     ||F#f%tv.V,66v>
f/r)   c           	         [        / SQ[        R                  R                  S5      R	                  S5      S.5      n[        S[        R                  R                  S5      R	                  S5      0/ SQS9n[        XS	S
SSS9n[        X!S	S
SSS9n[        R                  " X4R                  S S 2UR                  4   5        [        XS	S
SS
S9n[        X!S	S
SS
S9n[        R                  " X4R                  S S 2UR                  4   5        g )Nrx   r   r|   r}   r   r]   r   r   r~   Tr   F)left_onr   howsortr   )right_onr   r   r   )
r   r   r    r!   rn   r   r   r   loccolumns)ro   r   r   merged1merged2s        r'   (test_merge_index_singlekey_right_vs_left2TestMerge.test_merge_index_singlekey_right_vs_left   s    :ii++A.>>qA
 299((+;;A>?&

 Df5
 %DgE
 	g{{1goo3E'FGDf4
 %DgD
 	g{{1goo3E'FGr)   c                 J   [        / SQ[        R                  R                  S5      R	                  S5      S.5      n[        S[        R                  R                  S5      R	                  S5      0/ SQS9n[        XS	S
SS9nUR                  US	S9R                  UR                     n[        R                  " X45        [        X!S	S
SS9nUR                  US	S9R                  UR                     n[        R                  " X4R                  S S 2UR                  4   5        g )Nrx   r   r|   r}   r   r]   r   r   r~   Tinnerr   r   r   r   )r   r   r   )r   r   r    r!   rn   r   joinr   r   r   r   r   ro   r   r   r   r   s        r'    test_merge_index_singlekey_inner*TestMerge.test_merge_index_singlekey_inner   s    :ii++A.>>qA
 299((+;;A>?&
 tEtQ99Uu9-11&,,?
f/uUtQ99Uu9-11&,,?
fll1fnn3D&EFr)   c                 ~   Sn[         R                  " [        R                  R                  US9   [        X4SS9  S S S 5        Sn[         R                  " [        R                  R                  US9   [        X4SS9  S S S 5        Sn[         R                  " [        R                  R                  US9   [        X3SSS	9  S S S 5        S
n[         R                  " [        US9   [        XS/SS/S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nc= f! , (       d  f       g = f)Nz&Must pass right_on or right_index=TruematchT)r   z$Must pass left_on or left_index=True)r   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothr~   )r   r   z)len\(right_on\) must equal len\(left_on\)ri   rj   r   r   )pytestraisesr5   errorsr   r   
ValueError)ro   rp   rb   r   r   msgs         r'   test_merge_misspecified!TestMerge.test_merge_misspecified   s    6]]299//s;$$/ <4]]299//s;$40 <$ 	 ]]299//s;$e6 < ;]]:S1"F8vv6FG 21 <; <; <; 21s/   C;2D4D#D.;
D	
D
D+.
D<c           	         Sn[         R                  " [        US9   [        UUSSSS/S9  S S S 5        Sn[         R                  " [        US9   [        UUSSS/SS9  S S S 5        [         R                  " [        US9   [        UUSSS/SS/S9  S S S 5        g ! , (       d  f       Nu= f! , (       d  f       NS= f! , (       d  f       g = f)	Nz>right_index parameter must be of type bool, not <class 'list'>r   r   Fri   rj   r   r   r   z=left_index parameter must be of type bool, not <class 'list'>r   r   r   r   )ro   rp   rb   r   s       r'   &test_index_and_on_parameters_confusion0TestMerge.test_index_and_on_parameters_confusion  s    N]]:S1 #V, 2 N]]:S1"F+! 2 ]]:S1"F+#V, 21# 21 21 21s#   BB, B=
B),
B:=
Cc                     [        XSS9nUS   R                  5       S-  R                  5       n[        U5      U:X  d   eSU;   d   eSU;   d   eg )Nr~   r   r   v1_xv1_y)r   value_countssumr   )ro   r   mergedexp_lens       r'   test_merge_overlapTestMerge.test_merge_overlap  s\    te,;++-27796{g%%%r)   c           	      :   [        / SQ/ SQS.5      n[        / SQ/ SQS.5      nUR                  USSS	S
S9n[        SSSSSS[        R                  /SS9n[
        R                  " US   U5        [        S[        R                  SSSSS/SS9n[
        R                  " US   U5        [        SSSSSS[        R                  /SS9n[
        R                  " US   U5        [        S[        R                  SSSSS/SS9n[
        R                  " US   U5        g )N)r0   barbazr0   r+   r   r\   r]   )lkeyrt   )r0   r   quxr0   )r^      r|      )rkeyrt   r   r   outerT)r   r   r   r   r   r   r0   rB   r   r   r\   r+   r]   value_xr   r^   r   r|   value_y)r   r   r   r   r<   r   assert_series_equal)ro   r   r   r   r   s        r'   %test_merge_different_column_key_names/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                     [        SSS.[        S5      S9n[        SSS.[        S5      S9n[        XS	S	S	S
9nSUS'   US   S:H  R                  5       (       d   eSUS'   US   S:H  R                  5       (       d   eg )Nr   r+   rW   rX   rs   r   r0   r   ry   rz   Tr   r   copyr   rW   peekaboorz   )r   r   r   all)ro   r   r   r   s       r'   test_merge_copyTestMerge.test_merge_copy8  s    qq)r;E2%)DttDQsS	Q##%%%% sc
e#((****r)   c                 d   [        SSS.[        S5      S9n[        SSS.[        S5      S9n[        X4S	S	S
S9n[        R                  " US   R
                  US   R
                  5      (       d   eU(       d9  [        R                  " US   R
                  US   R
                  5      (       d   eg g )Nr   r+   r   rs   r   r0   r   r   TFr   rW   rz   )r   r   r   r   shares_memory_values)ro   using_array_managerusing_infer_stringr   r   r   s         r'   test_merge_nocopyTestMerge.test_merge_nocopyD  s    qq)r;E2%)DttERs 3 3T#Y5F5FGGGG!##F3K$7$7s9K9KLLLL "r)   c                 j   [        / SQ[        [        S5      5      S.SS/S9n[        / SQ[        [        S5      5      S	.5      n[        XSS
S9n[        / SQ[        R
                  " SSSSSSS[        R                  [        R                  /	5      / SQS./ SQS9n[        R                  " X45        g )Nr+   r+   r   r   r\   r^   r~   rt   rt   r~   r   r+   r+   r   r\   r]   r^   r   )r~   rvaluer   r   r   	r+   r+   r+   r+   r   r   r\   r]   r^   r   r+   r   r\   r]   )	r   r+   r   r+   r   r   r\   r]   r^   )r~   rt   r   )rt   r~   r   )	r   r   r   r   r   arrayr<   r   r   )ro   r   r   r   r   s        r'   "test_intelligently_handle_join_key,TestMerge.test_intelligently_handle_join_keyN  s     #d58n=QVGW
 "4U1XOPtu':21aAq!Q"GH5
 /
 	f/r)   c                    [        S/S/S.5      n[        S/S/S.5      n[        XSS9nUS   R                  S	:X  d   e[        S
/S/S.5      n[        S/S/S.5      n[        XSS9nUS   R                  S:X  d   e[        SS/05      n[        SS/05      n[        R                  " S/5      n[        R                  " S/5      n[        XXESS9nUS   R                  [        R                  " [
        5      :X  d   eg )Nr+   rs   r}   r      r   r   r~   r,   TFr   boolvalr   r   r   key_0)r   r   r.   r   r   int)ro   ra   rb   rp   r   r   s         r'   test_merge_join_key_dtype_cast(TestMerge.test_merge_join_key_dtype_casta  s    B401B4013)%y')))qc23s343) %y&(((%%xx}xx}3TgF'{  BHHSM111r)   c                 B   [        / SQ[        R                  " S5      S.SS/SS9n[        S[        R                  " S	5      0SS
9n[        R                  " / SQSS
9n[	        XSUSS9n[	        X!USSS9n[
        R                  " US   US   5        US   R                  5       R                  5       (       d   eUS   R                  5       R                  5       (       d   e[        S[        R                  " S5      0S/S9n[        S[        R                  " S	5      05      n[        R                  " / SQ5      n[        R                  " / SQ5      n[	        XXgSS9n[        / SQ[        SS9n[
        R                  " US   U5        [        S[        R                  " S5      05      n[        S[        R                  " S	5      05      n[        R                  " / SQ[        R                  S
9n[	        XSUSS9n[
        R                  " US   [        USS95        g )Nr   r^   r   rt   r~   r,   r   r.   r   r   r-   r   r   r  r   r   r  rA   r\   )r   r+   r+   r   r   r\   T)r   r   r   r   )r   r   aranger   r   r   r   notnar   r   r  r,   )	ro   r   r   r~   r   r   r   r   r   s	            r'   test_handle_join_key_pass_array)TestMerge.test_handle_join_key_pass_arrayx  s   #biil;e$

 8RYYq\2'Bhh)9tECWMS5gN
ve}gen=e}""$((****u~##%))++++'299Q<07)D8RYYq\23xx(xx*+tDWM5SwO
vg9'299Q<018RYYq\23hh):ttcwO
vgs0IJr)   c                     [         R                  " 5       n[        SS/0U/S9n[        SSS/0X/S9nSS  SS  S	S
 SS
 3n[        R                  " [
        US9   [        X#5        S S S 5        g ! , (       d  f       g = f)NrD   rW   r   yrX   ry   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   )ro   dtra   rb   r   s        r'   &test_no_overlap_more_informative_error0TestMerge.test_no_overlap_more_informative_error  s    \\^seRD1sCj)":&&*V;tf =ug7 	 ]]:S1#O 211s   A//
A=c           	      f   [        SSS5      n[        SSS5      n[        SSS5      n[        SSS5      n[        SS/0U/S	9n[        S
SS/0X/S	9n[        XV5        [        S/ SQ0X!U/S	9n[        S
/ SQ0X3X"X/S	9n[        XV5        [        SSS/0X/S	9n[        S
SS/0X/S	9n[        XV5        g )N  r^   r+   r   r\   r]   rD   rW   r   r  rX   ry   )rW   rX   q)ry   rz   r{   fghrz   r   r   _check_merge)ro   r  dt2dt3dt4ra   rb   s          r'   test_merge_non_unique_indexes'TestMerge.test_merge_non_unique_indexes  s    dAq!tQ"tQ"tQ"seRD1sCj)":S o.snE01#Cb9U
 	SsCj)":sCj)":Sr)   c                     [        SSS5      n[        SSS5      n[        SSS5      n[        S/ SQ0X"X/S9n[        S	/ S
Q0X"X1U/S9n[        XE5        g )Nr  r^   r+   r   r\   rD   rW   rX   ry   rz   r   r  )r{   r  r  z hir  )ro   r  r  r  ra   rb   s         r'   (test_merge_non_unique_index_many_to_many2TestMerge.test_merge_non_unique_index_many_to_many  si    dAq!tQ"tQ"23Cb;MN,-c5L
 	Sr)   c                     [        S/S/S.5      n[        S/ 05      n[        XSSS9n[        R                  " X15        [        X!SSS9n[        R                  " X15        g )Nr+   r   r   r~   r   r   r   r   )ro   r   r   r   s       r'   test_left_merge_empty_dataframe)TestMerge.test_left_merge_empty_dataframe  s[    !s345"+&tu&9
f+uu':
f+r)   r   )r   r   r   r   c                     [        / US S S9nUR                  5       nUR                  XBS9n[        R                  " XS5        g )Nr   r   r  )r   r   r   r   r   )ro   r   r   r   r   r   s         r'   test_merge_empty_dataframe$TestMerge.test_merge_empty_dataframe  s?     5!9-		5*
f+r)   kwargTr   rD   r   r   rW   r   r   r   c                     [        / SQS9n[        / SQS9n[        / SQ[        S9n[        X44SU0UD6n[        R                  " Xe5        g )NrW   rX   ry   r   rD   r  zrW   rX   ry   rD   r  r3  r
  r   )r   r;   r   r   r   )ro   	join_typer-  r   r   exp_inr   s          r'   !test_merge_left_empty_right_empty+TestMerge.test_merge_left_empty_right_empty  sG     1/2#APt;	;U;
f-r)   c           	        ^^ [        / SQS9m[        / SQ/ SQ/ SQ// SQS9m[        [        R                  " [        R                  /S-  [        S9[        R                  " [        R                  /S-  [        S9[        R                  " [        R                  /S-  [        S9/ S	Q/ S
Q/ SQS./ SQS9nUSS nUU4S jnUU4S jnSSS.SSS.4 H  nU" X%5        U" X5        M     SSS.nU" X%5        / SQUS'   U" X5        SSS.nU" X%5        [        R                  " [        R                  /S-  [        S9US'   U" X5        g )Nr1  r   r+   r   r\   r]   r^   r   r|   r   	   r2  r\   r-   r+   r]   r|   r   r^   r   r\   r   r=  r4  r   c                    > [        TT4SS0UD6n[        R                  " X 5        [        TT4SS0UD6n[        R                  " X 5        g )Nr   r   r   r   r   r-  r   r   r   s      r'   check1>TestMerge.test_merge_left_empty_right_notempty.<locals>.check1  sK    4=G=u=F!!&.4<F<e<F!!&.r)   c                    > [        TT4SS0UD6n[        R                  " X 5        [        TT4SS0UD6n[        R                  " X 5        g )Nr   r   r   r   rB  s      r'   check2>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2  K    4=G=u=F!!&.4=G=u=F!!&.r)   Tr   rD   r.  rW   r/  r   r+   r   r   )r   r   r   r<   r;   )ro   exp_outr6  rC  rF  r-  r   r   s         @@r'   $test_merge_left_empty_right_notempty.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 6!7"
  5v wS1vxx1F;wr)   c                   ^^^^^^ [        / SQ/ SQ/ SQ// SQS9m[        / SQS9m[        / SQ/ SQ/ S	Q[        R                  " [        R                  /S
-  [        S9[        R                  " [        R                  /S
-  [        S9[        R                  " [        R                  /S
-  [        S9S./ SQS9mTSS mTR
                  R                  [        5      Tl        UU4S jmUUUUUU4S jmg )Nr:  r;  r<  r1  r   r2  r>  r?  r@  r\   r-   r4  r   c                    > [        TT4SS0UD6n[        R                  " X 5        [        TT4SS0UD6n[        R                  " X 5        g )Nr   r   r   r   rB  s      r'   rC  >TestMerge.test_merge_left_notempty_right_empty.<locals>.check1/  rH  r)   c                    > [        TT4SS0UD6n[        R                  " X 5        [        TT4SS0UD6n[        R                  " X 5        SSS.SSS.SSS	.SSS
.4 H  nT" TU5        T" TU5        M     g )Nr   r   r   Tr   rD   r.  rW   r/  r   r   )	r   r-  r   rC  rF  r6  rJ  r   r   s	      r'   rF  >TestMerge.test_merge_left_notempty_right_empty.<locals>.check25  s    4<F<e<F!!&.4=G=u=F!!&.  $D9#55S1	 vu%w&r)   )r   r   r   r<   r;   r   r   )ro   rC  rF  r6  rJ  r   r   s    @@@@@@r'   $test_merge_left_notempty_right_empty.TestMerge.test_merge_left_notempty_right_empty  s    )Y	:OT/2XXrvvhl&9XXrvvhl&9XXrvvhl&9 3

 1||**62	/	' 	'r)   c                    [        XS.SS/S9nUS S n[        [        UR                  S   S9[        UR                  S   S9[        UR                  S   S9S./ SQS9nUR                  USS9n[        R
                  " Xe5        g )	Nr   r~   rt   r   r   r-   r~   r   r   r   )r   r   dtypesr   r   r   )ro   rN   rR   rp   r   r   actuals          r'   test_merge_empty_frame TestMerge.test_merge_empty_frameE  s    #?G$
 bq6BIIe$45!		'(:;!		'(:;
 2
 u-
f/r)   c                     [        XS.SS/S9n[        XS.SS/S9n[        UUUS./ SQS9nUR                  USS9n[        R                  " Xe5        g )Nr   r~   rt   r   rU  r   r   )ro   rN   rU   df_leftdf_rightr   rW  s          r'   test_merge_all_na_column"TestMerge.test_merge_all_na_columnW  su    #EG$
 #EG$
 &11
 2
 xE2
f/r)   c                    [         R                  R                  S5      R                  SSSS9[         R                  R                  S5      R                  SSSS9[	        SSS5      [	        SSS	5      [	        S
SS5      [	        SSS5      [	        SSS	5      [	        SS	S5      [	        SSS	5      [	        SSS5      [	        S
SS5      [	        SSS5      /
S.n[
        R                  " U5      nUR                  R                  5       n[         R                  " U5      n[
        R                  " U[         R                  R                  S5      R                  S5      S.5      nUR                  USSS9n[        X$SSS9n[        R                  " XV5        UR                  R                  5       UR                  R                  5       :H  R                  5       (       d   eg )Nr   r   rs   sizer  r+      i  r]   i  r\   i  r^   )var1var2var3r|   )re  var8re  Fr   r   )r   r    r!   integersr   r   	from_dictre  uniquer   r   r   r   r   )ro   rz   rp   re  newr   r   s          r'   test_merge_nosortTestMerge.test_merge_nosortl  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
f* FKK$6$6$88==????r)   )r   valuesF)r+   r+   r   r+   r+   )r   r+   r+   r+   r+   r   r   c                     [        S/ SQ05      nUR                  USX1S9n[        US/S9n[        R                  " XV5        g )NrW   )r+   r   r+   )r   r   r   r   r   )ro   r   rn  r   rp   r   r   s          r'    test_merge_same_order_left_right*TestMerge.test_merge_same_order_left_right  sC     Y'("#9VcU3
f/r)   c           	         [        SS/SS/S.5      n[        S/S/S.5      nUR                  USSS9n[        SSS	.SSS	.S[        R                  S	.S[        R                  S	.SSS	.S
.[	        / S
Q[
        S9S9R                  S 5      R                  5       / SQ   nUR                  R                  S5      Ul        [        R                  " X4SS9  g )Nr   r+   i1i2rt  i3rt  _)r   rsuffix        r   r+   )rt  ru  i1_rw  Nr-   r   rt  ru  r|  rw  r;   Fcheck_dtype)r   r   r   r<   r   r;   r   reset_indexr   r   r   r   ro   ra   rb   r   r   s        r'   test_merge_nan_rightTestMerge.test_merge_nan_right  s    1vaV45s1#./#$4!a.A, RVV,!bff-A, =VL	 Yt_[]46 	  ..x8
fEBr)   c                    [        SS/SS/S.5      n[        S/S/S.5      nUR                  USS	S
9n[        SSS.S[        R                  S.SSS.S[        R                  S.S.5      / SQ   n[        R
                  " X45        g )Nr   r+   g      ?      ?rs  gffffff?rv  rx  rt  )ry  r   r{  rz  )rt  r|  ru  rw  r}  )r   r   r   r<   r   r   r  s        r'   test_merge_nan_right2TestMerge.test_merge_nan_right2  s    1vc3Z89s3%01#st4l266*#&-"&&9	
 $% 	f/r)   zMignore:Passing a BlockManager|Passing a SingleBlockManager:DeprecationWarningc                    ^  " U4S jS[         5      mT" U5      nUR                  USS9n[        UT5      (       d   eg )Nc                   ,   > \ rS rSr\U 4S j5       rSrg)0TestMerge.test_merge_type.<locals>.NotADataFramei  c                    > T$ r@   r7   )ro   NotADataFrames    r'   _constructor=TestMerge.test_merge_type.<locals>.NotADataFrame._constructor  s	    $$r)   r7   N)__name__
__module____qualname____firstlineno__propertyr  __static_attributes__)r  s   r'   r  r    s    % %r)   r  ri   r   )r   r   
isinstance)ro   rp   rb   nadr   r  s        @r'   test_merge_typeTestMerge.test_merge_type  s@    	%I 	%
 B36*&-0000r)   c           
         [         R                  " [        SSSSS5      /[        SS5      /S.5      n[        [	        S5      S	9nS
n[
        nU(       a  S n[        R                  " XTS9   [        X2/SS9n[        X2/SS9nS S S 5        [        [        SSSSS5      [        SSSSS5      /[        SS5      [        SS5      /S.5      nU(       a  UR                  [        5      n[        R                  " WU5        g ! , (       d  f       N= f)Ni     r^   8   r   iW  )rz   tr  r   zDThe behavior of DataFrame concatenation with empty or all-NA entriesr   Tignore_index)r   ri  r   r   r   FutureWarningr   assert_produces_warningr   r   r;   r   )ro   r   rz   rp   r   warnr   r   s           r'   test_join_append_timedeltas%TestMerge.test_join_append_timedeltas  s     D"aB/0	!U8K7LM
 tDz*TD''8d3BRG$7F 9 tRAr2HT2q!R4PQ5)9Q+>?
 v.H
fh/ 98s   *C==
Dc           	      V   [         R                  " S5      n[        [        X/SS/S95      n[        [        U/S/S95      nUR	                  USSS9n[        [        X/[        S5      S9[        U[        R                  /[        S5      S9S	.5      n[        R                  " XE5        g )
Ni ABr   rr   )ry  r   AB)00r)
r   timedelta64r   r   r   r   r5   r=   r   r   )ro   tdlhsrhsr   r   s         r'   test_join_append_timedeltas2&TestMerge.test_join_append_timedeltas2  s     ^^I&xSz:;tC512#s7RHDJ7b"&&\d<
 	f/r)   unit)Dr  msmsusnsc                 
   [        SSS/05      n[        S S /SS/SS9nSU S3nUS;   a  S	nOUnUR                  U5      R                  S5      nUS   R                  U:X  d   eUR                  USS
S9n[        R                  " SS/US9n[        R                  R                  R                  R                  XR                  S9n[        SS/US.SS/S9n	U	S   R                  U:X  d   e[        R                  " Xy5        g )N	entity_ide   f   daysr   rB   zdatetime64[]r  r  r  zdatetime64[s]Tr/  natr-   r  r  r   )r   r   r   to_framer.   r   r   r   r5   corearraysDatetimeArray_simple_newr   r   )
ro   r  ra   serr.   	exp_dtyperb   r   r  r   s
             r'   test_other_datetime_unit"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JJ7O!3Z !&)
 6{  I---
f*r)   c                 *   [        SSS/05      n[        S S /SS/SS9nSU S3nUS;   aV  S	n[        R                  " [        US
9   UR                  U5        S S S 5        UR                  S5      R                  S5      nO5UR                  U5      R                  S5      nUS   R                  U:X  d   eUR                  USSS9n[        SS/[        R                  " SS/US9S.SS/S9n[        R                  " Xx5        g ! , (       d  f       N= f)Nr  r  r  r  r  zm8[r  r  z/Supported resolutions are 's', 'ms', 'us', 'ns'r   zm8[s]Tr/  r  r-   r  r   )r   r   r   r   r   r   r  r.   r   r   r   r   r   )	ro   r  ra   r  r.   r   rb   r   r   s	            r'   test_other_timedelta_unit#TestMerge.test_other_timedelta_unit  s    sCj12dD\#s&AdV1?"CCz5

5! 6 **W%..v6C**U#,,V4Cv;$$---3F*bhhu~U.ST &)
 	f* 65s   D
Dc                    [        / SQ/ SQ/ SQS.5      n[        / SQ/ SQ/ SQS.5      n/ SQUl        / SQUl        [        / SQ/ SQ/ SQ/ SQ/ SQS.5      n/ SQUl        [        R                  " [	        X5      U5        / S	QUl        S
n[
        R                  " [        US9   [	        X5        S S S 5        g ! , (       d  f       g = f)Nr:  r;  r<  r~   r   r   )r~   r0   r0   )r~   r   r   )r~   r   r   v3v4)r~   r0   r0   r   r   )ri   r0   r0   z?Data columns not unique: Index\(\['foo'\], dtype='object|str'\)r   )r   r   r   r   r   r   r   r   )ro   rp   rb   r   r   s        r'   &test_overlapping_columns_error_message0TestMerge.test_overlapping_columns_error_message+  s    y	KL	)LM*
+ 
 ?
eBnh7 -P]]:S1"N 211s   %B::
Cc                    [        [        R                  " SSSS9SS/S.5      n[        [        R                  " SSSS9/ S	QS.5      n[        [        R                  " SS
SS9SS[        R                  [        R                  /[        R                  SSS/S.5      n[        XSSS9n[        R                  " XC5        g )N20151010r   r2   periodsr4   r+   r   20151011r\   r:  r]   rU  r~   r   r   )r   r5   
date_ranger   r<   r   r   r   r   s        r'   test_merge_on_datetime64tz$TestMerge.test_merge_on_datetime64tzC  s    }}Z|LQ
 }}Z|L"
 }}Z|Lq"&&"&&1FFAq!,
 tu':
f/r)   c                    [        SS/[        R                  " SSSS9S.5      n[        SS/[        R                  " SSSS9S.5      n[        / S	Q[        [        R                  " SSSS95      [        R                  /-   [        R                  /[        [        R                  " SSSS95      -   S
.5      n[        XSSS9n[        R                  " XC5        US   R                  S:X  d   eUS   R                  S:X  d   eg )Nr+   r   r  r2   r  r   r\   r  r:  rU  r~   r   r   r   zdatetime64[ns, US/Eastern]r   )	r   r5   r  r   r=   r   r   r   r.   r   s        r'   test_merge_datetime64tz_values(TestMerge.test_merge_datetime64tz_values\  s    1vz1N
 1vz1N
  j! UV66(FF8r}}Z|LMN	
 tu':
f/i &&*FFFFi &&*FFFFr)   c           
      B   [         R                  " SS9n[        [        S/US9S/[        S/US9S./ SQS9nUS S	 nUR	                  US
S9n[        [        US9[        [        S9[        US9[        [        S9[        US9S./ SQS9n[        R                  " XE5        g )NUTCr3   2018r-   g      @2019)r   rt   date2r   r   r   r   )r   r   date2_xr   date2_y)	r5   DatetimeTZDtyper   r   r   r   r:   r   r   )ro   dtzr   r   r   r   s         r'    test_merge_on_datetime64tz_empty*TestMerge.test_merge_on_datetime64tz_emptyw  s      E*%vhc:&xs;
 /
 RayEf-S)!.!,!.!, I	
 	f/r)   c           	         [        [        R                  " SSSSS9S/S9nSUS	'   [        [        R                  " / S
Q5      SS.5      nUS   R                  R                  S5      R                  R                  S5      US'   [        XSSS9n[        [        R                  " SSSSS9S/S-  [        R                  /S-  -   [        R                  /S-  S/S-  -   S.5      n[        R                  " X45        g )Nz2017-10-29 01:00r]   r  zEurope/Madrid)r  freqr4   r   r   r+   rt   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00r   )r   rt   r  r   r   r   r|   r\   )r   r   r   )r   r5   r  to_datetimer  tz_localize
tz_convertr   r   r<   r   r   r  s        r'   +test_merge_datetime64tz_with_dst_transition5TestMerge.test_merge_datetime64tz_with_dst_transition  s    MM,acoVH
 G 	
 &knn007::EEoVFsW8& 37bffX\1FF8a<1#'1
 	f/r)   c           	         [         R                  " SSSS9n[        [        [	        [        U5      5      5      US/S9n[        X"/5      nUR                  USSSS	9n[        [        R                  " [        R                  " S[        R                  S
9R                  S5      R                  SS5      S5      SS/UR                  5       R                  S9n[         R"                  " XE5        g )Nz
2016-01-01   Mr  r  pnumr   r   Tr   )r   r   r   r-   r   r+   pnum_xpnum_yr   r   )r5   period_ranger   r   r   r   r   r   r   r   r  r,   repeatreshape
sort_indexr   r   r   )ro   r   rp   rb   r   r   s         r'   "test_merge_non_unique_period_index,TestMerge.test_merge_non_unique_period_index  s    bsCtE#e*-.efXNbX#$DgNGGBIIb188;CCBJANx(.."((

 	f/r)   c                    [        [        R                  " SSSS9SS/S.5      n[        [        R                  " SSSS9/ S	QS.5      n[        [        R                  " SS
SS9SS[        R                  [        R                  /[        R                  SSS/S.5      n[        XSSS9n[        R                  " XC5        g )Nr  r   r  r  r+   r   r  r\   r:  r]   rU  r~   r   r   )r   r5   r  r   r<   r   r   r   r   s        r'   test_merge_on_periodsTestMerge.test_merge_on_periods  s    OOJDPQSTvV
 z13G"
 z13Gq"&&"&&1FFAq!,
 tu':
f/r)   c           	         [        SS/[        R                  " SSSS9S.5      n[        SS/[        R                  " SSSS9S.5      n[        R                  " SSSS9n[        R                  " SSSS9n[        / S	Q[        U5      [        R                  /-   [        R                  /[        U5      -   S
.5      n[        XSSS9n[        R                  " Xe5        US   R                  S:X  d   eUS   R                  S:X  d   eg )Nr+   r   r  r  r  r   r\   r  r:  rU  r~   r   r   r   z	Period[D]r   )	r   r5   r  r   r=   r   r   r   r.   )ro   r   r   exp_xexp_yr   r   s          r'   test_merge_period_values"TestMerge.test_merge_period_values  s    FR__ZQT%UV
 FR__ZQT%UV
 
AC@
AC@ ;"&&1FF8d5k1
 tu':
f/i &&+555i &&+555r)   c                    Uu  p#UR                  5       nUR                  5       n[        / SQSS[        R                  [        R                  [        R                  [        R                  /SS[        R                  [        R                  [        R                  [        R                  /[        R                  SSSSS/[        R                  SSSSS/S	.5      n[	        / S
Q/ SQS9US'   U/ SQ   n[        X#SSSS9n[        R                  " Xv5        UR                  USSSS9n[        R                  " Xv5        [        R                  " X$5        [        R                  " X55        UnUR                  SS0S9n[        X#SSSS9n	[        R                  " X5        UR                  USSSS9n	[        R                  " X5        g )Nr   r+   r   r\   r]   r^   r+   r   rW   rX   r\   r]   r^   )rY   col_conflict_xr[   col_conflict_yr_   )	left_onlyboth
right_onlyr  r  r  r  r  r  
categories_merge)rY   r  r[   r  r_   r  rY   r   Tr   r   	indicatorcustom_namer   )	r   r   r   r<   r
   r   r   r   rename)
ro   rc   ra   rb   df1_copydf2_copy	df_resulttestdf_result_custom_nametest_custom_names
             r'   test_indicatorTestMerge.test_indicator  s   $88:88:*#$a"H #rvvrvvrvvrvvF#%661aAq"9 ffaAq!4
	 * ;

	( 	
	 S&gF
d.yyWyE
d. 	c,
c, !* 5 < <}- != !
 !W
 	.F99F= % 
 	.Fr)   c           	         Uu  p#Sn[         R                  " [        US9   [        X#SSSS9  S S S 5        [         R                  " [        US9   UR                  USSSS9  S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nz<indicator option can only accept boolean or string argumentsr   rY   r   r^   r  r   )ro   rc   ra   rb   r   s        r'   #test_merge_indicator_arg_validation-TestMerge.test_merge_indicator_arg_validation'  si    $L]]:S1#v7a@ 2]]:S1IIcf'QI? 21 2111s   A*A;*
A8;
B	c                 p   Uu  p#[        X#SSSS9nUR                  S:g  R                  5       (       d   eUR                  USSSS9nUR                  S:g  R                  5       (       d   e[        X#SSSS9nUR                  S:g  R                  5       (       d   eUR                  USSSS9nUR                  S:g  R                  5       (       d   e[        X#SSSS9nUR                  S	:H  R                  5       (       d   eUR                  USSSS9nUR                  S	:H  R                  5       (       d   eg )
NrY   r   Tr  r  r   r  r   r  )r   r  r   )ro   rc   ra   rb   test2test3test4s          r'   %test_merge_indicator_result_integrity/TestMerge.test_merge_indicator_result_integrity1  s/   $c6vF,113333		#&f	E,113333c6w$G+002222		#&g	F+002222c6w$G&++----		#&g	F&++----r)   c           
         Uu  p#S H~  n[        SSS/USS/05      nSU S3n[        R                  " [        US9   [	        X%SSS	S
9  S S S 5        [        R                  " [        US9   UR	                  USSS	S
9  S S S 5        M     [        SS/SS/S.5      nSn[        R                  " [        US9   [	        UUSSSS
9  S S S 5        [        R                  " [        US9   UR	                  USSSS
9  S S S 5        g ! , (       d  f       N= f! , (       d  f       GM  = f! , (       d  f       Ng= f! , (       d  f       g = f)N)_right_indicator_left_indicatorr  rY   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  )rY   custom_column_namez:Cannot use name of an existing column for indicator columnr-  r   r   r   r   r   )ro   rc   ra   rx  r$  df_badcolumnr   s          r'   test_merge_indicator_invalid&TestMerge.test_merge_indicator_invalidD  s4   "BA$fq!fa!Q%@AL  !s #MM 
 z5cF4P 6z5		,6w$	O 65 C !1a&A!OPJ]]:S1. 2 ]]:S1IIW@T   21# 6555 21 21s/   D*D6D%%D6
D	
D"	%
D36
Ec                 .   [        SS/SS/S.5      n[        / SQ/ SQS.5      n[        / SQ/ S	QS.5      n[        / S
Q/ SQS9US'   [        XSS/SSS9n[        R                  " XC5        UR                  USS/SSS9n[        R                  " XC5        g )Nr   r+   rW   rX   )rY   col2)r+   r+   r\   )rX   rD   r  )r   r+   r+   r\   rW   rX   rD   r  )r  r  r  r  r  r  r  rY   r3  r   Tr  r   r
   r   r   r   )ro   df3df4hand_coded_resulttest5s        r'   %test_merge_indicator_multiple_columns/TestMerge.test_merge_indicator_multiple_columnsf  s    !Q#s<=ODE%!+?@
 '2=:'
(#
 cFF#3DQ
e7		#66"24	P
e7r)   c           	      $	   [        / SQ/ SQS.[        S5      S9n[        / SQ/ SQS.[        S	5      S9nUR                  5       nUR                  5       n[        XS
S
SS9n[        R
                  " X5        [        R
                  " X$5        [        / SQ/ SQ/ SQ/ SQS.[        S5      / SQS9n[        XS
S
SS9n[        R
                  " XV5        [        / SQ/ SQ/ SQS.[        S5      S9n[        XSSS9n[        R
                  " X5        [        R
                  " X$5        [        R
                  " XW5        [        XSSS9n[        R
                  " XW5        [        / SQ/ SQ/ SQS./ SQ[        S5      S9nUR                  S5      n	[        U	US
SSS9n[        R
                  " XX5        [        U[        S/S/S.S/S9/5      n
[        UU
S
S
SS9  Sn[        R                  " [        US9   [        UU
S
S
SS9  S S S 5        [        R                  " [        US9   [        XSSS9  S S S 5        [        U[        S/S/S.S/S9/S
S9n[        UUS
S
SS9  S n[        R                  " [        US9   [        UUS
S
SS9  S S S 5        [        R                  " [        US9   [        XSSS9  S S S 5        [        XSS!S9  S"n[        R                  " [        US9   [        UU
S
S
SS9  S S S 5        S#n[        R                  " [        US9   [        XSSS9  S S S 5        S$n[        R                  " [        US9   [        XSS%S9  S S S 5        [        / S&Q/ S'Q/ SQS.[        S5      S9n[        / S(Q/ S)Q/ S*QS+.[        S5      S9n[        / S(Q/ S)Q/ S,Q/ S*QS.[        S5      S9nS-n[        R                  " [        US9   [        XSSS9  S S S 5        [        XSS./SS9n[        R
                  " X]5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNb= f! , (       d  f       GNE= f! , (       d  f       GN(= f! , (       d  f       N= f)/Nr#  )catdogweaselhorser   r]   r   rW   rX   ry   rz   r{   )meowbarkum... weasel noise?naychirprW   ry   r^   Tz1:1)r   r   validate)rB  rC  rD  rE  )a_xrX   a_yry   r  
one_to_oner1  rW   )r   rH  rX   rW   ry   r  )r   r   rH  r{   mooone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger   cowr\   )r   many_to_onezAMerge keys are not unique in left dataset; not a one-to-one mergemany_to_manyzCMerge keys are not unique in right dataset; not a many-to-one mergezBMerge keys are not unique in left dataset; not a one-to-many mergez"jibberish" is not a valid argument. Valid arguments are:
- "1:1"
- "1:m"
- "m:1"
- "m:m"
- "one_to_one"
- "one_to_many"
- "many_to_one"
- "many_to_many"	jibberish)rW   rW   rX   rX   )r   r+   r   r+   rW   rW   rX   )r   r+   r   )rB  rC  rD  )rW   rX   rz   )r=  r>  r?  zQMerge keys are not unique in either left or right dataset; not a one-to-one mergerX   )r   r   r   r   r   r   r   r   r   r   r   r   )ro   r   r   	left_copy
right_copyr   r   
expected_2
expected_3left_index_resetright_w_dupsr   left_w_dupsexpected_multis                 r'   test_validationTestMerge.test_validationy  s[   &-NO(

 .L (
 IIK	ZZ\
ttPUV
d.
e0 +6+C	 (,	
 Dd\
 	f/)6C
 (

 tsU;
d.
e0
f1ts\B
f1 6)C
 $(

  >>#.!
 	f1 uise5'0JSTRU&VWX"	
 S]]:S1 % 2 ]]:S1$|D 2 9C5w7sCD4
 	"	
 R]]:S1 % 2 ]]:S1+|D 2 	kC.IS]]:S1 & 2 S]]:S1+mL 2
	 	 ]]:S1$#< 2 )!6
 (
 $<
 (
 #$-<	 (
% 	 ]]:S1$#6 2 tSzEB
f5W 21 21  21 21 21 21  21H 21s`   4P#P9P'(P9"QQQ/R
P
P$'
P69
Q
Q
Q,/
Q>
Rc                     [        / / / S.5      n[        R                  " SS9   [        XSS9  S S S 5        g ! , (       d  f       g = f)Nr1  raise)divider   r   )r   r   errstater   )ro   rW   s     r'   )test_merge_two_empty_df_no_division_error3TestMerge.test_merge_two_empty_df_no_division_error>  s5    BRb12[[(!:& )((s	   8
Ar   zindex,expected_index)r+   r   r]   )r+   r   r]   NNN)
2001-01-01
2002-02-02
2003-03-03zM8[ns]r-   rd  re  rf  r:  )r+   r   r\   NNN)r+   r   r   r\   r\   r]   rg  rh  ri  )rd  
2001-01-02
2001-01-03r  )r  rj  rk  )1d2d3drl  rm  rn  c           
      J   [        / SQ/ SQS.US9n[        S/ SQ05      nUR                  USSUS9n[        / S	Q/ S
Q/ SQ[        R                  SS/[        R                  SS/[        R                  SS/// SQS9nUR	                  USS9  [
        R                  " Xg5        g )NrI  rW   r~   r   rX   r  r~   Tr   )r   r   r   r+   r+   r+   r   r   r   r\   r]   r^   rW   r~   rX   r   )inplace)r   r   r   r<   r   r   r   )ro   r   r   expected_indexra   rb   r   r   s           r'   $test_merge_on_index_with_more_values.TestMerge.test_merge_on_index_with_more_valuesD  s    ^ i	:%H01234SIAAA &

 	>48
f/r)   c                     [        / SQ/ SQS.5      n[        S/ SQ05      n[        / SQ/ SQ/ SQS./ SQS	S
S[        R                  /S9nUR                  USSSS9n[        R
                  " XC5        g )Nr:  )r   r+   r+   rp  rX   r+   r   r\   N)r   r+   r+   r   )r+   r   r   r\   rs  r   r+   r   r  r~   Tr   r   r   r   r<   r   r   r   r   s        r'   test_merge_right_index_right&TestMerge.test_merge_right_index_right  so     y;<3	*+!,\J%aBFF#

 E5dP
f/r)   c                     [        SS/SS/S.5      n[        SS/SS/S.5      nUR                  USS	/US
9nUS:X  a  [        SS/SS/S.5      nO[        SS/SS/S.5      n[        R                  " XE5        g )Nr>  pig(   r  )animal	max_speedquetzalP   r  r  r   r   r   )ro   r   left_dfright_dfr   r   s         r'   test_merge_preserves_row_order(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
f/r)   c           	      L   [        / SQ[        / SQ[        S5      S9S.5      n[        S/ SQ0[        / SQ5      S9nUR	                  US	S
SS9n[        / SQ[        / SQ5      / SQS.SSS[
        R                  /S9nUR                  / SQS9n[        R                  " X45        g )Nr:  rS  abcr  rp  rX   r1  r   r~   Tr   r   ry  )rW   rW   rX   ry   )r+   r+   r   r\   rs  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_dtypeBTestMerge.test_merge_take_missing_values_from_index_of_other_dtype  s    "?tE{K
 3	*2B?2STE5dP$"#78!
 aBFF#
 ##,=#>
f/r)   c                 J   [        [        R                  " S5      R                  S5      S-   / SQS9n[        [        R                  " S5      R                  S5      S-   / SQS9nUR                  R
                   H  nSUR                  l        M     UR                  U5        g )	Nr   )r]   r^   r+   rA  r   )r^   r]   r4  F)	r   r   r  r  _mgrr  flags	writeabler   )ro   rk   rl   r&   s       r'   test_merge_readonlyTestMerge.test_merge_readonly  s    IIbM!!&)A-7P
 IIbM!!&)A-7K

 ::$$C"'CII % 	Er)   r7   N)Rr  r  r  r  r   fixturerp   rb   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r%  r(  markparametrizer+  r7  rK  rR  rX  r]  rl  rp  r  r  filterwarningsr  r  r  r  r  r  r  r  r  r  r   r  r  r  r"  r(  r0  r:  r\  rb  r   r   r5   r=   r   ALL_REAL_NUMPY_DTYPESr   r   float64r   from_tuplesr<   r   r   rv  r{  r  r  r  r  ).0dtypr   r   s   0000r'   re   re   q   si   ^^  ^^
 
 ^^
 
 ^^
 
0+

00H8G*H&8 7(
+M0&2.K@*, [[U$GH, I, [[5S1D1-		
..-^('T0$0*@@ [[e_5o7NO [[UVW$560 70C*0 [[W	1	1040  [[V%KL+ M+: [[V%KL+ M+2002G6020@00*6,=G~@.& D8&C6J' [[UWg$67[[ !+ !<=
 >h !<rvvrvvrvvV"	&	
& 44
 5D )405RZZH 5&	
, ))*BC))VVRVVRVVRVVD+&	
8 FSQ!<rvvrvvrvvV7&	
F 12dD"&&"&&"&&IJE&	
)T0U) 8V0*0 [[UVW$56	0 7	00*s   '0Nre   c           	          S Hi  nS H`  nU R                  XUS9n[        U R                  5       UR                  5       X#S9nUR                  S5      n[        R
                  " XESS9  Mb     Mk     g )N)r   r   r   )TFr   r   r   F)check_names)r   r   r  r   r   r   )rD   r  r   r   r   r   s         r'   r  r    sd    )!DVVATV2FQ]]_ammo3RH))'2H !!&F " *r)   c                      \ rS rSr\R
                  R                  SSS/\" SS/5      R                  S5      /5      S 5       r	\R
                  R                  S\
R                  \
R                  \
R                  \
R                  \
R                  \
R                   /5      \R
                  R                  S\
R                  \
R"                  \
R$                  \
R&                  /5      S	 5       5       r\R
                  R                  S
/ SQ/ SQ/ SQ/ SQS.4/ SQSS/SS/SS/S.4SS// SQSS/SS/S.4/5      S 5       rS rS rS rS r\R
                  R                  S/ SQ\" / SQ5      R                  S5      4/ SQ\" / SQ5      R                  S5      4SS/\" SS/\S 94SS/\" SS/\S 94/5      S! 5       r\R
                  R                  S\" SS/S"S 9/ S#Q4\" SS/S$S 9/ S#Q4/ SQ/ S%Q4/ SQ/ S%Q4/ SQ/ S%Q4\R<                  " S&SS'S(9S)S*/4\R<                  " S&SS'S(9SS/4\R<                  " S&SS'S(9S+S/4\R<                  " S,SS-9\R<                  " S,SS.S/94/	5      S0 5       r\R
                  R                  S1SS/S24/ S34S/S44S/S54/5      S6 5       r \R
                  R                  S1S7S8/S24/ S34S8/S44S7/S54/5      S9 5       r!\R
                  R                  S:S3/ S;Q/ S<Q/4S2/ S<Q/ S;Q/4S5/ S;Q/ S<Q/4S4/ S<Q/ S;Q/4/5      S= 5       r"S> r#\R
                  R                  S?/ S@Q5      SA 5       r$SBr%gC)DTestMergeDtypesi  
right_valsr0   r   categoryc                 T   [        SS/[        SS/5      R                  S5      SS/SS/[        SS/SS	9[        SS/S
S	9S.5      n[        SU05      n[        X#SS9n[	        UR
                  R                  5      (       d'  [        UR
                  R                  5      (       d   eg g )Nr0   r   r  r+   r         ?       @uint64r-   int32)r  r  Cr  EFr  r   )r   r   r   r   r   r  r.   r   )ro   r  r   r   r   s        r'   test_differentTestMergeDtypes.test_different  s     U^UEN+22:>V3ZQF(3QF'2	
 3
+,
 ts+vxx~~../&((..2Q2QQQ2Q.r)   d1d2c           	         [         R                  " U5      n[         R                  " U5      n[        [         R                  " / SQS-  US9SS/S-  [         R                  " [         R                  " S5      [         R
                  S9S.5      n[        R                  " S	S
/5      n[        S[         R                  " SS/US90US9nUR                  USS/S9nUR                  5       n	UR                  S:X  a  [         R                  " S5      n[         R                  " [         R                  US9U	S'   SU	R                  U	R                  S:H  U	R                  S:H  -  S4'   SU	R                  U	R                  S:H  U	R                  S:H  -  S4'   [        R                   " X5        UR                  USS/SS9nU	R#                  SS/SSS9  [        R                   " X5        g )NrI  r   r-   r0   r   rb     )k1k2v)r   r   )r+   r0   r   r^   r|   r   r  r  r   r$  r  r   r+   Trg  	mergesort)kindrt  )r   r.   r   r   r  r,   r   r  r   r   r  r<   r   r  r  r   r   sort_values)
ro   r  r  dtype1dtype2r   r   r   r   r   s
             r'   test_join_multi_dtypes&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
f/5dD\=dD\TJ
f/r)   zint_vals, float_vals, exp_valsr:  )r  r        @XYr  r  r+   r\   r   r  c                     [        SU05      n[        SU05      n[        U5      nUR                  USSS9n[        R                  " Xv5        UR                  USSS9n[        R                  " XvSS/   5        g )Nr  r  r   r   )ro   int_vals
float_valsexp_valsr  r  r   r   s           r'   test_merge_on_ints_floats)TestMergeDtypes.test_merge_on_ints_floats
  sx     sHo&sJ'(X&C#6
f/C#6
fSz&:;r)   c                     [        SS/SS/S.SS/S9n[        S	/S
/S.SS/S9nUR                  USSS9n[        SS/SS/[        R                  S/S./ SQS9n[        R
                  " X45        g )Nr  r  rs   r   r}   r~   r   r   r      )r~   r   r   r   r   g      i@r  )r   r   r   r<   r   r   r  s        r'   test_merge_key_dtype_cast)TestMergeDtypes.test_merge_key_dtype_cast   s    c
2r(;eT]SC51E4=I35f5#Jr2hrvvuoF'
 	f/r)   c                    [        S/ SQ05      n[        S/ SQ05      n[        S/S/S.5      n[        R                  " [        5         UR	                  USSS9n[        R
                  " XC5        S S S 5        [        R                  " [        5         UR	                  USSS9n[        R
                  " XCSS/   5        S S S 5        [        S[        R                  [        R                  S/05      n[        R                  " S 5         UR	                  USSS9n[        R
                  " XCSS/   5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)	Nr  r:  r  )皙?g      @r  r\   r  r  r   )r   r   r  UserWarningr   r   r   r<   )ro   r  r  r   r   s        r'   !test_merge_on_ints_floats_warning1TestMergeDtypes.test_merge_on_ints_floats_warning+  s&   
 sI&'sO,-A3cU34''4WWQcW:F!!&3 5 ''4WWQcW:F!!&C:*>? 5
 sRVVRVVS123''-WWQcW:F!!&C:*>? .- 54 54 .-s$   	(E -E
-E" 
E
E"
E0c                     [        S[        SS/[        S905      n[        SSS/05      n[        SSS/0[        S9n[        XSS9n[        R
                  " XC5        [        X!SS9n[        R
                  " XC5        g Nr~   TFr-   r   )r   r   r;   r   r   r   ro   ra   rb   r   r   s        r'   (test_merge_incompat_infer_boolean_object8TestMergeDtypes.test_merge_incompat_infer_boolean_objectC  sx    e}F CDEu./edE]36BsE*
f/sE*
f/r)   c                    [        S[        SS[        R                  /[        S905      n[        SSS/05      n[        SSS/0[        S9n[        XSS9n[        R                  " XC5        [        X!SS9n[        R                  " XC5        g r  )r   r   r   r<   r;   r   r   r   r  s        r'   5test_merge_incompat_infer_boolean_object_with_missingETestMergeDtypes.test_merge_incompat_infer_boolean_object_with_missingN  s     eRVV'<F KLMu./edE]36BsE*
f/sE*
f/r)   zdf1_vals, df2_valsrI  )rW   rX   rW   )rz  r  r  r   FTr-   c                 F   [        SU05      n[        SU05      n[        X4S/S9n[        UR                  R                  5      (       d   e[        XCS/S9n[        UR                  R                  5      (       d'  [        UR                  R                  5      (       d   eg g )Nr  r   )r   r   r   r  r.   r   )ro   df1_valsdf2_valsra   rb   r   s         r'   !test_merge_incompat_dtypes_are_ok1TestMergeDtypes.test_merge_incompat_dtypes_are_okZ  s      h(h(sSE*vxx~~....sSE*vxx~~../&((..2Q2QQQ2Q.r)   r  r1  r  )r  12z1/1/2011r  r  z
2011-01-01z
2011-01-02rz  20130101)r  r2   r  c                 `   [        SU05      n[        SU05      nSUS   R                   SUS   R                   S3n[        R                  " U5      n[        R
                  " [        US9   [        X4S/S9  S S S 5        SUS   R                   SUS   R                   S3n[        R                  " U5      n[        R
                  " [        US9   [        XCS/S9  S S S 5        [        U5      [        U5      :X  a  [        X!US.5      n[        X"US.5      nSUS   R                   SUS   R                   S	3n[        R                  " U5      n[        R
                  " [        US9   [        Xg5        S S S 5        SUS
   R                   SUS
   R                   S3n[        R                  " U5      n[        R
                  " [        US9   [        XgSS
/S9  S S S 5        g g ! , (       d  f       GNx= f! , (       d  f       GN$= f! , (       d  f       N= f! , (       d  f       g = f)Nr  You are trying to merge on  and zE columns for key 'A'. If you wish to proceed you should use pd.concatr   r   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   r.   reescaper   r   r   r   r   )ro   r  r  ra   rb   r   r6  r7  s           r'    test_merge_incompat_dtypes_error0TestMergeDtypes.test_merge_incompat_dtypes_errorr  s   4 h(h( *#c(..)9s3x~~>N OS S 	 iin]]:S1#u% 2
 *#c(..)9s3x~~>N OS S 	 iin]]:S1#u% 2
 x=CM) (IJC(IJC
 .c#hnn-=U3s8>>BR SW W  ))C.Cz5c 6 .c#hnn-=U3s8>>BR SW W  ))C.Cz5cC:. 65/ * 21 21$ 65 65s0   -G*G<-HH*
G9<
H
H
H-zexpected_data, howr   r   r   r   c                     [        S/S/US9n[        S/S/US9n[        XEUS9n[        [        U5      5      n[        X7S/US9n[        R
                  " Xh5        g )N)r+   idr
  )r   r  r   r   r.   r   r   r   r   r   r   )	ro   any_numeric_ea_dtyper   expected_datar  r  r   	exp_indexr   s	            r'   test_merge_EA_dtype#TestMergeDtypes.test_merge_EA_dtype  si     vv5IJvv5IJr3's=12	TFBV
 	f/r)   rW   rX   c                     [        S/S/US9n[        S/S/US9n[        XEUS9n[        [        U5      5      n[        X'S/US9n[        R
                  " Xh5        g )N)rW   r  r
  )rX   r  r  r  )	ro   r   r  any_string_dtyper  r  r   exp_idxr   s	            r'   test_merge_string_dtype'TestMergeDtypes.test_merge_string_dtype  si     x$7GHx$7GHr3'S/04&@P
 	f/r)   zhow, expected_data)Tr+   r]   )Fr^   r\   c                     [        SS/SS/S.5      n[        SS/SS/S.5      n[        X4US	9n[        U/ S
QS9n[        R                  " XV5        g )NTFr+   r^   r  r  r\   r]   r  r  r  r  r   r   )ro   r   r  ra   rb   r   r   s          r'   test_merge_bool_dtype%TestMergeDtypes.test_merge_bool_dtype  sX     tUm1a&9:udm1a&9:sS)]OD
f/r)   c                 `   [        / SQ/ SQS.[        R                  " 5       S9nUR                  5       n[        SSS[        R                  S/S	S
S[        R                  S/S.US9nUR                  5       n[        X5S/US9n[        R                  " X45        [        R                  " XV5        [        [        R                  " S5      [        R                  " 5       [        R                  " S5      /[        R                  " / SQ5      S9n[        R                  " UR                  U5        g )N)r  r  34N)r  5678)lvl0zlvl1-ar  zlvl1-b)datar.   r  r  r  r  r  r  911)r   r  zlvl1-cr   )r   r   r   r   O)r   r  r  r   )r   r5   StringDtyper   NAr   r   r   r   r   r.   r   r  r   rV  )	ro   r5  string_dtypera   r  rb   r  r   r   s	            r'   test_merge_ea_with_string)TestMergeDtypes.test_merge_ea_with_string  s    $>$= .."
 88:%(#sBEE3$?%(#sBEE4$@ 
 88:C0B/CS 	c,
c, XXc]BNN,bhhsm<((L
 	v}}h7r)   zleft_empty, how, exp)
)Fr   r   )Fr   empty)Fr   r  )Fr   r   )Fcrossempty_cross)Tr   r  )Tr   r   )Tr   r  )Tr   r   )Tr  r  c                    [        SS/SS/S.5      n[        S/S/S.SS	9nU(       a  UR                  S
5      nOUR                  S
5      nUR                  XRS9nUS:X  a2  [        SS/SS/[        R                  [        R                  /S.5      nOLUS:X  a!  [        S/[        R                  /S/S.5      nO%US:X  a  [        / SQSS9nOUS:X  a  [        / SQSS9nUS:X  a  WR                  SSS9n[        R                  " UW5        g )Nr   r+   r\   r]   r  r^   r  r,   r-   r   r  r   r  r   r  r
  r  )A_xr  A_yr  r   r  Tr  )r   headr   r   r<   r  r   r   )ro   
left_emptyr   r   r   r   r   r   s           r'   test_merge_empty TestMergeDtypes.test_merge_empty  s      1vQF341#.g>99Q<DJJqMEE+&= 1vQF"&&"&&AQ!RSHG^ s"&&!DEHG^ HHM! )AQH'>++Cd+CH
fh/r)   r7   N)&r  r  r  r  r   r  r  r   r   r  r   r,   r  intcint16int8uint8r  float32float16r  r  r  r  r  r  r;   r  r  r5   r  r  r  r  r  r  r  r  r7   r)   r'   r  r    s   [[u~vuen'='D'DZ'PQRR& [[rxx277BHHbggrxxH [[TBHHbjj"**bjj#QR0 S0> [[(y)OPc
1a&Sz$BCV_QF#s&DE	
<<	0@0	0
0 [[ /66zBCf_5<<ZHIVVUDM89VVUDM67	

R
R [[ QF(+_=QF'*O<(o.(j!#>|, ]]:qs;aVD]]:qs;c3ZHj!4j!E	
*3/+*3/j [[VWMS'NS&M		
	0	0 [[3Z!MUGUFO		
	0	0 [[|]34}l34lM23}l34		
008B [[	
00r)   r  c            	         [        [        [        R                  R	                  S5      R                  SS/SS95      R                  [        SS/5      5      [        R                  R	                  S5      R                  / SQSS9S.5      $ )Nr   r0   r   )rs   r`  )onetwothreer  )r   r   r   r    r!   choicer   r	   r7   r)   r'   r   r   ?  sy    		%%a(//U/Kf%uen56&&q)001Hu0U		
 r)   c                  l    [        [        SS/5      R                  [        SS/5      5      SS/S.5      $ )Nr0   r   r+   r   )r  Z)r   r   r   r	   r7   r)   r'   r   r   K  s<    '../?/OPQ	
 r)   c            
          \ rS rSrS rS rS rS r\R                  R                  SSS/5      S	 5       rS
 r\R                  R                  SS S S /5      S 5       rS rS r\R                  R                  SSS/5      \R                  R                  S/ SQSS/SS/4/ SQSS/SS/4/ SQSS/SS/4/5      S 5       5       rS rSrg)TestMergeCategoricaliU  c                     [        XSS9nUR                  R                  5       nU(       d  [        R                  " S5      OSn[        [        SS/S9XU// SQS	9n[        R                  " XF5        g )
Nr  r   r  strr0   r   r  )r  Y_xY_yr   	r   rV  r  r   r.   r   r	   r   r   )ro   r   r   r   r   r.   r   s          r'   test_identical#TestMergeCategorical.test_identicalV  s_    tc*))+%7U%8%G%
 	v0r)   c                    [        XSS9nUR                  R                  5       nU(       d  [        R                  " S5      OSn[        [        SS/S9U[        R                  " S5      // S	QS
9n[        R                  " XW5        g )Nr  r   r  r'  r0   r   r  r,   r  r  r#  r   r*  ro   r   r   r   r   r   r.   r   s           r'   
test_basicTestMergeCategorical.test_basica  sr     ts+))+%7U UEN;!
 "
 	v0r)   c           	         [        SSSSSS.SSSSSS.S.5      n[        S	S	S	S	S	S.S
S
S
S
S
S.S.5      n[        X!SSSS9nUR                  5       nUR                  5       nUS   R                  S5      US'   [        X%SSSS9nUS   R                  [	        S/5      5      US'   [
        R                  " Xd5        UR                  5       nUS   R                  S5      US'   [        XuSSSS9n[
        R                  " Xd5        UR                  5       nUS   R                  S5      US'   UR                  5       nUS   R                  S5      US'   [        XuSSSS9n[
        R                  " Xd5        g )NrW   rX   ry   rz   r{   )r   r+   r   r\   r]   nullr   r  r  r   r   )r   r   r   r  )r   r   r   r   r	   r   r   )ro   r   r   rp   r   crightr   clefts           r'   test_merge_categorical+TestMergeCategorical.test_merge_categoricalq  s    =Fv&VL
 ==
 4FC#F 779
 Sk((4stsK ,,-=vh-GH
f/ 		3Z&&z2c
u&#L
f/ Sk((4s		3Z&&z2c
u&#L
f/r)   c                     [        [        / SQ/ SQS9/ SQS.5      n[        [        / SQ/ SQS9/ SQS.5      n[        XS/S	9n[        [        / SQ5      / SQ/ S
QS.5      n[        R                  " X45        g )Nr  r  )A0B0C0)FooLeft)r  r  r  )C1B1A1)r<  Rightr<  r   )r@  r?  r>  )r<  r=  rA  r5  r  s        r'   'tests_merge_categorical_unordered_equal<TestMergeCategorical.tests_merge_categorical_unordered_equal  sy    "?O*
 "?O+
 sUG,"?3*+
 	f/r)   orderedTFc                    [        SS/US9n[        / SQ[        / SQUS9/ SQS.5      R                  S	S
/5      n[        / SQ[        / SQUS9/ SQS.5      R                  S	S
/5      n[	        X4SSSS9n[        / SQ[        / SQUS9/ SQSS[
        R                  /S.5      R                  S	S
/5      n[        R                  " XV5        g )NP2P1r  rD  )r  r  r  )rF  rG  rF  r-   rI  )r  prW   r  rI  )r  r  r  )rF  rF  rG  )rs   r  rb  )r  rI  r  r   Tr   g      &@g      (@)r  rI  rW   r  )	r	   r   r
   r   r   r   r<   r   r   )ro   rD  pcatra   rb   r   r   s          r'   5test_multiindex_merge_with_unordered_categoricalindexJTestMergeCategorical.test_multiindex_merge_with_unordered_categoricalindex  s      D$<I% !34@
 )T3K
  	 % !34@"
 )T3K
  	 sV$O% !34@T266*	
 )T3K
  	 	f/r)   c                 H   UR                  UR                  R                  S5      S9n[        XSS9nUR                  R                  5       nU(       d  [        R                  " S5      OSn[        [        SS/S	9U[        S
S/S	9// SQS9n[        R                  " XW5        UR                  R                  R                  UR                  R                  5      (       d   eUR                  R                  R                  UR                  R                  5      (       d   eg )Nr  )r#  r  r   r  r'  r0   r   r  r+   r   r.  r   )assignr#  r   r   rV  r  r   r.   r   r	   r   r   r  rn  #_categories_match_up_to_permutationr/  s           r'   test_other_columns'TestMergeCategorical.test_other_columns  s    uww~~j9:ts+))+%7U UEN; QF3
 "
 	v0 vv}}@@QQQQww~~AA&((//RRRRr)   changec                     U $ r@   r7   rC   s    r'   rE   TestMergeCategorical.<lambda>  s    ar)   c                 :    U R                  [        / SQ5      5      $ )N)r0   r   bahr   r	   rC   s    r'   rE   rT    s    ahh/0EFGr)   c                 2    U R                  [        SS95      $ )NTrD  rW  rC   s    r'   rE   rT    s    ahh/=>r)   c                    U" UR                   R                  S5      5      nUR                  US9n[        UR                   R                  R
                  [        5      (       d   e[        X4SUS9nUR                  R                  5       nU(       d  [        R
                  " S5      OSn	[        X[        R
                  " S5      // SQS	9n
[        R                  " X5        g )
Nr;   )r  r  r   r  r'  r,   r.  r   )r  r   rN  r  rn  r.   r	   r   rV  r  r   r   r   r   )ro   rR  r5  r   r   r   r  r   r   r.   r   s              r'   test_dtype_on_merged_different3TestMergeCategorical.test_dtype_on_merged_different  s     577>>(+,q!$&&----/?@@@@ ts	:))+%7U5'):;?S
v0r)   c                 n   Sn[        / SQU-  / SQS-  U-  S VVs/ s H  nU/S-  U-    H  nUPM     M     snnS VVs/ s H  nU/U-    H  nUPM     M     snnS.5      nUR                  S 5      n[        XD[        UR                  5      S	9n[
        R                  " XT5        g s  snnf s  snnf )
Nr^   )
rW   rX   ry   rz   r{   r  r  r  r$  j)r  wrD   r  r3  r   )r  r$   urI  o)
aabbccddeeffgghhiijjr#  c                 $    U R                  S5      $ )Nr  )r   rC   s    r'   rE   ITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>"  s     4r)   r   )r   applyr   r   r   r   r   )ro   r  eachletterrp   r   s         r'   "test_self_join_multiple_categories7TestMergeCategorical.test_self_join_multiple_categories  s     G!K.2Q6 !: 9#'&1*q. "0  9!! $(&1*  #- !
: XX45 r$rzz"23
f)=
s   B+B1c                     [        [        SSS5      S/[        SSS5      S//SS/S9nUS   R                  S	5      US'   [        [        SSS5      S/[        SSS
5      S//SS/S9nUS   R                  S	5      US'   [        [        R                  " S5      R                  5       SS/[        R                  " S5      R                  5       S[
        R                  /[        R                  " S5      R                  5       [
        R                  S/// SQS9n[        XSS/S9n[        R                  " XC5        [        [        R                  " S5      R                  5       SS/// SQS9n[        XSS/S9n[        R                  " Xe5        g )Ni  r+   r  r   ?r   num2r   r  r\   ffffff?num4rd  rj  rk  )r   ru  rw  r   r  r   )
r   r   r   r5   r6   r   r<   r   r   r   )ro   rp   rb   expected_outerresult_outerexpected_innerresult_inners          r'   test_dtype_on_categorical_dates4TestMergeCategorical.test_dtype_on_categorical_dates)  s    4A$tD!Q'7&=>QWHX
 Z&&z26
4A$tD!Q'7&=>QWHX
 &k((4F"l+002C=l+002C@l+002BFFC@
 -
 R'vh?
l;"ll<(--/c:;,
 R'vh?
l;r)   z.category_column,categories,expected_categories)FTTF)r   r+   r+   r   r+   r   )FalseTruer  r~  r  r~  c                 4   [        / SQUS.5      nUS   R                  [        X$S95      US'   [        SS/SS/S	.5      nUR                  U5      n[        SS/USS/S
.5      nUS   R                  [        X$S95      US'   [        R
                  " X5        g )Nr   )r  r=  r=  rY  r   r]   r+   r=  )r  num)r  r=  r  )r   r   r	   r   r   r   )	ro   category_columnr  expected_categoriesrD  ra   rb   r   r   s	            r'   /test_merging_with_bool_or_int_cateorical_columnDTestMergeCategorical.test_merging_with_bool_or_int_cateorical_columnI  s     |ODEZ&&'7
'TUE
1vq!f563QF3FPQSTvVW"5/00Z9
 	h/r)   c                     [        [        SS[        R                  /SS9SS.5      n[	        XSS9n[        [        SS[        R                  /SS9SSS.5      n[
        R                  " X#5        g )	Nr+   r   r/   r-   r  r  r   )r  B_xB_y)r   r   r   r<   r   r   r   )ro   rp   r   r   s       r'   test_merge_on_int_array,TestMergeCategorical.test_merge_on_int_arraya  sc    VQ266N'BKLr#&!Qw7!L
 	f/r)   r7   N)r  r  r  r  r+  r0  r6  rB  r   r  r  rK  rP  r[  rq  r|  r  r  r  r7   r)   r'   r%  r%  U  s   	11 )0V02 [[Yu60 708S* [[G>	
11$&*P<@ [[Yu6[[8'$uFAq6Aq6*/&'1BVWDUV	
0 700r)   r%  c                  "    [        S/ SQ0/ SQS9$ )NrW   r   rs   r   r   r+   r   r   r`   r7   r)   r'   r  r  k  s    c;'y99r)   c                  "    [        S/ SQ0/ SQS9$ )NrX   ,  d   r  r\   r+   r   r   r`   r7   r)   r'   r  r  p  s    c?+9==r)   c                   0   \ rS rSr\R
                  R                  SSS\" SS/SS/S	.S
S/S94SS\" SS/SS/S	.SS
/S94SS\" / SQSS\R                  /S	./ SQS94SS\" / SQ\R                  SS/S	./ SQS94SS\" \R                  SS// SQS	./ SQS94SS\" SS\R                  // SQS	./ SQS94SS\" SSS\R                  /\R                  SSS/S	./ SQS94SS\" SSS\R                  /\R                  SSS/S	./ SQS94/5      S 5       r
Srg)TestMergeOnIndexesiu  zhow, sort, expectedr   Fr   rs   r  r  r   r   r+   r   Tr   r  r  )r   rs   r   rI  r   r  r  r  r  r  r:  r   r   r  r   c           	      H    [        XSSX4S9n[        R                  " Xe5        g )NT)r   r   r   r   r   )ro   r  r  r   r   r   r   s          r'   test_merge_on_indexes(TestMergeOnIndexes.test_merge_on_indexesv  s(    ` $Dc
 	f/r)   r7   N)r  r  r  r  r   r  r  r   r   r<   r  r  r7   r)   r'   r  r  u  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  r   r+   r   	index_colrA   r  r  )r  rB   )startstoprB   r1   z
2018-01-02r   c                 L    [        U 5      R                   SU R                   S3$ )N[r  )typer  r.   rC   s    r'   rE   rE     s     T!W%%&ay2r)   )rH   c                     [        SSS/0U S9n[        SSS/0U S9nUR                  US/S	9n[        SS/SS/S
.U S9n[        R                  " X45        g )N	left_datar+   r   r   
right_datar  r  r  r   )r  r  r   )r   r   r   r   r   s        r'   test_merge_index_typesr    sj     kAq6*%8D|c3Z0>EZZ;-Z0F1vc3ZHPUVH&+r)   z-on,left_on,right_on,left_index,right_index,nmr   r   F)NNNTTr  T)NNNTTNc                    [        S/ SQ0[        R                  " SS/SS//SS/S	9S
9n[        / SQ[        R                  " SS/SS//SS/S	9US9n[        SS/SS/S.[        R                  " SS/S//SS/S	9S
9nUb&  [	        UUU UUUUS9n	[
        R                  " X5        g Sn
[        R                  " [        U
S9   [	        UUU UUUUS9n	S S S 5        g ! , (       d  f       g = f)Nr  r   rW   rX   r   r+   r   r   namesr   r   r  r]   r\   r  )r   r   r   r   r   z$Cannot merge a Series without a namer   )
r   r   from_productr   r   r   r   r   r   r   )r   r   r   r   r   nmrW   rX   r   r   r   s              r'   test_merge_seriesr    s    		l%%SzAq6&:7GBTU	A 	%%SzAq6&:7GBTU	A
 !fAq6"%%SzA3&7?QRH 
~!#
 	f/4]]:S1!%'F 211s   C
C(c                  $   [        S/ SQ0[        R                  " SS/SS//SS/S	9S
9n [        / SQ[        R                  " SS/SS//SS/S	9SS9n[        R
                  " [        SS9   [        XSS/S9  S S S 5        g ! , (       d  f       g = f)Nr  r   rW   rX   r   r+   r   r   r  r   r   )r  r  r  z-Not allowed to merge between different levelsr   r   )r   r   r  r   r   r   r   r   r   s     r'   test_merge_series_multilevelr    s     		l%%SzAq6&:7GBTU	A 	%%SzAq6&:7GBTU	A
 
I
 	a)*
 
 
s   +B
Bz!col1, col2, kwargs, expected_colssuffixes) _dupr  0_dup)Nr  )_x_y0_x0_yr  r  rW   )Nr  rz  )r  Nz0.0_xrX   b_yrI  )Nr  )_aN0_arJ  c                    [        U / SQ05      n[        U/ SQ05      n[        SS/SS/SS//US	9nUR                  " U4S
S
S.UD6n[        R                  " Xv5        [        XE4S
S
S.UD6n[        R                  " Xv5        g )Nr:  r;  r+   r]   r   r^   r\   r   r   Tr   r   )rY   r3  kwargsexpected_colsrW   rX   r   r   s           r'   test_merge_suffixr  		  s    ( 	4#$A4#$A1a&1a&1a&1=IHWWQD4TDVDF&+1EDdEfEF&+r)   zhow,expectedr   r  <   F   X       )r  r?  B2)r+   r  r  r  r  r  r  r  c                     [        / SQ/ SQS.5      n[        / SQ/ SQS.5      n[        X#SU SS9n/ S	QUl        [        R                  " XA5        g )
N)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   s        r'   test_merge_duplicate_suffixr  )	  sH    , m,?@G_EFH7#MF*H&+r)   zcol1, col2, suffixes))rW   rW   )NN)rW   rW   )r  N)r   r   )Nr  c           	          [        U / SQ05      n[        U/ SQ05      nSn[        R                  " [        US9   [	        X4SSUS9  S S S 5        g ! , (       d  f       g = f)Nr:  r\   r]   r^   z'columns overlap but no suffix specifiedr   Tr   r   r  r.  )rY   r3  r  rW   rX   r   s         r'   test_merge_suffix_errorr  G	  sQ     	4#$A4#$A 4C	z	-atI 
.	-	-s   A
Ar   r   r   c           	          [        S/ SQ05      n[        S/ SQ05      n[        R                  " [        SS9   [	        XSSU S9  S S S 5        g ! , (       d  f       g = f)	NrW   r:  rX   r  zPassing 'suffixes' as ar   Tr  )r   r   r   	TypeErrorr   )r  rW   rX   s      r'   test_merge_suffix_raisesr  V	  sJ    3	"#A3	"#A	y(A	BatI 
C	B	B   A
Az2, got 3r  zcol1, col2, suffixes, msgr1  z%too many values to unpack \(expected z\)z1not enough values to unpack \(expected 2, got 1\)c           	          [        U / SQ05      n[        U/ SQ05      n[        R                  " [        US9   [	        XESSUS9  S S S 5        g ! , (       d  f       g = f)Nr:  r  r   Tr  r.  )rY   r3  r  r   rW   rX   s         r'   test_merge_suffix_length_errorr  b	  sJ     	4#$A4#$A	z	-atI 
.	-	-r  	cat_dtyper  r  reversec                 F   [        / SQSS9[        / SQSS9S.n[        [        / SQ5      R                  US   5      / SQS.5      R	                  S5      n/ SQn/ SQnU(       a   UR                  5         UR                  5         [        [        U5      R                  X    5      US	.5      R	                  S5      nUR                  US
S
S9n[        / SQ/ SQ[        / SQ5      R                  US   5      S.5      R	                  S5      n[        R                  " Xx5        g )Nr1  FrH  )r  r  r  r:  r0   r   r0   r0   r   Tr   r   r   r0   )	r	   r   r   r   r   r  r   r   r   )	r  r  
cat_dtypesra   data_foo
data_rightrb   r   r   s	            r'   test_merge_equal_cat_dtypesr  v	  s   
  ?EJ?EJJ
 '..z%/@A9Ui  HJ
x ''
(=>Ti  YYstY>F/*11*U2CD	
 i  &+r)   c                     [        / SQSS9n [        [        SS/5      R                  U 5      SS/S.5      R	                  S	5      n[        [        / SQ5      R                  U 5      / S
QS.5      R	                  S	5      nUR                  USSS9n[        SS/SS/[        SS/5      R                  U 5      S.5      R	                  S	5      n[        R                  " X45        g )Nr1  FrH  rW   rX   r+   r   r  r0   )r\   r   r+   r  Tr   r\   r  )r	   r   r   r   r   r   r   r   )r  ra   rb   r   r   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            
      6   [        S[        [        R                  " SS5      [        R                  " SS5      /SS905      n U R	                  5       nUS   R                  S5      US'   [        XSSS	9nU R	                  5       n[        R                  " X#5        g )
NrW   r   r+   r   intervalr-   r  r   r  )	r   r   r5   Intervalr   r   r   r   r   )r   r   r   r   s       r'   test_merge_on_cat_and_ext_arrayr  	  s    	fbkk!Q'Q):;:NOE ::<DS	  ,DI4G4Fzz|H&+r)   c                     / SQn / SQn[         R                  " X4SS/S9n[        US9nSUS'   [        US9nSUS'   S	nS
nUR                  USXV4S9nU  VV	s/ s H  o  H	  oU-   U	4PM     M     n
nn	U
S/-  n
X VV	s/ s H  o  H	  oU-   U	4PM     M     sn	n-  n
[         R                  " U
SS/S9n[        US9n[
        R                  " X|SS9  g s  sn	nf s  sn	nf )Nr#  r  r  r  r   r   r  r   r  r  r  r  r   r  )r  r  Fr~  )r   r  r   r   r  r   r   )lettersnumbersr   frame_xframe_yl_sufr_sufr   rp  r  tuplesru  r   s                r'   test_merge_multiindex_columnsr  	  s    #GG##W$6w>PQE&GGDM&GGDMEE]]7t~]GF 3:M'Wc~s#W#'FM
zlF
7N7gs$g$7NNF++F7G:LMN0H&> NNs   C?Cc                     [        / SQ/ SQS.5      n [        / SQ[        R                  " / SQ5      S.5      n[        XSSS	9n[        / SQ/ SQ[        R                  " / S
Q5      S.5      n[        R
                  " X#5        g )Nr1  )r  r  r  )rD   r  r  )200020012002)r  r3  r   r  r  )r  r  r=   r2  )r   r5   r  r   r   r   ra   rb   r   r   s       r'    test_merge_datetime_upcast_dtyper  	  so    
/@
AC
BNN3K$LMC 3C0F   78	
H &+r)   n_categoriesr^      c                    [        S/[        [        U 5      5      -   5      n[        [        U S-   5      S/US9n[        S//S/[        S/[        [        U 5      5      S9S9n[	        X#SSSS	9n[        [        U S-   5       Vs/ s H  oUS
:  a  US/OU[
        R                  /PM      snSS/US9n[        R                  " Xd5        g s  snf )Nr   r+   rt   r  r   r  r   Tr   r   g      @r   r   )	r   r   r   r   r   r   r<   r   r   )r  r   ra   rb   r   r$  r   s          r'   %test_categorical_non_unique_monotonicr  	  s    
 "1#U<-@(A"ABJ
E,*+gYj
QC

	stE,4G/HIC 3DdKF5:<!;K5LM5LU!SBFF	+5LMI&H
 (+	 	Ns   %C	c                     [        / SQ/ SQ5      / SQS.n [        U 5      n [        / SQ/ SQ5      / SQ/ SQS.n[        U5      R                  S	S
/5      S   n[        U UR	                  5       SS/S	S
/SS9nUR                  S	S
/SS9nU R                  USS/S9n[        R                  " X#5        [        / SQ/ SQSS9/ SQS.n [        U 5      n [        / SQ/ SQSS9/ SQ/ SQS.n[        U5      R                  S	S
/5      S   n[        U UR	                  5       SS/S	S
/SS9nUR                  S	S
/SS9nU R                  USS/S9n[        R                  " X#5        g )N)rW   rX   rW   ry   rW   rX   r1  )r   r+   r   r+   r   r   )Cat1Int1)rW   rX   ry   rW   rX   ry   )r   r   r   r+   r+   r+   )r  g333333?rt  rv  r  g?)CatIntFactorr  r  r  r  r  r   r  r+   )axisr   rL  TrY  )	r
   r   r   r   r  dropr   r   r   )rW   rX   r   r   s       r'   &test_merge_join_categorical_multiindexr  
  s    :OL"	A 	!A 9?K!0	A
 	!u~.x8A		 H }}eU^!}4HVVA66*V+F(+ *OT
 #		A 	!A *OT
 "0	A 	!u~.x8A		 H }}eU^!}4HVVA66*V+F(+r)   funcr   
merge_asof)r  err_msg)r   r   r   r   )r   r   r   r   c                     [        SS/SS/S.5      n[        SS/SS/S.5      nS	US
    SUS    S3n[        R                  " [        US9   [	        [
        U 5      " X440 UD6  S S S 5        g ! , (       d  f       g = f)Nr+   r   r\   r]   r   r^   r   rG  zCan only pass argument "r   " OR "z" not both\.r   r   r   r   r   getattrr5   r  r  r  r   r   r   s         r'   /test_merge_join_cols_error_reporting_duplicatesr  <
  s|     Aq6A/0DQF!Q01E%gaj\
|<
PC	z	-D$00 
.	-	-   A..
A<c                     [        SS/SS/S.5      n[        SS/SS/S.5      nS	US
    SUS    S3n[        R                  " [        US9   [	        [
        U 5      " X440 UD6  S S S 5        g ! , (       d  f       g = f)Nr+   r   r\   r]   r   r^   r   rG  zMust pass "r   r   z"\.r   r  r  s         r'   ,test_merge_join_cols_error_reporting_missingr  M
  s|     Aq6A/0DQF!Q01EF71:,c
:C	z	-D$00 
.	-	-r  r  c                     [        SS/SS/S.5      n[        SS/SS/S.5      nS	n[        R                  " [        US
9   [	        [
        U 5      " X#4SS0UD6  S S S 5        g ! , (       d  f       g = f)Nr+   r   r\   r]   r   r^   r   rG  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r   r   rW   r  )r  r  r   r   r   s        r'   1test_merge_join_cols_error_reporting_on_and_indexr	  ^
  sq     Aq6A/0DQF!Q01E	:  
z	-D$8#88 
.	-	-s    A##
A1c                      [        SS/SS/S.5      n [        SS/SS/S.5      n[        XSSSS9n[        SS/SS/SS/SS/SS/S.5      n[        R                  " X#5        g )	Nr+   r0   )rD   r3  r   TrD   )r   r   r   )rD   x_xz_xx_yz_yr   r   r   r   r   s       r'   test_merge_right_left_indexr  r
  s    Aq678DQF%89E4GsKFQq65>q65>	
H &+r)   c                  b   [        S/S/S.5      R                  SS/5      n [        SS/05      R                  S/5      n[        / / S.[        R                  S9R                  SS/5      n[	        XS/SS9n[
        R                  " X25        [	        XSS/S	9n[
        R                  " X25        g )
Nr+   r   r   rW   rX   r-   Tr/  r.  )r   r   r   r,   r   r   r   ra   rb   r   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3cU=F&+3u=F&+r)   c                  <   [        / SQSSS.5      n [        / SQSS.5      n[        R                  " [        SS9   [	        XSS	9  S S S 5        [        R                  " [        SS9   [	        XSS
S9  S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)Nr:  r+   r   )rW   rX   b_xr   (Passing 'suffixes' which cause duplicater   rW   r   )r  r  r  r   r   r   r   r   r  s     r'   .test_merge_suffixes_produce_dup_columns_raisesr  
  s{    91Q78DIA./E	z)S	Tdc" 
U 
z)S	TecL9 
U	T 
U	T 
U	Ts   A<'B<
B

Bc                      [        / SQ/ SQ// SQS9n [        SS/SS.5      n[        XS	S
9n[        / SQ// SQS9n[        R                  " X#5        g )Nrq  rr  )rW   rX   rX   r   r+   r\   r   r   rW   r   )r+   r+   r+   r   )rW   r  r  r  r   r  s       r'   3test_merge_duplicate_columns_with_suffix_no_warningr  
  sQ     i+_EDQF+,E43'F,1KLH&+r)   c                      [        / SQ/ SQ// SQS9n [        SS/SS.5      n[        R                  " [        S	S
9   [	        XSS9  S S S 5        g ! , (       d  f       g = f)N)r+   r+   r+   r+   )r   r   r   r   )rW   rX   rX   r  r   r+   r\   r   r   r  r   rW   r   r  r  s     r'   Itest_merge_duplicate_columns_with_suffix_causing_another_duplicate_raisesr  
  sO     lL1;QRDQF+,E	z)S	Tdc" 
U	T	Ts   A
Ac                      [        SS/SS//[        SS/5      S9n [        SS	/S
S//SS/S9n[        XSSSS9n[        / SQ/ SQ/[        / SQ5      S9n[        R                  " X#5        g )Nr+   r   r\   r]   rW        \@r   r=  rs   r  rb  rD   r  r   Tr   )r=  rs   r+   r   )r  rb  r\   r]   )rD   r  rW   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                      [        S/S/S/S9n [        S/S/S/S9n[        R                  " [        SS9   [	        XS/SS	9  S S S 5        g ! , (       d  f       g = f)
Nr  r     )r  r   r   i  zCan only pass argumentr   T)r   r   r  )df_1df_2s     r'   /test_mergeerror_on_left_index_mismatched_dtypesr%  
  sT    3%#rd;D3%#se<D	z)A	BdcUt4 
C	B	Bs   A
Ac                      [        [        S5      5      n [        U [        S5      S.5      n[        S[        SS5      05      n[        X!U SS9n[        X!U R                  SS9n[
        R                  " X45        g )Nr\   r  r  r   r  r   )r   r   r   r   _datar   r   )cir   r   resr   s        r'   #test_merge_on_left_categoricalindexr*  
  sf    	%(	#BBU1X./Ec5A;'(D
R#
6CT"((SAH#(r)   r.   r/   c                    [        SS/SS/S.U S9n[        [        R                  [        R                  /SS/S.U S9n[        XSS	S
9n[        SS[        R                  [        R                  /SS[        R                  [        R                  /[        R                  [        R                  SS/S.U S9n[        R
                  " X45        [        X!SS	S
9n[        SS[        R                  [        R                  /[        R                  [        R                  SS/SS[        R                  [        R                  /S.U S9n[        R
                  " X45        g )Nr+   r   )r~   rY   r-   r\   r]   )r~   r3  r~   r   r   )r~   rY   r3  )r~   r3  rY   rz  )r.   r   r   r   r   s        r'   test_merge_outer_with_NaNr,  
  s    aVaV4EBDrvvrvv.A?uME45g6Fq"&&"&&)266266*VVRVVQ*	

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

 H &+r)   c                      [        SS/0[        S/SS9S9n [        SS/0[        S/SS9S9n[        XSSS9n[        S/SS.5      n[        R                  " X#5        g )	NrW   r+   ry   r   r   rz   r   )rI  rJ  r  r  s       r'    test_merge_different_index_namesr.  
  se    cA3ZuaSs';<DsQCjqc(<=E4c:F!Q/0H&+r)   c                     [        / SQSS.U S9n[        / SQSS.U S9nUR                  X1S9n[        / SQSSS.U S9n[        R                  " XE5        g )	Nr:  r+   r   r-   r   rG  r  r1  r   r  r5  r   r   r   r   s         r'   test_merge_ear1  
  sX    91-5IJDIA.6JKEZZZ-Fyqq9AUVH&+r)   c           	         [        / SQSS.U S9n[        / SQSS.U R                  5       S9nUR                  X1S9n[        [        / SQU S9[        / SQU S9[        / S	QU R                  5       S9S
.5      n[        R
                  " XE5        g )Nr:  r+   r   r-   r   rG  r  rq  rr  r1  )r   lowerr   r   r   r   r0  s         r'   test_merge_ea_and_non_ear4  
  s    91-5IJDIA.6J6P6P6RSEZZZ-F	)=>	)=>	)=)C)C)EF	
H &+r)   r,   int64[pyarrow]c                 D   [         R                  " S5        [        SSS/0U S9n[        SSS/0SS9nUR                  U5      nUR	                  5       n[
        R                  " X45        UR                  U5      nUR	                  5       n[
        R                  " X45        g )NpyarrowrW   r+   r   r-   r5  )r   importorskipr   r   r   r   r   )r.   rp   rb   r   r   s        r'   !test_merge_arrow_and_numpy_dtypesr9    s     	"	C!Q=	.B
S1a&M)9
:CXXc]FwwyH&+YYr]FxxzH&+r)   r   )r   r   r   r   r4   zAmerica/Chicagoc           	         [         R                  " SSSU S9[         R                  " SSSU S9[         R                  " SSSU S9/n[        US S SS	/S
.5      nUS   R                  R	                  S5      US'   [        USS  SS	/S.5      nUS   R                  R	                  S5      US'   [        USS	[
        R                  /[
        R                  SS	/S.5      nUS   R                  R	                  S5      US'   US:X  a  UR                  S/   R                  SS9nO<US:X  a  UR                  SS/   nO$US:X  a  UR                  SS/   R                  SS9nUR                  USUS9n[        R                  " Xe5        g )Ni  r^   rb  r3         r   r  r  )r  rW   r  r  r+   )r  rX   r  )r  rW   rX   r   Tr  r   r   r   r   )r5   r6   r   r  as_unitr   r<   ilocr  r   r   r   )r4   r   valsra   rb   r   r   s          r'   (test_merge_datetime_different_resolutionrA    sz   
 	T1bR(
T1bR(
T1bR(D
 $r(#s4
5C3x{{""4(CH
$qr(#s4
5C3x{{""3'CHt3RVV*<BFFCQTCUVWHSM$$,,T2HSM
g~==!%11t1<	==!Q(	==!Q(44$4?YYssY,F&+r)   c                      [        SSS/05      n [        SS/0[        R                  " SS/S/S9S	9n[        SS/S[        R                  /S
.5      nU R                  US/SSS9n[        R                  " X25        g )Ncolr  r  rX   r  )r  )r  r  )r  r   )rC  rX   Tr   r   )r   r   r  r   r<   r   r   r   )rp   rb   r   r   s       r'   "test_merge_multiindex_single_levelrD  5  s    	EC:&	'B
C5\$$ff%5eWEC #s3-@AHXXcE7&XIF&+r)   )r   r   r   r   r   on_indexleft_uniqueleft_monotonicright_uniqueright_monotonicc                    SS/nU(       a  UR                  U(       a  SOS5        OUR                  U(       a  SOS5        SS/nU(       a  UR                  U(       a  SOS5        OUR                  U(       a  SOS5        [        SU05      n[        SU05      nU(       a(  UR                  S5      nUR                  S5      nSSS.n	OSS0n	[        Xx4XS	.U	D6n
U(       a   UR	                  5       nUR	                  5       nU S
;   a  U S;   a  XxUpnOXUpnU S:X  aL  [        US   R                  5      R                  US   R                  5      nUS   R                  U5      nX   nU(       a  UR                  S5      nU(       d}  US   R                  5       nUR                  US   R                  SS9nUR                  [        R                  5      nUS   R                  UR                  5      nUR!                  5       nOU S:X  a  US   R                  5       nUS   R                  5       nUR#                  USS9nUR                  [        R                  5      nUR$                  R                  R                  UR                  5      n[        SU05      nUR                  S5      nU(       a  WR                  S5      nOWR	                  SS9n[&        R(                  " X5        g )Nr   r\   r]   r+   r~   Tr   r   r  )r   r   r   )r   r   r   )
fill_valuer   r=  )appendr   r   r   r  setrn  intersectionisinr  r   r  r   r   intpr  r  mulr   r   r   )r   r   rE  rF  rG  rH  rI  r   r   	on_kwargsr   r   otherother_uniquekeep_values	keep_maskother_value_countsrepeatsleft_countsright_countsexpected_countss                        r'   test_merge_combinationsr\  B  s    q6DAQ/AQ/FE/Qq1/Qq1eT]#Duen%E~~e$&#'=	5M	4@C@i@F!!!#
((##,0\H\,1\H'>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                      [        S[        R                  /[        R                  " 5       S9n [        S/5      n[        S/SS9n[
        R                  " [        SS9   U R                  U5      nS S S 5        [
        R                  " WU5        [
        R                  " [        SS9   UR                  U 5      nS S S 5        [
        R                  " X2R                  S	5      5        [        S/5      n[        S
/S/SS9nU R                  U5      n[
        R                  " X25        UR                  U 5      n[
        R                  " X2R                  S	5      5        g ! , (       d  f       N= f! , (       d  f       N= f)Nr  r-   r  r   r/   r
  zYou are mergingr   r  r+   )r   r   r<   r5   
Int64Dtyper   r  r  r   r   r   r  s       r'   !test_merge_ea_int_and_float_numpyr_    s   
S"&&M
9C
SE
C!G4H		#	#K7H	I3 
J&(+		#	#K7H	I3 
J&//)"<=
SE
C!qc9HYYs^F&+YYs^F&//)"<= 
J	I 
J	Is   E(E/
E,/
E=c                    [         R                  " S5        [        SSS/0U S9n[        SS0[        SS/U S9S9nUR	                  USSS	S
9n[        [        SS/U S9S[        R                  /S.5      n[        R                  " X45        g )Nr7  rW   rX   r-   r+   ry   r   Tr   r   r   )
r   r8  r   r   r   r   r   r<   r   r   )r  r   r   r   r   s        r'   test_merge_arrow_string_indexra    s    
	"cC:&.>?DsAheS#J>N&OPEZZs&ZIFc3Z'78266{KH &+r)   r  right_emptyc                    [        SS/SS/S9n[        SS// SQS9nU (       a  UR                  S S nU(       a  UR                  S S n[        X#S/SS9n[        SS// S	QS9nU (       a  U(       a  UR                  S S nO7U (       a  [        R                  US'   OU(       a  [        R                  US
S/'   [
        R                  " XE5        g )Nr+   r   r  r  r  )r  r  r  r   r   )r  r  r  r  r  r  )r   r?  r   r   r<   r   r   )r  rb  ra   rb   r   r   s         r'   $test_merge_empty_frames_column_orderrd    s     AaS3*
5C
AaS/
:Chhrlhhrl373F1#/CDHk==!$		!vv#s&+r)   c                 J   [        S[        SS /SS905      n[        S[        S/SS905      nSUS   R                   SUS   R                   S3n[        R                  " [
        [        R                  " U5      S	9   UR                  USU S
9  S S S 5        SUS   R                   SUS   R                   S3n[        R                  " [
        [        R                  " U5      S	9   UR                  USU S
9  S S S 5        g ! , (       d  f       Ny= f! , (       d  f       g = f)Nr~   r+   zdatetime64[ns]r-   ztimedelta64[ns]r  r  zG columns for key 'key'. If you wish to proceed you should use pd.concatr   r   )	r   r   r.   r   r   r   r  r  r   )r   r   r   r   s       r'   !test_merge_datetime_and_timedeltarf    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
, 
9 &eEl&8&8%9tE{?P?P>Q RQ 	Q  
z3	8DU, 
9	8 
9	8 
9	8s   >D(D
D
D")r   rh   )`r   r   r   r  numpyr   r   pandas.compatr   pandas.core.dtypes.commonr   r   pandas.core.dtypes.dtypesr	   pandasr5   r
   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.core.reshape.concatr   pandas.core.reshape.merger   r   r(   r8   r>   r  rN   rR   rU   rc   re   r  r  r   r   r%  r  r  r  r  r  r  r  r  r  r  r<   r  r  r  TWO_GOT_THREEtupler  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r   r%  r*  r,  r.  r1  r4  r9  rA  rD  r\  r_  ra  rd  rf  )r  s   0r'   <module>rr     s,	   
 
    7      -	 z|)?@ A z|)?@ A },BC D 	 	P Pf*	Gl0 l0^    S0 S0l : : > >40 40n =?=U=UV=UTUAq6K0=UV#sc
M5|\2E 	3  		,		, 3
7	T4s;+	!4c:	tgw'uc:
7	T4t<,	!4d;	tgw'ud;	%%P+$ '	
A
L)C>:	
A
N+a\:	
A
L)E5>:	
A
T4L)E5>:	a*l+c1X6	cJ-~>	cJ-U|<	cJ-s|<	cJ-Sz:	cJ-U|<	
A
L)E1:6	c2u~&	
ArE5>"$,%$,  %b"bff-=_U	
 +r2rvv.663S1		
*,+*, JJ	J vw&7!a9P%QRJ SJ $
  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,8,,, 7,<"=>, ?,  CD&789, : E,2
,  CD$/dE]3u6)D%=9$7*T5M:?, ; 8 : 7 4 0 E?,D>.	, e}5u6, 7 6,*  CD- E-q Ws   (\
