
    bMhؓ                        d dl Z d dlZd dlZd dlm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 d1dZ G d d          Zd2dZd Zd Zd Zd3d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(dS )4    N)using_string_dtype)
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       d/var/www/html/test/jupyter/venv/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!ej        "                     e#            d"#          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/d0 Z0d1 Z1d2 Z2d3 Z3d4 Z4d5 Z5dS )6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.df26   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      @)r4   r5   r4   r5   r4   )foo1foo2foo3foo4foo5z1/1/2009   )periodsABCD)abcdedtypeindexr>   rA   )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-   r2   joined_key2joined_boths        r   test_left_outer_joinzTestJoin.test_left_outer_joinQ   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rT   rW   rV   r%   rX   rZ   s        r   test_right_outer_joinzTestJoin.test_right_outer_joinX   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`   rV   r%   rX   rZ   s        r   test_full_outer_joinzTestJoin.test_full_outer_join_   rb   r!   c                     t          ||dd          }t          |||dgd           t          ||d          }t          |||ddgd           d S )Nr&   innerr`   rV   r%   rX   rZ   s        r   test_inner_joinzTestJoin.test_inner_joinf   rb   r!   c                 D    t          ||dd          }d|v sJ d|v sJ d S )Nr&   z.fooz.bar)rT   suffixeskey1.foozkey1.barr   r,   r-   r2   joineds       r   test_handle_overlapzTestJoin.test_handle_overlapm   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%   rj   )left_onright_onrk   rl   zkey2.barrm   rn   s       r   !test_handle_overlap_arbitrary_keyz*TestJoin.test_handle_overlap_arbitrary_keys   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@   rS   rK   r>   F)check_namesrL   rA   keyrB   rB   rC   rC   rD   r1   r   r)   r   rB   rC   rD   rI   )r   r   r)   r)   r   rz   r1   r)   r      onerJ   columnsfoobartwothreerD   z^'E'$matchEzvYou are trying to merge on float64 and object|str columns for key 'A'. If you wish to proceed you should use pd.concat)jointmassert_series_equalr   assert_frame_equalr   isnanpytestraisesKeyErrorcopy
ValueError)r,   rQ   ru   rO   rP   mergedr-   r2   ro   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rB   rC   r/   r;   r>   r?   rI   Flen\(left_on\) must equal the number of levels in the index of "right"r   rB   Trr   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   abcrI   r/   zFlen\(right_on\) must equal the number of levels in the index of "left"r   rC   T)rs   
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?   rI   z)len\(right_on\) must equal len\(left_on\)r   rB   rC   )rs   rr   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 )NrB   r)   z.Can only merge Series or DataFrame objects, a z was passedr   )rr   rs   )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@   rS   key_0r   )r   r>   r?   rA   rK   rL   )r   renamepopr   r   )r,   rQ   rO   rP   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@   rS   rg   r`   r   )r   reindexisnaallr   assert_index_equalr   r   )r,   rQ   rO   rP   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 )Nrz   )rB   rB   rE   rC   rC   rD   r1   r   r)   rB   rC   rI   rg   r`   rS   F)check_dtype)r   r   notnar   r   r   rJ   r,   r-   r2   ro   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 )Nrz   r{   r1   r|   r}   rI   rS   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 )NrK   r@   rS   r   r   r   )r,   rQ   rO   rP   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 )	NrB   r)   r   rC   rJ   namerS   r   rI   )r   r   r   rJ   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/   rI   Tboolr   stringr;      r)   intr5   floatrV   )r   r   aranger   _join_by_handr   r   )r,   	join_typedf1r2   ro   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   r?   rA   r   _one_twolsuffixrsuffix)A_oneB_oneC_oneD_oneA_twoB_twoC_twoD_twor0   )r   r   r   rH   int64bool_r   r   r   r   r   )r,   r   r2   ro   expected_columnsr   s         r   test_join_index_mixed_overlapz&TestJoin.test_join_index_mixed_overlap:  s   AE55)B--(((
 
 

 3x~))))3x~))))AE55)Ar1%%(((
 
 
 #vv>>	
 	
 	
 'rr*&qrr* c**
fh/////r!   zTODO(infer_string))reasonc                 v    t                      }|                    t          dgdgdg          d           d S )Nr   r   r>   r   rd   rV   )r   r   )r,   xs     r   test_join_empty_bugzTestJoin.test_join_empty_bug[  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   rB   rC   r   r   rD   )r   r)   q)r   r   r   r   r+   r   r   )r,   rB   rD   rE   s       r   test_join_unconsolidatedz!TestJoin.test_join_unconsolidateda  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)rB   rB   rB   rC   rC   rC   )r)   r   r   r)   r   r   firstsecondnames)rC   rC   rC   rD   rD   rD   r      zvar X)rN   rJ   r   zvar Yr   )levelrd   rV   r)   )r   r   r   r   r   r   r+   
sort_indexr   r   valuesunionr   r   rJ   r   r   )r,   index1index2r   r2   ro   ex_indexr   s           r   test_join_multiindexzTestJoin.test_join_multiindexn  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&   rN   )r/   r   )j_onej_twoj_threer   r%   r&   rg   r`   r   r   F)rr   rs   rW   sortT)rs   r   rW   r  r)   axis)r   r   r   r+   r   r   r   r   reset_indexr   r   reindex_likedroprJ   is_monotonic_increasing)
r,   %lexsorted_two_level_string_multiindexr%   r&   rN   rJ   to_joinro   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   rB   rC   meansum)   r/   r  rB   rC   rE   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   rB   rC   r   rH   )r/   r)   rD   float64float32r   r;   d   r   r}   mdr   Tr   )r   r   r   r   r+   r.  r/  r   dtypesintegersastyper   r   r   )
r,   rB   rC   ro   rD   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   r0     r       )rB   rC   rF   rB   rC   rd   rV   r`   r   )r)   r)   r)   )r/   r;  r   )r)   r)   r   )r0  r<  i,  )r=  r>  i  rg   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r=   TESTr   rU   r_   )r   r%  r   r   r  r   rB   r4  rC   r   r   locr   r   r   r+   r   repeatr   )r,   r   r2   df3idf1idf2idf3r   df_partially_mergedr   r-   r6  rg   rd   rU   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   r0   r~   value2r}   )r   r  r   rI   rz   T)rT   r  )r   r  r   r   )r   r   r)   r0   )rB   rC   rD   rD   )rz   r1   rJ  )r)   r   r   r   Fr0   )exact)	r   r   r   r   r   r   rJ   r   r   )r,   ru   rU   r_   ro   r   s         r   test_join_sortzTestJoin.test_join_sort;  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 )NrB   rI  )r)   r   r   rB   rI   rC   )r;   r  r  r   )r)   r   r   r0   )r)   r   r   r   r0   r;   r  r  r   )r)   r   r   r   rB   )r)   r   r   rB   )r   r   r   nanr   r   )r,   r   r2   r   r   rB  df4s          r    test_join_mixed_non_unique_indexz)TestJoin.test_join_mixed_non_unique_indexT  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   rg   _df2)rW   r   rG   r   r)   pnum_df2r   rJ   )r&  period_ranger   r   r   r   r   r   r   r   r   r   rA  reshaper  rJ   r   r   )r,   rJ   r-   r2   r   r   s         r   !test_join_non_unique_period_indexz*TestJoin.test_join_non_unique_period_indexg  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  )rB   rC   rD   rE   rF   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_suffixt  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   rB   rC   rD   rE   rF   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   rt  	reindexedr   s     `  r   _check_diff_indexz2TestJoin.test_join_many.<locals>._check_diff_index  sT    ????w???I |((12277H!&(33333r!   rd   rV   rg   r   z?Joining multiple DataFrames only supported for joining on indexr   rS   )r   r   r   r   r+   r   r   r   r   rJ   r   r   r   )r,   r-   rv  ro   rx  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   r0   r=   r   r   r   r0   rz   r>   r?   r@   rA   )	r   r   r   r   r+   r@  r   r   r   )r,   r-   r   r2   rB  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   )r>   r>   r?   r?   r   r   r/   r;  r   r>   r@   r)   r  _2rb  )r0   r   r   yTr"  rd   )r   r   rW   z0Passing 'suffixes' which cause duplicate columnsr   )r   r   r   r   r   r+   r3  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   rI   v2c                     g | ]}d |z  S )r0  rr  )rs  is     r   ru  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   	leftindexrU   
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  rS   r   tuvr  )r   r&  
date_ranger   r   r%  r   r   r   rN  r   r   )r,   r   r2   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  r;  )r  r     )r   r~  rB   r   r   zM8[ns])r  r  r)   )r  r  r   )r   r~  r  r   r0   rY  r~  rS   z2012-08-02 00:00:00r  r)   r   z2013-04-06 00:00:00r  r;  )r   r~  r  rB   r   )	r   r&  to_datetimer4  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 )NrB   rC   
categoriesc1rI   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_index2  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!   )6__name__
__module____qualname__r   fixturer-   r2   rQ   r]   ra   re   rh   rp   rt   markparametrizeparamtd
skip_if_nor   r   r   r   r   arrayr   r   r   r   r   r   r   r   r   xfailr   r   r   r	  r  r+  r9  rG  rL  rP  r\  rk  ry  r{  r  r  r  r  r  rr  r!   r   r#   r#   %   s       ^  ^ ^
 
 ^
 ^  ^ 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 0B [))++4HIIF F JI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#   rU   _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)rU   rg   zkey z! should not have been in the join)r_   rg   )
r   r   r#  _restrict_to_columnsr   	get_group_assert_same_contentsr   AssertionError_assert_all_na)rU   r_   r   r   rW   r   r   rD   left_groupedright_grouped	group_keygroupl_joinedr_joinedlgrouperrrgroups                    r   rY   rY   B  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)rs  rD   r   suffixs     r   ru  z(_restrict_to_columns.<locals>.<listcomp>h  s@       ALLAIIfb4I4IW4T4T4T4T4Tr!   c                 0    |                      d          S )Nr  r  )r   r  s    r   <lambda>z&_restrict_to_columns.<locals>.<lambda>p  s    199VR+@+@ r!   r   )r   r@  r   )r  r   r  founds    `` r   r  r  g  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 rr  tuple)rs  rows     r   	<setcomp>z(_assert_same_contents.<locals>.<setcomp>~  s    ***3E#JJ***r!   c              3   :   K   | ]}t          |          v V  d S Nr  )rs  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_chunkrP   NA_SENTINELjvaluessvaluesr  s        @r   r  r  x  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   rD   s       r   r  r    sR     * *==!}!!##''))))))* *r!   c                 @   | j                             |j         |          }|                     |          }|                    |          }| j                            |j                  }|                                D ]
\  }}|||<   |                    |          S )NrV   r   )rJ   r   r   r   appenditems)	rB   rC   rW   
join_indexa_reb_reresult_columnsr   r6  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 )NrF   r;   )r)   r   r0   r   r   rN   rJ   r   r  )r   r   )rC   rD   rg   rV   )rF   r   )r)   r   r0   r   )rB   rC   rE   rD   rI   r   r   from_tuplesr   r   r   )rU   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_colsrC   rB   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 )NrB   r)   r   r0   crossr  r  )rW   r   r   r   )r)   r)   r   r   )r   r0   r   r0   r   )r  r  rU   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 )NrD   r   )r)   r   r   r   r  rE   r0   )r   )rC   rV   r_   )rD   rE   )r   r)   rC   rB   rI   r  )r   rU   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   r1   r   r   )r>   r>   r?   )r   r0   r;   _leftra  r   r   r0   )r   r   
value_leftvalue_rightr   r   r%  r   r   r   )r  r  rU   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)
)FrU   rU   )Fr_   empty)Frg   r  )Frd   rU   )Fr  r  )TrU   r  )Tr_   r_   )Trg   r  )Trd   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   r0   )r>   r?   r   rG   r>   r;   )r>   r@   r   rV   rU   )r>   r?   r@   r_   )r?   r>   r@   r  r?   r@   r-  r  rd   )
r   r%  headr   r   rN  rename_axisr  r   r   )
left_emptyrW   exprU   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   r2   rB  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, valuesrg   r|   rd   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}   rB   rC   r  r   )rB   rC   rD   rE   rV   r  )rW   r  r   r2   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   )rU   r  r  )rU   ))rd  numpyr   r   pandas._configr   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr&  r   r   r   r   r   r	   r
   r   r   r   pandas._testing_testingr   r    r#   rY   r  r  r  r   r  r  r  r  r  r  r
  r  r  rr  r!   r   <module>r     sa   				      - - - - - - ) ) ) ) ) ) ) ) )                                    Z0 Z0 Z0 Z0 Z0 Z0 Z0 Z0z"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!   