
    MhsD                     l   S SK J r   S SKrS SKrS SKJr  S SKrS SKJrJ	r	J
r
JrJr  S SKJr  S SKJr  \R$                  S 5       r\R$                  S 5       r\R$                  S 5       r\R$                  S	 5       r\R$                  S
 5       r\R$                  S 5       r\R$                  S 5       r\R4                  R7                  SSS\" SS/SS/S.SS/S94SS\" SS/SS/S.SS/S94SS\" / SQSS\R8                  /S./ SQS94SS\" / SQ\R8                  SS/S./ SQS94SS\" \R8                  SS// SQS./ S QS94SS\" SS\R8                  // S!QS./ S"QS94S#S\" S SS\R8                  /\R8                  SSS$/S./ S%QS94S#S\" S SS\R8                  /\R8                  SSS$/S./ S%QS94/5      S& 5       rS' rS( r\R4                  R7                  S)S*S+/5      S, 5       r S- r!S. r"S/ r#S0 r$S1 r%S2 r&S3 r'S4 r(S5 r)S6 r*\R4                  R7                  S7SS/5      S8 5       r+ " S9 S:5      r,g);    )datetimeN)
MergeError)	DataFrameIndex
MultiIndex
date_rangeperiod_range)concatc            
          [        [        R                  " S5      R                  SS5      [	        S5      [        SSSS9S9$ )	N         abcde2000Y)startfreqperiodsdatacolumnsindex)r   nparangereshapelistr	        V/var/www/html/env/lib/python3.13/site-packages/pandas/tests/frame/methods/test_join.pyframe_with_period_indexr       s:    YYr]""1a(Wc1= r   c                  "    [        S/ SQ0/ SQS9$ )Nar   
   r         r   r   r   r   r   r   leftr*      s    c;'y99r   c                  "    [        S/ SQ0/ SQS9$ )Nb,  d         r'   r&   r(   r)   r   r   r   rightr3   "   s    c?+9==r   c                  6    [        / SQ/ SQS.[        S5      S9$ )Nr"   r,   cdcatdogweaselhorser"   r,   r   r(   )r   ranger   r   r   left_no_dupr?   '   s    ")JKAh r   c                  T    [        / SQ/ SQS.[        S5      S9R                  S5      $ )N)r"   r,   r6   r7   e)meowbarkum... weasel noise?naychirpr"   r6   r   r(   r"   )r   r>   	set_indexr   r   r   right_no_duprI   /   s.    *H	
 Ah inr   c                 6    [        U [        S/S/S.S/S9/SS9$ )Nr"   cowr=   r2   r(   T)sort)r
   r   )r?   s    r   left_w_dupsrM   :   s+    	ise5' :1#FGd r   c                 V    [        U [        S/S/S.S/S9/5      R                  S5      $ )NrA   moorG   r2   r(   r"   )r
   r   rH   )rI   s    r   right_w_dupsrP   A   s2    	yuE7!;A3GHinr   zhow, sort, expectedinnerFr   r$   r0   r/   r=   r&   r'   r(   Tr*   r#   r%   r   r$   r   )r   r'   r&   r3   r-   r1   r/   r0   r.   r'   r&   r2   outerr.   )r   r'   r&   r2   c                 R    U R                  XUSS9n[        R                  " XT5        g )N1:1)howrL   validate)jointmassert_frame_equal)r*   r3   rX   rL   expectedresults         r   	test_joinr_   H   s'    X YYuD5YAF&+r   c                     [        S/ SQ05      n [        / SQ/ SQS.5      n[        / SQ/ SQS.5      nSn[        R                  " [        US9   U R	                  U/S	S
9  S S S 5        [        R                  " [        US9   U R	                  X/SS9  S S S 5        [        R                  " [        US9   U R	                  X/S	SS9  S S S 5        [        R                  " [        SS9   U R	                  X/5        S S S 5        U R	                  U/5      nU R	                  U5      n[
        R                  " XE5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N{= f)Nkey)r'   r&   r2   r   r   )r'      r2   r&   r   )ra   v1)r   r&   r2   r   r'   )keysv2z7Suffixes not supported when joining multiple DataFramesmatchy)lsuffixx)rsuffixri   rk   zIndexes have overlapping values)r   pytestraises
ValueErrorrZ   r[   r\   )firstsecondthirdmsg
arr_joinednorm_joineds         r   test_suffix_on_list_joinrv   x   s   uo./EoFGFoFGE DC	z	-

F8S
) 
.	z	-

F?C
0 
.	z	-

F?C
= 
.	z)J	K

F?# 
L UG$J**U#K*2 
.	-	-	-	-	-	K	Ks0   D>E5E )E1>
E
E 
E.1
E?c                     Sn[         R                  " [        US9   U R                  USSS9  S S S 5        g ! , (       d  f       g = f)Nz"invalid" is not a valid argument. Valid arguments are:
- "1:1"
- "1:m"
- "m:1"
- "m:m"
- "one_to_one"
- "one_to_many"
- "many_to_one"
- "many_to_many"rf   r"   invalidonrY   )rm   rn   ro   merge)r?   rI   rs   s      r   test_join_invalid_validater|      s=    		  
z	-,3C 
.	-	-s	   7
Adtypeobjectstring[pyarrow]c                 L   US:X  a  [         R                  " S5        U R                  U5      n UR                  R                  U5      Ul        U R	                  USSS9  Sn[         R
                  " [        US9   U R	                  USSS9  S S S 5        g ! , (       d  f       g = f)	Nr   pyarrowr"   one_to_manyry   zBMerge keys are not unique in right dataset; not a one-to-one mergerf   
one_to_one)rm   importorskipastyper   rZ   rn   r   )r?   rP   r}   rs   s       r   $test_join_on_single_col_dup_on_rightr      s     !!I&$$U+K%++2259L   OC	z	-! 	 	
 
.	-	-s   :B
B#c                     U R                  USSS9  Sn[        R                  " [        US9   U R                  USSS9  S S S 5        g ! , (       d  f       g = f)Nr"   many_to_onery   zAMerge keys are not unique in left dataset; not a one-to-one mergerf   r   rZ   rm   rn   r   )rM   rI   rs   s      r   #test_join_on_single_col_dup_on_leftr      s^        NC	z	-! 	 	
 
.	-	-s   A
Ac                 >   U R                  USSS9  Sn[        R                  " [        US9   U R                  USSS9  S S S 5        Sn[        R                  " [        US9   U R                  USSS9  S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)	Nr"   many_to_manyry   zCMerge keys are not unique in right dataset; not a many-to-one mergerf   r   zBMerge keys are not unique in left dataset; not a one-to-many merger   r   )rM   rP   rs   s      r   #test_join_on_single_col_dup_on_bothr      s     \cNC PC	z	-" 	 	
 
. OC	z	-" 	 	
 
.	- 
.	- 
.	-s   A="B=
B
Bc                  l   [        / SQ/ SQ/ SQS.[        S5      S9R                  SS/5      n [        / S	Q/ S
Q/ SQS.[        S5      S9R                  SS/5      n[        / S	Q/ S
Q/ SQ/ SQS.[        S5      S9R                  SS/5      nU R                  USSS9n[        R
                  " X25        g )N)r"   r"   r,   r,   )r   r'   r   r'   r8   r"   r,   r6   r   r(   r"   r,   )r"   r"   r,   )r   r'   r   )rB   rC   rD   )r"   r,   r7   r2   )r9   r:   r;   r5   rQ   rW   )rX   rY   )r   r>   rH   rZ   r[   r\   )r*   r3   expected_multir^   s       r    test_join_on_multi_col_check_dupr      s     %2	

 Ah ic
 	  8	

 Ah ic
 
  )8		
 Ah ic
  YYu'EY:F&1r   c                    U R                   U R                  S S SS/4   nU R                   U R                  SS  SS/4   R                  S S S2   nUR                  U5      n[        R
                  " UR                  UR                  5        [        / SQ5      n[        R
                  " UR                  U5        UR                  US	S
9n[        R
                  " UR                  UR                  5        [        R
                  " UR                  U5        UR                  USS
9n[        R
                  " UR                  UR                  5        [        R
                  " UR                  U5        UR                  USS
9n[        R
                  " UR                  UR                  SS 5        [        R
                  " UR                  U5        UR                  USS
9n[        R
                  " UR                  U R                  R                  5       5        [        R
                  " UR                  U5        [        R                  " [        SS9   UR                  USS
9  S S S 5        SnS H4  n[        R                  " [        US9   U R                  XS
9  S S S 5        M6     g ! , (       d  f       NK= f! , (       d  f       MY  = f)Nr$   ABr   CD)r   r   r   r   r*   rX   r3   rQ   rU   zjoin methodrf   foozcolumns overlap but no suffix)rU   r*   rQ   )locr   ilocrZ   r[   assert_index_equalr   r   sort_valuesrm   rn   ro   )float_frameff2joinedexpected_columnsrs   rX   s          r   test_join_indexr     s    	))#2.c
:;A	**12.c
:	;	@	@2	FBVVBZF!''6<<012&..*:;VVBFV#F&,,0&..*:;VVBGV$F&,,1&..*:; VVBGV$F&,,"6&..*:; VVBGV$F&,,(9(9(E(E(GH&..*:;	z	7	ru 
8 *C)]]:S1[2 21 * 
8	7 21s   J+J<+
J9<
K	c                    U R                   S S 2SS/4   nU R                   S S S2SS/4   nUR                  5       nU S   S S S2   US'   U S   S S S2   US'   UR                  U5      n[        R                  " XC5        UR                  USS9n[        R                  " XCS S S2   5        UR                  USS9n[        R                  " XCR                   S S 2UR
                  4   5        g )Nr   r   r&   r   r   r3   r   )r   copyrZ   r[   r\   r   )r   afbfr]   r^   s        r   test_join_index_morer   1  s    	S#J	'B	1sCj	)BwwyH$SqS)HSM$SqS)HSMWWR[F&+WWRWW%F&3Q3-0WWRWW%F&,,q&../@"ABr   c                 D   U R                  5       nUR                  U R                  S   5      nUR                  U5      n[        R
                  " X05        S Ul        [        R                  " [        SS9   UR                  U5        S S S 5        g ! , (       d  f       g = f)Nr   zmust have a namerf   )
r   popr   rZ   r[   r\   namerm   rn   ro   )r   dfserr   s       r   test_join_index_seriesr   C  sq    				B
&&$$R(
)CWWS\F&.CH	z);	<
 
=	<	<s   6B
Bc                    U R                   S S 2/ SQ4   nU R                   S S 2/ SQ4   nUR                  USSS9nUR                   S S 2SS/4   R                  S5      nUR                   S S 2SS/4   R                  S5      nU R                   S S 2SS	/4   nUR                  U5      R                  U5      n[        R                  " X7R                   S S 2UR
                  4   5        g )
N)r   r   r   )r   r   r   _df1_df2rl   r   r   r   r   )r   rZ   
add_suffixr[   r\   r   )r   df1df2r   df1_sufdf2_suf
no_overlapr]   s           r   test_join_overlapr   O  s    
//!_,
-C
//!_,
-CXXc66X:Fgga#sm$//7Ggga#sm$//7GS#J/J||G$))*5H &,,q&../@"ABr   c                 *   U R                  S S9n[        R                  " U R                  /S-  SS9nU R                  R                  UR                  5      nU R                  U5      n[        X#U R                  S9n[        R                  " XE5        g )Nc                     U  U  3$ )Nr   )ra   s    r   <lambda>(test_join_period_index.<locals>.<lambda>_  s    #se}r   r   r&   r'   )axisr   )renamer   concatenatevaluesr   appendrZ   r   r   r[   r\   )r    otherjoined_valuesjoined_colsr   r]   s         r   test_join_period_indexr   ^  s    #**3L*MENN$;$B$B#Ca#GaPM)1188GK$))%0F7N7T7TH &+r   c                  :   [        S/ SQ0/ SQS9n [        S/ SQ0/ SQS9n[        S/ S	Q0/ S
QS9nU R                  X/SS9n[        / SQ[        R                  SSS/[        R                  SS[        R                  /S./ SQS9n[        R
                  " X45        g )Nr"   rR   rT   r(   r,   rS   )r   r2   r&   r6   )    iX  )r&   r&   r   r*   r   )r   r$   r$   r   r.   r0   r   r   r   )r'   r&   r&   r2   )r   rZ   r   nanr[   r\   )r   r   df3r   r]   s        r   (test_join_left_sequence_non_unique_indexr   m  s    
S+&i
8C
S/*)
<C
S/*)
<CXXsjfX-F &&#sC(&&#sBFF+	

 H &+r   c                     U R                   R                  5       nU R                  U SS/   /nUR                  U5      n[        R
                  " X05        g )Nr   r   )r   to_framer   rZ   r[   r\   )r   r*   r3   r^   s       r   test_join_list_seriesr     sI     ==!!#D]]Kc
34EYYuF&.r   sort_kwc           	         [        SSS/0SS/S9n[        SSS	/0S
S/S9n[        SSS/0SS
/S9n[        S[        S5      SS.SS[        S5      S.SS[        S5      S.S.5      nU SL a  UR                  / SQS9n[        R                  " S 5         UR                  X#/SU S9nS S S 5        [        R                  " WU5        g ! , (       d  f       N&= f)Ncol1r'   r&   r6   r"   r(   col2r   r   r,   col3   rb          @r         ?r   g      @g      @g      @g       @r   r   r   F)r6   r"   r,   rU   )rX   rL   )r   floatreindexr[   assert_produces_warningrZ   r\   )r   r"   r,   r6   r]   r^   s         r   )test_suppress_future_warning_with_sort_kwr     s    6Aq6"3*5A6Aq6"3*5A6Aq6"3*5AE%Ls;CeEl;CeEl;	
H %##/#:		#	#D	)G': 
*&(+ 
*	)s   C
Cc                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestDataFrameJoini  c                 \   UnUR                   UR                  S S S/4   nUR                   UR                  SS  SS/4   nUR                  USS9R                  UR                  5      nUR	                  5       R
                  R	                  5       n[        R                  U[        R                  " UR
                  5      '   [        XbR                  UR                  S9n[        R                  " UR
                  5      R                  5       (       a   e[        R                  " XV5        g )	Nr   r   r&   r   r   rU   r   r   r   )r   r   rZ   r   r   r   r   r   isnanr   r   allr[   r\   )self multiindex_dataframe_random_dataframer"   r,   r   r]   s          r   r_   TestDataFrameJoin.test_join  s    0IIekk"1ou,-IIekk!"oSz12w'//<::<&&++-,.FF&--()X[[%--P88FMM*..0000
f/r   c                     [        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S H  nUR                  X#S9  M     g )	Nr'   r&   )r"   r,   rj   )r"   r,   rh   r"   r,   )r*   r3   rU   r   )r   rH   rZ   )r   r   r   rX   s       r   test_join_segfault$TestDataFrameJoin.test_join_segfault  sx    q!fAq6A?@q!fAq6A?@mmS#J'mmS#J'-CHHSH" .r   c                     SS/n[        SSS5      [        SSS5      /n[        U[        S5      S/S9n[        S	S/S
S//XS9nUR                  USS9n[	        UR
                  5      S
:X  d   eg )N2012020920120222i  r&   	      aar   r'   r2   r   rz   )r   r   r>   rZ   lenr   )r   	str_datesdt_datesr   r   tsts         r   test_join_str_datetime(TestDataFrameJoin.test_join_str_datetime  s~    ,	T1a((4B*?@iuQx$@1v1v&iJffQ4f 3;;1$$$r   c                 $   [        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/	/ S
QS9R                  SS/5      n[        SS/SS//SS/S9R                  S/5      n[        SS/SS/SS/SS/SS/SS/S[        R                  /S[        R                  /S[        R                  //	UR                  SS/S9n[
        R                  " UR                  USS9U5        [
        R                  " UR                  US S9USS/   5        [        R                  " SS// S!Q/SS/S"9n[        SS/SS/SS/SS/SS/SS//USS/S9n[
        R                  " UR                  US S9U5        [
        R                  " UR                  USS9USS/   5        g )#N)r"   rj   R
1?)r"   rh   ?)r"   z<+J	?)r,   rj   4ֿ)r,   rh   ^9S?)r,   r   ?)r6   rj   r'   )r6   rh   r&   )r6   r   r2   )rp   rq   value1r   rp   rq   r"   r$   r,   r   value2r   r   r   r   r   r   r   r   g      @r   r   r*   r   r3   )rj   rh   r   names)
r   rH   r   r   r   r[   r\   rZ   r   from_product)r   r   r   expexp_idxs        r   test_join_multiindex_leftright0TestDataFrameJoin.test_join_multiindex_leftright  s   $$$%$%
 2
 )Wh'
( 	 #rS"I.(8KLVVI
 222B2B266"266"266"
 ))x(
" 	chhsh7=
chhsh8#x>R:ST))3Z)'81D
 222B2B x(
 	chhsh8#>
chhsh7h=Q9RSr   c                    [         R                  " SSS5      R                  5       n[        R                  " SU4/SS/S9n[        SS/0US9n[        R                  " SU4/SS/S9n[        S	S/0US9n[        R                  " SU4/SS/S9n[        S
S/0US9nUR                  XW/5      n[        R                  " SU4/SS/S9n	[        S/S/S/S.U	S9n
[        R                  " X5        g )Ni  r'   r   index_0dater  r   r(   r   r   r   )	pd	Timestampr
  r   from_tuplesr   rZ   r[   assert_equal)r   r
  	df1_indexr   	df2_indexr   	df3_indexr   r^   expected_indexr]   s              r   test_join_multiindex_dates,TestDataFrameJoin.test_join_multiindex_dates  s   ||D!Q',,.**QI;y&>QR	!Y7**QI;y&>QR	!Y7**QI;y&>QR	!Y73*%#//!TIvCVWS1#s3>
 	)r   c                    [        SS/SS/SS//S9n[        R                  " SS	/5      n[        USS
/SS//S9n[        R                  " [
        SS9   [        R                  " XSS9  S S S 5        [        R                  " [
        SS9   UR                  USS9  S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)Nr"   r,   r'      r   r   )r   r   )r"    )r6   c1!   ,   z-Not allowed to merge between different levelsrf   r   )	r   r   r  rm   rn   r   r  r{   rZ   )r   r   r   r   s       r   'test_merge_join_different_levels_raises9TestDataFrameJoin.test_merge_join_different_levels_raises  s    
 c
1b'Ar71CD (()[)AB2wB.@A ]]M
 HHS#&
 ]]M
 HHSSH!
 

 

 
s   B%B6%
B36
Cc           
         [        [        R                  " S5      [        SSSSS9S9n[        [        R                  " S5      [        SS	S
SS9[	        S	S5      S9nUR                  USS9nUR                  R                  UR                  5      n[        R                  " UR                  U5        UR                  R                  R                  S:X  d   eg )N)   r2   z2012-11-15 00:00:00r  100msz
US/Central)r   r   tzr(   )r2   r2   r2   250msr   rU   r   )r   r   zerosr   r>   rZ   r   unionr[   r   r   zone)r   test1test2r^   r]   s        r   test_frame_join_tzaware)TestDataFrameJoin.test_frame_join_tzaware-  s    HHV%qw<
 HHV%qw< !QK
 Ew/;;$$U[[1
fllH5||##|333r   r   N)__name__
__module____qualname____firstlineno__r_   r   r   r  r  r  r'  __static_attributes__r   r   r   r   r     s'    0#	%:Tx*(".4r   r   )-r   numpyr   rm   pandas.errorsr   pandasr  r   r   r   r   r	   pandas._testing_testingr[   pandas.core.reshape.concatr
   fixturer    r*   r3   r?   rI   rM   rP   markparametrizer   r_   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r7     s      $    -   : : > >         	%"bc
#CAq6RS	$	RSz"B1a&QRKsC.@AS	
 KrvvsC.@AS	
 RVVR,?C9U	
 RRVV,?C9U	
 "b"&&)c30GH"	
 "b"&&)c30GH"	
?'*V,W*V,
3,D& 8->"?@
 A
.
&
0!2H&3RC$	C,,(/ T5M2, 3,,_4 _4r   