
    A>i                       S SK JrJ r Jr  S SKrS SKrS SKrS SKJr  S SK	J
r
Jr  S SKJr  S SKrS SKJrJrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SK J!r!J"r"  SS	 jr#\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+ " S S5      r,\RZ                  R]                  S\R^                   V s/ s H  n \" / SQU SS9PM     sn \" / SQ/ SQSS9\" S SSS9\" / SQSS9/-   S  S!9S" 5       r0\RZ                  R]                  S#S$S%/SSS&S&S'4S(SS$S%/SS&S)S'4SSS$S%/S)S&S'4S$S%/SSS&S&S4S*SS$S%/SS&S)S4SSS$S%/S)S&S4/5      S+ 5       r1S, r2\RZ                  R]                  S-S S S.S/0S0S1/4S S S.S20S S1/4S S S.S30S4S5/4S S S.S6S7/0S4S5/4S8S S.S90S8S /4S:S:S.S;0S<S:/4S=S=S.S90S=S>/4S8S8S.S;0S?S8/4S8S=S.S;0S8S=/4S8S8S.S@0S8S?/4S S S.SA0SBS /4S8S80 S?SC/4S S 0 S4S5/4/5      SD 5       r3\RZ                  R]                  SESF/ SGQSHSI\Rh                  // SJQSK.4S$/ SLQSMSHSI\Rh                  /\Rh                  SNSOSP/SK.4/5      SQ 5       r5\RZ                  R]                  SR/ SSQ5      ST 5       r6\RZ                  R]                  S.SUSF1S S SV./5      SW 5       r7\(       a  SXOSYr8\RZ                  R]                  SZS8S8S[S\\8 S]34S8S8\9" S85      S^4/5      S_ 5       r:\RZ                  R]                  S`SaSb/5      \RZ                  R]                  ScS)S&/5      Sd 5       5       r;Se r<Sf r=Sg r>Sh r?\RZ                  R]                  SiSjSk/5      Sl 5       r@Sm rA\RZ                  R]                  SnSoSp/5      \RZ                  R]                  SqS8S)Sr.SsSt/4S8S)Su.SvSw/4/5      Sx 5       5       rB\RZ                  R]                  SnSoSp/5      \RZ                  R]                  SqSsS80SvSw/4SvS80SsSt/4/5      Sy 5       5       rC\RZ                  R]                  SnSoSp/5      \RZ                  R]                  SzSwS)0StS)0/5      S{ 5       5       rDS| rES} rFS~ rGS rHS rIS rJS rKS rL\RZ                  R]                  SSS/5      S 5       rMS rNS rOS rP\RZ                  R]                  SSS/5      S 5       rQ\RZ                  R]                  SSS/5      S 5       rRS rSS rT\RZ                  R]                  SS)S&/5      \RZ                  R]                  SS)S&/5      \RZ                  R]                  SS)S&/5      \RZ                  R]                  SS)S&/5      \RZ                  R]                  SS)S&/5      S 5       5       5       5       5       rUS rVS rW\RZ                  R]                  SS)S&/5      \RZ                  R]                  SS)S&/5      S 5       5       rX\RZ                  R]                  S/ SQ5      S 5       rYS rZ\RZ                  R]                  S.SS//5      S 5       r[S r\S r]S r^gs  sn f )    )datedatetime	timedeltaN)PY314)is_object_dtypeis_string_dtype)CategoricalDtype)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndexIntervalIndex
MultiIndexPeriodIndex
RangeIndexSeriesTimedeltaIndex)concat)
MergeErrormergec           	      d   [        [        U 5      5      n[        R                  " [        R                  " X!U -  5      5      n[        U5      U:  a1  [        R                  " [        U5      US U[        U5      -
   -   5      n[        R                  R                  S5      R                  U5        U$ )N   )	listrangenpasarraytilelenrandomdefault_rngshuffle)ngroupsnunique_groupsarrs       d/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/reshape/merge/test_merge.pyget_test_datar(   )   s~    w(M
**RWW]L9
:C
3x!|jjc]>QS\%BBCII!$$S)J    c                  \    [        SS/SS/SS/S.5      n [        / SQ/ SQ/ SQS	.5      nX4$ )
Nr      r   ab)col1col_conflictcol_left)r+   r            )r   r   r   r   r   )r.   r/   	col_right)r   df1df2s     r'   dfs_for_indicatorr8   4   s@    
aVaV#sT
UC
#+(	
C 8Or)   c                   V
   \ rS rS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S r\R:                  R=                  SSSS.SSS.SSS.SSS ./5      S! 5       rS" r S# r!\R:                  R=                  S$\"" S%/S&S'9\"" S%/S(S'9\"" S)/5      \"" S*/5      \"" S/5      \"" \#RH                  " S+5      /5      \"" \#RH                  " S+S,S-9/5      /5      \R:                  R=                  S.\"" S%/S&S'9\"" S%/S(S'9\"" S)/5      \"" S*/5      \"" S/5      \"" \#RH                  " S+5      /5      \"" \#RH                  " S+S,S-9/5      /5      S/ 5       5       r%\R:                  R=                  S$\"" S%/S&S'9\"" S%/S(S'9\"" S)/5      \"" S*/5      \"" S/5      \"" \#RH                  " S+5      /5      \"" \#RH                  " S+S,S-9/5      /5      \R:                  R=                  S0\"" \#RL                  /S(S'9\"" \'RP                  /S1S'9\"" \'RP                  /S2S'9\"" \#RR                  /5      /5      S3 5       5       r*S4 r+\R:                  R=                  S5S6/ S7Q4S/ S8Q4/5      \R:                  R=                  S9S:S;/5      S< 5       5       r,S= r-S> r.\R:                  R_                  S?5      S@ 5       r0SA r1SB r2\R:                  R=                  SC/ SDQ5      SE 5       r3\R:                  R=                  SC/ SDQ5      SF 5       r4SG r5SH r6SI r7SJ r8SK r9SL r:SM r;SN r<SO r=SP r>SQ r?SR r@SS rAST rBSU rCSV rD\R:                  R=                  S9S;SW/5      \R:                  R=                  SX\E" / SYQ5      \E" / SZQ5      4\F" / S[QS\S'9\F" S]S^S_\#RR                  \#RR                  \#RR                  /S\S'94/\GR                   V VVVs/ s H)  n[        / S`QUS'9[        / SaQ[N        R                  S'94PM+     snnnn Q\KR                  " / SbQ5      \KR                  " ScSdSe\'RP                  \'RP                  \'RP                  /5      4P\M" / SfQSgSh9\M" S]SiSj\#RR                  \#RR                  \#RR                  /SgSh94P\N" / SkQ5      \N" SlSmSn\#RR                  \#RR                  \#RR                  /5      4P5      So 5       5       rOSp rP\R:                  R=                  S9S:S;/5      Sq 5       rQSr rRSs rSSt rTSurUgvs  snnnn f )w	TestMergeA   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data2r?   r+   r   r(   r   r    r!   standard_normal)selfdfs     r'   rE   TestMerge.dfB   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$   r2   )r#   r$   r   )r>   r?   valuerB   rD   s    r'   r7   TestMerge.df2Q   sC    %+%a26..q1AA"E
 	
r)   c                 z    [        / SQ[        R                  R                  S5      R	                  S5      S.5      $ )Nr,   r-   cderP   r,   r      keyv1)r   r   r    r!   rC   rJ   s    r'   leftTestMerge.left[   s4    :ii++A.>>q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 )
Nr,   r+   r   r   int64)indexdtypeT
left_indexright_indexrZ   r   r   tmassert_frame_equal)rD   df_emptydf_aresultexpecteds        r'   test_merge_inner_join_empty%TestMerge.test_merge_inner_join_emptyd   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 )Nr>   r?   onr   r`   ra   )rD   rE   r7   joinedexps        r'   test_merge_commonTestMerge.test_merge_commonl   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   r1   r   r+   r   r1   )r   astypefloatr   r`   ra   rD   rU   rightre   rd   s        r'   test_merge_non_string_columns'TestMerge.test_merge_non_string_columnsq   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 )Nr>   ri   )	set_indexr   r`   ra   )rD   rE   r7   rU   ru   rd   re   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 )NrM   r   rQ   rR   v2r2   rO   r-   rN   r,   rY   rS   TrU   F)left_onr]   howsortru   )right_onr\   r   r   )
r   r   r    r!   rC   r   r`   ra   loccolumns)rD   rU   ru   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 )NrM   r   rQ   rR   r}   r2   r~   r   rS   Tinnerr   r]   r   ri   )r   r\   r   )r   r   r    r!   rC   r   joinr   rY   r`   ra   r   rD   rU   ru   rd   re   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[        R                  R                  S5      R	                  S5      0/ SQS9n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)Nr}   r   r2   r~   r   z&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 bothrS   )r   rj   z)len\(right_on\) must equal len\(left_on\)r>   r?   r   r   )r   r   r    r!   rC   pytestraisespderrorsr   r   
ValueError)rD   rE   r7   rU   ru   msgs         r'   test_merge_misspecified!TestMerge.test_merge_misspecified   s   299((+;;A>?&
 7]]299//s;$$/ <4]]299//s;$40 <$ 	 ]]299//s;$e6 < ;]]:S1"F8vv6FG 21 <; <; <; 21s0   *D5,E.EE(5
E
E
E%(
E6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   rU   Fr>   r?   r   r\   r]   z=left_index parameter must be of type bool, not <class 'list'>r   r   r   r   )rD   rE   r7   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 )NrS   ri   r   v1_xv1_y)r   value_countssumr   )rD   rU   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)foobarbazr   r+   r   r1   r2   )lkeyrI   )r   r   quxr   )r3      rQ      )rkeyrI   r   r   outerT)r   r   r   r   r   r   r   namer   r   r1   r+   r2   value_xr   r3   r   rQ   value_y)r   r   r   r   nanr`   assert_series_equal)rD   rU   ru   r   rm   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
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+   r,   r-   rH   r   r   r   rN   rO   Tr[   r   r,   peekaboorO   )r   r   r   all)rD   rU   ru   r   s       r'   test_merge_copyTestMerge.test_merge_copy  s    qq)r;E2%)DttFsS	Q##%%%% sc
e#((****r)   c                 b   [        SSS.[        S5      S9n[        SSS.[        S5      S9n[        X#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   rH   r   r   r   r   Tr[   r,   rO   )r   r   r   r   shares_memory_values)rD   using_infer_stringrU   ru   r   s        r'   test_merge_nocopyTestMerge.test_merge_nocopy  s    qq)r;E2%)DttF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   r1   r3   rS   rI   rI   rS   r   r+   r+   r   r1   r2   r3   r   )rS   rvaluer   rj   r   	r+   r+   r+   r+   r   r   r1   r2   r3   r   r+   r   r1   r2   )	r   r+   r   r+   r   r   r1   r2   r3   )rS   rI   r   )rI   rS   r   )	r   r   r   r   r   arrayr   r`   ra   )rD   rU   ru   rl   re   s        r'   "test_intelligently_handle_join_key,TestMerge.test_intelligently_handle_join_key  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+   rH   rR   r      r   r   rS   rX   TFr   boolvalr   r   r   key_0)r   r   rZ   r   r   int)rD   r6   r7   rE   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   r3   r   rI   rS   rX   r   rZ   r   r   r^   r   r   r   r   r   r   rZ   r   r1   )r   r+   r+   r   r   r1   T)r\   r   r   r   )r   r   aranger   r   r`   r   notnar   r   r   rX   )	rD   rU   ru   rS   r   r   r   r   re   s	            r'   test_handle_join_key_pass_array)TestMerge.test_handle_join_key_pass_arrayE  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)Nxr,   r   yr-   rN   z>No common columns to perform merge on. Merge options: left_on=z, right_on=z, left_index=Fz, right_index=r   )r   nowr   r   r   r   r   )rD   dtr6   r7   r   s        r'   &test_no_overlap_more_informative_error0TestMerge.test_no_overlap_more_informative_errore  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  r3   r+   r   r1   r2   r   r,   r   r   r-   rN   )r,   r-   q)rN   rO   rP   fghrO   r   r   _check_merge)rD   r   dt2dt3dt4r6   r7   s          r'   test_merge_non_unique_indexes'TestMerge.test_merge_non_unique_indexest  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   r3   r+   r   r1   r   r,   r-   rN   rO   r   r   )rP   r   r   z hir   )rD   r   r   r   r6   r7   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   rS   rU   r   ru   r_   )rD   rU   ru   rd   s       r'   test_left_merge_empty_dataframe)TestMerge.test_left_merge_empty_dataframe  s[    !s345"+&tu&9
f+uu':
f+r)   c                     [        / US S S9nUR                  5       nUR                  XBS9n[        R                  " XS5        g )Nr   r   r   )r   copyr   r`   ra   )rD   rY   	join_typerU   ru   rd   s         r'   test_merge_empty_dataframe$TestMerge.test_merge_empty_dataframe  s=    5!9-		50
f+r)   kwargTr[   r   r\   r   r,   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r,   r-   rN   r   r   r   zr,   r-   rN   r   r   r  r   r   )r   objectr   r`   ra   )rD   r  r  rU   ru   exp_inrd   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 )Nr  r   r+   r   r1   r2   r3   r   rQ   r   	   r  r1   r^   r+   r2   rQ   r   r3   r   r1   r   r  r  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   rU   rk   rm   r  rd   rU   ru   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   ru   r   rk   r  s      r'   check2>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2  K    4=G=u=F!!&.4=G=u=F!!&.r)   Tr[   r   r	  r,   r
  r   r+   r   r   )r   r   r   r   r  )rD   exp_outr  r  r!  r  rU   ru   s         @@r'   $test_merge_left_empty_right_notempty.TestMerge.test_merge_left_empty_right_notempty  s)   19i;_UXXrvvhl&9XXrvvhl&9XXrvvhl&9 3

 1	/	/  5S1
E 6!7"
  5v wS1vxx1F;wr)   c                   ^^^^^^ [        / SQ/ SQ/ SQ// SQS9m[        / SQS9m[        / SQ/ SQ/ S	Q[        R                  " [        R                  /S
-  [        S9[        R                  " [        R                  /S
-  [        S9[        R                  " [        R                  /S
-  [        S9S./ SQS9mTSS mTR
                  R                  [        5      Tl        UU4S jmUUUUUU4S jmg )Nr  r  r  r  r   r  r  r  r  r1   r^   r  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   ru   rk   r  s      r'   r  >TestMerge.test_merge_left_notempty_right_empty.<locals>.check1  r#  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   rU   r   Tr[   r   r	  r,   r
  r   rk   )	rm   r  rd   r  r!  r  r%  rU   ru   s	      r'   r!  >TestMerge.test_merge_left_notempty_right_empty.<locals>.check2  s    4<F<e<F!!&.4=G=u=F!!&.  $D9#55S1	 vu%w&r)   )r   r   r   r   r  rY   rr   )rD   r  r!  r  r%  rU   ru   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)   series_of_dtyper+   rX   r^   Int64gGz?r   
2018-01-01
US/Easterntzseries_of_dtype2c                    [        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   rS   rI   r   r   r^   rS   r   r   ri   )r   r   dtypesr   r`   ra   )rD   r/  r5  rE   rb   re   actuals          r'   test_merge_empty_frame TestMerge.test_merge_empty_frame  s    4 #?G$
 bq6BIIe$45!		'(:;!		'(:;
 2
 u-
f/r)   series_of_dtype_all_nars   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   rS   rI   r   r7  ri   r_   )rD   r/  r<  df_leftdf_rightre   r9  s          r'   test_merge_all_na_column"TestMerge.test_merge_all_na_column;  sw    . #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   rH   sizer   r+      i  r2   i  r1   i  r3   )var1var2var3rQ   )rH  var8rH  Frj   r   )r   r    r!   integersr   r   	from_dictrH  uniquer   r   r`   ra   r   )rD   rO   rE   rH  newrd   rm   s          r'   test_merge_nosortTestMerge.test_merge_nosorte  s    II))!,55a"5EII))!,55a"5Eq"%q!$q!$q"%q!$q!$q!$q!$q!$q!$
    #ww~~wwt}!!299#8#8#;#B#B1#EF
 #&u5BU3
f* FKK$6$6$88==????r)   )r   valuesF)r+   r+   r   r+   r+   )r   r+   r+   r+   r+   r   rU   ru   c                     [        S/ SQ05      nUR                  USX1S9n[        US/S9n[        R                  " XV5        g )Nr,   )r+   r   r+   )rj   r   r   r   r_   )rD   r   rQ  r   rE   rd   re   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rW  i3rW  _)rj   rsuffix        r   r+   )rW  rX  i1_rZ  Nr^   r   rW  rX  r_  rZ  r  Fcheck_dtype)r   r   r   r   r   r  ry   reset_indexr   rr   r`   ra   rD   r6   r7   rd   re   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      ?      ?rV  gffffff?rY  r[  rW  )r\  rj   r^  r]  )rW  r_  rX  rZ  r`  )r   r   r   r   r`   ra   rd  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$ N )rD   NotADataFrames    r'   _constructor=TestMerge.test_merge_type.<locals>.NotADataFrame._constructor  s	    $$r)   rp  N)__name__
__module____qualname____firstlineno__propertyrr  __static_attributes__)rq  s   r'   rq  rm    s    % %r)   rq  r>   ri   )r   r   
isinstance)rD   rE   r7   nadrd   rq  s        @r'   test_merge_typeTestMerge.test_merge_type  s@    	%I 	%
 B36*&-0000r)   c           
      j   [         R                  " [        SSSSS5      /[        SS5      /S.5      n[        [	        S5      S	9n[        X!/S
S9n[        X!/S
S9n[        [        SSSSS5      [        SSSSS5      /[        SS5      [        SS5      /S.[        S9n[        R                  " X45        g )Ni     r3   8   r   iW  )rO   tr   r   Tignore_indexr^   )	r   rL  r   r   r   r   r  r`   ra   )rD   rO   rE   rd   re   s        r'   test_join_append_timedeltas%TestMerge.test_join_append_timedeltas  s     D"aB/0	!U8K7LM
 tDz*RG$/d3tRAr2HT2q!R4PQ5)9Q+>? 
 	f/r)   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   rrU   )r\  r   AB)00r)
r   timedelta64r   r   r   r   r   NaTr`   ra   )rD   tdlhsrhsrd   re   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rY   r   zdatetime64[]r  r   r  zdatetime64[s]Tr
  natr^   r  r  r   )r   r   rr   to_framerZ   r   r   r   r   corearraysDatetimeArray_simple_newr`   ra   )
rD   r  r6   serrZ   	exp_dtyper7   rd   r  rm   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   rr   r  rZ   r   r   r   r`   ra   )	rD   r  r6   r  rZ   r   r7   rd   rm   s	            r'   test_other_timedelta_unit#TestMerge.test_other_timedelta_unit  s    sCj12dD\#s&AdV1?"CCz5

5! 6 **W%..v6C**U#,,V4Cv;$$---3F*bhhu~U.ST &)
 	f* 65s   D
Dc                    [        / SQ/ SQ/ SQS.5      n[        / SQ/ SQ/ SQS.5      n/ SQUl        / SQUl        [        / SQ/ SQ/ SQ/ SQ/ SQS.5      n/ SQUl        [        R                  " [	        X5      U5        / S	QUl        S
n[
        R                  " [        US9   [	        X5        S S S 5        g ! , (       d  f       g = f)Nr  r  r  rS   rT   r}   )rS   r   r   )rS   r   r   )rS   rT   r}   v3v4)rS   r   r   r   r   )r>   r   r   z?Data columns not unique: Index\(\['foo'\], dtype='object|str'\)r   )r   r   r`   ra   r   r   r   r   )rD   rE   r7   re   r   s        r'   &test_overlapping_columns_error_message0TestMerge.test_overlapping_columns_error_message  s    y	KL	)LM*
+ 
 ?
eBnh7 -P]]:S1"N 211s   %B::
Cc                    [        [        R                  " SSSS9SS/S.5      n[        [        R                  " SSSS9/ S	QS.5      n[        [        R                  " SS
SS9SS[        R                  [        R                  /[        R                  SSS/S.5      n[        XSSS9n[        R                  " XC5        g )N20151010r   r2  periodsr4  r+   r   20151011r1   r  r2   r7  rS   r   r   )r   r   
date_ranger   r   r   r`   ra   rt   s        r'   test_merge_on_datetime64tz$TestMerge.test_merge_on_datetime64tz5  s    }}Z|LQ
 }}Z|L"
 }}Z|Lq"&&"&&1FFAq!,
 tu':
f/r)   c                    [        SS/[        R                  " SSSSS9S.5      n[        SS/[        R                  " S	SSSS9S.5      n[        / S
Q/ [        [        R                  " SSSSS95      Q[        R                  P[        R                  /[        [        R                  " S	SSSS95      QS.5      n[        XSSS9n[        R                  " XC5        US   R                  S:X  d   eUS   R                  S:X  d   eg )Nr+   r   r  r2  r  )r  r4  r  r   r1   r  r  r7  rS   r   r   r   zdatetime64[ns, US/Eastern]r   )	r   r   r  r   r  r   r`   ra   rZ   rt   s        r'   test_merge_datetime64tz_values(TestMerge.test_merge_datetime64tz_valuesN  s!   1vl
 1vl
  j!SWX FF	 FFj!SWX
" tu':
f/i &&*FFFFi &&*FFFFr)   c           
      B   [         R                  " SS9n[        [        S/US9S/[        S/US9S./ SQS9nUS S	 nUR	                  US
S9n[        [        US9[        [        S9[        US9[        [        S9[        US9S./ SQS9n[        R                  " XE5        g )NUTCr3  2018r^   g      @2019)r   rI   date2r   r   r   ri   )r   r   date2_xr   date2_y)	r   DatetimeTZDtyper   r   r   r   rs   r`   ra   )rD   dtzru   rU   rd   re   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:00r2   r   zEurope/Madrid)r  freqr4  r   r   r+   rI   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00r   )r   rI   r  r   r   rj   rQ   r1   )r   r   r   )r   r   r  to_datetimer   tz_localize
tz_convertr   r   r   r`   ra   rd  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rY   r   Tr   r\   r]   r   r^   r   r+   pnum_xpnum_yr   rY   )r   period_ranger   r   r   r   r   r   r   r   r   rX   repeatreshape
sort_indexrY   r`   ra   )rD   rY   rE   r7   rd   re   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  r1   r  r2   r7  rS   r   r   )r   r   r  r   r   r   r`   ra   rt   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      Q[        R                  P[        R                  /[        U5      Q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   r1   r  r  r7  rS   r   r   r   z	Period[D]r   )	r   r   r  r   r  r   r`   ra   rZ   )rD   rU   ru   exp_xexp_yre   rd   s          r'   test_merge_period_values"TestMerge.test_merge_period_values  s    FR__ZQT%UV
 FR__ZQT%UV
 
AC@
AC@ 1T%[1"&&1FF1T%[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   r1   r2   r3   r+   r   r,   r-   r1   r2   r3   )r.   col_conflict_xr0   col_conflict_yr4   )	left_onlyboth
right_onlyr  r  r  r  r  r  
categories_merge)r.   r  r0   r  r4   r  r.   r   Trj   r   	indicatorcustom_namer   )	r  r   r   r   r
   r   r`   ra   rename)
rD   r8   r6   r7   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   r.   r   r3   r  r   )rD   r8   r6   r7   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 )
Nr.   rU   Tr  r  ru   r  r   r  )r   r  r   )rD   r8   r6   r7   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  r.   r+   r   zECannot use `indicator=True` option when data contains a column named z;|Cannot use name of an existing column for indicator columnr   r   Tr  )r.   custom_column_namez:Cannot use name of an existing column for indicator columnr  r   r   r   r   r   )rD   r8   r6   r[  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+   r,   r-   r.   col2)r+   r+   r1   )r-   r   r   )r   r+   r+   r1   r,   r-   r   r   )r  r  r  r  r  r  r  r.   r  r   Tr  r   r
   r   r`   ra   )rD   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   r2   r   r,   r-   rN   rO   rP   )meowbarkum... weasel noise?naychirpr,   rN   r3   T1:1)r\   r]   validate)r'  r(  r)  r*  )a_xr-   a_yrN   r  
one_to_oner  r,   )rj   r.  r-   r,   rN   r  )r\   r   r.  rP   mooone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger   cowr1   )r   many_to_onezAMerge keys are not unique in left dataset; not a one-to-one mergemany_to_manyzCMerge keys are not unique in right dataset; not a many-to-one mergezBMerge keys are not unique in left dataset; not a one-to-many mergez"jibberish" is not a valid argument. Valid arguments are:
- "1:1"
- "1:m"
- "m:1"
- "m:m"
- "one_to_one"
- "one_to_many"
- "many_to_one"
- "many_to_many"	jibberish)r,   r,   r-   r-   )r   r+   r   r+   r,   r,   r-   )r   r+   r   )r'  r(  r)  )r,   r-   rO   )r"  r#  r$  zQMerge keys are not unique in either left or right dataset; not a one-to-one merger-   )r   r   r  r   r`   ra   ry   r   r   r   r   r   )rD   rU   ru   	left_copy
right_copyrd   re   
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/ SQ05      n[        S/ SQ05      n[        R                  " [        SS9   [	        XSS9  S S S 5        [        R                  " [        SS9   [	        XS	S9  S S S 5        [        R                  " [        S
S9   [	        XSS9  S S S 5        [        R                  " [        S
S9   [	        XSS9  S S S 5        [        S/ SQ05      n[        R                  " [        SS9   [	        XSS9  S S S 5        [        R                  " [        SS9   [	        X!SS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)NrS   )r+   r+   r   )r+   r   r   z#Duplicates in left:
  key
   1 ...
r   r-  )r.  z"Duplicates in left:
  key
   1 ...z1:mz#Duplicates in right:
  key
   2 ...zm:1r  z#Duplicates in right:
  key
   1 ...r   r   r   r   r   )rD   rU   ru   s      r'   !test_merge_validate_error_message+TestMerge.test_merge_validate_error_message<  s   %+,5),-]]:-UV$. W]]:-ST$. U]]:-TU$. V]]:-TU$. V 5),-]]:-ST$. U]]:-TU%. VU WVTTUUUU UTUUsG   D7$EE<E*7E;#F7
E
E
E'*
E8;
F	
Fc                     [        / / / S.5      n[        R                  " SS9   [        XSS9  S S S 5        g ! , (       d  f       g = f)Nr  raise)divider   ri   )r   r   errstater   )rD   r,   s     r'   )test_merge_two_empty_df_no_division_error3TestMerge.test_merge_two_empty_df_no_division_errorP  s5    BRb12[[(!:& )((s	   8
Ar   zindex,expected_indexr+   r   r2   )r+   r   r2   NNN)
2001-01-01
2002-02-02
2003-03-03zM8[ns]rO  rP  rQ  r  )r+   r   r1   NNN)r+   r   r   r1   r1   r2   rR  rS  rT  )rO  
2001-01-02
2001-01-03r  )r  rU  rV  )1D2D3DrW  rX  rY  c           
         UR                   S:X  a!  UR                   S:X  a  UR                  S5      n[        / 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 )Nfloat32float64r$  r,   rS   r   r-   r  rS   Tr   )r   r   r   r+   r+   r+   r   r   r   r1   r2   r3   r,   rS   r-   r   )inplace)	rZ   rr   r   r   r   r   ry   r`   ra   )rD   r   rY   expected_indexr6   r7   rd   re   s           r'   $test_merge_on_index_with_more_values.TestMerge.test_merge_on_index_with_more_valuesV  s    ^ ;;)#(<(<	(I+229=Ni	:%H01234SIAAA &

 	>48
f/r)   c                     [        / SQ/ SQS.5      n[        S/ SQ05      n[        / SQ/ SQ/ SQS./ SQS	S
S[        R                  /S9nUR                  USSSS9n[        R
                  " XC5        g )Nr  )r   r+   r+   r]  r-   r+   r   r1   N)r   r+   r+   r   )r+   r   r   r1   r`  r   r+   r   r  rS   Tru   r   r   r   r   r   r`   ra   rt   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   rm  rn  r   ru   r_   )rD   r   left_dfright_dfrd   re   s         r'   test_merge_preserves_row_order(TestMerge.test_merge_preserves_row_order  s     u~RHMNE(:"bRSxX{,CM'> Y,>bRTX!VWH UEN"b!RSH
f/r)   c           	      L   [        / SQ[        / SQ[        S5      S9S.5      n[        S/ SQ0[        / SQ5      S9nUR	                  US	S
SS9n[        / SQ[        / SQ5      / SQS.SSS[
        R                  /S9nUR                  / SQS9n[        R                  " X45        g )Nr  r9  abcr  r]  r-   r  r   rS   Tru   r   rf  )r,   r,   r-   rN   )r+   r+   r   r1   r`  r   r+   r   r   )
r   r
   r   r   r   r   r   reindexr`   ra   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                 ^   [        [        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                  R                  l        M      UR                  U5        g )	Nr   r2   r3   r+   r&  r   r3   r2   r  F)
r   r   r   r  _mgrblocksrQ  flags	writeabler   )rD   r@   rA   blocks       r'   test_merge_readonlyTestMerge.test_merge_readonly  s    IIbM!!&)A-7P
 IIbM!!&)A-7K

 ZZ&&E+0ELL( ' 	Er)   c                 ~   [        [        R                  " S5      R                  S5      S-   / SQS9n[        [        R                  " S5      R                  S5      S-   / SQS9nSn[        R
                  " [        [        R                  " U5      S	9   UR                  US
S9  S S S 5        g ! , (       d  f       g = f)Nr   r{  r+   r&  r   r|  r  z_'full' is not a valid Merge type: left, right, inner, outer, left_anti, right_anti, cross, asofr   fullr   )
r   r   r   r  r   r   r   reescaper   )rD   r@   rA   r   s       r'   test_merge_how_validation#TestMerge.test_merge_how_validation  s    IIbM!!&)A-7P
 IIbM!!&)A-7K
1 	 ]]:RYYs^<KK6K* =<<s   B..
B<rp  N)Vrt  ru  rv  rw  r   fixturerE   r7   rU   rf   rn   rv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  markparametrizer  r&  r-  r   r   	Timestampr:  NAr   r   r  r@  rO  rS  re  ri  filterwarningsr|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rB  rF  rL  r   r   r`   ALL_REAL_NUMPY_DTYPESr   r\  r   from_tuplesr   r   rc  rh  rs  rx  r  r  ry  ).0dtypr   r   s   0000r'   r:   r:   A   s   ^^  ^^
 
 ^^
 
0+

00H8G*H.8 7(
+M0&2.K@*,, [[5S1D1-		
..-^('T [[A3g&A3g&D6NE7OD6NBLL./0BLL,?@A	
 [[A3g&A3g&D6NE7OD6NBLL./0BLL,?@A	
000$ [[A3g&A3g&D6NE7OD6NBLL./0BLL,?@A	
 [[ BEE7'*BFF87+BFF88,BFF8		
0*0*@@ [[e_5o7NO [[UVW$560 70C*0 [[W	1	10&0  [[V%KL+ M+: [[V%KL+ M+2002%GN020@00*6,=G~@.& D8&C6J/(' [[UWg$67[[ !+ !<=
 >h !<rvvrvvrvvV"	&	
& 44
 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000 [[UVW$56	0 7	00*+cs   70T#r:   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   rU   r   )TFr   r   rY   F)check_names)r   r   rc  ry   r`   ra   )r   r   r   r   rd   re   s         r'   r   r     sd    )!DVVATV2FQ]]_ammo3RH))'2H !!&F " *r)   c                      \ rS rSr\R
                  R                  S\S/5      S 5       r\R
                  R                  S\	R                  \	R                  \	R                  \	R                  /5      S 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\R2                  " S#SS$S%9S&S'/4\R2                  " S#SS$S%9SS/4\R2                  " S#SS$S%9S(S/4\R2                  " S)SS*9\R2                  " S)SS+S,94/5      S- 5       r\R
                  R                  S.SS/S/4/ S04S/S14S/S24/5      S3 5       r\R
                  R                  S.S4S5/S/4/ S04S5/S14S4/S24/5      S6 5       r\R
                  R                  S7S0/ S8Q/ S9Q/4S// S9Q/ S8Q/4S2/ S8Q/ S9Q/4S1/ S9Q/ S8Q/4/5      S: 5       rS; r\R
                  R                  S</ S=Q5      S> 5       rS? r S@ r!SA r"SBr#gC)DTestMergeDtypesi  rZ   categoryc                 l   [        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S/US	9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  ri   )r   r   rr   r   r   r  rZ   r   )rD   rZ   rU   
right_valsru   rd   s         r'   test_differentTestMergeDtypes.test_different  s    U^UEN+22:>V3ZQF(3QF'2	
 UEN%8
3
+,
 ts+vxx~~../&((..2Q2QQQ2Q.r)   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 )Nr$  r   r^   r   r   rE     )k1k2v)r   r   )r+   r   r}   r3   rQ   r   r  r  ri   r   r\  r   r+   TrJ  	mergesort)kindra  )r   rZ   r   r   r   rX   r   r  r   r  r  r   r   r  r  r`   ra   sort_values)
rD   any_int_numpy_dtyper  dtype1dtype2rU   rY   ru   rd   re   s
             r'   test_join_multi_dtypes&TestMergeDtypes.test_join_multi_dtypes
  s   -."hhy1}F;enr)XXbiim288<
 &&
J'?@41a&!?@N5dD\299;;;#XXi(F"&&7JKhkkQ&8;;%+?@$FGJKhkkQ&8;;%+?@$FG
f/5dD\=dD\TJ
f/r)   zint_vals, float_vals, exp_valsr  r  r        @XYr  r  r+   r1   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_   )rD   int_vals
float_valsexp_valsr  r  re   rd   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  rH   r   rR   rS   rT   r   r      )rS   r}   r}   rU   r   g      i@r  )r   r   r   r   r`   ra   rd  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Sn[        R                  " [        US	9   UR	                  USSS
9n[        R
                  " XS5        S S S 5        [        R                  " [        US	9   UR	                  USSS
9n[        R
                  " XSS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
                  " XSSS/   5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr  r  r  )皙?g      @r  r1   r  r  z:the float values are not equal to their int representationr   r   )r   r`   assert_produces_warningUserWarningr   ra   r   r   )rD   r  r  re   r   rd   s         r'   !test_merge_on_ints_floats_warning1TestMergeDtypes.test_merge_on_ints_floats_warningK  s3   
 sI&'sO,-A3cU34J''3?WWQcW:F!!&3 @ ''3?WWQcW:F!!&C:*>? @
 sRVVRVVS123''-WWQcW:F!!&C:*>? .- @? @? .-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 NrS   TFr^   ri   )r   r   r  r   r`   ra   rD   r6   r7   re   rd   s        r'   (test_merge_incompat_infer_boolean_object8TestMergeDtypes.test_merge_incompat_infer_boolean_objectd  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`   ra   r  s        r'   5test_merge_incompat_infer_boolean_object_with_missingETestMergeDtypes.test_merge_incompat_infer_boolean_object_with_missingo  s     eRVV'<F KLMu./edE]36BsE*
f/sE*
f/r)   zdf1_vals, df2_valsr$  )r,   r-   r,   )r]  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  ri   )r   r   r   r  rZ   r   )rD   df1_valsdf2_valsr6   r7   rd   s         r'   !test_merge_incompat_dtypes_are_ok1TestMergeDtypes.test_merge_incompat_dtypes_are_ok{  s      h(h(sSE*vxx~~....sSE*vxx~~../&((..2Q2QQQ2Q.r)   r  r  r  )r  12z1/1/2011r  r  z
2011-01-01z
2011-01-02r]  20130101)r  r2  r  c                 `   [        SU05      n[        SU05      nSUS   R                   SUS   R                   S3n[        R                  " U5      n[        R
                  " [        US9   [        X4S/S9  S S S 5        SUS   R                   SUS   R                   S3n[        R                  " U5      n[        R
                  " [        US9   [        XCS/S9  S S S 5        [        U5      [        U5      :X  a  [        X!US.5      n[        X"US.5      nSUS   R                   SUS   R                   S	3n[        R                  " U5      n[        R
                  " [        US9   [        Xg5        S S S 5        SUS
   R                   SUS
   R                   S3n[        R                  " U5      n[        R
                  " [        US9   [        XgSS
/S9  S S S 5        g g ! , (       d  f       GNx= f! , (       d  f       GN$= f! , (       d  f       N= f! , (       d  f       g = f)Nr  You are trying to merge on  and zE columns for key 'A'. If you wish to proceed you should use pd.concatr   ri   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   rZ   r  r  r   r   r   r   r   )rD   r  r  r6   r7   r   r  r  s           r'    test_merge_incompat_dtypes_error0TestMergeDtypes.test_merge_incompat_dtypes_error  s   2 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   ru   rU   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   rY   r   rZ   r   r   r   r   r`   ra   )	rD   any_numeric_ea_dtyper   expected_datad1r  rd   	exp_indexre   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)   r,   r-   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)r,   r  r   )r-   r   r  r  )	rD   r   r  any_string_dtyper  r  rd   exp_idxre   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+   r2   )Fr3   r1   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+   r3   r  r  r1   r2   r  r  r   r  r   r_   )rD   r   r  r6   r7   rd   re   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)datarZ   r  r  r  r  r  r  911)r  r  zlvl1-cr  )rU   ru   rj   r   O)r  r  r  r   )r   r   StringDtyper  r  r   r`   ra   r   r   rZ   r   r  r   r8  )	rD   r  string_dtyper6   r  r7   r  r   re   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)
)FrU   rU   )Fru   empty)Fr   r  )Fr   rU   )Fcrossempty_cross)TrU   r  )Tru   ru   )Tr   r  )Tr   ru   )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+   r1   r2   r  r3   r  rX   r^   r   r   rU   r  ru   r  r   r  )A_xr  A_yr  r   r  Tr  )r   headr   r   r   r  r`   ra   )rD   
left_emptyr   rm   rU   ru   rd   re   s           r'   test_merge_empty TestMergeDtypes.test_merge_empty6  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)   c                    [        SS/[        R                  " SS/[        R                  S9S.5      n[        SS/[        R                  " SS	/[        R                  S9S.5      nUR	                  US
S9n[        / SQ[        R                  " / SQ[        R                  S9S.5      n[
        R                  " UR                  SS9U5        g Nr   r   r+   r   r^   r   r   r1   r2   r   r   )r   r   r   r   )r   r2   r+   r1   Tdrop)r   r   r   uintcr   r`   ra   rc  rd  s        r'   test_merge_with_uintc_columns-TestMergeDtypes.test_merge_with_uintc_columns^  s    uen288QF"((3STUuen288QF"((3STU3G,1XXl"((;
 	f00d0;XFr)   c                    [        SS/[        R                  " SS/[        R                  S9S.5      n[        SS/[        R                  " SS	/[        R                  S9S.5      nUR	                  US
S9n[        / SQ[        R                  " / SQ[        R                  S9S.5      n[
        R                  " UR                  SS9U5        g r  )r   r   r   intcr   r`   ra   rc  rd  s        r'   test_merge_with_intc_columns,TestMergeDtypes.test_merge_with_intc_columnsj  s    uen288QF"''3RSTuen288QF"''3RST3G,1XXl"'':
 	f00d0;XFr)   c                 n   [        S[        / SQ[        R                  S905      n[        [        / SQ[        R                  S9/ SQS.5      nUR	                  USSS9n[        [        R
                  " / SQ[        R                  S9/ S	QS.5      n[        R                  " UR                  S
S9U5        g )Njoin_key)r   r   r+   r^   r$  r  )r  rI   rU   r   )r,   rN   r-   Tr  )	r   r   r   r  r   r   r`   ra   rc  )rD   rE   
df_detailsr   re   s        r'   test_merge_intc_non_monotonic-TestMergeDtypes.test_merge_intc_non_monotonicv  s    
F9BGG$DEF	9OT

 *@)277;oV
 	f00d0;XFr)   rp  N)$rt  ru  rv  rw  r   r  r  r  r  r   rX   r\  r[  float16r  r  r  r  r  r  r   rr   r   r  r   r  r  r  r  r  r  r  r  r  r  ry  rp  r)   r'   r  r    s   [[Wvz&:;R <R( [[TBHHbjj"**bjj#QR0 S0> [[(y)OPc
1a&Sz$BCV_QF#s&DE	
<<	0@2	0
0 [[ /66zBCf_5<<ZHIVVUDM89VVUDM67	

R
R [[ QF(+_=QF'*O<(o.j!#>|, ]]: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02
G
G	Gr)   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   )rH   rC  )onetwothreer  )r   r   r   r    r!   choicerr   r	   rp  r)   r'   rU   rU     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   rr   r	   rp  r)   r'   ru   ru     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Srg)TestMergeCategoricali  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  ri   r   strr   r   r  )r  Y_xY_yr   	r   r8  r  r   rZ   r   r	   r`   r   )rD   rU   r   r   rd   rZ   re   s          r'   test_identical#TestMergeCategorical.test_identical  s_    tc*))+%7U%8%G%
 	v0r)   c                    [        XSS9nUR                  R                  5       nU(       d  [        R                  " S5      OSn[        [        SS/S9U[        R                  " S5      // S	QS
9n[        R                  " XW5        g )Nr  ri   r   r*  r   r   r  rX   r  r  r&  r   r-  rD   rU   ru   r   r   rd   rZ   re   s           r'   
test_basicTestMergeCategorical.test_basic  sr     ts+))+%7U UEN;!
 "
 	v0r)   c           	         [        SSSSSS.SSSSSS.S.5      n[        S	S	S	S	S	S.S
S
S
S
S
S.S.5      n[        X!SSSS9nUR                  5       nUR                  5       nUS   R                  S5      US'   [        X%SSSS9nUS   R                  [	        S/5      5      US'   [
        R                  " Xd5        UR                  5       nUS   R                  S5      US'   [        XuSSSS9n[
        R                  " Xd5        UR                  5       nUS   R                  S5      US'   UR                  5       nUS   R                  S5      US'   [        XuSSSS9n[
        R                  " Xd5        g )Nr,   r-   rN   rO   rP   )r   r+   r   r1   r2   nullr   r   r   r   rU   )r   r   r   r  )r   r   r  rr   r	   r`   ra   )rD   ru   rU   rE   re   crightrd   clefts           r'   test_merge_categorical+TestMergeCategorical.test_merge_categorical  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?  ri   )rC  rB  rA  )r?  r@  rD  r  rd  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  rG  )r  r  r  )rI  rJ  rI  r^   r$  )r  pr,   r  rL  )r  r  r  )rI  rI  rJ  )rH   r  rE  )r  rL  r  rU   Tr   g      &@g      (@)r  rL  r,   r  )	r	   r   r
   ry   r   r   r   r`   ra   )rD   rG  pcatr6   r7   rd   re   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  ri   r   r*  r   r   r  r+   r   r1  r   )assignr&  rr   r   r8  r  r   rZ   r   r	   r`   r   r  rQ  #_categories_match_up_to_permutationr2  s           r'   test_other_columns'TestMergeCategorical.test_other_columns  s    uww~~j9:ts+))+%7U UEN; QF3
 "
 	v0 vv}}@@QQQQww~~AA&((//RRRRr)   changec                     U $ ro  rp  r   s    r'   <lambda>TestMergeCategorical.<lambda>-  s    ar)   c                 :    U R                  [        / SQ5      5      $ )N)r   r   bahrr   r	   rW  s    r'   rX  rY  .  s    ahh/0EFGr)   c                 2    U R                  [        SS95      $ )NTrG  r\  rW  s    r'   rX  rY  /  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*  rX   r1  r   )r  rr   rQ  rz  rQ  rZ   r	   r   r8  r  r   r   r`   r   )rD   rU  r  rU   ru   r   r  r   rd   rZ   re   s              r'   test_dtype_on_merged_different3TestMergeCategorical.test_dtype_on_merged_different*  s     577>>(+,q!$&&----/?@@@@ ts	:))+%7U5'):;?S
v0r)   c                 n   Sn[        / SQU-  / SQS-  U-  S VVs/ s H  nU/S-  U-    H  nUPM     M     snnS VVs/ s H  nU/U-    H  nUPM     M     snnS.5      nUR                  S 5      n[        XD[        UR                  5      S	9n[
        R                  " XT5        g s  snnf s  snnf )
Nr3   )
r,   r-   rN   rO   rP   r   r   r   r   j)r  wr   r   r  r   )r  r$   urL  o)
aabbccddeeffgghhiijjr   c                 $    U R                  S5      $ )Nr  )rr   rW  s    r'   rX  ITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>e  s     4r)   ri   )r   applyr   r   r   r`   ra   )rD   r  eachletterrE   rd   s         r'   "test_self_join_multiple_categories7TestMergeCategorical.test_self_join_multiple_categoriesD  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  r1   ffffff?num4rO  rU  rV  )r   rz  r|  r   r  r   )
r   r   rr   r   r  r   r   r   r`   ra   )rD   rE   r7   expected_outerresult_outerexpected_innerresult_inners          r'   test_dtype_on_categorical_dates4TestMergeCategorical.test_dtype_on_categorical_datesl  s    4A$tD!Q'7&=>QWHX
 Z&&z26
4A$tD!Q'7&=>QWHX
 &k((4F"l+002C=l+002C@l+002BFFC@
 -
 R'vh?
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"  r^  r   r2   r+   r  )r  num)r  r"  r  )r   rr   r	   r   r`   ra   )	rD   category_columnr  expected_categoriesrG  r6   r7   rd   re   s	            r'   /test_merging_with_bool_or_int_cateorical_columnDTestMergeCategorical.test_merging_with_bool_or_int_cateorical_column  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   r0  r^   r  r  ri   )r  B_xB_y)r   r   r   r  r   r`   ra   )rD   rE   rd   re   s       r'   test_merge_on_int_array,TestMergeCategorical.test_merge_on_int_array  sc    VQ255MAJKr#&!Qg6qK
 	f/r)   c                    [        [        [        SS5      5      [        [        SS5      5      [        [        SS5      5      [        [        SS5      5      S.5      nUR                  SSSS.5      nUR                  S S2S S 24   R                  SS/S	S
9R                  SS05      nUR                  SS 2S S 24   R                  / SQS	S
9R                  SS05      n[        X4S	S	SS9n[        [        SS5      5      n[        [        [        SS5      5      [        [        SS5      5      -   US9n[        [        [        SS5      5      [        [        SS5      5      -   US9n[        [        R                  /S-  [        [        SS5      5      -   US9n	[        R                  " XxU	// SQS9n
[        [        [        [        [        SS5      5      5      [        R                  /S-  -   [        R                  /S-  [        [        [        [        SS5      5      5      -   S.U
S9n[        R                   " X[5        g )Nr+   rH   )r   r   r  rO   r  r  r2   r  r   T)observedrO   r   rQ   )r  r   r   r   r  r3   r   r  namesr   )d_xd_yr   )r   r   r   rr   ilocgroupbyaggr   r
   r   r   r   from_arraysmaprs   r`   ra   )rD   r6   r7   r  r  rd   catsr  r   r   idxre   s               r'   .test_merge_category_index_levels_stay_categoryCTestMergeCategorical.test_merge_category_index_levels_stay_category  s   %2,'%2,'%2,'%2,'	
 jjz
LMhhrr1uo%%sCj4%@DDc5\Rhhqr1uo%%o%EII3PU,WsDdPE!RL!U1a[)Dq",>>4PU1a[)Dq",>>4P1tE!RL'99dK$$aAYoFCuQ{34x!|Cx!|d3ueArl+C&DD 
 	f/r)   rp  N)rt  ru  rv  rw  r.  r3  r9  rE  r   r  r  rN  rS  r`  rv  r  r  r  r  ry  rp  r)   r'   r(  r(    s   	11 )0V02 [[Yu60 708S* [[G>	
11$&*P<@ [[Yu6[[8'$uFAq6Aq6*/&'1BVWDUV	
0 7000r)   r(  c                   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)TestMergeOnIndexesi  zhow, sort, expectedr   Fr   rH   r  d   r   r   r+   r   TrU   r   rH   r   r   r+   r   )r   rH   r   r$  ru   ,  r  r  r1   r+   r   r  r  r  r  r   r   r  rq   c           	          [        S/ SQ0/ SQS9n[        S/ SQ0/ SQS9n[        XESSXS	9n[        R                  " Xc5        g )
Nr,   r  r  r   r-   r  r  T)r\   r]   r   r   r_   )rD   r   r   re   rq  rr  rd   s          r'   test_merge_on_indexes(TestMergeOnIndexes.test_merge_on_indexes  sJ    ` S+.i@c?39E$Dc
 	f/r)   rp  N)rt  ru  rv  rw  r   r  r  r   r   r   r  ry  rp  r)   r'   r  r    s   [[eYb"XS#J'GPQSTvVWdIRHC:&FqRSfUV3RVV2DEYW 26632DEYW 662r*A r266*A b"bff-RVVS#s4KL& b"bff-RVVS#s4KL&G+	
.^0_.^0r)   r  rY   rN  	index_colr   r  )r  r   r1   )startstopr   )r1  z
2018-01-02z
2018-01-03r   c                 L    [        U 5      R                   SU R                   S3$ )N[r  )typert  rZ   rW  s    r'   rX  rX  	  s     T!W%%&ay2r)   )idsc                     [        S/ SQ0U S9n[        S/ SQ0U S9nUR                  US/S9n[        / SQ/ SQS.U S9n[        R                  " X45        g )	N	left_datar  r   
right_datar  r  ri   )r  r  r_   )rY   rU   ru   rd   re   s        r'   test_merge_index_typesr  	  s^      k9-U;D|_5UCEZZ;-Z0F?uH &+r)   z-on,left_on,right_on,left_index,right_index,nmr   r   Fr  )NNNTTr  T)NNNTTNc                    [        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   r,   r-   r   r+   r   r   r  r   r   r  r2   r1   r  )rj   r   r   r\   r]   z$Cannot merge a Series without a namer   )
r   r   from_productr   r   r`   ra   r   r   r   )rj   r   r   r\   r]   nmr,   r-   re   rd   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   r,   r-   r   r+   r   r   r  r   r   )r  r  r  z-Not allowed to merge between different levelsr   ri   )r   r   r  r   r   r   r   r   r   s     r'   test_merge_series_multilevelr  V	  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  r,   )Nr  r]  )r  Nz0.0_xr-   b_yr/  )Nr  )_aN0_ar0  c                    [        U / SQ05      n[        U/ SQ05      n[        SS/SS/SS//US	9nUR                  " U4S
S
S.UD6n[        R                  " Xv5        [        XE4S
S
S.UD6n[        R                  " Xv5        g )Nr  r  r+   r2   r   r3   r1   r   r   Tr[   r_   )r.   r  kwargsexpected_colsr,   r-   re   rd   s           r'   test_merge_suffixr  h	  s    ( 	4#$A4#$A1a&1a&1a&1=IHWWQD4TDVDF&+1EDdEfEF&+r)   zhow,expectedru   r  <   F   X       )r  rB  B2)r+   r  r  r  rp  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[        U5      n/ S	QUl        [        R                  " XA5        g )
N)r  r  r+   )r  r  rp  r  r  r  r  )r  r  )rj   r   r  )r  r  r  )r   r   r   r`   ra   )r   re   rq  rr  rd   s        r'   test_merge_duplicate_suffixr  	  sR    $ m,?@G_EFH7#MF"H*H&+r)   zcol1, col2, suffixes))r,   r,   )NN)r,   r,   )r  N)r   r   )Nr  c           	          [        U / SQ05      n[        U/ SQ05      nSn[        R                  " [        US9   [	        X4SSUS9  S S S 5        g ! , (       d  f       g = f)Nr  r1   r2   r3   z'columns overlap but no suffix specifiedr   Tr\   r]   r  r  )r.   r  r  r,   r-   r   s         r'   test_merge_suffix_errorr  	  sQ     	4#$A4#$A 4C	z	-atI 
.	-	-s   A
ArU   rU   ru   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)	Nr,   r  r-   r  zPassing 'suffixes' as ar   Tr  )r   r   r   	TypeErrorr   )r  r,   r-   s      r'   test_merge_suffix_raisesr  	  sJ    3	"#A3	"#A	y(A	BatI 
C	B	B   A
Az2, got 3r  zcol1, col2, suffixes, msgr  z%too many values to unpack \(expected z\)z1not enough values to unpack \(expected 2, got 1\)c           	          [        U / SQ05      n[        U/ SQ05      n[        R                  " [        US9   [	        XESSUS9  S S S 5        g ! , (       d  f       g = f)Nr  r  r   Tr  r  )r.   r  r  r   r,   r-   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 )Nr  FrK  )r!  r"  r!  r  r   rU   r   r   ru   Tr[   rU   ru   r   )	r	   r   r   rr   ry   r  r   r`   ra   )	r  r  
cat_dtypesr6   data_foo
data_rightr7   rd   re   s	            r'   test_merge_equal_cat_dtypesr  	  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 )Nr  FrK  r,   r-   r+   r   r  r   )r1   r   r+   r  Tr[   r1   r  )r	   r   r   rr   ry   r   r`   ra   )r  r6   r7   rd   re   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 )
Nr,   r   r+   r   intervalr^   r  r   r  )	r   r   r   Intervalr  rr   r   r`   ra   )ru   rU   rd   re   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  rj   r  )r  r  Fra  )r   r  r   r   r  r`   ra   )lettersnumbersrY   frame_xframe_yl_sufr_sufrd   ru  r  tuplesrb  re   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 )Nr  )r  r  r  )r   r   r  )200020012002)r   r  rU   r   r  )r  r  r  r  )r   r   r  r   r`   ra   r6   r7   rd   re   s       r'    test_merge_datetime_upcast_dtyper  9
  so    
/@
AC
BNN3K$LMC 3C0F   78	
H &+r)   n_categoriesr3      c                    [        S/[        [        U 5      5      Q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+   rI   r  r   r  rU   Tr   r   g      @r   r   )	r   r   r   r   r   r   r   r`   ra   )r   r\   r6   r7   rd   r   re   s          r'   %test_categorical_non_unique_monotonicr  J
  s    
 "1"AtE,,?'@"ABJ
E,*+gYj
QC

	stE,4G/HIC 3DdKF5:<!;K5L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)r,   r-   r,   rN   r,   r-   r  )r   r+   r   r+   r   r   )Cat1Int1)r,   r-   rN   r,   r-   rN   )r   r   r   r+   r+   r+   )r  g333333?ry  r{  rh  g?)CatIntFactorr  r  r	  r  r  rU   r   r+   )axisri   r2  Tr^  )	r
   r   ry   r   rc  r  r   r`   ra   )r,   r-   re   rd   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   r1   r2   r   r3   r   r,  zCan only pass argument "r   " OR "z" not both\.r   r   r   r   r   getattrr   r  r  r  rU   ru   r   s         r'   /test_merge_join_cols_error_reporting_duplicatesr  
  s|     Aq6A/0DQF!Q01E%gaj\
|<
PC	z	-D$00 
.	-	-   A..
A<c                     [        SS/SS/S.5      n[        SS/SS/S.5      nS	US
    SUS    S3n[        R                  " [        US9   [	        [
        U 5      " X440 UD6  S S S 5        g ! , (       d  f       g = f)Nr+   r   r1   r2   r   r3   r   r,  zMust pass "r   r  z"\.r   r  r  s         r'   ,test_merge_join_cols_error_reporting_missingr  
  s|     Aq6A/0DQF!Q01EF71:,c
:C	z	-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   r1   r2   r   r3   r   r,  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r   rj   r,   r  )r  r  rU   ru   r   s        r'   1test_merge_join_cols_error_reporting_on_and_indexr  
  sq     Aq6A/0DQF!Q01E	:  
z	-D$8#88 
.	-	-s    A##
A1c                      [        SS/SS/S.5      n [        SS/SS/S.5      n[        XSSSS9n[        SS/SS/SS/SS/SS/S.5      n[        R                  " X#5        g )	Nr+   r   )r   r  ru   Tr   )r   r\   r   )r   x_xz_xx_yz_yr_   rU   ru   rd   re   s       r'   test_merge_right_left_indexr   
  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   r,   r-   r^   Tr
  r	  )r   ry   r   rX   r   r`   ra   r6   r7   re   rd   s       r'   $test_merge_result_empty_index_and_onr#  
  s    
1#QC(
)
3
3S#J
?C
S1#J

)
)3%
0Cr+288<FFSzRH3cU=F&+3u=F&+r)   c                  <   [        / SQSSS.5      n [        / SQSS.5      n[        R                  " [        SS9   [	        XSS	9  S S S 5        [        R                  " [        SS9   [	        XSS
S9  S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)Nr  r+   r   )r,   r-   b_xr   (Passing 'suffixes' which cause duplicater   r,   ri   )r  r  r  rE  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 )Nr^  r_  )r,   r-   r-   r   r+   r1   r   r   r,   ri   )r+   r+   r+   r   )r,   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   )r,   r-   r-   r%  r   r+   r1   r   r   r&  r   r,   ri   rE  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   r1   r2   r,        \@r   r  rH   r  rE  r   r   r   Tr   )r  rH   r+   r   )r  rE  r1   r2   )r   r   r,   r/  r   r   r   r`   ra   r  s       r'   %test_merge_string_float_column_resultr1  
  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   rY   i  zCan only pass argumentr   T)rj   r\   rE  )df_1df_2s     r'   /test_mergeerror_on_left_index_mismatched_dtypesr6    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 )Nr1   r  r  r   r  r   )r   r   r   r   _datar`   ra   )ciru   rU   resre   s        r'   #test_merge_on_left_categoricalindexr;    sf    	%(	#BBU1X./Ec5A;'(D
R#
6CT"((SAH#(r)   rZ   r0  c                 l   U c  [         R                  O[        R                  n[	        SS/SS/S.U S9n[	        X/SS/S.U S9n[        X#SS	S
9n[	        SSX/SSX/XSS/S.U S9n[        R                  " XE5        [        X2SS	S
9n[	        SSX/XSS/SSX/S.U S9n[        R                  " XE5        g )Nr+   r   )rS   r.   r^   r1   r2   )rS   r  rS   r   r   )rS   r.   r  )rS   r  r.   )r   r   r   r  r   r   r`   ra   )rZ   itemrU   ru   rd   re   s         r'   test_merge_outer_with_NaNr>  )  s     ]266DaVaV4EBDtlQF;5IE45g6Fq$%4&A&	

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

 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 )	Nr,   r+   rN   r   r   rO   r   )r/  r0  r0  r  s       r'    test_merge_different_index_namesr@  G  se    cA3ZuaSs';<DsQCjqc(<=E4c:F!Q/0H&+r)   c                     [        / SQSS.U S9n[        / SQSS.U S9nUR                  X1S9n[        / SQSSS.U S9n[        R                  " XE5        g )	Nr  r+   r   r^   r   r,  r   r  r_   r  r  rU   ru   rd   re   s         r'   test_merge_earC  P  sX    91-5IJDIA.6JKEZZZ-Fyqq9AUVH&+r)   c           	         [        / SQSS.U S9n[        / SQSS.U R                  5       S9nUR                  X1S9n[        [        / SQU S9[        / SQU S9[        / S	QU R                  5       S9S
.5      n[        R
                  " XE5        g )Nr  r+   r   r^   r   r,  r   r^  r_  r  )r   lowerr   r   r`   ra   rB  s         r'   test_merge_ea_and_non_earF  Y  s    91-5IJDIA.6J6P6P6RSEZZZ-F	)=>	)=>	)=)C)C)EF	
H &+r)   rX   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pyarrowr,   r+   r   r^   rG  )r   importorskipr   r   r  r`   ra   )rZ   rE   r7   rd   re   s        r'   !test_merge_arrow_and_numpy_dtypesrK  h  s     	"	C!Q=	.B
S1a&M)9
:CXXc]FwwyH&+YYr]FxxzH&+r)   r4  zAmerica/Chicagoc           	         [         R                  " SSSU S9[         R                  " SSSU S9[         R                  " SSSU S9/n[        US S SS	/S
.5      nUS   R                  R	                  S5      US'   [        USS  SS	/S.5      nUS   R                  R	                  S5      US'   [        USS	[
        R                  /[
        R                  SS	/S.5      nUS   R                  R	                  S5      US'   US:X  a  UR                  S/   R                  SS9nO<US:X  a  UR                  SS/   nO$US:X  a  UR                  SS/   R                  SS9nUR                  USUS9n[        R                  " Xe5        g )Ni  r3   rE  r3        r   r  r  )r  r,   r  r  r+   )r  r-   r  )r  r,   r-   r   Tr  rU   r   ru   r   )r   r  r   r   as_unitr   r   r  rc  r   r`   ra   )r4  r  valsr6   r7   re   rd   s          r'   (test_merge_datetime_different_resolutionrQ  w  s}    	T1bR(
T1bR(
T1bR(D
 $r(#s4
5C3x{{""4(CH
$qr(#s4
5C3x{{""3'CHt3RVV*<BFFCQTCUVWHSM$$,,T2HSMG==!%11t1<	f	==!Q(	g	==!Q(44$4?YYss	Y2F&+r)   c                      [        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  r-   r  )r  )r  r  )r  rY   )rS  r-   TrU   r   )r   r   r  r   r   r   r`   ra   )rE   r7   re   rd   s       r'   "test_merge_multiindex_single_levelrT    s    	EC:&	'B
C5\$$ff%5eWEC #s3-@AHXXcE7&XIF&+r)   c                     [        SS/SS/S.[        R                  " SS/SS//SS/S9S	9n [        SS/[        SS/SS
9[        R                  " S/S//5      S9n[
        R                  " [        R                  R                  5         U R                  5       R                  UR                  5       SS9nS S S 5        [        / SQ/ SQ/ SQ/ SQ/ SQS.5      n[        R                  " UR                  5      Ul        [
        R                  " WU5        U R                  5       R                  UR                  5       S/S9n[
        R                  " XC5        g ! , (       d  f       N= f)Nr+   r   )column_1r  column_2r  
metadata_1
metadata_2rY   metadatar  r   r   new_datar  )r  rY   r   ri   r+  )rZ  rZ  r[  r[  r,  )rY   r  )r\  r  rV  rX  )r]  r  r^  )r   r   r  r   r  r`   r  r   r   PerformanceWarningrc  r   r  r   ra   )rE   r7   rd   re   result2s        r'   'test_merge_multiindex_reset_index_mixedra    sE   	q6aV<$$VlL127J:O

B VQF)''*t(<=C 
	#	#BII$@$@	A!''(9g'F 
B 'V***	
H "--h.>.>?H&(+nn$$S__%6M?$KG',# 
B	As   
-E
E(on_indexleft_uniqueleft_monotonicright_uniqueright_monotonicc                    U n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
[        X4XqS	.U
D6nU(       a   UR	                  5       nU	R	                  5       n	US
;   a  US;   a  XUpnOXUpnUS:X  aM  [        US   R                  5      R                  U	S   R                  5      nUS   R                  U5      nUU   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   r1   r2   r+   rS   Tr[   rj   r  )rU   ru   r   )rU   r   r   )
fill_valuer   r  )appendr   ry   r   rc  setrQ  intersectionisinr  r   rw  rr   r   intpr  r  mulrY   r`   ra   )r  r   rb  rc  rd  re  rf  r   rU   ru   	on_kwargsrd   re   otherother_uniquekeep_values	keep_maskother_value_countsrepeatsleft_countsright_countsexpected_countss                         r'   test_merge_combinationsry    s    C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^   rh  r   r0  r   zYou are mergingr   r\  r+   )
r   r   r  
Int64Dtyper`   r  r  r   ra   rr   r"  s       r'   !test_merge_ea_int_and_float_numpyr|    s   
S"%%L
8C
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 )NrI  r,   r-   r^   r+   rN   r   TrU   r   r   )
r   rJ  r   r   r   r   r   r   r`   ra   )r  rU   ru   rd   re   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5      / 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`   ra   )r  r  r6   r7   rd   re   s         r'   $test_merge_empty_frames_column_orderr  2  s     AaS3*
5C
AaS/
:Chhrlhhrl373F%(4HIHk==!$		!vv#s&+r)   r   )rU   ru   r   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)NrS   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   rZ   r   r   r   r  r  r   )r   rU   ru   r   s       r'   !test_merge_datetime_and_timedeltar  I  s   eVQI5EFGHDufaS0ABCDE &d5k&7&7%8eEl>P>P=Q RQ 	Q  
z3	8

5U
, 
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"c                     [        / SQ[        R                  [        R                  [        R                  // SQS.5      n [        / SQ[        R                  [        R                  [        R                  // SQS.5      nU R                  USS/SS9n[        / SQ[        R                  [        R                  [        R                  // SQ/ SQS	.5      n[        R
                  " X#5        g )
Nr  r  r  )r   r   zzr   r   r   r   )r   r   r  r  rg  r  s       r'   test_merge_on_all_nan_columnr  ]  s    9BFFBFFBFF+C)TUDIRVVRVVRVV,DIVWEZZ3*'Z:Frvvrvvrvv6YiXH &+r)   )r  r  c                     [        S/S/S.5      n[        S/S/S/S.5      n[        R                  " [        SS9   [	        XSU S	9  S S S 5        g ! , (       d  f       g = f)
Nr+   r   r  r1   )r.   r  col2_dupzduplicate columnsr   r.   r  rE  )r  r6   r7   s      r'    test_merge_for_suffix_collisionsr  i  sU     aS1#.
/C
aS1#A3?
@C	z)<	=c6H5 
>	=	=s   A
Ac                     [        [        R                  " / SQSS9S9n [        [        R                  " / SQSS9S9n[        S[	        SS/U S905      n[        S[	        SS	/US905      nUR                  USS
S9nUR                  S5      R                  UR                  S5      SS
S9n[        R                  " XE5        g )Nr  rX   r^   r  r\  rS   r+   r   r1   r   r   )	r	   r   r   r   r   r   rr   r`   ra   )ltrtrU   ru   rd   re   s         r'   $test_merge_categorical_key_recursionr  r  s    	RZZ	%I	JB	RZZ	%K	LBeVQF"567DufaV2678EZZ%WZ5F{{7#))YEw * H &+r)   c                     [         R                  " S5        [        R                  " SSSS9n [	        U / SQS.5      nUR                  SS9n[	        U R                  S	5      / S
QS.5      nUR                  SS9n[        XSSS9n[	        U R                  S	5      / SQ/ S
QS.5      nUR                  SS9n[        R                  " X45        g )NrI  z
2025-07-06r1   r   r  r  )timeval1)dtype_backendr   )rH   r      rl  r=   r  )r  val2r  rU   r   )r+   r+   r   r   r1   r1   )r  r  r  )
r   rJ  r   r  r   convert_dtypesr  r   r`   ra   )r  r6   r7   rd   re   s        r'   &test_merge_pyarrow_datetime_duplicatesr    s    
	"
lAC8A
Q	2
3C


9

5C
QXXa[2JK
LC


9

5C3F3FHHQK&,	
H &&Y&?H&+r)   c                      [        S/ SQ05      n [        S/ SQ05      n[        R                  " [        R                  R
                  5         U R                  USSSS9  S S S 5        g ! , (       d  f       g = f)NrS  r  )r   r1   r2   T)r   r   r]   )r   r   r   r   r   r   r   r5   s     r'   #test_merge_right_on_and_right_indexr    sV    
UI&
'C
UI&
'C	ryy++	,		#uu$	G 
-	,	,s   A))
A7)r   r=   )_r   r   r   r  numpyr   r   pandas.compatr   pandas.core.dtypes.commonr   r   pandas.core.dtypes.dtypesr	   pandasr   r
   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr`   pandas.core.reshape.concatr   pandas.core.reshape.merger   r   r(   r  r8   r:   r   r  rU   ru   r(  r  r  r  r  r  r  r  r  r   r  r  r  TWO_GOT_THREEtupler  r  r  r  r  r  r  r  r  r  r  r   r#  r'  r)  r-  r1  r6  r;  r>  r@  rC  rF  rK  rQ  rT  ra  ry  r|  r~  r  r  r  r  r  r  r  )r  s   0r'   <module>r     sj   
 
    7      - 	 	d+ d+N-	GKG KG\    r0 r0j	60 60r  ,,,D 	it+6,
 	_;W5@{S	 	3  ,, 3
7	T4s;+	!4c:	tgw'uc:
7	T4t<,	!4d;	tgw'ud;	%%P+$ '	
A
L)C>:	
A
N+a\:	
A
L)E5>:	
A
T4L)E5>:	a*l+c1X6	cJ-~>	cJ-U|<	cJ-s|<	cJ-Sz:	cJ-U|<	
A
L)E1:6	c2u~&	
ArE5>"$,%$,  !"b"&&)9Q	

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