
    Mh                        S SK r S SKrS SKrS SKJs  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  S SKJr  S,S jr " S S5      rS-S jrS rS	 rS
 rS.S jrS r\R>                  RA                  SSSS/4SSS/4/5      S 5       r!S r"\R>                  RA                  SSS// SQ4SS// SQ4SS// SQ4\" S5      \" S5      /\" S5      \" S5      \" S5      /4/5      S  5       r#\R>                  RA                  S!/ S"Q5      S# 5       r$S$ r%\R>                  RA                  S%S&/ S'Q4S(/ S'Q4S/ S'Q4S)/ S*Q4/5      S+ 5       r&g)/    N)
Categorical	DataFrameIndex
MultiIndexSeries	Timestampbdate_rangeconcatmergeoption_contextc           	      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       V/var/www/html/env/lib/python3.13/site-packages/pandas/tests/reshape/merge/test_join.pyget_test_datar      s~    w(M
**RWW]L9
:C
3x!|jjc]>QS\%BBCII!$$S)J    c            
          \ 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\R                  R!                  SS\R"                  " S\R&                  " S5      S9/5      S 5       rS rS rS r\R                  R!                  SSSS\R2                  " SS/5      /5      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)\R                  R!                  SS\R"                  " S\R&                  " S5      S9/5      S* 5       r*S+ r+S, r,S- r-S. r.S/ r/S0 r0S1 r1S2 r2S3 r3S4 r4S5r5g)6TestJoin#   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   standard_normal)selfdfs     r   r,   TestJoin.df%   sl    %%..q1AA"E..q1AA"E	
 6
Q	r   c                     [        [        SS9[        SSS9[        R                  R	                  S5      R                  S5      S.5      $ )N
   )r      )r   r   r   )r$   r%   valuer)   )r+   s    r   df2TestJoin.df24   sC    %+%a26..q1AA"E
 	
r   c                     / SQ/ SQ/ SQ[        SSS9S.n[        U[        / SQ[        S	9S
9n[        US   US   S.US   S
9nX#4$ )N)              ?g       @g      @g      @)r5   r6   r5   r6   r5   )foo1foo2foo3foo4foo5z1/1/2009   )periodsABCD)abcdedtypeindexr?   rB   )MergedAMergedDrA   )r	   r   r   object)r+   datatargetsources       r   target_sourceTestJoin.target_source>   s`     +*9Z3	
 4u-Ff'UV S	d3i8S	
 ~r   c                 d    [        XSS9n[        XUS/SS9  [        X5      n[        XUSS/SS9  g )Nr%   onlefthowr$   r   _check_joinr+   r,   r2   joined_key2joined_boths        r   test_left_outer_joinTestJoin.test_left_outer_joinO   s:    B/B[6(?BnB[66*:Gr   c                 d    [        XSSS9n[        XUS/SS9  [        XSS9n[        XUSS/SS9  g )Nr%   rightrV   rY   rX   r$   rZ   r\   s        r   test_right_outer_joinTestJoin.test_right_outer_joinV   ?    BG<B[6(@B1B[66*:Hr   c                 d    [        XSSS9n[        XUS/SS9  [        XSS9n[        XUSS/SS9  g )Nr%   outerrc   rX   r$   rZ   r\   s        r   test_full_outer_joinTestJoin.test_full_outer_join]   rf   r   c                 d    [        XSSS9n[        XUS/SS9  [        XSS9n[        XUSS/SS9  g )Nr%   innerrc   rX   r$   rZ   r\   s        r   test_inner_joinTestJoin.test_inner_joind   rf   r   c                 :    [        XSSS9nSU;   d   eSU;   d   eg )Nr%   z.fooz.bar)rV   suffixeskey1.foozkey1.barr   r+   r,   r2   joineds       r   test_handle_overlapTestJoin.test_handle_overlapk   s-    r64DEV###V###r   c                 >    [        UUSSSS9nSU;   d   eSU;   d   eg )Nr%   r$   rp   )left_onright_onrq   rr   zkey2.barrs   rt   s       r   !test_handle_overlap_arbitrary_key*TestJoin.test_handle_overlap_arbitrary_keyq   s9    %
 V###V###r   infer_stringFTpyarrow)marksc                    Uu  p4UR                  USS9n[        R                  " US   US   SS9  [        R                  " US   US   SS9  [        S	/ S
Q05      n[        S/ SQ0/ SQS9nUR                  US	S9n[        / S
Q/ SQS.5      n	[        R                  " X5        [        S/S/S/// SQS/S9n
[        S/S//SS/S/S9n[        S/S//SS/S/S9nU
R                  USS9nUR                  USS9n[
        R                  " US   S   5      (       d   e[
        R                  " US   S   5      (       d   e[        R                  " [        SS9   UR                  USS9  S S S 5        UR                  5       nSn[        R                  " [        US9   UR                  USS9  S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = f)NrA   rU   rL   r?   F)check_namesrM   rB   keyrC   rC   rD   rD   rE   r1   r   r(   r   rC   rD   rE   rJ   )r   r   r(   r(   r   r   r1   r(   r      onerK   columnsfoobartwothreerE   z^'E'$matchEzyYou are trying to merge on float64 and object|string columns for key 'A'. If you wish to proceed you should use pd.concat)jointmassert_series_equalr   assert_frame_equalr   isnanpytestraisesKeyErrorcopy
ValueError)r+   rR   r}   rP   rQ   mergedr,   r2   ru   expecteddf_adf_bdf_csource_copymsgs                  r   test_join_onTestJoin.test_join_on|   s    'V,
vi0&+5Q
vi0&+5Q 89:),OD'-H
 	f/ 1#sQC%Q5'E7+Aq6E7K1#sAq6G9E4E*Te,xxuc*++++xxw,---- ]]873KK3K' 4 kkmC 	 ]]:S1KKK, 21 43 21s   F9G
9
G

Gc                 `   [        [        R                  R                  S5      R	                  SS/SS9[        R                  R                  S5      R                  S5      S.5      n[        [        R                  R                  S5      R	                  SS/SS9[        R                  R                  S5      R                  S5      S.[        R                  " [        S5      S	S
//5      S9nSn[        R                  " [        US9   [        XSSS9  S S S 5        g ! , (       d  f       g = f)Nr   mfr   sizerC   rD   r/   r<   r?   r@   rJ   Flen\(left_on\) must equal the number of levels in the index of "right"r   rC   Try   right_indexr   r   r   r   choicer*   r   from_productr   r   r   r   r   r+   r,   r2   r   s       r   -test_join_on_fails_with_different_right_index6TestJoin.test_join_on_fails_with_different_right_index   s    YY**1-44c3Za4HYY**1-==a@
 YY**1-44c3Zb4IYY**1-==bA ))58c3Z*@A
 X]]:S1"3D9 211s   
D
D-c           	      n   [        [        R                  R                  S5      R	                  SS/SS9[        R                  R                  S5      R                  S5      S.[        R                  " [        S5      [        S5      /5      S9n[        [        R                  R                  S5      R	                  SS/S	S9[        R                  R                  S5      R                  S	5      S.5      nS
n[        R                  " [        US9   [        XSSS9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   r   r   abcrJ   r/   zFlen\(right_on\) must equal the number of levels in the index of "left"r   rD   T)rz   
left_index)r   r   r   r   r   r*   r   from_arraysr   r   r   r   r   r   r   s       r   ,test_join_on_fails_with_different_left_index5TestJoin.test_join_on_fails_with_different_left_index   s    YY**1-44c3Za4HYY**1-==a@ ((%(DK)@A
 YY**1-44c3Zb4IYY**1-==bA
 X]]:S1"CD9 211s   D&&
D4c                 d   [        [        R                  R                  S5      R	                  SS/SS9[        R                  R                  S5      R                  S5      S.5      n[        [        R                  R                  S5      R	                  SS/SS9[        R                  R                  S5      R                  S5      S.[        R                  " [        S5      S	S
//5      S9nSn[        R                  " [        US9   [        XSSS/S9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   r   r   r/   r<   r?   r@   rJ   z)len\(right_on\) must equal len\(left_on\)r   rC   rD   )rz   ry   r   r   s       r   /test_join_on_fails_with_different_column_counts8TestJoin.test_join_on_fails_with_different_column_counts   s    YY**1-44c3Za4HYY**1-==a@
 YY**1-44c3Zb4IYY**1-==bA ))58c3Z*@A
 ;]]:S1"C#s< 211s   
D!!
D/
wrong_typer   strNr   r(   c                 8   [        SSS/05      nS[        U5       S3n[        R                  " [        US9   [        XSSS9  S S S 5        [        R                  " [        US9   [        X!SSS9  S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)NrC   r(   z.Can only merge Series or DataFrame objects, a z was passedr   )ry   rz   )r   typer   r   	TypeErrorr   )r+   r   r,   r   s       r   )test_join_on_fails_with_wrong_object_type2TestJoin.test_join_on_fails_with_wrong_object_type   s     aV}%j!"+/ 	 ]]9C0*#< 1]]9C0"#< 10 1000s   A:%B:
B
Bc                     Uu  p#UR                  USS9nUR                  SS0S9nU/ SQ   nUR                  S5      nUR                  X5S9n[        R                  " Xd5        g )NrA   rU   key_0r   )r   r?   r@   rB   rL   rM   )r   renamepopr   r   )r+   rR   rP   rQ   r   join_colresults          r   test_join_on_pass_vector!TestJoin.test_join_on_pass_vector   se    &;;v#;.??C>?:JK::c?V1
f/r   c                 p   Uu  p#UR                  UR                  / 5      SS9nU H1  nXT;   d   eXE   R                  5       R                  5       (       a  M1   e   UR                  UR                  / 5      SSS9n[        R
                  " UR                  UR                  5        [        U5      S:X  d   eg )NrA   rU   rl   rc   r   )r   reindexisnaallr   assert_index_equalr   r   )r+   rR   rP   rQ   r   colmerged2s          r   test_join_with_len0TestJoin.test_join_with_len0   s    &V^^B/C8C= =;##%))++++  ++fnnR0Sg+F
goov~~>7|q   r   c                 v   [        S/ SQ05      n[        SSS/0SS/S9nUR                  USS	S
9nUR                  USS9nXDS   R                  5          n[        R                  " US   US   5        [        R                  " US   US   SS9  [        R
                  " UR                  UR                  5        g )Nr   )rC   rC   rF   rD   rD   rE   r1   r   r(   rC   rD   rJ   rl   rc   rU   F)check_dtype)r   r   notnar   r   r   rK   r+   r,   r2   ru   r   s        r   test_join_on_innerTestJoin.test_join_on_inner  s    =>?1a&)#s<G477357)W-3356
ve}huo>
vg0AuU
fllHNN;r   c                     [        S/ SQ05      n[        S/ SQ0/ SQS9nUR                  US/S9nUR                  USS9n[        R                  " X45        g )Nr   r   r1   r   r   rJ   rU   r   r   r   r   r   s        r   test_join_on_singlekey_list$TestJoin.test_join_on_singlekey_list  sY    89:),OD %)77357)
f/r   c                     Uu  p#UR                  US   SS9nUR                  US/   SS9n[        R                  " XE5        g )NrL   rA   rU   )r   r   r   )r+   rR   rP   rQ   r   r   s         r   test_join_on_seriesTestJoin.test_join_on_series  sG    &VI.37;;vyk2s;;
f/r   c                     [        SSS/05      n[        S/S/SS9nUR                  USS9n[        SS/SS/S.UR                  S9n[        R
                  " X45        g )	NrC   r(   r   rD   rK   namerU   r   rJ   )r   r   r   rK   r   r   )r+   r,   dsr   r   s        r   test_join_on_series_buglet#TestJoin.test_join_on_series_buglet  sc    aV}%QCs-$Aq6A7rxxH
f/r   c                 ^   [        [        R                  " S5      S9nSUS'   SUS'   [        [        R                  " SS5      S9nS	US
'   SUS'   UR                  X1S9n[	        X#US9n[
        R                  " XE5        UR                  X!S9n[	        X2US9n[
        R                  " XE5        g )Nr/   rJ   Tboolr   stringr<      r(   intr6   floatrX   )r   r   aranger   _join_by_handr   r   )r+   	join_typedf1r2   ru   r   s         r   test_join_index_mixedTestJoin.test_join_index_mixed&  s    biim,FHbii2./E
G#- y9
f/#- y9
f/r   c                    [        SSSSS.[        R                  " S5      / SQS9nUS   R                  [        R                  :X  d   eUS	   R                  [        R
                  :X  d   e[        SSSSS.[        R                  " S
SS5      / SQS9nUR                  USSS9n/ SQnUS S Ul        USS  Ul        [        X5      n[        R                  " X55        g )Nr6   r   r   Tr>   r/   r   r@   rB   r   _one_twolsuffixrsuffix)A_oneB_oneC_oneD_oneA_twoB_twoC_twoD_twor0   )r   r   r   rI   int64bool_r   r   r   r   r   )r+   r   r2   ru   expected_columnsr   s         r   test_join_index_mixed_overlap&TestJoin.test_join_index_mixed_overlap8  s    AE5))B-(

 3x~~)))3x~~)))AE5))Ar1%(
 #vv>	
 'r*&qr* *
f/r   c                 P    [        5       nUR                  [        S/S/S/S9SS9  g )Nr   r   r?   r   rh   rX   )r   r   )r+   xs     r   test_join_empty_bugTestJoin.test_join_empty_bugX  s(    K	y!QC#7WEr   c                    [        [        R                  R                  S5      R	                  S5      SS/S9n[        [        R                  R                  S5      R	                  S5      5      nX!S'   [        [        R                  R                  S5      R	                  S5      S	/S9nUR                  U5        UR                  U5        g )
Nr   )   r   rC   rD   r   r  rE   )r  r(   q)r   r   r   r   r*   r   r   )r+   rC   rE   rF   s       r   test_join_unconsolidated!TestJoin.test_join_unconsolidated]  s    II!!!$44W=Sz
 299((+;;B?@#bii++A.>>wGRUQVW 	
q		q	r   c                    [         R                  " / SQ/ SQ/SS/S9n[         R                  " / SQ/ SQ/SS/S9n[        [        R                  R                  S5      R                  S5      US	/S
9n[        [        R                  R                  S5      R                  S5      US/S
9nUR                  SS9nUR                  SS9nUR                  USS9n[        UR                  5      R                  [        UR                  5      5      nUR                  U5      R                  UR                  U5      5      nUR                  UR                  l        [        R                   " XW5        UR                  R                  UR                  :X  d   eUR                  SS9nUR                  SS9nUR                  USS9R                  SS9n[        UR                  5      R                  [        UR                  5      5      nUR                  U5      R                  UR                  U5      5      nUR                  UR                  l        [        R                   " XW5        UR                  R                  UR                  :X  d   eg )N)rC   rC   rC   rD   rD   rD   )r(   r   r   r(   r   r   firstsecondnames)rD   rD   rD   rE   rE   rE   r      zvar X)rO   rK   r   zvar Yr   )levelrh   rX   r(   )r   r   r   r   r   r   r*   
sort_indexr   r   valuesunionr   r  rK   r   r   )r+   index1index2r   r2   ru   ex_indexr   s           r   test_join_multiindexTestJoin.test_join_multiindexj  s   ''+-?@H%

 ''+-?@H%

 &&q)99!<I

 &&q)99!<I
 nn1n%nn1n%#7+'--eFMM.BC;;x(--ckk(.CD%||
f/||!!V\\111nn1n%nn1n%#7+66Q6?'--eFMM.BC;;x(--ckk(.CD%||
f/||!!V\\111r   c           	         / SQn/ SQn[         R                  R                  S5      R                  [	        U5      5      n[        X#US.5      nUn[        [         R                  R                  S5      R                  S5      U/ SQS9nUR                  USS	/S
S9n[        UUR                  5       SS	/SS/S
SS9n[        UUSS	/SS
SS9n	[        R                  " XyR                  U5      5        [        UUSS	/SS
SS9n	UR                  SS/SS9nUR                  Ul        UR                  R                  (       d   e[        R                  " Xx5        g )N)
r   r   r   r   r   bazr!  quxr"  snap)
r   r   r   r   r   r   r   r   r   r   r   )r$   r%   rO   )r/   r   )j_onej_twoj_threer   r$   r%   rl   rc   r  r  F)ry   rz   rY   sortT)rz   r   rY   r'  r(   axis)r   r   r   r*   r   r   r   r   reset_indexr   r   reindex_likedroprK   is_monotonic_increasing)
r+   %lexsorted_two_level_string_multiindexr$   r%   rO   rK   to_joinru   r   	expected2s
             r   test_join_inner_multiindex#TestJoin.test_join_inner_multiindex  sb   V
 yy$$Q'77D	B$dCD5II!!!$44W=1
 7'7WE!V$x(
 f%
	 	f&<&<V&DEf%
	 =='8!41==||3333
f/r   c                 J   [        SS// SQS9nUR                  S/5      R                  SSS/05      n[        SS	// S
QS9nUR                  SSS9  [        R
                  " [        R                  R                  SS9   [        X#SSS9  S S S 5        g ! , (       d  f       g = f)N)r(   r   r   )r0   r<   r  r   r   rC   rD   meansum)   r/   r  rC   rD   rF   T)inplacez-Not allowed to merge between different levelsr   r   r   )
r   groupbyagg	set_indexr   r   pderrors
MergeErrorr   )r+   r,   new_dfother_dfs       r   #test_join_hierarchical_mixed_raises,TestJoin.test_join_hierarchical_mixed_raises  s     	9-GSE"&&fe_'=>i4oN3-]]II  (W
 &tF
 
 
s   ?B
B"c                    [        [        R                  R                  S5      R	                  S5      SS/[        R
                  S9n[        [        R                  R                  S5      R	                  S5      S/[        R                  S9nUR                  U5      nUR                  S   S:X  d   eUR                  S   S:X  d   eUR                  S   S	:X  d   e[        R                  R                  S5      R                  S
SS5      R                  S5      n[        R                  R                  S5      R                  S5      R                  S5      n[        R                  R                  S5      R                  S5      R                  S	5      n[        XUS.5      n[        XUS.5      n[        [        R                  R                  S5      R                  S5      R                  S	5      S/S9nUR                  USSS9nUR                  S   S:X  d   eUR                  S   S:X  d   eUR                  S   S	:X  d   eUR                  S   S	:X  d   eUR                  USSS9n	[        R                  " X5        g )Nr   )r/   r   rC   rD   r   rI   )r/   r(   rE   float64float32r   r<   d   r  r   mdr   Tr   )r   r   r   r   r*   rF  rG  r   dtypesintegersastyper   r   r   )
r+   rC   rD   ru   rE   r,   xpdfsrsxps
             r   test_join_float64_float32"TestJoin.test_join_float64_float32  s&   II!!!$44W=#J**

 II!!!$44W=E**

 }}S!Y...}}S!Y...}}S!Y...II!!!$--aC8??HII!!!$++C077	BII!!!$++C077	BQQ/0qq12II!!!$++A.55i@4&
 XXa$X7yy~(((yy~***yy~***yy)+++ZZ3DZ9
b%r   c                    [        SS/SS/SS/S.5      n[        SS/SS/SS/S.5      n[        SS/SS/S	S
/S.5      nUR                  SS/5      nUR                  SS/5      nUR                  SS/5      nUR                  XV/SS9n[        XSS/SS9n[        XSS/SS9n	UR	                  5       nXR
                     n	U	R                  R                  S5      U	S'   U	R                  R                  S5      U	S'   [        R                  " Xy5        [        / SQ/ SQ/ SQS.5      n[        / SQ/ SQ/ SQS.5      n[        / SQ/ SQ/ SQS.5      nUR                  SS/5      nUR                  SS/5      nUR                  SS/5      nUR                  XV/SS9n[        XSS/SS9n[        XSS/SS9n	UR	                  5       n[        R                  " XyR                  S S 2UR
                  4   5        [        / SQ/ SQ[        R                  R                  S5      R                  S5      [        R                  R                  S5      R                  S5      S.5      n
[!        [        R"                  " [        R$                  " S5      S5      [        R"                  " [        R$                  " S5      S5      SS9nU
R                  USS9nU
R                  USS9nU
R                  USS9nU
R                  USS9n[        R                  " X5        [        R                  " X5        [        R                  " X5        g ) Nr(   r/      r   r   rH     r7      )rC   rD   rG   rC   rD   rh   rX   rc   r  )r(   r(   r(   )r/   rT  r  )r(   r(   r   )rH  rU  i,  )rV  rW  i  rl   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r      r>   TESTr   rW   rb   )r   r<  r   r   r*  r   rC   rL  rD   r   r   locr   r   r   r*   r   repeatr   )r+   r   r2   df3idf1idf2idf3r   df_partially_mergedr   r,   rN  rl   rh   rW   rb   s                   r   test_join_many_non_unique_index(TestJoin.test_join_many_non_unique_index  s   q!fAq6RABq!fAq6c
CDq!fAq6tEF}}c3Z(}}c3Z(}}c3Z(D<W5#C#sI,sCjgN##%NN+ 

))'2 

))'2
f/iilKLiioNOii>PQR}}c3Z(}}c3Z(}}c3Z(D<W5#C#sI,sCjgN##%
fll1fnn3D&EF MQYY**1-==a@YY**1-==a@	
 IIbiilA&bii		!a.Hv
 w'w'wwqfw%w'
e+
e*
e+r   c           	         [        SU5         [        / SQ/ SQS.5      n[        S/ SQ0/ SQS9nUR                  US	S
S9n[        / SQ/ SQ/ SQS./ SQS9n[        R                  " XE5        UR                  US	SS9n[        R
                  " UR                  [        [        S5      5      S
S9  S S S 5        g ! , (       d  f       g = f)Nzfuture.infer_string)r   r   r!  r   r(   r   r   r0   r   value2r   )r   r!  r   rJ   r   T)rV   r'  )r   r!  r   r   )r   r   r(   r0   )rC   rD   rE   rE   )r   r1   re  )r(   r   r   r   Fr0   )exact)	r   r   r   r   r   r   rK   r   r   )r+   r}   rW   rb   ru   r   s         r   test_join_sortTestJoin.test_join_sort7  s     1<@4|LD x9AVWEYYuTY:F 7)2
 #H !!&3 YYuUY;F!!&,,eAhtL' A@@s   B#B99
Cc                    [        S/ SQ0/ SQS9n[        S/ SQ0/ SQS9nUR                  U5      n[        / SQS	[        R                  S
S[        R                  /S./ SQS9n[        R
                  " X45        [        S/ SQ0/ SQS9n[        S/ SQ0/ SQS9nUR                  U5      n[        / SQS	S
S
[        R                  /S./ SQS9n[        R
                  " X45        g )NrC   rd  )r(   r   r   rC   rJ   rD   )r<   r  r6  rX  )r(   r   r   r0   )r(   r   r   r   r0   r<   r  r6  r   )r(   r   r   r   rC   )r(   r   r   rC   )r   r   r   nanr   r   )r+   r   r2   r   r   r\  df4s          r    test_join_mixed_non_unique_index)TestJoin.test_join_mixed_non_unique_indexP  s    l+>Bl+<@#!BFFAq"&&(AB#
 	f/l+>Bl+<@#aArvv%67~
 	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	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=   freqpnumr   rl   _df2)rY   r   rH   r   r(   pnum_df2r   rK   )r=  period_ranger   r   r   r   r
   r   r   r   r   r  r[  reshaper  rK   r   r   )r+   rK   r,   r2   r   r   s         r   !test_join_non_unique_period_index*TestJoin.test_join_non_unique_period_indexc  s    bsCtE#e*-.efXNbX'6:GGBIIb188;CCBJANZ(.."((

 	f/r   c                    [        [        R                  R                  S5      R	                  S5      / SQS9nUR                  SSS5        UR                  SSS	5        UR                  S5      n[        R                  " S
5      n[        R                  " [        US9   UR                  5         S S S 5        UR                  SS9nUR                  5       nUR                  USS9  g ! , (       d  f       N>= f)Nr   )rT  r  )rC   rD   rE   rF   rG   r   r   r   idr<   dtr   z&agg function failed [how->mean,dtype->r   T)numeric_only_rightr   )r   r   r   r   r*   insertr:  reescaper   r   r   r4  countr   )r+   r,   groupedr   mncns         r    test_mixed_type_join_with_suffix)TestJoin.test_mixed_type_join_with_suffixp  s    II!!!$44W=2
 			!T1
		!T5!**T"ii@A]]9C0LLN 1\\t\,]]_ 	H% 10s   C((
C6c                    [        [        R                  R                  S5      R	                  S5      [        S5      S9nUSS/   USS/   US	S
/   /nUS   R                  USS  5      n[        R                  " X15        USS/   S S USS/   SS  US	S
/   SS /nS nUS   R                  USS  SS9nU" X#UR                  5        US   R                  USS  5      nU" X#US   R                  5        US   R                  USS  SS9nU" X#UR                  SS 5        Sn[        R                  " [        US9   US   R                  USS  SS9  S S S 5        g ! , (       d  f       g = f)Nr   )r/   r  abcdefr   rC   rD   rE   rF   rG   r   r   r(   	   c                     U  Vs/ s H  o3R                  U5      PM     nnUS   R                  USS  5      n[        R                  " X5        g s  snf )Nr   r(   )r   r   r   r   )df_listr   	exp_indexr	  	reindexedr   s         r   _check_diff_index2TestJoin.test_join_many.<locals>._check_diff_index  sK    7>?w!9-wI? |((127H!!&3 @s   Arh   rX   rl   rX  z?Joining multiple DataFrames only supported for joining on indexr   rU   )r   r   r   r   r*   r   r   r   r   rK   r   r   r   )r+   r,   r  ru   r  r   s         r   test_join_manyTestJoin.test_join_many  sz   II!!!$44W=tH~
 sCj>2sCj>2sCj>B-
f)sCj>#2&C:qr(:BSzN1Q<OP	4 ':'2884-'71:+;+;<':'288Aa=9O]]:S1AJOOGABKCO0 211s   >E
E,c                 T   [        [        R                  R                  S5      R	                  S5      / SQS9nSS/S-  US'   UR
                  S S 2S	S
/4   nUR
                  S S 2SS/4   nUR
                  S S 2S/4   nUR                  X4/5      n[        R                  " XQ5        g )Nr   )rX  r0   r>   r   r   r   r0   r   r?   r@   rA   rB   )	r   r   r   r   r*   rZ  r   r   r   )r+   r,   r   r2   r\  r   s         r   test_join_many_mixedTestJoin.test_join_many_mixed  s    II!!!$44V<(
 ENQ&5	ffQc
]#ffQc
]#ffQZ 3*%
f)r   c                 J   [        [        [        R                  R	                  S5      R                  S5      / SQS9[        [        R                  R	                  S5      R                  SSSS9R                  SS5      S	S
/S9/SS9n[        X/SS9nUR                  USS9nUR                  Ul	        [        R                  " X25        [        [        R                  R	                  S5      R                  S5      SS/S9n[        [        R                  R	                  S5      R                  S5      SS/S9n[        [        R                  R	                  S5      R                  S5      SS/S9n[        [        R                  R	                  S5      R                  S5      SS/S9nUR                  USSS9R                  USSSS9n[        R                  " [        R                   R"                  SS9   UR                  USSS9  S S S 5        g ! , (       d  f       g = f)Nr   )r/   r0   )r?   r?   r@   r@   r   r   r/   rT  r   r?   rA   r(   r(  _2r  )r0   r   r	  yTr9  rh   )r   r   rY   z0Passing 'suffixes' which cause duplicate columnsr   )r
   r   r   r   r   r*   rK  rx  r   r   r   r   r   r   r   r=  r>  r?  )	r+   r,   r   r   wr	  r  zdtas	            r   test_join_dupsTestJoin.test_join_dups  s   II))!,<<WE0 II))!,55a"5EMMbRST #J	 
 2(+T*!))
f/ II!!!$44V<sCj
 II!!!$44V<sCj
 II!!!$44V<sCj
 II!!!$44V<sCj
 ggaDdg;AA$Dg B 
 ]]II  D
 IIaDdI;	
 
 
s   9H
H"c                 (   [         R                  " [        S5      [        S5      SS/// SQS9n[        S[	        S5      0US	9n[         R                  " [        S5      [        S5      /SS/S9n[        S
[	        SS5       Vs/ s H  nSU-  PM
     sn0US	9nUR                  USS/US9nUR                  5       R                  UR                  5       SS/US9R                  / SQ5      n[        R                  " X5        Sn	[        R                  " [        U	S9   UR                  USUS9  S S S 5        [        R                  " [        U	S9   UR                  USS/US9  S S S 5        g s  snf ! , (       d  f       NI= f! , (       d  f       g = f)Nr   xyr(   r   )r   r  numr  v1   rJ   v2r6  rH  rc   r   r   )r   r   r   r   r   r   r*  r   r<  r   r   r   r   r   )
r+   r   	leftindexrW   
rightindexirb   r   r   r   s
             r   test_join_multi_to_multi!TestJoin.test_join_multi_to_multi  se   ++%[$t*q!f-5I
	 $b	*)<,,%[$t*%eT]

 45A;!?;a#';!?@
S5eT]	BU5$$&E4=iUHY+, 	
 	h/W]]:S1IIe)I4 2 ]]:S1JJt9J= 21 "@ 21 21s   E-
E2F2
F 
Fc                    [        [        R                  " SSSS9[        S5      S.5      n[        [        R                  " SSSS9[        S5      S	.5      nUR	                  UR                  S
5      S
S9nUR                  5       n[        [        R                  /S-  [        S5      -   5      US'   [        R                  " X45        g )Nz
2018-01-01r<   zAmerica/Chicago)startr=   tzabcde)datevalsz
2018-01-03tuvwx)r  vals_2r  rU   r   tuvr  )r   r=  
date_ranger   r   r<  r   r   r   rj  r   r   )r+   r   r2   r   r   s        r   #test_join_on_tz_aware_datetimeindex,TestJoin.test_join_on_tz_aware_datetimeindex  s    &6G W	
 &6G w-	
 #--/F;88:#RVVHqL4;$>?
f/r   c                     [        / SQ/ SQ/ SQ/ SQ// SQS9n[        R                  " US   5      R                  S5      US'   [        / S	Q/ S
Q// SQSS/S9n[        R                  " US   5      R                  S5      US'   UR	                  UR                  SS/5      SS/S9n[        [        S5      SSS/[        S5      SSS//SS// SQS9nUS   R                  S5      US'   [        R                  " X45        g )N)
2012-08-02Lr/   )r  Jr   )
2013-04-06r  rT  )r  r     )r	  r  rC   r   r	  zM8[ns])r  r  r(   )r  r  r   )r	  r  r  r   r0   rv  r  rU   z2012-08-02 00:00:00r  r(   r   z2013-04-06 00:00:00r  rT  )r	  r  r  rC   r   )	r   r=  to_datetimerL  r   r<  r   r   r   )r+   dfadfbr   r   s        r   test_join_datetime_string"TestJoin.test_join_datetime_string  s   ''''	 $
 >>#c(+228<C#%;<#a&

 >>#c(+228<C#--c
3c
C0132>0132> a&(
 !,,X6
f/r   c                 b   SS/n[         R                  " XS9n[         R                  " [        U5      [        U5      S9n[        SU0US9n[        S[        U5      0US9nUR	                  U5      n[        SS/SS/S.[         R                  " SS/SS/S9S9n[
        R                  " Xg5        g )NrC   rD   
categoriesc1rJ   c2)r  r  )r=  CategoricalIndexreversedr   r   r   r   )r+   ixid1id2r   r2   r   r   s           r    test_join_with_categorical_index)TestJoin.test_join_with_categorical_index,  s    3Z!!"4!!(2,8B<Hr
#.x|,C8#:c3Z0%%sCjc3ZH
 	f/r    )6__name__
__module____qualname____firstlineno__r   fixturer,   r2   rR   r_   rd   ri   rm   rv   r{   markparametrizeparamtd
skip_if_nor   r   r   r   r   arrayr   r   r   r   r   r   r   r   r  r
  r  r  r1  rB  rQ  ra  rg  rl  ry  r  r  r  r  r  r  r  r  __static_attributes__r  r   r   r    r    #   s   ^^  ^^
 
 ^^  HIII$	$ [[Ty9Q RS$-$-L:$:$=$ [[\AudBHHaV<L+MN= O= 0
!
<0000$0@F
)2V:0|G&B4,l [[Ty9Q RSMM,0&0&&1<*+<Z>6000<0r   r    rW   c                    U H*  nX'   R                  5       R                  5       (       a  M*   e   U R                  U5      nUR                  U5      n	UR                  U5       Hl  u  p[        XR                  U5      n[        XR                  U5      n UR                  U
5      n[        X5         U	R                  U
5      n[        UU5        Mn     g ! [         a6  nUS;   a  [        SU
 S35      Ue[        XR                  U5         S nAN^S nAff = f! [         a7  nUS;   a  [        SU
 S35      Ue[        XR                  U5         S nAM  S nAff = f)N)rW   rl   zkey z! should not have been in the join)rb   rl   )
r   r   r:  _restrict_to_columnsr   	get_group_assert_same_contentsr   AssertionError_assert_all_na)rW   rb   r   r   rY   r   r   rE   left_groupedright_grouped	group_keygroupl_joinedr_joinedlgrouperrrgroups                    r   r[   r[   <  sS   y $$&&&&  <<)LMM(+M"NN84	'||WE'}}gF
	4!++I6F "(3
	4",,Y7F "(F35 5  	=''$9+%FG 8\\8<<	=  	>(($9+%FG 8]]H==	>s0   C3D
D,DD
E",EEc                    ^ U R                    Vs/ s H"  o3U;   d  UR                  TS5      U;   d  M   UPM$     nnU R                  S S 2U4   n U R                  U4S jS9n U R                  S S 2U4   n U $ s  snf )N c                 (   > U R                  TS5      $ )Nr  )replace)r	  suffixs    r   <lambda>&_restrict_to_columns.<locals>.<lambda>j  s    199VR+@r   r   )r   r  rZ  r   )r  r   r  rE   founds     `  r   r  r  a  s~    == aLAIIfb4IW4T= 
 
 IIahE LL!@LAE IIaj!ELs
   A6A6c                 \  ^ SnU R                  U5      R                  5       R                  nUR                  U5      R                  5       R                  nU Vs1 s H  n[        U5      iM     snm[	        T5      [	        U5      :X  d   e[        U4S jU 5       5      (       d   eg s  snf )Niy)c              3   @   >#    U  H  n[        U5      T;   v   M     g 7fN)tuple).0rowrowss     r   	<genexpr>(_assert_same_contents.<locals>.<genexpr>z  s     5WcuSzT!Ws   )fillnadrop_duplicatesr  r  r   r   )
join_chunkrQ   NA_SENTINELjvaluessvaluesr  r  s         @r   r  r  r  s    K,<<>EEGmmK(88:AAG")*'3E#J'*Dt9F###5W55555 +s   B)c                 r    U H1  nX2;   a  M
  X   R                  5       R                  5       (       a  M1   e   g r  )r   r   )r  source_columnsr   rE   s       r   r  r  }  s4    =}!!#'')))) r   c                 0   U R                   R                  UR                   US9nU R                  U5      nUR                  U5      nU R                  R	                  UR                  5      nUR                  5        H	  u  pxXU'   M     UR                  US9$ )NrX   r   )rK   r   r   r   appenditems)	rC   rD   rY   
join_indexa_reb_reresult_columnsr   rN  s	            r   r   r     sz    agg3/J99Z D99Z DYY%%aii0N**,S	 <<<//r   c                     [        SS0[        R                  " S/SS9S9n [        SS0[        R                  " S	/S
S9S9nU R                  USS9n[        S/S/S.[        R                  " S/SS9S9n[        R
                  " X#5        g )NrG   r<   )r(   r   r0   r7  r  rO   rK   r   r  )r   r   )rD   rE   rl   rX   )rG   r   )r(   r   r0   r   )rC   rD   rF   rE   rJ   r   r   from_tuplesr   r   r   )rW   rb   r   r   s       r   .test_join_inner_multiindex_deterministic_orderr    s    1X$$i[HD 1XZ33VHJOE YYu'Y*Fc$$l^;OPH &+r   )	input_coloutput_colsrD   rC   a_xa_yc                     [        SSS/05      n[        U SS/05      nUR                  USSSS9n[        US	   / S
QUS   / SQ05      n[        R                  " XE5        g )NrC   r(   r   r0   cross_x_y)rY   r   r   r   )r(   r(   r   r   )r   r0   r   r0   r   )r  r  rW   rb   r   r   s         r   test_join_crossr    sh    
 cAq6]#Dy1a&)*EYYu'4YFF+a.,AUVH&+r   c                 p   [        SS0[        R                  " S/SS9S9n[        SS0[        R                  " S	/S
S9S9nUR                  X S9nU S:X  a&  [        S/S/S.[        R                  " S/SS/S9S9nO%[        S/S/S.[        R                  " S/SS/S9S9n[        R
                  " X45        g )NrE   r   )r(   r   r   r  r  rF   r0   )r   )rD   rX   rb   )rE   rF   )r   r(   rD   rC   rJ   r  )r   rW   rb   r   r   s        r   test_join_multiindex_one_levelr    s    1XZ33VHJOD C8:+A+A4&PV+WXEYYuY,FG#QC ((&#sD

 #QC ((&#sD
 &+r   zcategories, valuesYX)r  r  r  r   r(   )r   r(   r(         @      ?)r  r  r  z
2020-12-31z
2019-12-31c                 Z   [        SS/[        X S9SS/S.5      R                  SS/5      n[        / SQ[        XS9/ S	QS.5      R                  SS/5      nUR                  US
SS9n[        SS/[        X S9SS/SS/S.5      R                  SS/5      n[        R
                  " XE5        g )Nr?   r  r(   r   )r  r  r1   r  r  )r?   r?   r@   )r   r0   r<   _leftr  r   r   r0   )r  r  
value_leftvalue_rightr   r   r<  r   r   r   )r  r  rW   rb   r   r   s         r   1test_join_multiindex_not_alphabetical_categoricalr$    s     3Z!*DV	
 i(#$ 	 $!&@	
 i(#$ 
 YYugxY@F3Z!*Da&q6		
 i(#$  &+r   zleft_empty, how, exp)
)FrW   rW   )Frb   empty)Frl   r%  )Frh   rW   )Fr  r%  )TrW   r%  )Trb   rb   )Trl   r%  )Trh   rb   )Tr  r%  c                    [        SS/SS/S.SS9R                  S5      n[        S/S	/S
.SS9R                  S5      nU (       a  UR                  S5      nOUR                  S5      nUR                  XAS9nUS:X  aC  [        SS/SS/[        R
                  [        R
                  /S.5      nUR                  S5      nOaUS:X  a2  [        [        R
                  /S/S	/S.5      nUR                  S5      nO)US:X  a#  [        SS/SS9nUS:w  a  UR                  S5      nUS:X  a  WR                  5       n[        R                  " UW5        g )Nr   r(   r   r0   )r?   r@   r  rH   r?   r<   )r?   rA   r   rX   rW   )r?   r@   rA   rb   )r@   r?   rA   r%  r@   rA   rE  r  rh   )
r   r<  headr   r   rj  rename_axisr  r   r   )
left_emptyrY   exprW   rb   r   r   s          r   test_join_emptyr+    s7     Aq6A/w?II#NDQCqc*':DDSIEyy|

1YYuY&F
f}Aq6Abffbff=MNO%%c*	BFF81#QC@A%%c*	c3Zw?'>++C0H
g~&&(&(+r   c                     [        5       n [        S/S9n[        SS/S9nX-   n[        S/S9n[        R                  " X45        X-   n[        / SQS9n[        R                  " X45        X-   n[        SS/S9n[        R                  " X45        g )Ntestr   r   r   r!  )r.  r   r-  )r   r   r   )r   r2   r\  r   r   s        r   $test_join_empty_uncomparable_columnsr/    s    
+C
VH
%C
UN3
4CYF&*H&+YF!@AH&+YF.%!89H&+r   zhow, valuesrl   r   rh   rb   r   r   r(   c                    [        [        / SQ5      [        / SQ5      / SQS.5      R                  SS/5      n[        [        / SQ5      [        / SQ5      / SQS.5      R                  SS/5      n[        [        U5      [        U5      UUS.5      R                  SS/5      nUR                  X0S9n[        R
                  " XT5        g )	Nr   r   rC   rD   r0  r7  )rC   rD   rE   rF   rX   r#  )rY   r  r   r2   r   r   s         r   3test_join_multiindex_categorical_output_index_dtyper2  (  s     Y'Y'	
 ic
  Y'Y'	
 ic
  V$V$		
 ic
  XXcX#F&+r   )rX  r#   )rW   r  r  )rW   )'r  numpyr   r   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr=  r   r   r   r   r   r   r	   r
   r   r   pandas._testing_testingr   r   r    r[   r  r  r  r   r  r  r  r  r  r$  r+  r/  r2  r  r   r   <module>r:     s   	   ) )    V0 V0r"4J"6*
0,"  C#s#4sUEN6K"L,,,( 
s_%
Q
s_%|$i&=>|$i&=y?VW	
	,,: ,,6,& 	)	)		)	,,r   