
    [6g                        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 d0dZ G d d          Zd1dZd Zd Zd Zd2d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          d/             Z&dS )3    N)
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       c/var/www/surfInsights/venv3-11/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-d. Z.d/ Z/d0 Z0d1 Z1d2 Z2d3 Z3dS )4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.df24   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)              ?g       @g      @g      @)r3   r4   r3   r4   r3   )foo1foo2foo3foo4foo5z1/1/2009   )periodsABCD)abcdedtypeindexr=   r@   )MergedAMergedDr?   )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,   r1   joined_key2joined_boths        r   test_left_outer_joinzTestJoin.test_left_outer_joinO   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rS   rV   rU   r$   rW   rY   s        r   test_right_outer_joinzTestJoin.test_right_outer_joinV   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%   outerr_   rU   r$   rW   rY   s        r   test_full_outer_joinzTestJoin.test_full_outer_join]   ra   r    c                     t          ||dd          }t          |||dgd           t          ||d          }t          |||ddgd           d S )Nr%   innerr_   rU   r$   rW   rY   s        r   test_inner_joinzTestJoin.test_inner_joind   ra   r    c                 D    t          ||dd          }d|v sJ d|v sJ d S )Nr%   z.fooz.bar)rS   suffixeskey1.foozkey1.barr   r+   r,   r1   joineds       r   test_handle_overlapzTestJoin.test_handle_overlapk   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$   ri   )left_onright_onrj   rk   zkey2.barrl   rm   s       r   !test_handle_overlap_arbitrary_keyz*TestJoin.test_handle_overlap_arbitrary_keyq   sO    %
 
 
 V####V######r    infer_stringFTpyarrow)marksc                 v   |\  }}|                     |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 )Nr?   rR   rJ   r=   F)check_namesrK   r@   keyrA   rA   rB   rB   rC   r0   r   r(   r   rA   rB   rC   rH   )r   r   r(   r(   r   ry   r0   r(   r      onerI   columnsfoobartwothreerC   z^'E'$matchEzyYou are trying to merge on float64 and object|string columns for key 'A'. If you wish to proceed you should use pd.concat)jointmassert_series_equalr   assert_frame_equalr   isnanpytestraisesKeyErrorcopy
ValueError)r+   rP   rt   rN   rO   mergedr,   r1   rn   expecteddf_adf_bdf_csource_copy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'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( kkmmC 	 ]:S111 	- 	-KKK,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s$   )GGG	H..H25H2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rA   rB   r.   r:   r=   r>   rH   Flen\(left_on\) must equal the number of levels in the index of "right"r   rA   Trq   right_indexr   r   r   r   choicer*   r   from_productr   r   r   r   r   r+   r,   r1   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   abcrH   r.   zFlen\(right_on\) must equal the number of levels in the index of "left"r   rB   T)rr   
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:   r=   r>   rH   z)len\(right_on\) must equal len\(left_on\)r   rA   rB   )rr   rq   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 )NrA   r(   z.Can only merge Series or DataFrame objects, a z was passedr   )rq   rr   )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 )Nr?   rR   key_0r   )r   r=   r>   r@   rJ   rK   )r   renamepopr   r   )r+   rP   rN   rO   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 )Nr?   rR   rf   r_   r   )r   reindexisnaallr   assert_index_equalr   r   )r+   rP   rN   rO   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 )Nry   )rA   rA   rD   rB   rB   rC   r0   r   r(   rA   rB   rH   rf   r_   rR   F)check_dtype)r   r   notnar   r   r   rI   r+   r,   r1   rn   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 )Nry   rz   r0   r{   r|   rH   rR   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 )NrJ   r?   rR   r   r   r   )r+   rP   rN   rO   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 )	NrA   r(   r   rB   rI   namerR   r   rH   )r   r   r   rI   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.   rH   Tboolr   stringr:      r(   intr4   floatrU   )r   r   aranger   _join_by_handr   r   )r+   	join_typedf1r1   rn   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 )Nr4   r   r   Tr<   r.   r   r>   r@   r   _one_twolsuffixrsuffix)A_oneB_oneC_oneD_oneA_twoB_twoC_twoD_twor/   )r   r   r   rG   int64bool_r   r   r   r   r   )r+   r   r1   rn   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   r=   r   rc   rU   )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   rA   rB   r   r   rC   )r   r(   q)r   r   r   r   r*   r   r   )r+   rA   rC   rD   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)rA   rA   rA   rB   rB   rB   )r(   r   r~   r(   r   r~   firstsecondnames)rB   rB   rB   rC   rC   rC   r      zvar X)rM   rI   r   zvar Yr   )levelrc   rU   r(   )r   r   r   r   r   r   r*   
sort_indexr   r   valuesunionr   r   rI   r   r   )r+   index1index2r   r1   rn   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%   rM   )r.   r~   )j_onej_twoj_threer   r$   r%   rf   r_   r   r   F)rq   rr   rV   sortT)rr   r   rV   r  r(   axis)r   r   r   r*   r   r   r   r   reset_indexr   r   reindex_likedroprI   is_monotonic_increasing)
r+   %lexsorted_two_level_string_multiindexr$   r%   rM   rI   to_joinrn   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~   )r/   r:   r   r|   r   rA   rB   meansum)   r.   r   rA   rB   rD   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   rA   rB   r   rG   )r.   r(   rC   float64float32r   r:   d   r   r|   mdr   Tr   )r   r   r   r   r*   r,  r-  r   dtypesintegersastyper   r   r   )
r+   rA   rB   rn   rC   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   r.     r      )rA   rB   rE   rA   rB   rc   rU   r_   r   )r(   r(   r(   )r.   r9  r   )r(   r(   r   )r.  r:  i,  )r;  r<  i  rf   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r<   TESTr   rT   r^   )r   r#  r   r   r  r   rA   r2  rB   r   r   locr   r   r   r*   r   repeatr   )r+   r   r1   df3idf1idf2idf3r   df_partially_mergedr   r,   r4  rf   rc   rT   r^   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~   r/   r}   value2r|   )r   r	  r   rH   ry   T)rS   r  )r   r	  r   r   )r   r~   r(   r/   )rA   rB   rC   rC   )ry   r0   rH  )r(   r   r   r~   Fr/   )exact)	r   r   r   r   r   r   rI   r   r   )r+   rt   rT   r^   rn   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 )NrA   rG  )r(   r   r~   rA   rH   rB   )r:   r   r  r   )r(   r~   r~   r/   )r(   r   r~   r~   r/   r:   r   r  r   )r(   r   r~   r~   rA   )r(   r   r   rA   )r   r   r   nanr   r   )r+   r   r1   r   r   r@  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   rf   _df2)rV   r   rF   r   r(   pnum_df2r   rI   )r$  period_ranger   r   r   r   r
   r   r   r   r   r   r?  reshaper  rI   r   r   )r+   rI   r,   r1   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                 J   t          t          j                            d                              d          g d          }|                    ddd           |                    ddd	           |                    d          }t          j        d
          }t          j
        t          |          5  |                                 d d d            n# 1 swxY w Y   |                    d          }|                                }|                    |d           d S )Nr   )r9  r   )rA   rB   rC   rD   rE   r   r   r   idr:   dtr   z&agg function failed [how->mean,dtype->r   T)numeric_only_rightr   )r   r   r   r   r*   insertr!  reescaper   r   r   r  countr   )r+   r,   groupedr   mncns         r    test_mixed_type_join_with_suffixz)TestJoin.test_mixed_type_join_with_suffixp  sD   I!!!$$44W==222
 
 
 			!T1
		!T5!!!**T""i@AA]9C000 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	\\t\,,]]__ 	H%%%%%s   6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   rA   rB   rC   rD   rE   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   rq  	reindexedr   s     `  r   _check_diff_indexz2TestJoin.test_join_many.<locals>._check_diff_index  sT    ????w???I |((12277H!&(33333r    rc   rU   rf   r   z?Joining multiple DataFrames only supported for joining on indexr   rR   )r   r   r   r   r*   r   r   r   r   rI   r   r   r   )r+   r,   rs  rn   ru  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!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   r/   r<   r   r   r   r/   ry   r=   r>   r?   r@   )	r   r   r   r   r*   r>  r   r   r   )r+   r,   r   r1   r@  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.   r/   )r=   r=   r>   r>   r   r   r.   r9  r   r=   r?   r(   r  _2r`  )r/   r   r   yTr   rc   )r   r   rV   z0Passing 'suffixes' which cause duplicate columnsr   )r
   r   r   r   r   r*   r1  rY  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   rH   v2c                     g | ]}d |z  S )r.  ro  )rp  is     r   rr  z5TestJoin.test_join_multi_to_multi.<locals>.<listcomp>  s    !?!?!?a#'!?!?!?r    r  r_   r   r   )r   r   r   r   r   r   r  r   r#  r   r   r   r   r   )	r+   r   	leftindexrT   
rightindexr^   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  rR   r   tuvr  )r   r$  
date_ranger   r   r#  r   r   r   rL  r   r   )r+   r   r1   r   r   s        r   #test_join_on_tz_aware_datetimeindexz,TestJoin.test_join_on_tz_aware_datetimeindex  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  r9  )r  r     )r   r{  rA   r   r   zM8[ns])r  r  r(   )r  r  r   )r   r{  r}  r   r/   rW  r{  rR   z2012-08-02 00:00:00r  r(   r   z2013-04-06 00:00:00r  r9  )r   r{  r}  rA   r   )	r   r$  to_datetimer2  r   r#  r   r   r   )r+   dfadfbr   r   s        r   test_join_datetime_stringz"TestJoin.test_join_datetime_string  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 )NrA   rB   
categoriesc1rH   c2)r  r  )r$  CategoricalIndexreversedr   r   r   r   )r+   ixid1id2r   r1   r   r   s           r    test_join_with_categorical_indexz)TestJoin.test_join_with_categorical_index,  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    )4__name__
__module____qualname__r   fixturer,   r1   rP   r\   r`   rd   rg   ro   rs   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)  r7  rE  rJ  rN  rZ  rh  rv  rx  r  r  r  r  r  ro  r    r   r"   r"   #   sy       ^  ^ ^
 
 ^
 ^  ^ H H HI I II I II I I$ $ $	$ 	$ 	$ [Ty9Q9Q R R RS $- $- $-L: : :$: : :$= = =$ [\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<* * *+< +< +<Z> > >60 0 000 0 0<0 0 0 0 0r    r"   rT   _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)rT   rf   zkey z! should not have been in the join)r^   rf   )
r   r   r!  _restrict_to_columnsr   	get_group_assert_same_contentsr   AssertionError_assert_all_na)rT   r^   r   r   rV   r   r   rC   left_groupedright_grouped	group_keygroupl_joinedr_joinedlgrouperrrgroups                    r   rX   rX   <  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)rp  rC   r   suffixs     r   rr  z(_restrict_to_columns.<locals>.<listcomp>b  s@       ALLAIIfb4I4IW4T4T4T4T4Tr    c                 0    |                      d          S )Nr  r  )r   r  s    r   <lambda>z&_restrict_to_columns.<locals>.<lambda>j  s    199VR+@+@ r    r   )r   r>  r   )r  r   r  founds    `` r   r  r  a  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 ro  tuple)rp  rows     r   	<setcomp>z(_assert_same_contents.<locals>.<setcomp>x  s    ***3E#JJ***r    c              3   :   K   | ]}t          |          v V  d S Nr  )rp  r  rowss     r   	<genexpr>z(_assert_same_contents.<locals>.<genexpr>z  s.      55cuSzzT!555555r    )fillnadrop_duplicatesr  r   r   )
join_chunkrO   NA_SENTINELjvaluessvaluesr  s        @r   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   rC   s       r   r  r  }  sR     * *==!}!!##''))))))* *r    c                 @   | j                             |j         |          }|                     |          }|                    |          }| j                            |j                  }|                                D ]
\  }}|||<   |                    |          S )NrU   r   )rI   r   r   r   appenditems)	rA   rB   rV   
join_indexa_reb_reresult_columnsr   r4  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 )NrE   r:   )r(   r   r/   r  r   rM   rI   r   r   )r   r~   )rB   rC   rf   rU   )rE   r   )r(   r   r/   r~   )rA   rB   rD   rC   rH   r   r   from_tuplesr   r   r   )rT   r^   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_colsrB   rA   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 )NrA   r(   r~   r/   crossr  r  )rV   r   r   r   )r(   r(   r~   r~   )r~   r/   r~   r/   r   )r  r  rT   r^   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 )NrC   r~   )r(   r   r   r   r  rD   r/   )r   )rB   rU   r^   )rC   rD   )r   r(   rB   rA   rH   r  )r   rT   r^   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 )Nr=   r  r(   r   )r   r   r0   r   r   )r=   r=   r>   )r~   r/   r:   _leftr_  r   r~   r/   )r   r   
value_leftvalue_rightr   r   r#  r   r   r   )r  r  rT   r^   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)
)FrT   rT   )Fr^   empty)Frf   r   )Frc   rT   )Fr  r   )TrT   r   )Tr^   r^   )Trf   r   )Trc   r^   )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~   r/   )r=   r>   r   rF   r=   r:   )r=   r?   r   rU   rT   )r=   r>   r?   r^   )r>   r=   r?   r   r>   r?   r+  r  rc   )
r   r#  headr   r   rL  rename_axisr  r   r   )
left_emptyrV   exprT   r^   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   r1   r@  r   r   s        r   $test_join_empty_uncomparable_columnsr
    s    
++C
VH
%
%
%C
UN3
4
4
4C3YF&***H&(+++3YF!@!@!@AAAH&(+++3YF.%!8999H&(+++++r    zhow, valuesrf   r{   rc   r^   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|   rA   rB   r  r  )rA   rB   rC   rD   rU   r  )rV   r  r   r1   r   r   s         r   3test_join_multiindex_categorical_output_index_dtyper  (  s+    YYY''YYY''	
 	
  ic
  YYY''YYY''	
 	
  ic
  V$$V$$		
 	
  ic
  XXcsX##F&(+++++r    )r   r   )rT   r  r  )rT   )'rb  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"   rX   r  r  r  r   r  r  r  r  r  r  r  r
  r  ro  r    r   <module>r     sO   				      ) ) ) ) ) ) ) ) )                                    V0 V0 V0 V0 V0 V0 V0 V0r"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, , ,& 	)))	)))		)))	 , , , , ,r    