
    A>i                        S SK J r   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S0S jrS r\R@                  RC                  SSSS/4SSS/4/5      S 5       r"S r#\R@                  RC                  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@                  RC                  S"/ S#Q5      S$ 5       r%S% r&\R@                  RC                  S&S'/ S(Q4S)/ S(Q4S/ S(Q4S*/ S+Q4/5      S, 5       r'S- r(g)1    )datetimeN)
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       c/var/www/html/land-tabula/venv/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.\R                  R!                  S// S0Q5      S1 5       r/\R                  R!                  S// S0Q5      S2 5       r0\R                  R!                  S// S3Q5      S4 5       r1S5 r2S6 r3S7 r4S8 r5S9 r6S: r7S;r8g)<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.df25   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)              ?       @      @      @)r6   r7   r6   r7   r6   )foo1foo2foo3foo4foo5z1/1/2009   )periodsABCD)abcdedtypeindexrC   rF   )MergedAMergedDrE   )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-   r3   joined_key2joined_boths        r   test_left_outer_joinTestJoin.test_left_outer_joinP   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rZ   r]   r\   r%   r^   r`   s        r   test_right_outer_joinTestJoin.test_right_outer_joinW   ?    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&   outerrg   r\   r%   r^   r`   s        r   test_full_outer_joinTestJoin.test_full_outer_join^   rj   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&   innerrg   r\   r%   r^   r`   s        r   test_inner_joinTestJoin.test_inner_joine   rj   r   c                 :    [        XSSS9nSU;   d   eSU;   d   eg )Nr&   z.fooz.bar)rZ   suffixeskey1.foozkey1.barr   r,   r-   r3   joineds       r   test_handle_overlapTestJoin.test_handle_overlapl   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%   rt   )left_onright_onru   rv   zkey2.barrw   rx   s       r   !test_handle_overlap_arbitrary_key*TestJoin.test_handle_overlap_arbitrary_keyr   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        Sn[        R                  " [        US9   UR                  USS9  S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)NrE   rY   rP   rC   F)check_namesrQ   rF   keyrG   rG   rH   rH   rI   r2   r   r)   r   rG   rH   rI   rN   )r   r   r)   r)   r   r   r2   r)   r      onerO   columnsfoobartwothreerI   z^'E'$matchEzvYou are trying to merge on float64 and object|str 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
ValueError)r,   rV   r   rT   rU   mergedr-   r3   ry   expecteddf_adf_bdf_c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
C 	 ]]:S1KK3K' 21 43 21s   F)F:)
F7:
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rG   rH   r0   r@   rC   rD   rN   Flen\(left_on\) must equal the number of levels in the index of "right"r   rG   Tr}   right_indexr   r   r   r   choicer+   r   from_productr   r   r   r   r   r,   r-   r3   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   abcrN   r0   zFlen\(right_on\) must equal the number of levels in the index of "left"r   rH   T)r~   
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   r0   r@   rC   rD   rN   z)len\(right_on\) must equal len\(left_on\)r   rG   rH   )r~   r}   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)NrG   r)   z.Can only merge Series or DataFrame objects, a z was passedr   )r}   r~   )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 )NrE   rY   key_0r   )r   rC   rD   rF   rP   rQ   )r   renamepopr   r   )r,   rV   rT   rU   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 )NrE   rY   rp   rg   r   )r   reindexisnaallr   assert_index_equalr   r   )r,   rV   rT   rU   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   )rG   rG   rJ   rH   rH   rI   r2   r   r)   rG   rH   rN   rp   rg   rY   F)check_dtype)r   r   notnar   r   r   rO   r,   r-   r3   ry   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   r2   r   r   rN   rY   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 )NrP   rE   rY   )r   r   r   )r,   rV   rT   rU   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 )	NrG   r)   r   rH   rO   namerY   r   rN   )r   r   r   rO   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 )Nr0   rN   Tboolr   stringr@      r)   intr7   floatr\   )r   r   aranger   _join_by_handr   r   )r,   	join_typedf1r3   ry   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 )Nr7   r   r   TrB   r0   r   rD   rF   r   _one_twolsuffixrsuffix)A_oneB_oneC_oneD_oneA_twoB_twoC_twoD_twor1   )r   r   r   rM   int64bool_r   r   r   r   r   )r,   r   r3   ry   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   rC   r   rl   r\   )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   rG   rH   r   r  rI   )r  r)   q)r   r   r   r   r+   r   r   )r,   rG   rI   rJ   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)rG   rG   rG   rH   rH   rH   )r)   r   r   r)   r   r   firstsecondnames)rH   rH   rH   rI   rI   rI   r      zvar X)rS   rO   r   zvar Yr   )levelrl   r\   r)   )r   r   r   r   r   r   r+   
sort_indexr   r   valuesunionr   r  rO   r   r   )r,   index1index2r   r3   ry   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&   rS   )r0   r   )j_onej_twoj_threer   r%   r&   rp   rg   r  r  F)r}   r~   r]   sortT)r~   r   r]   r)  r)   axis)r   r   r   r+   r   r   r   r   reset_indexr   r   reindex_likedroprO   is_monotonic_increasing)
r,   %lexsorted_two_level_string_multiindexr%   r&   rS   rO   to_joinry   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   r1   r@   r  r   r   rG   rH   meansum)   r0   r  rG   rH   rJ   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   )r0   r   rG   rH   r   rM   )r0   r)   rI   float64float32r   r@   d   r  r   mdr   Tr   )r   r   r   r   r+   rJ  rK  r   dtypesintegersastyper   r   r   )
r,   rG   rH   ry   rI   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)   r0      r   r   rL     r;      )rG   rH   rK   rG   rH   rl   r\   rg   r  )r)   r)   r)   )r0   rX  r  )r)   r)   r   )rL  rY  i,  )rZ  r[  i  rp   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r      rB   TESTr   r[   rf   )r   r@  r   r   r,  r   rG   rP  rH   r   r   locr   r   r   r+   r   repeatr   )r,   r   r3   df3idf1idf2idf3r   df_partially_mergedr   r-   rR  rp   rl   r[   rf   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   r1   r   value2r   )r   r#  r   rN   r   T)rZ   r)  )r   r#  r   r   )r   r   r)   r1   )rG   rH   rI   rI   )r   r2   ri  )r)   r   r   r   Fr1   )exact)	r   r   r   r   r   r   rO   r   r   )r,   r   r[   rf   ry   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 )NrG   rh  )r)   r   r   rG   rN   rH   )r@   r  r:  r\  )r)   r   r   r1   )r)   r   r   r   r1   r@   r  r:  r   )r)   r   r   r   rG   )r)   r   r   rG   )r   r   r   nanr   r   )r,   r   r3   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)rA   freqpnumr   rp   _df2)r]   r   rL   r   r)   pnum_df2r   rO   )rA  period_ranger   r   r   r   r   r   r   r   r   r  r_  reshaper  rO   r   r   )r,   rO   r-   r3   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U(       a  S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   )rX  r  )rG   rH   rI   rJ   rK   r   r   r   idr@   dtr   z&agg function failed [how->mean,dtype->z-dtype 'str' does not support operation 'mean'r   T)numeric_only_rightr   )r   r   r   r   r+   insertr>  reescaper   r   r   r8  countr   )r,   using_infer_stringr-   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AC]]9C0LLN 1\\t\,]]_ 	H% 10s   (C11
C?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   )r0   r  abcdefr   rG   rH   rI   rJ   rK   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rl   r\   rp   r\  z?Joining multiple DataFrames only supported for joining on indexr   rY   )r   r   r   r   r+   r   r   r   r   rO   r   r   r   )r,   r-   r  ry   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,r]   )r[   rf   rp   rl   c                 &   [        S/ SQ0/ SQS9n[        S/ SQ0/ SQS9nUS:X  a  [        / S	Q/ SQS
./ SQS9nO[        / SQ/ SQS
./ SQS9nUS:X  d  U(       a  UR                  5       nUR                  U/XS9n[        R                  " Xe5        g )NrG   r6  )r)   r   r   rN   rH   r7  r   r   r)   rf   )r   r   r)   r   )r  r@   r1   rl   r]   r)  )r   r  r   r   r   r,   r]   r)  r-   r3   r   r   s          r   test_join_many_sort_unique#TestJoin.test_join_many_sort_unique  s     Y'y9i(	:'> yy!ASH yy!ASH'>T**,H#C3
f/r   c                 <   [        S/ SQ0/ SQS9n[        S/ SQ0/ SQS9nUS:X  a  [        S	S
/SS/S.SS/S9nOUS:X  a#  [        / SQ[        R                  SS/S./ SQS9nO{US:X  a2  [        [        R                  SS[        R                  // SQS./ SQS9nOC[        SS[        R                  [        R                  S/SSSS[        R                  /S./ SQS9nU(       a  UR                  5       nUR	                  U/XS9n[
        R                  " Xe5        g )NrG   r6  )r   r   r   rN   rH   r7  r  rp   r   r   r@   r   r   r[   g      @rf   r8   r9   )r1   r@   r@   r  )r   r   r   r)   r7   g      @r:   )r   r   r)   r   r   r  )r   r   rn  r  r   r   r   r  s          r   test_join_many_sort_nonunique&TestJoin.test_join_many_sort_nonunique  s    Y'y9i(	:'> 1vQF!;Aq6JHF] rvvsC&89H G^ vvsC0|DLH !sBFFBFFC8sCbff5 &H **,H#C3
f/r   )rp   rl   r[   rf   c                 2   [        [        SSS5      [        SSS5      /5      n[        SSS/0US9n[        SSS/0US9nUR                  U/US9nUS:X  a  [        SS/SS/S	.US   US
   /S9nO[        SS/SS/S	.US9n[        R
                  " XV5        g )Ni  r)   r   rG   rN   rH   r\   rl   r   r   )r   r   r   r   r   r   )r,   r]   rO   r-   r3   r   r   s          r    test_join_many_datetime_unsorted)TestJoin.test_join_many_datetime_unsorted  s     xa+XdAq-ABCaV}E2q!fU3#C('> 1vQF!;E!HeTUhCWXH 1vQF!;5IH
f/r   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   )r\  r1   rB   r   r   r   r1   r   rC   rD   rE   rF   )	r   r   r   r   r+   r^  r   r   r   )r,   r-   r   r3   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   )r0   r1   )rC   rC   rD   rD   r   r   r0   rX  r   rC   rE   r)   r*  _2r  )r1   r   r  yTr=  rl   )r   r   r]   z0Passing 'suffixes' which cause duplicate columnsr   )r   r   r   r   r   r+   rO  r|  r   r   r   r   r   r   r   rA  rB  rC  )	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   rN   v2r:  rL  rg   r   r   )r   r   r   r   r   r   r,  r   r@  r   r   r   r   r   )
r,   r   	leftindexr[   
rightindexirf   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)startrA   tzabcde)datevalsz
2018-01-03tuvwx)r  vals_2r  rY   r   tuvr  )r   rA  
date_ranger   r   r@  copyr   r   rn  r   r   )r,   r   r3   r   r   s        r   #test_join_on_tz_aware_datetimeindex,TestJoin.test_join_on_tz_aware_datetimeindex1  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Lr0   )r  Jr   )
2013-04-06r  rX  )r  r     )r  r  rG   r   r  zM8[ns])r  r  r)   )r  r  r   )r  r  r  r   r1   rz  r  rY   z2012-08-02 00:00:00r  r)   r   z2013-04-06 00:00:00r  rX  )r  r  r  rG   r   )	r   rA  to_datetimerP  r   r@  r	   r   r   )r,   dfadfbr   r   s        r   test_join_datetime_string"TestJoin.test_join_datetime_stringI  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 )NrG   rH   
categoriesc1rN   c2)r  r  )rA  CategoricalIndexreversedr   r   r   r   )r,   ixid1id2r   r3   r   r   s           r    test_join_with_categorical_index)TestJoin.test_join_with_categorical_indexg  s    3Z!!"4!!(2,8B<Hr
#.x|,C8#:c3Z0%%sCjc3ZH
 	f/r    )9__name__
__module____qualname____firstlineno__r   fixturer-   r3   rV   rc   rh   rm   rq   rz   r   markparametrizeparamtd
skip_if_nor   r   r   r   r   arrayr   r   r   r   r   r   r   r   r  r  r  r   r3  rF  rU  re  rk  rp  r}  r  r  r  r  r  r  r  r  r  r  r  __static_attributes__r  r   r   r!   r!   $   s4   ^^  ^^
 
 ^^  HIII$	$ [[Ty9Q RS#(#(J:$:$=$ [[\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< [[U$GH0 I0 [[U$GH0 I06 [[U$GH0 I0*+<Z>6000<0r   r!   r[   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)r[   rp   zkey z! should not have been in the join)rf   rp   )
r   r   r>  _restrict_to_columnsr   	get_group_assert_same_contentsr   AssertionError_assert_all_na)r[   rf   r   r   r]   r   r   rI   left_groupedright_grouped	group_keygroupl_joinedr_joinedlgrouperrrgroups                    r   r_   r_   w  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>  s    199VR+@r   r   )r   r   r^  r   )r  r   r  rI   founds     `  r   r  r    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>  s     5WcuSzT!Ws   )fillnadrop_duplicatesr  r  r   r   )
join_chunkrU   NA_SENTINELjvaluessvaluesr
  r  s         @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   rI   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$ )Nr\   r   )rO   r   r   r   appenditems)	rG   rH   r]   
join_indexa_reb_reresult_columnsr   rR  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 )NrK   r@   )r)   r   r1   r;  r  rS   rO   r   r  )r   r   )rH   rI   rp   r\   )rK   r   )r)   r   r1   r   )rG   rH   rJ   rI   rN   r   r   from_tuplesr   r   r   )r[   rf   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_colsrH   rG   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 )NrG   r)   r   r1   cross_x_y)r]   r   r   r   )r)   r)   r   r   )r   r1   r   r1   r   )r"  r#  r[   rf   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 )NrI   r   )r)   r   r   r  r  rJ   r1   )r   )rH   r\   rf   )rI   rJ   )r   r)   rH   rG   rN   r  )r   r[   rf   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/  r0  r0  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 )NrC   r  r)   r   )r  r  r2   r  r  )rC   rC   rD   )r   r1   r@   _leftr  r   r   r1   )r  r  
value_leftvalue_rightr   r   r@  r   r   r   )r  r  r[   rf   r   r   s         r   1test_join_multiindex_not_alphabetical_categoricalr6    s     3Z!*DV	
 i(#$ 	 $!&@	
 i(#$ 
 YYugxY@F3Z!*Da&q6		
 i(#$  &+r   zleft_empty, how, exp)
)Fr[   r[   )Frf   empty)Frp   r7  )Frl   r[   )Fr'  r7  )Tr[   r7  )Trf   rf   )Trp   r7  )Trl   rf   )Tr'  r7  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   r1   rC   rD   r  rL   rC   r@   )rC   rE   r   r\   r[   )rC   rD   rE   rf   )rD   rC   rE   r7  rD   rE   rI  r'  rl   )
r   r@  headr   r   rn  rename_axisr  r   r   )
left_emptyr]   expr[   rf   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#  )rA  r   r@  )r   r   r   )r   r3   r`  r   r   s        r   $test_join_empty_uncomparable_columnsrB  P  s    
+C
VH
%C
UN3
4CYF&*H&+YF!@AH&+YF.%!89H&+r   zhow, valuesrp   r   rl   rf   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   rG   rH   rC  r;  )rG   rH   rI   rJ   r\   r5  )r]   r  r   r3   r   r   s         r   3test_join_multiindex_categorical_output_index_dtyperE  c  s     Y'Y'	
 ic
  Y'Y'	
 ic
  V$V$		
 ic
  XXcX#F&+r   c                     [        SS/0[        R                  " S/SS /S9S9n [        SS/0[        R                  " S/S S/S9S9nU R                  U5      n[        S/S/S	.[        R                  " S/SS /S9S9n[        R
                  " X#5        UR                  U 5      n[        S/S/S
.[        R                  " S/S S/S9S9n[        R
                  " XE5        g )NrC   r)   )r   r   r.  r  rN   rD   r   r9  )rD   rC   r  )r   r3   result12
expected12result21
expected21s         r   'test_join_multiindex_with_none_as_labelrK    s    
	qc
$$fXc4[AC 	qc
$$fXdC[AC
 xx}Hc$$fXc4[AJ (/xx}Hc$$fXdC[AJ (/r   )r\  r$   )r[   r(  r)  )r[   ))r   r  numpyr   r   pandas.util._test_decoratorsutil_test_decoratorsr  pandasrA  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,  r6  r>  rB  rE  rK  r  r   r   <module>rS     s    	   ) )    P0 P0f"4J"6*
0,"  C#s#4sUEN6K"L,,,( 
s_%
Q
s_%|$i&=>|$i&=y?VW	
	,,: ,,6,& 	)	)		)	,,>0r   