
    PiF                        d dl m Z  d dlZd dlZd dlZd dlZd dlmZ d dlZ	d dlm
Z
mZmZmZmZ d dlmZ d dlmZ ej        d             Zej        d             Zej        d             Zej        d	             Zej                            d
dd e
ddgddgdddg          fdd e
ddgddgdddg          fdd e
g dddej        gdg d          fdd e
g dej        ddgdg d          fdd e
ej        ddgg ddg d          fdd e
ddej        gg ddg d          fd d e
d ddej        gej        ddd!gdg d"          fd d e
d ddej        gej        ddd!gdg d"          fg          d#             Zd$ Zd% Zej                            d&d'd(g          d)             Zd* Z d+ Z!d, Z"d- Z#d. Z$d/ Z%d0 Z&d1 Z'd2 Z(d3 Z) G d4 d5          Z*dS )6    )datetimeN)
MergeError)	DataFrameIndex
MultiIndex
date_rangeperiod_range)concatc                  L    t          g dg ddt          d                    S )Nabcdcatdogweaselhorser   r      index)r   range     x/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/frame/methods/test_join.pyleft_no_dupr      s:    """)J)J)JKKAhh   r   c                  r    t          g dg ddt          d                                        d          S )N)r   r   r   r   e)meowbarkum... weasel noise?naychirpr   r      r   r   )r   r   	set_indexr   r   r   right_no_dupr)      sM    ***HHH	
 	
 Ahh   innr   c                 R    t          | t          dgdgddg          gd          S )Nr   cowr      r   T)sort)r
   r   )r   s    r   left_w_dupsr.   )   s>    	ise5' : :1#FFFGd   r   c                 t    t          | t          dgdgddg          g                              d          S )Nr    moor&   r,   r   r   )r
   r   r(   )r)   s    r   right_w_dupsr1   0   sB    	yuE7!;!;A3GGGH innr   zhow, sort, expectedinnerF   
      d   r         r   Tleftr3   r4   r   r7   r8   r   r   r4   r3   )r   r8   r7   right,  r6   r5   r,   r8   r7   r6   r5   r?   r8   r7   r,   outerr?   )r   r8   r7   r,   c                     t          dg dig d          }t          dg dig d          }|                    || |d	          }t          j        ||           d S )
Nr   r:   r;   r   r   r>   r@   1:1)howr-   validate)r   jointmassert_frame_equal)rF   r-   expectedr9   r=   results         r   	test_joinrM   7   su    X c;;;'yyy999DsOOO,III>>>EYYu#D5YAAF&(+++++r   c                  d   t          dg di          } t          g dg dd          }t          g dg dd          }d}t          j        t          |          5  |                     |gd	
           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     ||gd           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     ||gd	d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     ||g           d d d            n# 1 swxY w Y   |                     |g          }|                     |          }t          j        ||           d S )Nkey)r8   r7   r,   r   r'   )r8      r,   r7   r'   )rO   v1)r'   r7   r,   r   r8   )keysv2z7Suffixes not supported when joining multiple DataFramesmatchy)lsuffixx)rsuffixrW   rY   zIndexes have overlapping values)r   pytestraises
ValueErrorrH   rI   rJ   )firstsecondthirdmsg
arr_joinednorm_joineds         r   test_suffix_on_list_joinrd   i   s   uooo.//EoooFFGGFoooFFGGE DC	z	-	-	- * *

F8S
)))* * * * * * * * * * * * * * *	z	-	-	- 1 1

FE?C
0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1	z	-	-	- > >

FE?C
===> > > > > > > > > > > > > > >	z)J	K	K	K $ $

FE?###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ UG$$J**U##K*k22222sH   BB	B(CCC4DD"DE%%E),E)c                     d}t          j        t          |          5  |                     |dd           d d d            d S # 1 swxY w Y   d S )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"rT   r   invalidonrG   )r[   r\   r]   merge)r   r)   ra   s      r   test_join_invalid_validaterj      s    		  
z	-	-	- D D,3CCCD D D D D D D D D D D D D D D D D Ds   AAAdtypeobjectstring[pyarrow]c                 n   |dk    rt          j        d           |                     |          } |j                            |          |_        |                     |dd           d}t          j        t          |          5  |                     |dd           d d d            d S # 1 swxY w Y   d S )	Nrm   pyarrowr   one_to_manyrg   zBMerge keys are not unique in right dataset; not a one-to-one mergerT   
one_to_one)r[   importorskipastyper   rH   r\   r   )r   r1   rk   ra   s       r   $test_join_on_single_col_dup_on_rightrt      s    !!!I&&&$$U++K%+22599L     OC	z	-	-	- 
 
! 	 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   B**B.1B.c                     |                      |dd           d}t          j        t          |          5  |                      |dd           d d d            d S # 1 swxY w Y   d S )Nr   many_to_onerg   zAMerge keys are not unique in left dataset; not a one-to-one mergerT   rq   rH   r[   r\   r   )r.   r)   ra   s      r   #test_join_on_single_col_dup_on_leftrx      s          NC	z	-	-	- 
 
! 	 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AA #A c                 l   |                      |dd           d}t          j        t          |          5  |                      |dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                      |dd           d d d            d S # 1 swxY w Y   d S )	Nr   many_to_manyrg   zCMerge keys are not unique in right dataset; not a many-to-one mergerT   rv   zBMerge keys are not unique in left dataset; not a one-to-many mergerp   rw   )r.   r1   ra   s      r   #test_join_on_single_col_dup_on_bothr{      s^    \cNCCC PC	z	-	-	- 
 
" 	 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 OC	z	-	-	- 
 
" 	 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s#   AA"AB))B-0B-c                     t          g dg dg ddt          d                                        ddg          } t          g d	g d
g ddt          d                                        ddg          }t          g d	g d
g dg ddt          d                                        ddg          }|                     |dd          }t	          j        ||           d S )N)r   r   r   r   )r   r8   r   r8   r   r   r   r   r   r   r   r   )r   r   r   )r   r8   r   )r!   r"   r#   )r   r   r   r,   )r   r   r   r   r2   rE   )rF   rG   )r   r   r(   rH   rI   rJ   )r9   r=   expected_multirL   s       r    test_join_on_multi_col_check_dupr      sG    %%%222	
 	

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

 Ahh   ic
 
  )))888		
 	
 Ahh   ic
  YYu'EY::F&.11111r   c                    | j         | j        d d         ddgf         }| j         | j        dd          ddgf         j        d d d         }|                    |          }t	          j        |j        |j                   t          g d          }t	          j        |j        |           |                    |d	
          }t	          j        |j        |j                   t	          j        |j        |           |                    |d
          }t	          j        |j        |j                   t	          j        |j        |           |                    |d
          }t	          j        |j        |j        dd                    t	          j        |j        |           |                    |d
          }t	          j        |j        | j                                                   t	          j        |j        |           |                    |d
          }t	          j        |j        | j        d d                    t	          j        |j        |           |                    |d
          }t	          j        |j        | j        dd          d d d                    t	          j        |j        |           d}t          j
        t          t          j        |                    5  |                    |d
           d d d            n# 1 swxY w Y   d}dD ]L}t          j
        t          |          5  |                     | |
           d d d            n# 1 swxY w Y   Md S )Nr4   ABr'   CD)r   r   r   r   r9   rF   r=   r2   rC   	left_anti
right_antiz^'foo' is not a valid Merge type: left, right, inner, outer, left_anti, right_anti, cross, asofrT   foozcolumns overlap but no suffix)rC   r9   r2   )locr   ilocrH   rI   assert_index_equalr   columnssort_valuesr[   r\   r]   reescape)float_frameff2joinedexpected_columnsjoin_msgra   rF   s           r   test_join_indexr      s    	)#2#.c
:;A	*122.c
:	;	@2	FBVVBZZF!'6<00011122&.*:;;;VVBFV##F&,000&.*:;;;VVBGV$$F&,111&.*:;;; VVBGV$$F&,"666&.*:;;; VVBGV$$F&,(9(E(E(G(GHHH&.*:;;; VVBKV((F&,(9"1"(=>>>&.*:;;; VVBLV))F&,(9"##(>ttt(DEEE&.*:;;;	-  
z8)<)<	=	=	=  	ru               *C) 3 3]:S111 	3 	3[c222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	33 3s$   ,LLL<M  M$	'M$	c                 
   | j         d d ddgf         }| j         d d dddgf         }|                                }| d         d d d         |d<   | d         d d d         |d<   |                    |          }t          j        ||           |                    |d          }t          j        ||d d d                    |                    |d          }t          j        ||j         d d |j        f                    d S )Nr   r   r7   r   r   r=   r   )r   copyrH   rI   rJ   r   )r   afbfrK   rL   s        r   test_join_index_morer   0  s   	S#J	'B	1sCj	)BwwyyH$SSqS)HSM$SSqS)HSMWWR[[F&(+++WWRWW%%F&(33Q3-000WWRWW%%F&(,qqq&./@"ABBBBBr   c                 b   |                                  }|                    | j        d                   }|                    |          }t	          j        ||            d |_        t          j        t          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   zmust have a namerT   )
r   popr   rH   rI   rJ   namer[   r\   r]   )r   dfserr   s       r   test_join_index_seriesr   B  s    					B
&&$R(
)
)CWWS\\F&+...CH	z);	<	<	<  
                 s   B$$B(+B(c                    | j         d d g df         }| j         d d g df         }|                    |dd          }|j         d d ddgf                             d          }|j         d d ddgf                             d          }| j         d d dd	gf         }|                    |                              |          }t          j        ||j         d d |j        f                    d S )
N)r   r   r   )r   r   r   _df1_df2rZ   r   r   r   r   )r   rH   
add_suffixrI   rJ   r   )r   df1df2r   df1_sufdf2_suf
no_overlaprK   s           r   test_join_overlapr   N  s    
/!!!___,
-C
/!!!___,
-CXXc66X::Fgaaa#sm$//77Ggaaa#sm$//77GS#J/J||G$$))*55H &(,qqq&./@"ABBBBBr   c            	         t          t          j        d                              dd          t	          d          t          ddd                    } |                     d	 
          }t          j        | j        gdz  d          }| j	        
                    |j	                  }|                     |          }t          ||| j                  }t          j        ||           d S )Nr3   r   r'   abcde2000Y)startfreqperiods)datar   r   c                     |  |  S )Nr   )rO   s    r   <lambda>z(test_join_period_index.<locals>.<lambda>c  s    #}s}} r   r   r7   r8   )axis)r   nparangereshapelistr	   renameconcatenatevaluesr   appendrH   r   rI   rJ   )frame_with_period_indexotherjoined_valuesjoined_colsr   rK   s         r   test_join_period_indexr   ]  s    'Yr]]""1a((Wc1===  
 $**3L3L*MMEN$;$B#Ca#GaPPPM)188GGK$))%00FK7N7T  H &(+++++r   c                  j   t          dg dig d          } t          dg dig d          }t          dg d	ig d
          }|                     ||gd          }t          g dt          j        dddgt          j        ddt          j        gdg d          }t	          j        ||           d S )Nr   r<   rB   r   r   rA   )r   r,   r7   r   )    iX  )r7   r7   r   r9   r   )r   r4   r4   r3   r?   r5   r   r   r}   )r8   r7   r7   r,   )r   rH   r   nanrI   rJ   )r   r   df3r   rK   s        r   (test_join_left_sequence_non_unique_indexr   q  s    
S+++&iii
8
8
8C
S///*)))
<
<
<C
S///*)))
<
<
<CXXsCjfX--F &#sC(&#sBF+	
 	

 ll  H &(+++++r   c                     | j                                         }| j        | ddg         g}|                    |          }t	          j        ||            d S )Nr   r   )r   to_framer   rH   rI   rJ   )r   r9   r=   rL   s       r   test_join_list_seriesr     sV     =!!##D]Kc
34EYYuF&+.....r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestDataFrameJoinc                 <   |}|j         |j        d d         dgf         }|j         |j        dd          ddgf         }|                    |d                              |j                  }|                                j                                        }t          j        |t          j        |j                  <   t          ||j        |j
                  }t          j        |j                                                  rJ t          j        ||           d S )	Nr'   r   r7   r   r   rC   r   r   r   )r   r   rH   reindexr   r   r   r   isnanr   r   allrI   rJ   )self multiindex_dataframe_random_dataframer   r   r   rK   s          r   rM   zTestDataFrameJoin.test_join  s    0Iek"1"ou,-Iek!""oSz12w''//<<::<<&++--,.F&-(()XU[%-PPP8FM**..00000
fh/////r   c                     t          ddgddgddgd          }t          ddgddgddgd          }|                    ddg          }|                    ddg          }dD ]}|                    ||           d S )	Nr8   r7   )r   r   rX   )r   r   rV   r   r   )r9   r=   rC   r   )r   r(   rH   )r   r   r   rF   s       r   test_join_segfaultz$TestDataFrameJoin.test_join_segfault  s    q!fAq6A??@@q!fAq6A??@@mmS#J''mmS#J''- 	# 	#CHHScH""""	# 	#r   c                 $   ddg}t          ddd          t          ddd          g}t          |t          d          dg          }t          d	dgd
dgg||          }|                    |d          }t	          |j                  d
k    sJ d S )N2012020920120222i  r7   	      aar   r8   r,   r   rh   )r   r   r   rH   lenr   )r   	str_datesdt_datesr   r   tsts         r   test_join_str_datetimez(TestDataFrameJoin.test_join_str_datetime  s    ,	T1a(((4B*?*?@iuQxx$@@@1v1v&iJJJffQ4f  3;1$$$$$$r   c                    t          g dg dg dg dg dg dg dg dg d	g	g d
                              ddg          }t          ddgddggddg                              dg          }t          ddgddgddgddgddgddgdt          j        gdt          j        gdt          j        gg	|j        ddg          }t          j        |                    |d          |           t          j        |                    |d           |ddg                    t          j	        ddgg d!gddg"          }t          ddgddgddgddgddgddgg|ddg          }t          j        |                    |d           |           t          j        |                    |d          |ddg                    d S )#N)r   rX   R
1?)r   rV   ?)r   z<+J	?)r   rX   4ֿ)r   rV   ^9S?)r   r   ?)r   rX   r8   )r   rV   r7   )r   r   r,   )r^   r_   value1r   r^   r_   r   r4   r   r3   value2r   r   r   r   r   r   g      ?g       @g      @r   r   r9   r   r=   )rX   rV   r   names)
r   r(   r   r   r   rI   rJ   rH   r   from_product)r   r   r   expexp_idxs        r   test_join_multiindex_leftrightz0TestDataFrameJoin.test_join_multiindex_leftright  s_   $$$$$$$$$%%%$$$%%%
 211
 
 
 )Wh'
(
( 	 #rS"I.(8KLLLVVI
 
 222B2B26"26"26"
 )x(
 
 
" 	chhsh77===
chhsh88#x>R:STTT)3Z)'81D
 
 
 222B2B x(
 
 
 	chhsh88#>>>
chhsh77h=Q9RSSSSSr   c                 .   t          j        ddd                                          }t          j        d|fgddg          }t          ddgi|          }t          j        d|fgddg          }t          d	dgi|          }t          j        d|fgddg          }t          d
dgi|          }|                    ||g          }t          j        d|fgddg          }	t          dgdgdgd|	          }
t          j        ||
           d S )Ni  r8   r   index_0dater   col1r   col2col3)r   r   r   )	pd	Timestampr   r   from_tuplesr   rH   rI   assert_equal)r   r   	df1_indexr   	df2_indexr   	df3_indexr   rL   expected_indexrK   s              r   test_join_multiindex_datesz,TestDataFrameJoin.test_join_multiindex_dates  sA   |D!Q'',,..*QI;y&>QRRR	!Y777*QI;y&>QRRR	!Y777*QI;y&>QRRR	!Y7773*%%#/!TIvCVWWWS1#s33>
 
 
 	)))))r   c                    t          ddgddgddgg          }t          j        dd	g          }t          |dd
gddgg          }t          j        t
          d          5  t          j        ||d           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                    |d           d d d            d S # 1 swxY w Y   d S )Nr   r   r8      r   r   )r   r   )r    )r   c1!   ,   z-Not allowed to merge between different levelsrT   r   )	r   r   r   r[   r\   r   r   ri   rH   )r   r   r   r   s       r   'test_merge_join_different_levels_raisesz9TestDataFrameJoin.test_merge_join_different_levels_raises  s   
 c
1b'Ar71CDDD ()[)ABB2wB.@AAA ]M
 
 
 	' 	' HS##&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' ]M
 
 
 	" 	" HHSSH!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s$   "BB
B
,CCCc           	         t          j        d          }t          t          j        d          t          ddd|                    }t          t          j        d          t          dd	d
|          t          d	d                    }|                    |d          }|j        	                    |j                  }t          j        |j        |           |j        j        j        dk    sJ d S )Nz
US/Central)   r,   z2012-11-15 00:00:00r  100ms)r   r   tzr   )r,   r,   r,   250msr   rC   r   )zoneinfoZoneInfor   r   zerosr   r   rH   r   unionrI   r   r  rO   )r   r  test1test2rL   rK   s         r   test_frame_join_tzawarez)TestDataFrameJoin.test_frame_join_tzaware  s    |,,HV2AGPRSSS
 
 
 HV2AGPRSSS!QKK
 
 
 Ew//;$$U[11
flH555|"l222222r   c                    t          j        ddgt          j        g dd          d          }d                                }d	                                }t	          ||d
                              d          }t	          ||d                              d          }t          j        dg|j        d          |_        t          j        dg|j        d          |_        |	                    |          }t	          |||d                              d          }t          j        ddg|j        d          |_        t          j        ||           d S )Nr,   r   )r7   r,   r   r'   Int64)rk   T)
categoriesorderedza bzfoo bar)hrvalues1r  )r  values2other_hr)rk   r   )r  r  r  )r   CategoricalSeriessplitr   r(   CategoricalIndexrk   r   rH   rI   rJ   )r   cat_datar  r  r   r   	df_joinedrK   s           r   !test_frame_join_categorical_indexz3TestDataFrameJoin.test_frame_join_categorical_index,  sS   >FyW===
 
 

 ++--//##xG<<==GGMMxG<<==GGMM)1#X^*UUU)1#X^*UUUHHSMM	GDD
 

)D// 	 .F(.z
 
 
 	i22222r   N)__name__
__module____qualname__rM   r   r   r   r  r  r  r'  r   r   r   r   r     s        0 0 0# # #	% 	% 	%:T :T :Tx* * *(" " ".3 3 3$3 3 3 3 3r   r   )+r   r   r  numpyr   r[   pandas.errorsr   pandasr   r   r   r   r   r	   pandas._testing_testingrI   pandas.core.reshape.concatr
   fixturer   r)   r.   r1   markparametrizer   rM   rd   rj   rt   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   <module>r4     sq         				       $ $ $ $ $ $                        - - - - - -             	%"bc
#C#CAq6RRRS	$		RSz"B"B1a&QQQRIKKKsC.@AASSS	
 IKKKrvsC.@AASSS	
 IRVR,???CC999UUU	
 IRRV,???CC999UUU	
 I"b"&)c30GHH"ll  	
 I"b"&)c30GHH"ll  	
?'* *V, ,W* *V,3 3 3,D D D& 8->"?@@
 
 A@
.
 
 
&
 
 
0!2 !2 !2H43 43 43nC C C$	 	 	C C C, , ,(, , ,(/ / /t3 t3 t3 t3 t3 t3 t3 t3 t3 t3r   