
    Mhڞ                       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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#\RH                  " \"" 5       S S9S 5       r%\RH                  " \"" 5       S S9S 5       r&\RH                  " \#" 5       S S9S 5       r'\RH                  S 5       r( " S S5      r)S r* " S S5      r+\RH                  S 5       r,\RH                  S 5       r- " S S5      r.\RH                  S 5       r/\RH                  S 5       r0 " S S5      r1\Rd                  Rg                  S \Rh                   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       r5\Rd                  Rg                  S/S0S1/SSS2S2S&4S3SS0S1/SS2S4S&4SSS0S1/S4S2S&4S0S1/SSS2S2S4S5SS0S1/SS2S4S4SSS0S1/S4S2S4/5      S6 5       r6S7 r7\Rd                  Rg                  S8S S S9S:0S;S</4S S S9S=0S S</4S S S9S>0S?S@/4S S S9SASB/0S?S@/4SCS S9SD0SCS /4SESES9SF0SGSE/4SHSHS9SD0SHSI/4SCSCS9SF0SJSC/4SCSHS9SF0SCSH/4SCSCS9SK0SCSJ/4S S S9SL0SMS /4SCSC0 SJSN/4S S 0 S?S@/4/5      SO 5       r8\Rd                  Rg                  SPSQ\" / SRQSSST\Rr                  // SUQSV.5      4S0\" / SWQSXSSST\Rr                  /\Rr                  SYSZS[/SV.5      4/5      S\ 5       r:\Rd                  Rg                  S]/ S^Q5      S_ 5       r;\Rd                  Rg                  S9S`SQ1S S Sa./5      Sb 5       r<\Rd                  Rg                  ScSdSCSC\=" SC5      Se4/5      Sf 5       r>\Rd                  Rg                  SgShSi/5      \Rd                  Rg                  SjS4S2/5      Sk 5       5       r?Sl r@Sm rASn rBSo rC\Rd                  Rg                  SpSqSr/5      Ss 5       rDSt rE\Rd                  Rg                  SuSvSw/5      \Rd                  Rg                  SxSCS4Sy.SzS{/4SCS4S|.S}S~/4/5      S 5       5       rF\Rd                  Rg                  SuSvSw/5      \Rd                  Rg                  SxSzSC0S}S~/4S}SC0SzS{/4/5      S 5       5       rG\Rd                  Rg                  SuSvSw/5      \Rd                  Rg                  SS~S40S{S40/5      S 5       5       rHS rIS rJS rKS rLS rMS rNS rOS rP\Rd                  Rg                  SSS/5      S 5       rQS rRS rSS rT\Rd                  Rg                  SSS/5      S 5       rU\Rd                  Rg                  S/ SQ5      \Rd                  Rg                  SSS/5      S 5       5       rVS rW\Rd                  Rg                  S/ SQ5      \Rd                  Rg                  SS4S2/5      \Rd                  Rg                  SS4S2/5      \Rd                  Rg                  SS4S2/5      \Rd                  Rg                  SS4S2/5      \Rd                  Rg                  SS4S2/5      \Rd                  Rg                  SS4S2/5      S 5       5       5       5       5       5       5       rXS rYS rZ\Rd                  Rg                  SS4S2/5      \Rd                  Rg                  SS4S2/5      S 5       5       r[\Rd                  Rg                  S/ SQ5      S 5       r\gs  sn f )    )datedatetime	timedeltaN)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       W/var/www/html/env/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_seriesr7   2   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   nanr4   NaTr6   r(   r&   get_series_nar=   >   sJ    xw'xw'xx(x	 r(   c                 .    U R                   R                  $ Nr-   namexs    r&   <lambda>rD   G       177<<r(   )paramsidsc                     U R                   $ )zJ
A parametrized fixture returning a variety of Series of different
dtypes
paramrequests    r&   series_of_dtyperM   G        ==r(   c                 .    U R                   R                  $ r?   r@   rB   s    r&   rD   rD   P   rE   r(   c                     U R                   $ )z_
A duplicate of the series_of_dtype fixture, so that it can be used
twice by a single function
rI   rK   s    r&   series_of_dtype2rQ   P   rN   r(   c                 .    U R                   R                  $ r?   r@   rB   s    r&   rD   rD   Y   s    aggllr(   c                     U R                   $ )zI
A parametrized fixture returning a variety of Series with all NA
values
rI   rK   s    r&   series_of_dtype_all_narT   Y   rN   r(   c                  \    [        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   )rX   rY   	col_rightr   )df1df2s     r&   dfs_for_indicatorrb   b   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	TestMergeo   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data2ri   r*   r   r'   r   r   r    standard_normal)selfdfs     r&   ro   TestMerge.dfp   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   )rh   ri   valuerl   rn   s    r&   ra   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rV   rW   cderz   rV   r      keyv1r   r   r   r    rm   rt   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\   ry   rW   rx   rV   indexr   rt   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 )
NrV   r*   r   r   r+   )r   r-   T
left_indexright_indexr,   r   r   tmassert_frame_equal)rn   df_emptydf_aresultexpecteds        r&   test_merge_inner_join_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 )Nrh   ri   onr   r   r   )rn   ro   ra   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   astyper9   r   r   r   rn   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 )Nrh   r   )	set_indexr   r   r   )rn   ro   ra   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 )Nrw   r   r{   r|   r   r\   r   r   r}   Tr   F)left_onr   howsortr   )right_onr   r   r   )
r   r   r   r    rm   r   r   r   loccolumns)rn   r   r   merged1merged2s        r&   (test_merge_index_singlekey_right_vs_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 )Nrw   r   r{   r|   r   r\   r   r   r}   Tinnerr   r   r   r   )r   r   r   )r   r   r   r    rm   r   joinr   r   r   r   r   rn   r   r   r   r   s        r&    test_merge_index_singlekey_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\)rh   ri   r   r   )pytestraisesr4   errorsr   r   
ValueError)rn   ro   ra   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   Frh   ri   r   r   r   z=left_index parameter must be of type bool, not <class 'list'>r   r   r   r   )rn   ro   ra   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   )rn   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)r/   barbazr/   r*   r   r[   r\   )lkeyrs   )r/   r   quxr/   )r]      r{      )rkeyrs   r   r   outerT)r   r   r   r   r   r   r/   rA   r   r   r[   r*   r\   value_xr   r]   r   r{   value_y)r   r   r   r   r;   r   assert_series_equal)rn   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*   rV   rW   rr   r   r/   r   rx   ry   Tr   r   copyr   rV   peekaboory   )r   r   r   all)rn   r   r   r   s       r&   test_merge_copyTestMerge.test_merge_copy6  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   rr   r   r/   r   r   TFr   rV   ry   )r   r   r   r   shares_memory_values)rn   using_array_managerusing_infer_stringr   r   r   s         r&   test_merge_nocopyTestMerge.test_merge_nocopyB  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}   rs   rs   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}   rs   r   )rs   r}   r   )	r   r   r   r   r   arrayr;   r   r   )rn   r   r   r   r   s        r&   "test_intelligently_handle_join_key,TestMerge.test_intelligently_handle_join_keyL  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*   rr   r|   r      r   r   r}   r+   TFr   boolvalr   r   r   key_0)r   r   r-   r   r   int)rn   r`   ra   ro   r   r   s         r&   test_merge_join_key_dtype_cast(TestMerge.test_merge_join_key_dtype_cast_  s    B401B4013)%y')))qc23s343) %y&(((%%xx}xx}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   rs   r}   r+   r   r-   r   r   r,   r   r   r  r   r   r  r@   r[   )r   r*   r*   r   r   r[   T)r   r   r   r   )r   r   aranger   r   r   r   notnar   r   r  r+   )	rn   r   r   r}   r   r   r   r   r   s	            r&   test_handle_join_key_pass_array)TestMerge.test_handle_join_key_pass_arrayv  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)NrC   rV   r   yrW   rx   z>No common columns to perform merge on. Merge options: left_on=z, right_on=z, left_index=Fz, right_index=r   )r   nowr   r   r   r   r   )rn   dtr`   ra   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\   rC   rV   r   r  rW   rx   )rV   rW   q)rx   ry   rz   fghry   r   r   _check_merge)rn   r  dt2dt3dt4r`   ra   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[   rC   rV   rW   rx   ry   r   r  )rz   r  r  z hir  )rn   r  r  r  r`   ra   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   )rn   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   )rn   r   r   r   r   r   s         r&   test_merge_empty_dataframe$TestMerge.test_merge_empty_dataframe  s?     5!9-		5*
f+r(   kwargTr   rC   r   r   rV   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rV   rW   rx   r   rC   r  zrV   rW   rx   rC   r  r2  r	  r   )r   r:   r   r   r   )rn   	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 )Nr0  r   r*   r   r[   r\   r]   r   r{   r   	   r1  r[   r,   r*   r\   r{   r   r]   r   r[   r   r<  r3  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   rA  s      r&   check2>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2  K    4=G=u=F!!&.4=G=u=F!!&.r(   Tr   rC   r-  rV   r.  r   r*   r   r   )r   r   r   r;   r:   )rn   exp_outr5  rB  rE  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 )Nr9  r:  r;  r0  r   r1  r=  r>  r?  r[   r,   r3  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   rA  s      r&   rB  >TestMerge.test_merge_left_notempty_right_empty.<locals>.check1-  rG  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   rC   r-  rV   r.  r   r   )	r   r,  r   rB  rE  r5  rI  r   r   s	      r&   rE  >TestMerge.test_merge_left_notempty_right_empty.<locals>.check23  s    4<F<e<F!!&.4=G=u=F!!&.  $D9#55S1	 vu%w&r(   )r   r   r   r;   r:   r   r   )rn   rB  rE  r5  rI  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}   rs   r   r   r,   r}   r   r   r   )r   r   dtypesr   r   r   )rn   rM   rQ   ro   r   r   actuals          r&   test_merge_empty_frame TestMerge.test_merge_empty_frameC  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}   rs   r   rT  r   r   )rn   rM   rT   df_leftdf_rightr   rV  s          r&   test_merge_all_na_column"TestMerge.test_merge_all_na_columnU  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   rr   sizer  r*      i  r\   i  r[   i  r]   )var1var2var3r{   )rd  var8rd  Fr   r   )r   r   r    integersr   r   	from_dictrd  uniquer   r   r   r   r   )rn   ry   ro   rd  newr   r   s          r&   test_merge_nosortTestMerge.test_merge_nosortj  s    II))!,55a"5EII))!,55a"5Eq"%q!$q!$q"%q!$q!$q!$q!$q!$q!$
    #ww~~wwt}!!299#8#8#;#B#B1#EF
 #&u5BU3
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 )NrV   )r*   r   r*   )r   r   r   r   r   )rn   r   rm  r   ro   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rs  i3rs  _)r   rsuffix        r   r*   )rs  rt  i1_rv  Nr,   r   rs  rt  r{  rv  r:   Fcheck_dtype)r   r   r   r;   r   r:   r   reset_indexr   r   r   r   rn   r`   ra   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      ?      ?rr  gffffff?ru  rw  rs  )rx  r   rz  ry  )rs  r{  rt  rv  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?   r6   )rn   NotADataFrames    r&   _constructor=TestMerge.test_merge_type.<locals>.NotADataFrame._constructor  s	    $$r(   r6   N)__name__
__module____qualname____firstlineno__propertyr  __static_attributes__)r  s   r&   r  r    s    % %r(   r  rh   r   )r   r   
isinstance)rn   ro   ra   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  )ry   tr  r   zDThe behavior of DataFrame concatenation with empty or all-NA entriesr   Tignore_index)r   rh  r   r   r   FutureWarningr   assert_produces_warningr   r   r:   r   )rn   r   ry   ro   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   )rx  r   AB)00r)
r   timedelta64r   r   r   r   r4   r<   r   r   )rn   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   rA   zdatetime64[]r  r  r  zdatetime64[s]Tr.  natr,   r  r  r   )r   r   r   to_framer-   r   r   r   r4   corearraysDatetimeArray_simple_newr   r   )
rn   r  r`   serr-   	exp_dtypera   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   )	rn   r  r`   r  r-   r   ra   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)Nr9  r:  r;  r}   r~   r   )r}   r/   r/   )r}   r   r   )r}   r~   r   v3v4)r}   r/   r/   r   r   )rh   r/   r/   zBData columns not unique: Index\(\['foo'\], dtype='object|string'\)r   )r   r   r   r   r   r   r   r   )rn   ro   ra   r   r   s        r&   &test_overlapping_columns_error_message0TestMerge.test_overlapping_columns_error_message)  s    y	KL	)LM*
+ 
 ?
eBnh7 -S]]: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   r1   periodsr3   r*   r   20151011r[   r9  r\   rT  r}   r   r   )r   r4   
date_ranger   r;   r   r   r   r   s        r&   test_merge_on_datetime64tz$TestMerge.test_merge_on_datetime64tzA  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  r1   r  r   r[   r  r9  rT  r}   r   r   r   zdatetime64[ns, US/Eastern]r   )	r   r4   r  r   r<   r   r   r   r-   r   s        r&   test_merge_datetime64tz_values(TestMerge.test_merge_datetime64tz_valuesZ  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UTCr2   2018r,   g      @2019)r   rs   date2r   r   r   r   )r   r   date2_xr   date2_y)	r4   DatetimeTZDtyper   r   r   r   r9   r   r   )rn   dtzr   r   r   r   s         r&    test_merge_on_datetime64tz_empty*TestMerge.test_merge_on_datetime64tz_emptyu  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  freqr3   r   r   r*   rs   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00r   )r   rs   r  r   r   r   r{   r[   )r   r   r   )r   r4   r  to_datetimer  tz_localize
tz_convertr   r   r;   r   r   r  s        r&   +test_merge_datetime64tz_with_dst_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   )r4   period_ranger   r   r   r   r   r   r   r   r
  r+   repeatreshape
sort_indexr   r   r   )rn   r   ro   ra   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[   r9  r\   rT  r}   r   r   )r   r4   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  r9  rT  r}   r   r   r   z	Period[D]r   )	r   r4   r  r   r<   r   r   r   r-   )rn   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   rV   rW   r[   r\   r]   )rX   col_conflict_xrZ   col_conflict_yr^   )	left_onlyboth
right_onlyr  r  r  r  r  r  
categories_merge)rX   r  rZ   r  r^   r  rX   r   Tr   r   	indicatorcustom_namer   )	r   r   r   r;   r	   r   r   r   rename)
rn   rb   r`   ra   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   rX   r   r]   r  r   )rn   rb   r`   ra   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 )
NrX   r   Tr  r  r   r  r   r  )r   r  r   )rn   rb   r`   ra   test2test3test4s          r&   %test_merge_indicator_result_integrity/TestMerge.test_merge_indicator_result_integrity/  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  rX   r*   r   zECannot use `indicator=True` option when data contains a column named z;|Cannot use name of an existing column for indicator columnr   r   Tr  )rX   custom_column_namez:Cannot use name of an existing column for indicator columnr,  r   r   r   r   r   )rn   rb   r`   rw  r#  df_badcolumnr   s          r&   test_merge_indicator_invalid&TestMerge.test_merge_indicator_invalidB  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*   rV   rW   )rX   col2)r*   r*   r[   )rW   rC   r  )r   r*   r*   r[   rV   rW   rC   r  )r  r  r  r  r  r  r  rX   r2  r   Tr  r   r	   r   r   r   )rn   df3df4hand_coded_resulttest5s        r&   %test_merge_indicator_multiple_columns/TestMerge.test_merge_indicator_multiple_columnsd  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   rV   rW   rx   ry   rz   )meowbarkum... weasel noise?naychirprV   rx   r]   Tz1:1)r   r   validate)rA  rB  rC  rD  )a_xrW   a_yrx   r  
one_to_oner0  rV   )r   rG  rW   rV   rx   r  )r   r   rG  rz   mooone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger   cowr[   )r   many_to_onezAMerge keys are not unique in left dataset; not a one-to-one mergemany_to_manyzCMerge keys are not unique in right dataset; not a many-to-one mergezBMerge keys are not unique in left dataset; not a one-to-many mergez"jibberish" is not a valid argument. Valid arguments are:
- "1:1"
- "1:m"
- "m:1"
- "m:m"
- "one_to_one"
- "one_to_many"
- "many_to_one"
- "many_to_many"	jibberish)rV   rV   rW   rW   )r   r*   r   r*   rV   rV   rW   )r   r*   r   )rA  rB  rC  )rV   rW   ry   )r<  r=  r>  zQMerge keys are not unique in either left or right dataset; not a one-to-one mergerW   )r   r   r   r   r   r   r   r   r   r   r   r   )rn   r   r   	left_copy
right_copyr   r   
expected_2
expected_3left_index_resetright_w_dupsr   left_w_dupsexpected_multis                 r&   test_validationTestMerge.test_validationw  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)Nr0  raise)divider   r   )r   r   errstater   )rn   rV   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,   rc  rd  re  r9  )r*   r   r[   NNN)r*   r   r   r[   r[   r\   rf  rg  rh  )rc  
2001-01-02
2001-01-03r  )r  ri  rj  )1d2d3drk  rl  rm  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 )NrH  rV   r}   r   rW   r
  r}   Tr   )r   r   r   r*   r*   r*   r   r   r   r[   r\   r]   rV   r}   rW   r   )inplace)r   r   r   r;   r   r   r   )rn   r   r   expected_indexr`   ra   r   r   s           r&   $test_merge_on_index_with_more_values.TestMerge.test_merge_on_index_with_more_valuesB  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 )Nr9  )r   r*   r*   ro  rW   r*   r   r[   N)r   r*   r*   r   )r*   r   r   r[   rr  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   )rn   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 )Nr9  rR  abcr  ro  rW   r0  r   r}   Tr   r   rx  )rV   rV   rW   rx   )r*   r*   r   r[   rr  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*   r@  r   )r]   r\   r3  F)	r   r   r
  r  _mgrr  flags	writeabler   )rn   rj   rk   r%   s       r&   test_merge_readonlyTestMerge.test_merge_readonly  s    IIbM!!&)A-7P
 IIbM!!&)A-7K

 ::$$C"'CII % 	Er(   r6   N)Rr  r  r  r  r   fixturero   ra   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r$  r'  markparametrizer*  r6  rJ  rQ  rW  r\  rk  ro  r  r  filterwarningsr  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r'  r/  r9  r[  ra  r
   r   r4   r<   r   ALL_REAL_NUMPY_DTYPESr   r   float64r   from_tuplesr;   r   r   ru  rz  r  r  r  r  ).0dtypr   r   s   0000r&   rd   rd   o   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rd   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   )rC   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_valsr/   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 )Nr/   r   r  r*   r         ?       @uint64r,   int32)r  r  Cr  EFr  r   )r   r   r   r   r   r  r-   r   )rn   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 )NrH  r   r,   r/   r   ra     )k1k2v)r   r   )r*   r/   r   r]   r{   r   r  r  r   r#  r  r   r*   Trf  	mergesort)kindrs  )r   r-   r   r   r
  r+   r   r  r   r   r  r;   r   r  r  r   r   sort_values)
rn   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_valsr9  )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   )rn   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  rr   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  r9  r  )皙?g      @r  r[   r  r  r   )r   r   r  UserWarningr   r   r   r;   )rn   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   rn   r`   ra   r   r   s        r&   (test_merge_incompat_infer_boolean_object8TestMergeDtypes.test_merge_incompat_infer_boolean_objectA  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_missingL  s     eRVV'<F KLMu./edE]36BsE*
f/sE*
f/r(   zdf1_vals, df2_valsrH  )rV   rW   rV   )ry  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   )rn   df1_valsdf2_valsr`   ra   r   s         r&   !test_merge_incompat_dtypes_are_ok1TestMergeDtypes.test_merge_incompat_dtypes_are_okX  s      h(h(sSE*vxx~~....sSE*vxx~~../&((..2Q2QQQ2Q.r(   r  r0  r  )r  12z1/1/2011r  r  z
2011-01-01z
2011-01-02ry  20130101)r  r1   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   )rn   r  r  r`   ra   r   r5  r6  s           r&    test_merge_incompat_dtypes_error0TestMergeDtypes.test_merge_incompat_dtypes_errorp  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   )	rn   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(   rV   rW   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)rV   r  r	  )rW   r   r  r  )	rn   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   )rn   r   r  r`   ra   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   r4   StringDtyper   NAr   r   r   r   r   r-   r   r  r   rU  )	rn   r4  string_dtyper`   r  ra   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   )rn   
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(   r6   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  r4   r  r  r  r  r  r
  r  r  r6   r(   r&   r  r    s   [[u~vuen'='D'DZ'PQRR& [[rxx277BHHbggrxxH [[TBHHbjj"**bjj#QR0 S0> [[(y)OPc
1a&Sz$BCV_QF#s&DE	
<<	0@0	0
0 [[ /66zBCf_5<<ZHIVVUDM89VVUDM67	

R
R [[ QF(+_=QF'*O<(o.(j!#>|, ]]: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   r/   r   )rr   r_  )onetwothreer  )r   r   r   r   r    choicer   r   r6   r(   r&   r   r   =  sy    		%%a(//U/Kf%uen56&&q)001Hu0U		
 r(   c                  l    [        [        SS/5      R                  [        SS/5      5      SS/S.5      $ )Nr/   r   r*   r   )r  Z)r   r   r   r   r6   r(   r&   r   r   I  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)TestMergeCategoricaliS  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  stringr/   r   r  )r  Y_xY_yr   	r   rU  r  r   r-   r   r   r   r   )rn   r   r   r   r   r-   r   s          r&   test_identical#TestMergeCategorical.test_identicalT  s_    tc*))+%7X%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&  r/   r   r  r+   r  r  r"  r   r)  rn   r   r   r   r   r   r-   r   s           r&   
test_basicTestMergeCategorical.test_basic_  sr     ts+))+%7X 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 )NrV   rW   rx   ry   rz   )r   r*   r   r[   r\   nullr   r  r  r   r   )r   r   r   r  )r   r   r   r   r   r   r   )rn   r   r   ro   r   crightr   clefts           r&   test_merge_categorical+TestMergeCategorical.test_merge_categoricalo  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<  r@  r4  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  rC  )r  r  r  )rE  rF  rE  r,   rH  )r  prV   r  rH  )r  r  r  )rE  rE  rF  )rr   r  ra  )r  rH  r  r   Tr   g      &@g      (@)r  rH  rV   r  )	r   r   r	   r   r   r   r;   r   r   )rn   rC  pcatr`   ra   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&  r/   r   r  r*   r   r-  r   )assignr"  r   r   rU  r  r   r-   r   r   r   r   r  rm  #_categories_match_up_to_permutationr.  s           r&   test_other_columns'TestMergeCategorical.test_other_columns  s    uww~~j9:ts+))+%7X UEN; QF3
 "
 	v0 vv}}@@QQQQww~~AA&((//RRRRr(   changec                     U $ r?   r6   rB   s    r&   rD   TestMergeCategorical.<lambda>  s    ar(   c                 :    U R                  [        / SQ5      5      $ )N)r/   r   bahr   r   rB   s    r&   rD   rS    s    ahh/0EFGr(   c                 2    U R                  [        SS95      $ )NTrC  rV  rB   s    r&   rD   rS    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   rM  r  rm  r-   r   r   rU  r  r   r   r   r   )rn   rQ  r4  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X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]   )
rV   rW   rx   ry   rz   r  r  r  r#  j)r  wrC   r  r2  r   )r  r#   urH  o)
aabbccddeeffgghhiijjr"  c                 $    U R                  S5      $ )Nr  )r   rB   s    r&   rD   ITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>   s     4r(   r   )r   applyr   r   r   r   r   )rn   r  eachletterro   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?num4rc  ri  rj  )r   rt  rv  r   r  r   )
r   r   r   r4   r5   r   r;   r   r   r   )rn   ro   ra   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<  rX  r   r\   r*   r<  )r  num)r  r<  r  )r   r   r   r   r   r   )	rn   category_columnr  expected_categoriesrC  r`   ra   r   r   s	            r&   /test_merging_with_bool_or_int_cateorical_columnDTestMergeCategorical.test_merging_with_bool_or_int_cateorical_columnG  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   )rn   ro   r   r   s       r&   test_merge_on_int_array,TestMergeCategorical.test_merge_on_int_array_  sc    VQ266N'BKLr#&!Qw7!L
 	f/r(   r6   N)r  r  r  r  r*  r/  r5  rA  r   r  r  rJ  rO  rZ  rp  r{  r  r  r  r6   r(   r&   r$  r$  S  s   	11 )0V02 [[Yu60 708S* [[G>	
11$&*P<@ [[Yu6[[8'$uFAq6Aq6*/&'1BVWDUV	
0 700r(   r$  c                  "    [        S/ SQ0/ SQS9$ )NrV   r   rr   r   r   r*   r   r   r_   r6   r(   r&   r  r  i  s    c;'y99r(   c                  "    [        S/ SQ0/ SQS9$ )NrW   ,  d   r  r[   r*   r   r   r_   r6   r(   r&   r  r  n  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)TestMergeOnIndexesis  zhow, sort, expectedr   Fr   rr   r  r  r   r   r*   r   Tr   r  r  )r   rr   r   rH  r   r  r  r  r  r  r9  r   r   r  r   c           	      H    [        XSSX4S9n[        R                  " Xe5        g )NT)r   r   r   r   r   )rn   r  r  r   r   r   r   s          r&   test_merge_on_indexes(TestMergeOnIndexes.test_merge_on_indexest  s(    ` $Dc
 	f/r(   r6   N)r  r  r  r  r   r  r  r   r   r;   r  r  r6   r(   r&   r  r  s  s   [[eYb"XS#J'GPQSTvVWdIRHC:&FqRSfUV3RVV2DEYW 26632DEYW 662r*A r266*A b"bff-RVVS#s4KL& b"bff-RVVS#s4KL&G+	
.^0_.^0r(   r  r   r*   r   	index_colr@   r  r  )r  rA   )startstoprA   r0   z
2018-01-02r   c                 L    [        U 5      R                   SU R                   S3$ )N[r  )typer  r-   rB   s    r&   rD   rD     s     T!W%%&ay2r(   )rG   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   rV   rW   r   r*   r   r   namesr   r   r  r\   r[   r  )r   r   r   r   r   z$Cannot merge a Series without a namer   )
r   r   from_productr   r   r   r   r   r   r   )r   r   r   r   r   nmrV   rW   r   r   r   s              r&   test_merge_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   rV   rW   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  rV   )Nr  ry  )r  Nz0.0_xrW   b_yrH  )Nr  )_aN0_arI  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 )Nr9  r:  r*   r\   r   r]   r[   r   r   Tr   r   )rX   r2  kwargsexpected_colsrV   rW   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))rV   rV   )NN)rV   rV   )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)Nr9  r[   r\   r]   z'columns overlap but no suffix specifiedr   Tr   r   r  r-  )rX   r2  r  rV   rW   r   s         r&   test_merge_suffix_errorr  E	  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)	NrV   r9  rW   r  zPassing 'suffixes' as ar   Tr  )r   r   r   	TypeErrorr   )r  rV   rW   s      r&   test_merge_suffix_raisesr  T	  sJ    3	"#A3	"#A	y(A	BatI 
C	B	B   A
Azcol1, col2, suffixes, msg)rV   rV   r0  z(too many values to unpack \(expected 2\)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)Nr9  r  r   Tr  r-  )rX   r2  r  r   rV   rW   s         r&   test_merge_suffix_length_errorr  ]	  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 )Nr0  FrG  )r  r  r  r9  r/   r   r/   r/   r   Tr   r   r   r/   )	r   r   r   r   r   r  r   r   r   )	r  r  
cat_dtypesr`   data_foo
data_rightra   r   r   s	            r&   test_merge_equal_cat_dtypesr  l	  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 )Nr0  FrG  rV   rW   r*   r   r  r/   )r[   r   r*   r  Tr   r[   r  )r   r   r   r   r   r   r   r   )r  r`   ra   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 )
NrV   r   r*   r   intervalr,   r  r   r  )	r   r   r4   Intervalr   r   r   r   r   )r   r   r   r   s       r&   test_merge_on_cat_and_ext_arrayr  	  s    	fbkk!Q'Q):;:NOE ::<DS	  ,DI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   ro  r  tuplesrt  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 )Nr0  )r  r  r  )rC   r  r  )200020012002)r  r2  r   r  r  )r  r  r<   r1  )r   r4   r  r   r   r   r`   ra   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*   rs   r  r   r  r   Tr   r   g      @r   r   )	r
   r   r   r   r   r   r;   r   r   )r  r   r`   ra   r   r#  r   s          r&   %test_categorical_non_unique_monotonicr  	  s    
 "1#U<-@(A"ABJ
E,*+gYj
QC

	stE,4G/HIC 3DdKF5:<!;K5L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)rV   rW   rV   rx   rV   rW   r0  )r   r*   r   r*   r   r   )Cat1Int1)rV   rW   rx   rV   rW   rx   )r   r   r   r*   r*   r*   )r  g333333?rs  ru  r  g?)CatIntFactorr  r  r  r  r  r   r  r*   )axisr   rK  TrX  )	r	   r   r   r   r  dropr   r   r   )rV   rW   r   r   s       r&   &test_merge_join_categorical_multiindexr  	  s    :OL"	A 	!A 9?K!0	A
 	!u~.x8A		 H }}eU^!}4HVVA66*V+F(+ *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   rF  zCan only pass argument "r   " OR "z" not both\.r   r   r   r   r   getattrr4   r  r  r  r   r   r   s         r&   /test_merge_join_cols_error_reporting_duplicatesr  2
  s|     Aq6A/0DQF!Q01E%gaj\
|<
PC	z	-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   rF  zMust pass "r   r  z"\.r   r   r  s         r&   ,test_merge_join_cols_error_reporting_missingr  C
  s|     Aq6A/0DQF!Q01EF71:,c
:C	z	-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   rF  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r   r   rV   r   )r  r  r   r   r   s        r&   1test_merge_join_cols_error_reporting_on_and_indexr  T
  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*   r/   )rC   r2  r   TrC   )r   r   r   )rC   x_xz_xx_yz_yr   r   r   r   r   s       r&   test_merge_right_left_indexr  h
  s    Aq678DQF%89E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   rV   rW   r,   Tr.  r-  )r   r   r   r+   r   r   r   r`   ra   r   r   s       r&   $test_merge_result_empty_index_and_onr  y
  s    
1#QC(
)
3
3S#J
?C
S1#J

)
)3%
0Cr+288<FFSzRH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)Nr9  r*   r   )rV   rW   b_xr   (Passing 'suffixes' which cause duplicater   rV   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 )Nrp  rq  )rV   rW   rW   r   r*   r[   r   r   rV   r   )r*   r*   r*   r   )rV   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   )rV   rW   rW   r  r   r*   r[   r   r   r  r   rV   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\   rV        \@r   r<  rr   r  ra  rC   r  r   Tr   )r<  rr   r*   r   )r  ra  r[   r\   )rC   r  rV   r  r   r   r   r   r   r  s       r&   %test_merge_string_float_column_resultr  
  s{    
aVaV$eS%L.A
BC
aWr2h'#s
<C3TtLF	'7M1NH &+r(   c                      [        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}   rX   r,   r[   r\   )r}   r2  r}   r   r   )r}   rX   r2  )r}   r2  rX   ry  )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 )	NrV   r*   rx   r   r   ry   r   )rH  rI  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 )	Nr9  r*   r   r,   r   rF  r   r0  r   r  r4  r   r   r   r   s         r&   test_merge_ear0  
  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 )Nr9  r*   r   r,   r   rF  r   rp  rq  r0  )r   lowerr   r   r   r   r/  s         r&   test_merge_ea_and_non_ear3  
  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pyarrowrV   r*   r   r,   r4  )r   importorskipr   r   r   r   r   )r-   ro   ra   r   r   s        r&   !test_merge_arrow_and_numpy_dtypesr8    s     	"	C!Q=	.B
S1a&M)9
:CXXc]FwwyH&+YYr]FxxzH&+r(   r   )r   r   r   r   r3   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]   ra  r2         r   r  r  )r  rV   r  r  r*   )r  rW   r  )r  rV   rW   r   Tr  r   r   r   r   )r4   r5   r   r  as_unitr   r;   ilocr  r   r   r   )r3   r   valsr`   ra   r   r   s          r&   (test_merge_datetime_different_resolutionr@    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  rW   r  )r  )r  r  )r  r   )rB  rW   Tr   r   )r   r   r  r   r;   r   r   r   )ro   ra   r   r   s       r&   "test_merge_multiindex_single_levelrC  +  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  setrm  intersectionisinr  r   r  r   r   intpr  r  mulr   r   r   )r   r   rD  rE  rF  rG  rH  r   r   	on_kwargsr   r   otherother_uniquekeep_values	keep_maskother_value_countsrepeatsleft_countsright_countsexpected_countss                        r&   test_merge_combinationsr[  8  s    q6DAQ/AQ/FE/Qq1/Qq1eT]#Duen%E~~e$&#'=	5M	4@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;   r4   
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 )Nr6  rV   rW   r,   r*   rx   r   Tr   r   r   )
r   r7  r   r   r   r   r   r;   r   r   )r  r   r   r   r   s        r&   test_merge_arrow_string_indexr`    s    
	"cC:&.>?DsAheS#J>N&OPEZZs&ZIFc3Z'78266{KH &+r(   r  right_emptyc                    [        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  ra  r`   ra   r   r   s         r&   $test_merge_empty_frames_column_orderrc    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_timedeltare    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   rg   )]r   r   r   r  numpyr   r   pandas.core.dtypes.commonr   r   pandas.core.dtypes.dtypesr   pandasr4   r	   r
   r   r   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.core.reshape.concatr   pandas.core.reshape.merger   r   r'   r7   r=   r  rM   rQ   rT   rb   rd   r  r  r   r   r$  r  r  r  r  r  r  r  r  r  r  r;   r  r  r  tupler  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r)  r+  r-  r0  r3  r8  r@  rC  r[  r^  r`  rc  re  )r  s   0r&   <module>ro     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 P	c5:STJJ uen5T5M2 , 3 6 ,F,,,?<," !S2, 3,*5,p '<!89	-	</HI$	/*m1LM1 :1 '<!89
S	J67
c	Y561 :1 '<!89		t	9 :	9,"	,	:,#,5	) 4/2, 3,8,,, 7,<"=>, ?,  CD&789, : E,2
,  CD$/dE]3u6)D%=9$7*T5M:?, ; 8 : 7 4 0 E?,D>.	, e}5u6, 7 6,*  CD- E-a Ws   "[(
