
    Pi                        d dl m Z  d dlZd dlZd dlZd dlmc mZ d dl	Z
d dl	mZmZmZmZmZmZmZmZmZmZ d dlmZ d2dZ G d d          Zd3dZd Zd Zd Zd4dZd Zej         !                    ddddgfdddgfg          d             Z"d Z#ej         !                    dddgg dfddgg dfd d!gg d"f ed#           ed$          g ed#           ed$           ed$          gfg          d%             Z$ej         !                    d&g d'          d(             Z%d) Z&ej         !                    d*d+g d,fd-g d,fd	g d,fd.g d/fg          d0             Z'd1 Z(dS )5    )datetimeN)
Categorical	DataFrameIndex
MultiIndexSeries	Timestampbdate_rangeconcatmergeoption_context   2   c           	         t          t          |                     }t          j        t          j        ||| z                      }t          |          |k     r<t          j        t          |          |d |t          |          z
           z             }t          j                            d                              |           |S )N   )	listrangenpasarraytilelenrandomdefault_rngshuffle)ngroupsnunique_groupsarrs       x/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/reshape/merge/test_join.pyget_test_datar       s    w((M
*RW]AL99
:
:C
3xx!||jc]>QS\>%BBCCI!$$S)))J    c            
          e Zd Zej        d             Zej        d             Zej        d             Zd Zd Z	d Z
d Zd Zd	 Zej                            d
d ej        d ej        d                    g          d             Zd Zd Zd Zej                            dddd ej        ddg          g          d             Zd Zd Zd Zd Zd Zd Zd  Z d! Z!d" Z"d# Z#d$ Z$d% Z%d& Z&d' Z'd( Z(ej                            d
d ej        d ej        d                    g          d)             Z)d* Z*d+ Z+d, Z,d- Z-ej                            d.g d/          d0             Z.ej                            d.g d/          d1             Z/ej                            d.g d2          d3             Z0d4 Z1d5 Z2d6 Z3d7 Z4d8 Z5d9 Z6dS ):TestJoinc                 B   t          t                      t                      t          j                            d                              d          t          j                            d                              d          d          }||d         dk             }|S )Nr   r   )key1key2data1data2r&      r   r    r   r   r   standard_normal)selfdfs     r   r-   zTestJoin.df&   s    %%..q11AA"EE..q11AA"EE	 
 
 6
Q	r!   c                     t          t          d          t          dd          t          j                            d                              d          d          S )N
   )r      )r   r   r   )r%   r&   valuer*   )r,   s    r   df2zTestJoin.df25   s]    %+++%a2666..q11AA"EE 
 
 	
r!   c                     g dg dg dt          dd          d}t          |t          g dt          	          
          }t          |d         |d         d|d         
          }||fS )N)              ?       @      @      @)r4   r5   r4   r5   r4   )foo1foo2foo3foo4foo5z1/1/2009   )periodsABCD)abcdedtypeindexrA   rD   )MergedAMergedDrC   )r
   r   r   object)r,   datatargetsources       r   target_sourcezTestJoin.target_source?   s     +*****999Z333	
 
 4u-F-F-Ff'U'U'UVVV S	d3i88S	
 
 
 v~r!   c                     t          ||d          }t          |||dgd           t          ||          }t          |||ddgd           d S )Nr&   onlefthowr%   r   _check_joinr,   r-   r2   joined_key2joined_boths        r   test_left_outer_joinzTestJoin.test_left_outer_joinP   sb    B///B[6(????BnnB[66*:GGGGGGr!   c                     t          ||dd          }t          |||dgd           t          ||d          }t          |||ddgd           d S )Nr&   rightrW   rZ   rY   r%   r[   r]   s        r   test_right_outer_joinzTestJoin.test_right_outer_joinW   k    BG<<<B[6(@@@@B111B[66*:HHHHHHr!   c                     t          ||dd          }t          |||dgd           t          ||d          }t          |||ddgd           d S )Nr&   outerrc   rY   r%   r[   r]   s        r   test_full_outer_joinzTestJoin.test_full_outer_join^   re   r!   c                     t          ||dd          }t          |||dgd           t          ||d          }t          |||ddgd           d S )Nr&   innerrc   rY   r%   r[   r]   s        r   test_inner_joinzTestJoin.test_inner_joine   re   r!   c                 D    t          ||dd          }d|v sJ d|v sJ d S )Nr&   z.fooz.bar)rW   suffixeskey1.foozkey1.barr   r,   r-   r2   joineds       r   test_handle_overlapzTestJoin.test_handle_overlapl   sA    r364DEEEV####V######r!   c                 F    t          ||ddd          }d|v sJ d|v sJ d S )Nr&   r%   rm   )left_onright_onrn   ro   zkey2.barrp   rq   s       r   !test_handle_overlap_arbitrary_keyz*TestJoin.test_handle_overlap_arbitrary_keyr   sO    %
 
 
 V####V######r!   infer_stringFTpyarrow)marksc                 N   |\  }}|                     |d          }t          j        |d         |d         d           t          j        |d         |d         d           t          d	g d
i          }t          dg dig d          }|                     |d	          }t          g d
g dd          }	t          j        ||	           t          dgdgdggg ddg          }
t          dgdggddgdg          }t          dgdggddgdg          }|
                     |d          }|                     |d          }t          j        |d         d                   sJ t          j        |d         d                   sJ t          j        t          d          5  |                     |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                     |d           d d d            d S # 1 swxY w Y   d S )NrC   rV   rN   rA   F)check_namesrO   rD   keyrE   rE   rF   rF   rG   r1   r   r)   r   rE   rF   rG   rL   )r   r   r)   r)   r   r}   r1   r)   r      onerM   columnsfoobartwothreerG   z^'E'$matchEzvYou are trying to merge on float64 and object|str columns for key 'A'. If you wish to proceed you should use pd.concat)jointmassert_series_equalr   assert_frame_equalr   isnanpytestraisesKeyError
ValueError)r,   rT   rx   rR   rS   mergedr-   r2   rr   expecteddf_adf_bdf_cmsgs                 r   test_join_onzTestJoin.test_join_on}   s    'V,,
vi0&+5QQQQ
vi0&+5QQQQ 8889::))),OOODDD''---HH
 
 	fh/// 1#sQC%QQQ5'E7+Aq6E7KKK1#sAq6G9EEE4E**Te,,xuc*+++++xw,----- ]87333 	( 	(KK3K'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(
C 	 ]:S111 	( 	(KK3K'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s$   )GGG5HH!Hc                    t          t          j                            d                              ddgd          t          j                            d                              d          d          }t          t          j                            d                              ddgd          t          j                            d                              d          dt          j        t          d          d	d
gg                    }d}t          j
        t          |          5  t          ||dd           d d d            d S # 1 swxY w Y   d S )Nr   mfr   sizerE   rF   r/   r>   rA   rB   rL   Flen\(left_on\) must equal the number of levels in the index of "right"r   rE   Tru   right_indexr   r   r   r   choicer+   r   from_productr   r   r   r   r   r,   r-   r2   r   s       r   -test_join_on_fails_with_different_right_indexz6TestJoin.test_join_on_fails_with_different_right_index   s   Y**1--44c3Za4HHY**1--==a@@ 
 
 Y**1--44c3Zb4IIY**1--==bAA  )588c3Z*@AA
 
 
 X]:S111 	: 	:"c3D9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   /EEEc           	         t          t          j                            d                              ddgd          t          j                            d                              d          dt          j        t          d          t          d          g                    }t          t          j                            d                              ddgd	          t          j                            d                              d	          d          }d
}t          j        t          |          5  t          ||dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   abcrL   r/   zFlen\(right_on\) must equal the number of levels in the index of "left"r   rF   T)rv   
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_indexz5TestJoin.test_join_on_fails_with_different_left_index   s   Y**1--44c3Za4HHY**1--==a@@  (%((DKK)@AA
 
 
 Y**1--44c3Zb4IIY**1--==bAA 
 
 X]:S111 	: 	:"cCD9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   :EE"Ec                    t          t          j                            d                              ddgd          t          j                            d                              d          d          }t          t          j                            d                              ddgd          t          j                            d                              d          dt          j        t          d          d	d
gg                    }d}t          j
        t          |          5  t          ||dddg           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   r/   r>   rA   rB   rL   z)len\(right_on\) must equal len\(left_on\)r   rE   rF   )rv   ru   r   r   s       r   /test_join_on_fails_with_different_column_countsz8TestJoin.test_join_on_fails_with_different_column_counts   s   Y**1--44c3Za4HHY**1--==a@@ 
 
 Y**1--44c3Zb4IIY**1--==bAA  )588c3Z*@AA
 
 
 ;]:S111 	= 	="cC#s<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   /EEE
wrong_typer   strNr   r)   c                 l   t          dddgi          }dt          |           d}t          j        t          |          5  t          ||dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||dd           d d d            d S # 1 swxY w Y   d S )NrE   r)   z.Can only merge Series or DataFrame objects, a z was passedr   )ru   rv   )r   typer   r   	TypeErrorr   )r,   r   r-   r   s       r   )test_join_on_fails_with_wrong_object_typez2TestJoin.test_join_on_fails_with_wrong_object_type   sP    aV}%%/j!!/ / / 	 ]9C000 	= 	=*b#<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=]9C000 	= 	="j#<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s$   A""A&)A&B))B-0B-c                    |\  }}|                     |d          }|                    ddi          }|g d         }|                    d          }|                     ||          }t          j        ||           d S )NrC   rV   key_0r   )r   rA   rB   rD   rN   rO   )r   renamepopr   r   )r,   rT   rR   rS   r   join_colresults          r   test_join_on_pass_vectorz!TestJoin.test_join_on_pass_vector   s    &;;v#;..??C>?::JJJK::c??V11
fh/////r!   c                    |\  }}|                     |                    g           d          }|D ]6}||v sJ ||                                                                         sJ 7|                     |                    g           dd          }t	          j        |j        |j                   t          |          dk    sJ d S )NrC   rV   rj   rc   r   )r   reindexisnaallr   assert_index_equalr   r   )r,   rT   rR   rS   r   colmerged2s          r   test_join_with_len0zTestJoin.test_join_with_len0   s    &V^^B//C88 	, 	,C&====#;##%%))++++++++fnnR00Sg+FF
gov~>>>7||q      r!   c                    t          dg di          }t          dddgiddg          }|                    |dd	
          }|                    |d          }||d                                                  }t          j        |d         |d                    t          j        |d         |d         d           t          j        |j        |j                   d S )Nr}   )rE   rE   rH   rF   rF   rG   r1   r   r)   rE   rF   rL   rj   rc   rV   F)check_dtype)r   r   notnar   r   r   rM   r,   r-   r2   rr   r   s        r   test_join_on_innerzTestJoin.test_join_on_inner  s    ===>??1a&)#s<<<G4477357))HW-33556
ve}huo>>>
vg0AuUUUU
flHN;;;;;r!   c                     t          dg di          }t          dg dig d          }|                    |dg          }|                    |d          }t          j        ||           d S )Nr}   r~   r1   r   r   rL   rV   r   r   r   r   r   s        r   test_join_on_singlekey_listz$TestJoin.test_join_on_singlekey_list  s    8889::))),OOODDD %))77357))
fh/////r!   c                     |\  }}|                     |d         d          }|                     |dg         d          }t          j        ||           d S )NrN   rC   rV   r   r   r   )r,   rT   rR   rS   r   r   s         r   test_join_on_serieszTestJoin.test_join_on_series  sZ    &VI.377;;vyk2s;;;
fh/////r!   c                     t          dddgi          }t          dgdgd          }|                    |d          }t          ddgddgd|j                  }t	          j        ||           d S )	NrE   r)   r   rF   rM   namerV   r   rL   )r   r   r   rM   r   r   )r,   r-   dsr   r   s        r   test_join_on_series_bugletz#TestJoin.test_join_on_series_buglet  s    aV}%%QCs---$$Aq6A77rxHHH
fh/////r!   c                    t          t          j        d                    }d|d<   d|d<   t          t          j        dd                    }d	|d
<   d|d<   |                    ||          }t	          |||          }t          j        ||           |                    ||          }t	          |||          }t          j        ||           d S )Nr/   rL   Tboolr   stringr>      r)   intr5   floatrY   )r   r   aranger   _join_by_handr   r   )r,   	join_typedf1r2   rr   r   s         r   test_join_index_mixedzTestJoin.test_join_index_mixed&  s    bimm,,,FHbi2..///E
G#9-- cy999
fh///#9-- cy999
fh/////r!   c                    t          dddddt          j        d          g d          }|d         j        t          j        k    sJ |d	         j        t          j        k    sJ t          dddddt          j        d
dd          g d          }|                    |dd          }g d}|d d         |_        |dd          |_        t          ||          }t          j
        ||           d S )Nr5   r   r   Tr@   r/   r   rB   rD   r   _one_twolsuffixrsuffix)A_oneB_oneC_oneD_oneA_twoB_twoC_twoD_twor0   )r   r   r   rK   int64bool_r   r   r   r   r   )r,   r   r2   rr   expected_columnsr   s         r   test_join_index_mixed_overlapz&TestJoin.test_join_index_mixed_overlap8  s   AE55)B--(((
 
 

 3x~))))3x~))))AE55)Ar1%%(((
 
 
 #vv>>	
 	
 	
 'rr*&qrr* c**
fh/////r!   c                 v    t                      }|                    t          dgdgdg          d           d S )Nr   r   rA   r   rg   rY   )r   r   )r,   xs     r   test_join_empty_bugzTestJoin.test_join_empty_bugX  s<    KK	y!QC#777WEEEEEr!   c                    t          t          j                            d                              d          ddg          }t          t          j                            d                              d                    }||d<   t          t          j                            d                              d          d	g          }|                    |           |                    |           d S )
Nr   )   r   rE   rF   r   r   rG   )r   r)   q)r   r   r   r   r+   r   r   )r,   rE   rG   rH   s       r   test_join_unconsolidatedz!TestJoin.test_join_unconsolidated]  s    I!!!$$44W==Sz
 
 
 29((++;;B??@@#bi++A..>>wGGRUQVWWW 	
q				q					r!   c                    t          j        g dg dgddg          }t          j        g dg dgddg          }t          t          j                            d                              d          |d	g
          }t          t          j                            d                              d          |dg
          }|                    d          }|                    d          }|                    |d          }t          |j
                                      t          |j
                            }|                    |                              |                    |                    }|j        |j        _        t          j        ||           |j        j        |j        k    sJ |                    d          }|                    d          }|                    |d                              d          }t          |j
                                      t          |j
                            }|                    |                              |                    |                    }|j        |j        _        t          j        ||           |j        j        |j        k    sJ d S )N)rE   rE   rE   rF   rF   rF   )r)   r   r   r)   r   r   firstsecondnames)rF   rF   rF   rG   rG   rG   r      zvar X)rQ   rM   r   zvar Yr   )levelrg   rY   r)   )r   r   r   r   r   r   r+   
sort_indexr   r   valuesunionr   r   rM   r   r   )r,   index1index2r   r2   rr   ex_indexr   s           r   test_join_multiindexzTestJoin.test_join_multiindexj  s   '+++-?-?-?@H%
 
 

 '+++-?-?-?@H%
 
 

 &&q))99!<<I
 
 

 &&q))99!<<I
 
 
 nn1n%%nn1n%%#7++''--eFM.B.BCC;;x((--ckk(.C.CDD%|
fh///|!V\1111nn1n%%nn1n%%#7++66Q6??''--eFM.B.BCC;;x((--ckk(.C.CDD%|
fh///|!V\111111r!   c                    g d}g d}t           j                            d                              t	          |                    }t          |||d          }|}t          t           j                            d                              d          |g d          }|                    |dd	gd
          }t          ||                                dd	gddgd
d          }t          ||dd	gdd
d          }	t          j
        ||	                    |                     t          ||dd	gdd
d          }	|                    ddgd          }|j        |_        |j        j        sJ t          j
        ||           d S )N)
r   r   r   r   r   bazr  quxr  snap)
r   r   r   r   r   r   r   r   r   r   r   )r%   r&   rQ   )r/   r   )j_onej_twoj_threer   r%   r&   rj   rc   r   r   F)ru   rv   rZ   sortT)rv   r   rZ   r  r)   axis)r   r   r   r+   r   r   r   r   reset_indexr   r   reindex_likedroprM   is_monotonic_increasing)
r,   %lexsorted_two_level_string_multiindexr%   r&   rQ   rM   to_joinrr   r   	expected2s
             r   test_join_inner_multiindexz#TestJoin.test_join_inner_multiindex  s   VVV
 
 
 y$$Q''77D		BB$dCCDD5I!!!$$44W==111
 
 
 7'7WEE!!V$x(
 
 
 f%
 
 
	 	fi&<&<V&D&DEEEf%
 
 
	 =='8!41===|3333
fh/////r!   c                    t          ddgg d          }|                    dg                              dddgi          }t          dd	gg d
          }|                    dd           t	          j        t          j        j        d          5  t          ||dd           d d d            d S # 1 swxY w Y   d S )Nr)   r   r   r0   r>   r  r   r   rE   rF   meansum)   r/   r  rE   rF   rH   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_raisesz,TestJoin.test_join_hierarchical_mixed_raises  s0    	9-GGGSE""&&fe_'=>>i4oooNNN3---]I (W
 
 
 	G 	G &(tFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   B55B9<B9c                    t          t          j                            d                              d          ddgt          j                  }t          t          j                            d                              d          dgt          j                  }|                    |          }|j        d         dk    sJ |j        d         dk    sJ |j        d         d	k    sJ t          j                            d          	                    d
dd          
                    d          }t          j                            d                              d          
                    d          }t          j                            d                              d          
                    d	          }t          |||d          }t          |||d          }t          t          j                            d                              d          
                    d	          dg          }|                    |dd          }|j        d         dk    sJ |j        d         dk    sJ |j        d         d	k    sJ |j        d         d	k    sJ |                    |dd          }	t          j        ||	           d S )Nr   )r/   r   rE   rF   r   rK   )r/   r)   rG   float64float32r   r>   d   r   r   mdr   Tr   )r   r   r   r   r+   r0  r1  r   dtypesintegersastyper   r   r   )
r,   rE   rF   rr   rG   r-   xpdfsrsxps
             r   test_join_float64_float32z"TestJoin.test_join_float64_float32  s   I!!!$$44W==#J*
 
 

 I!!!$$44W==E*
 
 

 }S!Y....}S!Y....}S!Y....I!!!$$--aC88??HHI!!!$$++C0077	BBI!!!$$++C0077	BBQQQ//00qqq1122I!!!$$++A..55i@@4&
 
 
 XXa$X77y~((((y~****y~****y)++++ZZ3DZ99
b"%%%%%r!   c                    t          ddgddgddgd          }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g          }|                    ||gd          }t          ||ddgd          }t          ||ddgd          }	|                                }|	|j                 }	|	j                            d          |	d<   |	j                            d          |	d<   t          j
        ||	           t          g dg dg dd          }t          g dg dg dd          }t          g dg dg dd          }|                    ddg          }|                    ddg          }|                    ddg          }|                    ||gd          }t          ||ddgd          }t          ||ddgd          }	|                                }t          j
        ||	j        d d |j        f                    t          g dg dt          j                            d                              d          t          j                            d                              d          d          }
t!          t          j        t          j        d          d          t          j        t          j        d          d          d          }|
                    |d          }|
                    |d          }|
                    |d          }|
                    |d          }t          j
        ||           t          j
        ||           t          j
        ||           d S ) Nr)   r/      r   r   r2     r"      )rE   rF   rI   rE   rF   rg   rY   rc   r   )r)   r)   r)   )r/   r=  r   )r)   r)   r   )r2  r>  i,  )r?  r@  i  rj   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r@   TESTr   rX   rb   )r   r'  r   r   r  r   rE   r6  rF   r   r   locr   r   r   r+   r   repeatr   )r,   r   r2   df3idf1idf2idf3r   df_partially_mergedr   r-   r8  rj   rg   rX   rb   s                   r   test_join_many_non_unique_indexz(TestJoin.test_join_many_non_unique_index  s   q!fAq6RAABBq!fAq6c
CCDDq!fAq6tEEFF}}c3Z((}}c3Z((}}c3Z((D$<W55#C#sIII,csCjgNNN##%%FN+ 
))'22 
))'22
fh///iiiiiilllKKLLiiiiiioooNNOOiiiiii>P>P>PQQRR}}c3Z((}}c3Z((}}c3Z((D$<W55#C#sIII,csCjgNNN##%%
fhl111fn3D&EFFF MMMQQQY**1--==a@@Y**1--==a@@	 
 
 IbillA&&bi	!a.H.Hv
 
 
 w''w''wwqfw%%w''
eU+++
eT***
eU+++++r!   c           	         t          d|          5  t          g dg dd          }t          dg dig d          }|                    |d	d
          }t          g dg dg ddg d          }t          j        ||           |                    |d	d          }t          j        |j        t          t          d                    d
           d d d            d S # 1 swxY w Y   d S )Nzfuture.infer_string)r   r   r  r   r)   r   r   r0   r   value2r   )r   r  r   rL   r}   T)rW   r  )r   r  r   r   )r   r   r)   r0   )rE   rF   rG   rG   )r}   r1   rL  )r)   r   r   r   Fr0   )exact)	r   r   r   r   r   r   rM   r   r   )r,   rx   rX   rb   rr   r   s         r   test_join_sortzTestJoin.test_join_sort7  s    1<@@ 	M 	M444|||LL D x9AVAVAVWWWEYYuTY::F 777)\\222 
 #ll  H !&(333 YYuUY;;F!&,eAhhtLLLL'	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms   CC$$C(+C(c                    t          dg dig d          }t          dg dig d          }|                    |          }t          g dd	t          j        d
dt          j        gdg d          }t	          j        ||           t          dg dig d          }t          dg dig d          }|                    |          }t          g dd	d
d
t          j        gdg d          }t	          j        ||           d S )NrE   rK  )r)   r   r   rE   rL   rF   )r>   r  r!  r   )r)   r   r   r0   )r)   r   r   r   r0   r>   r  r!  r   )r)   r   r   r   rE   )r)   r   r   rE   )r   r   r   nanr   r   )r,   r   r2   r   r   rD  df4s          r    test_join_mixed_non_unique_indexz)TestJoin.test_join_mixed_non_unique_indexP  s;   lll+>>>BBBlll+<<<@@@#!//BFAq"&(ABB###
 
 
 	fh///lll+>>>BBBlll+<<<@@@#,,aArv%677~~~
 
 
 	fh/////r!   c           	      *   t          j        ddd          }t          t          t	          t          |                              |dg          }t          ||g          }|                    |dd	          }t          t          j	        t          j
        dt          j        
                              d                              dd          d          ddg|                                j                  }t!          j        ||           d S )Nz
2016-01-01   M)r?   freqpnumr   rj   _df2)rZ   r   rJ   r   r)   pnum_df2r   rM   )r(  period_ranger   r   r   r   r   r   r   r   r   r   rC  reshaper  rM   r   r   )r,   rM   r-   r2   r   r   s         r   !test_join_non_unique_period_indexz*TestJoin.test_join_non_unique_period_indexc  s    bsCCCtE#e**--..efXNNNb"X'6::GBIb11188;;CCBJJANNZ(..""(
 
 

 	fh/////r!   c                 R   t          t          j                            d                              d          g d          }|                    ddd           |                    ddd	           |                    d          }t          j        d
          }|rd}t          j
        t          |          5  |                                 d d d            n# 1 swxY w Y   |                    d          }|                                }|                    |d           d S )Nr   )r=  r  )rE   rF   rG   rH   rI   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   r  countr   )r,   using_infer_stringr-   groupedr   mncns          r    test_mixed_type_join_with_suffixz)TestJoin.test_mixed_type_join_with_suffixp  sR   I!!!$$44W==222
 
 
 			!T1
		!T5!!!**T""i@AA 	BAC]9C000 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	\\t\,,]]__ 	H%%%%%s   :CC"Cc                    t          t          j                            d                              d          t          d                    }|ddg         |ddg         |d	d
g         g}|d                             |dd                    }t          j        ||           |ddg         d d         |ddg         dd          |d	d
g         dd         g}d }|d                             |dd          d          } ||||j	                   |d                             |dd                    } ||||d         j	                   |d                             |dd          d          } ||||j	        dd                    d}t          j        t          |          5  |d                             |dd          d           d d d            d S # 1 swxY w Y   d S )Nr   )r/   r  abcdefr   rE   rF   rG   rH   rI   r   r   r)   	   c                     fd| D             }|d                              |dd                    }t          j        ||           d S )Nc                 :    g | ]}|                               S  )r   ).0r   	exp_indexs     r   
<listcomp>zFTestJoin.test_join_many.<locals>._check_diff_index.<locals>.<listcomp>  s%    ???!9--???r!   r   r)   r   )df_listr   rv  	reindexedr   s     `  r   _check_diff_indexz2TestJoin.test_join_many.<locals>._check_diff_index  sT    ????w???I |((12277H!&(33333r!   rg   rY   rj   r   z?Joining multiple DataFrames only supported for joining on indexr   rV   )r   r   r   r   r+   r   r   r   r   rM   r   r   r   )r,   r-   rx  rr   rz  r   s         r   test_join_manyzTestJoin.test_join_many  s6   I!!!$$44W==tH~~
 
 
 sCj>2sCj>2sCj>B--
fb)))sCj>#2#&C:qrr(:BSzN1Q3<OP	4 	4 	4 '::'628444--'671:+;<<<'::'628AaC=999O]:S111 	1 	1AJOOGABBKCO000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   *&GG!$G!rZ   )rX   rb   rj   rg   c                 l   t          dg dig d          }t          dg dig d          }|dk    rt          g d	g dd
g d          }nt          g dg dd
g d          }|dk    s|r|                                }|                    |g||          }t          j        ||           d S )NrE   r  )r)   r   r   rL   rF   r  r   r   r)   rb   )r   r   r)   r   )r  r>   r0   rg   rZ   r  )r   r  r   r   r   r,   rZ   r  r-   r2   r   r   s          r   test_join_many_sort_uniquez#TestJoin.test_join_many_sort_unique  s     YYY'yyy999iii(			:::'>> yyyyyy!A!ASSSHH yyyyyy!A!ASSSH'>>T>**,,H#Cd33
fh/////r!   c                 n   t          dg dig d          }t          dg dig d          }|dk    rt          d	d
gddgdddg          }n|dk    r&t          g dt          j        ddgdg d          }nu|dk    r1t          t          j        ddt          j        gg ddg d          }n>t          ddt          j        t          j        dgddddt          j        gdg d          }|r|                                }|                    |g||          }t          j        ||           d S )NrE   r  )r   r   r   rL   rF   r  r}  rj   r   r   r>   r   r   rX   g      @rb   r6   r7   )r0   r>   r>   r  )r   r   r   r)   r5   g      @r8   )r   r   r)   r   r   r~  )r   r   rP  r  r   r   r   r  s          r   test_join_many_sort_nonuniquez&TestJoin.test_join_many_sort_nonunique  s    YYY'yyy999iii(			:::'>> 1vQF!;!;Aq6JJJHHF]] iirvsC&899  HH G^^ vsC0|||DDLLL  HH !sBFBFC8sCbf5  &oo  H  	-**,,H#Cd33
fh/////r!   )rj   rg   rX   rb   c                    t          t          ddd          t          ddd          g          }t          dddgi|          }t          dddgi|          }|                    |g|          }|dk    r't          ddgddgd	|d         |d
         g          }nt          ddgddgd	|          }t	          j        ||           d S )Ni  r)   r   rE   rL   rF   rY   rg   r   r   )r   r   r   r   r   r   )r,   rZ   rM   r-   r2   r   r   s          r    test_join_many_datetime_unsortedz)TestJoin.test_join_many_datetime_unsorted  s     xa++XdAq-A-ABCCaV}E222q!fU333#C(('>> 1vQF!;!;E!HeTUhCWXXXHH 1vQF!;!;5IIIH
fh/////r!   c                 h   t          t          j                            d                              d          g d          }ddgdz  |d<   |j        d d d	d
gf         }|j        d d ddgf         }|j        d d dgf         }|                    ||g          }t          j        ||           d S )Nr   )r   r0   r@   r   r   r   r0   r}   rA   rB   rC   rD   )	r   r   r   r   r+   rB  r   r   r   )r,   r-   r   r2   rD  r   s         r   test_join_many_mixedzTestJoin.test_join_many_mixed  s    I!!!$$44V<<(((
 
 
 ENQ&5	fQQQc
]#fQQQc
]#fQQQZ 3*%%
fb)))))r!   c           
         t          t          t          j                            d                              d          g d          t          t          j                            d                              ddd                              dd          d	d
g          gd          }t          ||gd          }|                    |d          }|j	        |_	        t          j        ||           t          t          j                            d                              d          ddg          }t          t          j                            d                              d          ddg          }t          t          j                            d                              d          ddg          }t          t          j                            d                              d          ddg          }|                    |dd                              |ddd          }t          j        t          j        j        d          5  |                    |dd           d d d            d S # 1 swxY w Y   d S )Nr   )r/   r0   )rA   rA   rB   rB   r   r   r/   r=  r   rA   rC   r)   r  _2rd  )r0   r   r   yTr$  rg   )r   r   rZ   z0Passing 'suffixes' which cause duplicate columnsr   )r   r   r   r   r   r+   r5  r]  r   r   r   r   r   r   r   r(  r)  r*  )	r,   r-   r   r   wr   r  zdtas	            r   test_join_dupszTestJoin.test_join_dups  s   I))!,,<<WEE000   I))!,,55a"5EEMMbRSTT #J  	 
 
 
 2r(+++T**!)
fh/// I!!!$$44V<<sCj
 
 
 I!!!$$44V<<sCj
 
 
 I!!!$$44V<<sCj
 
 
 I!!!$$44V<<sCj
 
 
 ggaDdg;;AA$Dg B 
 
 ]I D
 
 
 	< 	< IIaDdI;;;		< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   I>>JJc                    t          j        t          d          t          d          ddggg d          }t          dt	          d          i|	          }t          j        t          d          t          d          gddg          }t          d
d t	          dd          D             i|	          }|                    |ddg|          }|                                                    |                                ddg|                              g d          }t          j
        ||           d}t          j        t          |          5  |                    |d|           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    |ddg|           d d d            d S # 1 swxY w Y   d S )Nr   xyr)   r   )r   r  numr   v1   rL   v2c                     g | ]}d |z  S )r2  rt  )ru  is     r   rw  z5TestJoin.test_join_multi_to_multi.<locals>.<listcomp>   s    !?!?!?a#'!?!?!?r!   r!  rc   r   r   )r   r   r   r   r   r   r  r   r'  r   r   r   r   r   )	r,   r   	leftindexrX   
rightindexrb   r   r   r   s	            r   test_join_multi_to_multiz!TestJoin.test_join_multi_to_multi  sU   +%[[$t**q!f-5I5I5I
 
 
	 $b		*)<<<,%[[$t**%eT]
 
 

 4!?!?5A;;!?!?!?@
SSS5eT]	BBU5$$&&E4=iUHHY+++,, 	
 	h///W]:S111 	5 	5IIe)I444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 ]:S111 	> 	>JJt9J===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s$   E;;E?E?!G		GGc                    t          t          j        ddd          t          d          d          }t          t          j        ddd          t          d          d	          }|                    |                    d
          d
          }|                                }t          t          j	        gdz  t          d          z             |d<   t          j        ||           d S )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'  copyr   r   rP  r   r   )r,   r   r2   r   r   s        r   #test_join_on_tz_aware_datetimeindexz,TestJoin.test_join_on_tz_aware_datetimeindex1  s    &6G   W	 
 
 &6G   w--	 
 
 #--//F;;88::#RVHqL4;;$>??
fh/////r!   c                 r   t          g dg dg dg dgg d          }t          j        |d                                       d          |d<   t          g d	g d
gg dddg          }t          j        |d                                       d          |d<   |                    |                    ddg          ddg          }t          t          d          dddgt          d          dddggddgg d          }|d                             d          |d<   t          j        ||           d S )N)
2012-08-02Lr/   )r  Jr   )
2013-04-06r  r=  )r  r     )r   r  rE   r   r   zM8[ns])r  r  r)   )r  r  r   )r   r  r  r   r0   r[  r  rV   z2012-08-02 00:00:00r  r)   r   z2013-04-06 00:00:00r  r=  )r   r  r  rE   r   )	r   r(  to_datetimer6  r   r'  r	   r   r   )r,   dfadfbr   r   s        r   test_join_datetime_stringz"TestJoin.test_join_datetime_stringI  s   ''''''''''''	 $OO
 
 
 >#c(++228<<C###%;%;%;<#OOa&
 
 

 >#c(++228<<C#--c
33c
CC01132>01132> a&(((
 
 
 !,,X66
fh/////r!   c                    ddg}t          j        ||          }t          j        t          |          t          |                    }t          d|i|          }t          dt          |          i|          }|                    |          }t          ddgddgdt          j        ddgddg                    }t          j        ||           d S )NrE   rF   
categoriesc1rL   c2)r  r  )r(  CategoricalIndexreversedr   r   r   r   )r,   ixid1id2r   r2   r   r   s           r    test_join_with_categorical_indexz)TestJoin.test_join_with_categorical_indexg  s    3Z!"444!(2,,8B<<HHHr
#...x||,C888#:c3Z00%sCjc3ZHHH
 
 
 	fh/////r!   )7__name__
__module____qualname__r   fixturer-   r2   rT   r`   rd   rh   rk   rs   rw   markparametrizeparamtd
skip_if_nor   r   r   r   r   arrayr   r   r   r   r   r   r   r   r   r   r   r	  r  r-  r;  rI  rN  rR  r^  rm  r{  r  r  r  r  r  r  r  r  r  rt  r!   r   r#   r#   $   s       ^  ^ ^
 
 ^
 ^  ^ H H HI I II I II I I$ $ $	$ 	$ 	$ [Ty9Q9Q R R RS #( #( #(J: : :$: : :$= = =$ [\AudHBHaV<L<L+MNN= = ON= 0 0 0
! 
! 
!
< 
< 
<0 0 00 0 00 0 00 0 0$0 0 0@F F F
  )2 )2 )2V:0 :0 :0|G G G& & &B4, 4, 4,l [Ty9Q9Q R R RS M M M,0 0 0&0 0 0& & &*1 1 1< [U$G$G$GHH0 0 IH0 [U$G$G$GHH0 0 IH06 [U$G$G$GHH0 0 IH0* * *+< +< +<Z> > >60 0 000 0 0<0 0 0 0 0r!   r#   rX   _x_yc                     |D ]0}||                                                                          sJ 1|                     |          }|                    |          }	|                    |          D ]	\  }
}t          || j        |          }t          ||j        |          }	 |                    |
          }t          ||           nE# t          $ r8}|dv rt          d|
 d          |t          || j        |           Y d }~nd }~ww xY w	 |	                    |
          }t          ||           # t          $ r9}|dv rt          d|
 d          |t          ||j        |           Y d }~d }~ww xY wd S )N)rX   rj   zkey z! should not have been in the join)rb   rj   )
r   r   r%  _restrict_to_columnsr   	get_group_assert_same_contentsr   AssertionError_assert_all_na)rX   rb   r   r   rZ   r   r   rG   left_groupedright_grouped	group_keygroupl_joinedr_joinedlgrouperrrgroups                    r   r\   r\   w  s    ' 'ay  $$&&&&&&<<))LMM(++M"NN844 4 4	5't|WEE'u}gFF
	4!++I66F "(F3333  	= 	= 	='''$G9GGG  8T\8<<<<<<<<	=
	4",,Y77F "(F3333  	> 	> 	>((($G9GGG  8U]H========	>%4 4s0   &C
D.D		DD88
E;.E66E;c                     fd| j         D             }| j        d d |f         } |                     fd          } | j        d d f         } | S )Nc                 L    g | ] }|v s|                     d           v |!S ) replace)ru  rG   r   suffixs     r   rw  z(_restrict_to_columns.<locals>.<listcomp>  s@       ALLAIIfb4I4IW4T4T4T4T4Tr!   c                 0    |                      d          S )Nr  r  )r   r  s    r   <lambda>z&_restrict_to_columns.<locals>.<lambda>  s    199VR+@+@ r!   r   )r   rB  r   )r  r   r  founds    `` r   r  r    s        =  E
 IaaahE LL!@!@!@!@LAAE Iaaaj!ELr!   c                 R   d}|                      |                                          j        }|                     |                                          j        }d |D             t                    t          |          k    sJ t	          fd|D                       sJ d S )Niy)c                 ,    h | ]}t          |          S rt  tuple)ru  rows     r   	<setcomp>z(_assert_same_contents.<locals>.<setcomp>  s    ***3E#JJ***r!   c              3   :   K   | ]}t          |          v V  d S Nr  )ru  r  rowss     r   	<genexpr>z(_assert_same_contents.<locals>.<genexpr>  s.      55cuSzzT!555555r!   )fillnadrop_duplicatesr  r   r   )
join_chunkrS   NA_SENTINELjvaluessvaluesr  s        @r   r  r    s    K,,<<>>EGmmK((88::AG**'***Dt99F####5555W5555555555r!   c                 v    |D ]5}||v r| |                                                                          sJ 6d S r  )r   r   )r  source_columnsr   rG   s       r   r  r    sR     * *==!}!!##''))))))* *r!   c                 @   | j                             |j         |          }|                     |          }|                    |          }| j                            |j                  }|                                D ]
\  }}|||<   |                    |          S )NrY   r   )rM   r   r   r   appenditems)	rE   rF   rZ   
join_indexa_reb_reresult_columnsr   r8  s	            r   r   r     s    ag3//J99Z  D99Z  DY%%ai00N**,,  QS		<<<///r!   c                  T   t          ddit          j        dgd                    } t          ddit          j        d	gd
                    }|                     |d          }t          dgdgdt          j        dgd                    }t	          j        ||           d S )NrI   r>   )r)   r   r0   r"  r   rQ   rM   r   r  )r   r   )rF   rG   rj   rY   )rI   r   )r)   r   r0   r   )rE   rF   rH   rG   rL   r   r   from_tuplesr   r   r   )rX   rb   r   r   s       r   .test_join_inner_multiindex_deterministic_orderr    s    1X$i[HHH  D 1XZ3VHJOOO  E YYu'Y**Fc$l^;OPPP  H &(+++++r!   )	input_coloutput_colsrF   rE   a_xa_yc                     t          dddgi          }t          | ddgi          }|                    |ddd          }t          |d	         g d
|d         g di          }t          j        ||           d S )NrE   r)   r   r0   crossr  r  )rZ   r   r   r   )r)   r)   r   r   )r   r0   r   r0   r   )r  r  rX   rb   r   r   s         r   test_join_crossr    s    
 cAq6]##Dy1a&)**EYYu'4YFFF+a.,,,AUVVH&(+++++r!   c                    t          ddit          j        dgd                    }t          ddit          j        d	gd
                    }|                    ||           }| dk    r.t          dgdgdt          j        dgddg                    }n-t          dgdgdt          j        dgddg                    }t	          j        ||           d S )NrG   r   )r)   r   r   r   r  rH   r0   )r   )rF   rY   rb   )rG   rH   )r   r)   rF   rE   rL   r  )r   rX   rb   r   r   s        r   test_join_multiindex_one_levelr    s   1XZ3VHJOOO  D C8:+A4&PV+W+W+WXXXEYYu)Y,,FG#QC  (&#sDDD
 
 

 #QC  (&#sDD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                    t          ddgt          | |           ddgd                              ddg          }t          g dt          ||           g d	d                              ddg          }|                    |d
d          }t          ddgt          | |           ddgddgd                              ddg          }t	          j        ||           d S )NrA   r  r)   r   )r   r   r1   r   r   )rA   rA   rB   )r   r0   r>   _leftrc  r   r   r0   )r   r   
value_leftvalue_rightr   r   r'  r   r   r   )r  r  rX   rb   r   r   s         r   1test_join_multiindex_not_alphabetical_categoricalr    s+    3Z!*DDDV	
 	
  i(#$$ 	 $__!&Z@@@YY	
 	
  i(#$$ 
 YYugxY@@F3Z!*DDDa&q6		
 	
  i(#$$  &(+++++r!   zleft_empty, how, exp)
)FrX   rX   )Frb   empty)Frj   r  )Frg   rX   )Fr  r  )TrX   r  )Trb   rb   )Trj   r  )Trg   rb   )Tr  r  c                    t          ddgddgdd                              d          }t          dgd	gd
d                              d          }| r|                    d          }n|                    d          }|                    ||          }|dk    rCt          ddgddgt          j        t          j        gd          }|                    d          }np|dk    r6t          t          j        gdgd	gd          }|                    d          }n4|dk    r.t          ddgd          }|dk    r|                    d          }|dk    r|                                }t          j	        ||           d S )Nr   r)   r   r0   rA   rB   r   rJ   rA   r>   )rA   rC   r   rY   rX   )rA   rB   rC   rb   )rB   rA   rC   r  rB   rC   r/  r  rg   )
r   r'  headr   r   rP  rename_axisr  r   r   )
left_emptyrZ   exprX   rb   r   r   s          r   test_join_emptyr  &  s     Aq6A//w???II#NNDQCqc**':::DDSIIE yy||

1YYu#Y&&F
f}}Aq6Abfbf=MNNOO%%c**	BF81#QC@@AA%%c**	c3Zw???'>>++C00H
g~~&&((&(+++++r!   c                  n   t                      } t          dg          }t          ddg          }| |z   }t          dg          }t          j        ||           ||z   }t          g d          }t          j        ||           | |z   }t          ddg          }t          j        ||           d S )Ntestr   r   r   r  )r  r   r  )r   r   r   )r   r2   rD  r   r   s        r   $test_join_empty_uncomparable_columnsr  P  s    
++C
VH
%
%
%C
UN3
4
4
4C3YF&***H&(+++3YF!@!@!@AAAH&(+++3YF.%!8999H&(+++++r!   zhow, valuesrj   r   rg   rb   r   r   r)   c                    t          t          g d          t          g d          g dd                              ddg          }t          t          g d          t          g d          g dd                              ddg          }t          t          |          t          |          ||d                              ddg          }|                    ||           }t	          j        ||           d S )	Nr   r   rE   rF   r  r"  )rE   rF   rG   rH   rY   r  )rZ   r  r   r2   r   r   s         r   3test_join_multiindex_categorical_output_index_dtyper  c  s+    YYY''YYY''	
 	
  ic
  YYY''YYY''	
 	
  ic
  V$$V$$		
 	
  ic
  XXcsX##F&(+++++r!   c                     t          ddgit          j        dgdd g                    } t          ddgit          j        dgd dg                    }|                     |          }t          dgdgd	t          j        dgdd g                    }t	          j        ||           |                    |           }t          dgdgd
t          j        dgd dg                    }t	          j        ||           d S )NrA   r)   )r   r   r  r   rL   rB   r   r  )rB   rA   r  )r   r2   result12
expected12result21
expected21s         r   'test_join_multiindex_with_none_as_labelr#    s8   
	qc
$fXc4[AAA  C 	qc
$fXdC[AAA  C
 xx}}Hc$fXc4[AAA  J (J///xx}}Hc$fXdC[AAA  J (J/////r!   )r   r   )rX   r  r  )rX   ))r   rf  numpyr   r   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr(  r   r   r   r   r   r	   r
   r   r   r   pandas._testing_testingr   r    r#   r\   r  r  r  r   r  r  r  r  r  r  r  r  r  r#  rt  r!   r   <module>r+     sp         				      ) ) ) ) ) ) ) ) )                                    P0 P0 P0 P0 P0 P0 P0 P0f"4 "4 "4 "4J  "6 6 6* * *
0 
0 
0 
0, , ,"  C#s#4sUEN6K"L , , ,, , ,( 
s___%
Q
s___%Y|$$ii&=&=>Y|$$ii&=&=yy?V?VW	
	 , , ,:    , , ,6, , ,& 	)))	)))		)))	 , , ,>0 0 0 0 0r!   