
    m*iؓ                        S SK r S SKrS SKrS SKJ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 \RB                  RE                  SSSS/4SSS/4/5      S 5       r#S r$\RB                  RE                  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%\RB                  RE                  S"/ S#Q5      S$ 5       r&S% r'\RB                  RE                  S&S'/ S(Q4S)/ S(Q4S/ S(Q4S*/ S+Q4/5      S, 5       r(g)0    N)using_string_dtype)
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       d/var/www/html/land-doc-ocr/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"\R                  RG                  \$" 5       S#S$9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/S0 r0S1 r1S2 r2S3 r3S4 r4S5 r5S6 r6S7r7g)8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.df26   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      @)r6   r7   r6   r7   r6   )foo1foo2foo3foo4foo5z1/1/2009   )periodsABCD)abcdedtypeindexr@   rC   )MergedAMergedDrB   )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_joinQ   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rW   rZ   rY   r%   r[   r]   s        r   test_right_outer_joinTestJoin.test_right_outer_joinX   ?    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&   outerrd   rY   r%   r[   r]   s        r   test_full_outer_joinTestJoin.test_full_outer_join_   rg   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&   innerrd   rY   r%   r[   r]   s        r   test_inner_joinTestJoin.test_inner_joinf   rg   r   c                 :    [        XSSS9nSU;   d   eSU;   d   eg )Nr&   z.fooz.bar)rW   suffixeskey1.foozkey1.barr   r,   r-   r3   joineds       r   test_handle_overlapTestJoin.test_handle_overlapm   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%   rq   )left_onright_onrr   rs   zkey2.barrt   ru   s       r   !test_handle_overlap_arbitrary_key*TestJoin.test_handle_overlap_arbitrary_keys   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)NrB   rV   rM   r@   F)check_namesrN   rC   keyrD   rD   rE   rE   rF   r2   r   r)   r   rD   rE   rF   rK   )r   r   r)   r)   r   r   r2   r)   r      onerL   columnsfoobartwothreerF   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copy
ValueError)r,   rS   r~   rQ   rR   mergedr-   r3   rv   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rD   rE   r0   r=   r@   rA   rK   Flen\(left_on\) must equal the number of levels in the index of "right"r   rD   Trz   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   abcrK   r0   zFlen\(right_on\) must equal the number of levels in the index of "left"r   rE   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=   r@   rA   rK   z)len\(right_on\) must equal len\(left_on\)r   rD   rE   )r{   rz   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)NrD   r)   z.Can only merge Series or DataFrame objects, a z was passedr   )rz   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 )NrB   rV   key_0r   )r   r@   rA   rC   rM   rN   )r   renamepopr   r   )r,   rS   rQ   rR   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 )NrB   rV   rm   rd   r   )r   reindexisnaallr   assert_index_equalr   r   )r,   rS   rQ   rR   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   )rD   rD   rG   rE   rE   rF   r2   r   r)   rD   rE   rK   rm   rd   rV   F)check_dtype)r   r   notnar   r   r   rL   r,   r-   r3   rv   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   rK   rV   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 )NrM   rB   rV   )r   r   r   )r,   rS   rQ   rR   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 )	NrD   r)   r   rE   rL   namerV   r   rK   )r   r   r   rL   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   rK   Tboolr   stringr=      r)   intr7   floatrY   )r   r   aranger   _join_by_handr   r   )r,   	join_typedf1r3   rv   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   Tr?   r0   r   rA   rC   r   _one_twolsuffixrsuffix)A_oneB_oneC_oneD_oneA_twoB_twoC_twoD_twor1   )r   r   r   rJ   int64bool_r   r   r   r   r   )r,   r   r3   rv   expected_columnsr   s         r   test_join_index_mixed_overlap&TestJoin.test_join_index_mixed_overlap:  s    AE5))B-(

 3x~~)))3x~~)))AE5))Ar1%(
 #vv>	
 'r*&qr* *
f/r   zTODO(infer_string))reasonc                 P    [        5       nUR                  [        S/S/S/S9SS9  g )Nr   r   r@   r   ri   rY   )r   r   )r,   xs     r   test_join_empty_bugTestJoin.test_join_empty_bug[  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   rD   rE   r   r  rF   )r  r)   q)r   r   r   r   r+   r   r   )r,   rD   rF   rG   s       r   test_join_unconsolidated!TestJoin.test_join_unconsolidateda  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)rD   rD   rD   rE   rE   rE   )r)   r   r   r)   r   r   firstsecondnames)rE   rE   rE   rF   rF   rF   r      zvar X)rP   rL   r   zvar Yr   )levelri   rY   r)   )r   r   r   r   r   r   r+   
sort_indexr   r   valuesunionr   r  rL   r   r   )r,   index1index2r   r3   rv   ex_indexr   s           r   test_join_multiindexTestJoin.test_join_multiindexn  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&   rP   )r0   r   )j_onej_twoj_threer   r%   r&   rm   rd   r  r  F)rz   r{   rZ   sortT)r{   r   rZ   r)  r)   axis)r   r   r   r+   r   r   r   r   reset_indexr   r   reindex_likedroprL   is_monotonic_increasing)
r,   %lexsorted_two_level_string_multiindexr%   r&   rP   rL   to_joinrv   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   rD   rE   meansum)   r0   r  rD   rE   rG   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   rD   rE   r   rJ   )r0   r)   rF   float64float32r   r=   d   r  r   mdr   Tr   )r   r   r   r   r+   rH  rI  r   dtypesintegersastyper   r   r   )
r,   rD   rE   rv   rF   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   rJ     r9      )rD   rE   rH   rD   rE   ri   rY   rd   r  )r)   r)   r)   )r0   rV  r  )r)   r)   r   )rJ  rW  i,  )rX  rY  i  rm   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r      r?   TESTr   rX   rc   )r   r>  r   r   r,  r   rD   rN  rE   r   r   locr   r   r   r+   r   repeatr   )r,   r   r3   df3idf1idf2idf3r   df_partially_mergedr   r-   rP  rm   ri   rX   rc   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   rK   r   T)rW   r)  )r   r#  r   r   )r   r   r)   r1   )rD   rE   rF   rF   )r   r2   rg  )r)   r   r   r   Fr1   )exact)	r   r   r   r   r   r   rL   r   r   )r,   r~   rX   rc   rv   r   s         r   test_join_sortTestJoin.test_join_sort;  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 )NrD   rf  )r)   r   r   rD   rK   rE   )r=   r  r8  rZ  )r)   r   r   r1   )r)   r   r   r   r1   r=   r  r8  r   )r)   r   r   r   rD   )r)   r   r   rD   )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_indexT  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   rm   _df2)rZ   r   rI   r   r)   pnum_df2r   rL   )r?  period_ranger   r   r   r   r   r   r   r   r   r  r]  reshaper  rL   r   r   )r,   rL   r-   r3   r   r   s         r   !test_join_non_unique_period_index*TestJoin.test_join_non_unique_period_indexg  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   )rV  r  )rD   rE   rF   rG   rH   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   r6  countr   )r,   using_infer_stringr-   groupedr   mncns          r    test_mixed_type_join_with_suffix)TestJoin.test_mixed_type_join_with_suffixt  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   rD   rE   rF   rG   rH   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ri   rY   rm   rZ  z?Joining multiple DataFrames only supported for joining on indexr   rV   )r   r   r   r   r+   r   r   r   r   rL   r   r   r   )r,   r-   r  rv   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   )rZ  r1   r?   r   r   r   r1   r   r@   rA   rB   rC   )	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   )r@   r@   rA   rA   r   r   r0   rV  r   r@   rB   r)   r*  _2r  )r1   r   r  yTr;  ri   )r   r   rZ   z0Passing 'suffixes' which cause duplicate columnsr   )r   r   r   r   r   r+   rM  rz  r   r   r   r   r   r   r   r?  r@  rA  )	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   rK   v2r8  rJ  rd   r   r   )r   r   r   r   r   r   r,  r   r>  r   r   r   r   r   )
r,   r   	leftindexrX   
rightindexirc   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  rV   r   tuvr  )r   r?  
date_ranger   r   r>  r   r   r   rl  r   r   )r,   r   r3   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Lr0   )r  Jr   )
2013-04-06r  rV  )r  r     )r  r  rD   r   r  zM8[ns])r  r  r)   )r  r  r   )r  r  r  r   r1   rx  r  rV   z2012-08-02 00:00:00r  r)   r   z2013-04-06 00:00:00r  rV  )r  r  r  rD   r   )	r   r?  to_datetimerN  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 )NrD   rE   
categoriesc1rK   c2)r  r  )r?  CategoricalIndexreversedr   r   r   r   )r,   ixid1id2r   r3   r   r   s           r    test_join_with_categorical_index)TestJoin.test_join_with_categorical_index2  s    3Z!!"4!!(2,8B<Hr
#.x|,C8#:c3Z0%%sCjc3ZH
 	f/r    )8__name__
__module____qualname____firstlineno__r   fixturer-   r3   rS   r`   re   rj   rn   rw   r|   markparametrizeparamtd
skip_if_nor   r   r   r   r   arrayr   r   r   r   r   r   r   r   r  xfailr   r  r  r   r3  rD  rS  rc  ri  rn  r{  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$0B [[)+4HIF JF
)2V:0|G&B4,l [[Ty9Q RSMM,0&0&*1<*+<Z>6000<0r   r!   rX   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)rX   rm   zkey z! should not have been in the join)rc   rm   )
r   r   r<  _restrict_to_columnsr   	get_group_assert_same_contentsr   AssertionError_assert_all_na)rX   rc   r   r   rZ   r   r   rF   left_groupedright_grouped	group_keygroupl_joinedr_joinedlgrouperrrgroups                    r   r\   r\   B  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>p  s    199VR+@r   r   )r   r  r\  r   )r  r   r  rF   founds     `  r   r  r  g  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_chunkrR   NA_SENTINELjvaluessvaluesr  r  s         @r   r  r  x  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   rF   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$ )NrY   r   )rL   r   r   r   appenditems)	rD   rE   rZ   
join_indexa_reb_reresult_columnsr   rP  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 )NrH   r=   )r)   r   r1   r9  r  rP   rL   r   r  )r   r   )rE   rF   rm   rY   )rH   r   )r)   r   r1   r   )rD   rE   rG   rF   rK   r   r   from_tuplesr   r   r   )rX   rc   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_colsrE   rD   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 )NrD   r)   r   r1   cross_x_y)rZ   r   r   r   )r)   r)   r   r   )r   r1   r   r1   r   )r  r  rX   rc   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 )NrF   r   )r)   r   r   r  r  rG   r1   )r   )rE   rY   rc   )rF   rG   )r   r)   rE   rD   rK   r  )r   rX   rc   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  r2   r  r  )r@   r@   rA   )r   r1   r=   _leftr  r   r   r1   )r  r  
value_leftvalue_rightr   r   r>  r   r   r   )r  r  rX   rc   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)
)FrX   rX   )Frc   empty)Frm   r)  )Fri   rX   )Fr  r)  )TrX   r)  )Trc   rc   )Trm   r)  )Tri   rc   )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   r1   )r@   rA   r  rI   r@   r=   )r@   rB   r   rY   rX   )r@   rA   rB   rc   )rA   r@   rB   r)  rA   rB   rG  r  ri   )
r   r>  headr   r   rl  rename_axisr  r   r   )
left_emptyrZ   exprX   rc   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#  )r2  r   r1  )r   r   r   )r   r3   r^  r   r   s        r   $test_join_empty_uncomparable_columnsr3    s    
+C
VH
%C
UN3
4CYF&*H&+YF!@AH&+YF.%!89H&+r   zhow, valuesrm   r   ri   rc   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   rD   rE   r4  r9  )rD   rE   rF   rG   rY   r'  )rZ   r  r   r3   r   r   s         r   3test_join_multiindex_categorical_output_index_dtyper6  .  s     Y'Y'	
 ic
  Y'Y'	
 ic
  V$V$		
 ic
  XXcX#F&+r   )rZ  r$   )rX   r  r  )rX   ))r  numpyr   r   pandas._configr   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/  r3  r6  r  r   r   <module>r?     s   	   - ) )    Z0 Z0z"4J"6*
0,"  C#s#4sUEN6K"L,,,( 
s_%
Q
s_%|$i&=>|$i&=y?VW	
	,,: ,,6,& 	)	)		)	,,r   