o
    hؓ                     @   s  d dl Z d dlZd dlZd dlmZ d dlm  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 d>ddZG dd	 d	Zd?ddZdd Zdd Zdd Zd@ddZdd Z ej!"ddddgfdddgfgdd Z#d 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.d/ Z%ej!"d0g d1d2d3 Z&d4d5 Z'ej!"d6d7g d8fd9g d8fd
g d8fd:g d;fgd<d= Z(dS )A    N)using_string_dtype)
Categorical	DataFrameIndex
MultiIndexSeries	Timestampbdate_rangeconcatmergeoption_context   2   c                 C   sf   t t| }tt|||  }t||k r(tt ||d |t|   }tjd| |S )N   )	listrangenpasarraytilelenrandomdefault_rngshuffle)ngroupsnunique_groupsarr r   [/var/www/html/pos/venv/lib/python3.10/site-packages/pandas/tests/reshape/merge/test_join.pyget_test_data   s   "r   c                
   @   s  e Zd Zejdd Zejdd Zejdd Zdd Zd	d
 Z	dd Z
dd Zdd Zdd Zejddejdeddgdd Zdd Zdd Zdd Zejd d!d"d#ed$d%ggd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Z d6d7 Z!ejj"e# d8d9d:d; Z$d<d= Z%d>d? Z&d@dA Z'dBdC Z(dDdE Z)dFdG Z*ejddejdeddgdHdI Z+dJdK Z,dLdM Z-dNdO Z.dPdQ Z/dRdS Z0dTdU Z1dVdW Z2dXdY Z3dZd[ Z4d\d] Z5d#S )^TestJoinc                 C   sF   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dfr   r   r   r)   '   s   
zTestJoin.dfc                 C   s,   t tddtdddtjdddS )N
   )r      )r   r   r   )r!   r"   valuer&   )r(   r   r   r   df26   s   
zTestJoin.df2c                 C   s`   g dg dg dt dddd}t|tg dtd	d
}t|d |d d|d d
}||fS )N)              ?g       @g      @g      @)r.   r/   r.   r/   r.   )foo1foo2foo3foo4foo5z1/1/2009   )periodsABCD)abcdedtypeindexr8   r;   )MergedAMergedDr:   )r	   r   r   object)r(   datatargetsourcer   r   r   target_source@   s   
zTestJoin.target_sourcec                 C   sF   t ||dd}t|||dgdd t ||}t|||ddgdd d S )Nr"   onlefthowr!   r   _check_joinr(   r)   r-   joined_key2joined_bothr   r   r   test_left_outer_joinQ   s   
zTestJoin.test_left_outer_joinc                 C   L   t ||ddd}t|||dgdd t ||dd}t|||ddgdd d S )Nr"   rightrM   rP   rO   r!   rQ   rS   r   r   r   test_right_outer_joinX      zTestJoin.test_right_outer_joinc                 C   rW   )Nr"   outerrY   rO   r!   rQ   rS   r   r   r   test_full_outer_join_   r[   zTestJoin.test_full_outer_joinc                 C   rW   )Nr"   innerrY   rO   r!   rQ   rS   r   r   r   test_inner_joinf   r[   zTestJoin.test_inner_joinc                 C   s,   t ||ddd}d|v sJ d|v sJ d S )Nr"   z.fooz.bar)rM   suffixeskey1.foozkey1.barr   r(   r)   r-   joinedr   r   r   test_handle_overlapm   s   zTestJoin.test_handle_overlapc                 C   s.   t ||dddd}d|v sJ d|v sJ d S )Nr"   r!   r`   )left_onright_onra   rb   zkey2.barrc   rd   r   r   r   !test_handle_overlap_arbitrary_keys   s   z*TestJoin.test_handle_overlap_arbitrary_keyinfer_stringFTpyarrow)marksc                 C   s  |\}}|j |dd}tj|d |d dd tj|d |d dd td	g d
i}tdg dig dd}|j |d	d}tg d
g dd}	t||	 tdgdgdggg ddgd}
tdgdggddgdgd}tdgdggddgdgd}|
j |dd}|j |dd}t|d d sJ t|d d sJ tjt	dd |j |dd W d    n1 sw   Y  |
 }d}tjt|d |j |dd W d    d S 1 sw   Y  d S )Nr:   rL   rE   r8   F)check_namesrF   r;   keyr<   r<   r=   r=   r>   r,   r   r%   r   r<   r=   r>   rC   )r   r   r%   r%   r   rn   r,   r%   r      onerD   columnsfoobartwothreer>   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(   rK   rj   rI   rJ   mergedr)   r-   re   expecteddf_adf_bdf_csource_copymsgr   r   r   test_join_on~   s6    "zTestJoin.test_join_onc                 C   s   t tjdjddgddtjddd}t tjdjddgddtjdddttdd	d
ggd}d}t	j
t|d t||ddd W d    d S 1 sZw   Y  d S )Nr   mfrs   sizer<   r=   r*   r5   r8   r9   rC   Flen\(left_on\) must equal the number of levels in the index of "right"r{   r<   Trg   right_indexr   r   r   r   choicer'   r   from_productr   r   r   r   r   r(   r)   r-   r   r   r   r   -test_join_on_fails_with_different_right_index   s   "z6TestJoin.test_join_on_fails_with_different_right_indexc                 C   s   t tjdjddgddtjdddttdt	dgd}t tjdjddgd	dtjdd	d}d
}t
jt|d t||ddd W d    d S 1 sZw   Y  d S )Nr   r   r   rs   r   r   abcrC   r*   zFlen\(right_on\) must equal the number of levels in the index of "left"r{   r=   T)rh   
left_index)r   r   r   r   r   r'   r   from_arraysr   r   r   r   r   r   r   r   r   r   ,test_join_on_fails_with_different_left_index   s   "z5TestJoin.test_join_on_fails_with_different_left_indexc                 C   s   t tjdjddgddtjddd}t tjdjddgddtjdddttdd	d
ggd}d}t	j
t|d t||dddgd W d    d S 1 s\w   Y  d S )Nr   r   r   rs   r   r   r*   r5   r8   r9   rC   z)len\(right_on\) must equal len\(left_on\)r{   r<   r=   )rh   rg   r   r   r   r   r   /test_join_on_fails_with_different_column_counts   s   "z8TestJoin.test_join_on_fails_with_different_column_counts
wrong_typer   strNr   r%   c                 C   s   t dddgi}dt| d}tjt|d t||ddd W d    n1 s*w   Y  tjt|d t||ddd W d    d S 1 sJw   Y  d S )Nr<   r%   z.Can only merge Series or DataFrame objects, a z was passedr{   )rg   rh   )r   typer   r   	TypeErrorr   )r(   r   r)   r   r   r   r   )test_join_on_fails_with_wrong_object_type   s   "z2TestJoin.test_join_on_fails_with_wrong_object_typec                 C   sZ   |\}}|j |dd}|jddid}|g d }|d}|j ||d}t|| d S )Nr:   rL   key_0rv   )r   r8   r9   r;   rE   rF   )r~   renamepopr   r   )r(   rK   rI   rJ   r   join_colresultr   r   r   test_join_on_pass_vector   s   
z!TestJoin.test_join_on_pass_vectorc                 C   s   |\}}|j |g dd}|D ]}||v sJ ||   s"J q|j |g ddd}t|j|j t|dks>J d S )Nr:   rL   r^   rY   r   )r~   reindexisnaallr   assert_index_equalrv   r   )r(   rK   rI   rJ   r   colmerged2r   r   r   test_join_with_len0   s   zTestJoin.test_join_with_len0c                 C   s   t dg di}t dddgiddgd}|j|dd	d
}|j|dd}||d   }t|d |d  tj|d |d dd t|j|j d S )Nrn   )r<   r<   r?   r=   r=   r>   r,   r   r%   r<   r=   rC   r^   rY   rL   F)check_dtype)r   r~   notnar   r   r   rD   r(   r)   r-   re   r   r   r   r   test_join_on_inner  s   zTestJoin.test_join_on_innerc                 C   sV   t dg di}t dg dig dd}|j|dgd}|j|dd}t|| d S )Nrn   ro   r,   rp   rq   rC   rL   r   r~   r   r   r   r   r   r   test_join_on_singlekey_list  s
   z$TestJoin.test_join_on_singlekey_listc                 C   s>   |\}}|j |d dd}|j |dg dd}t|| d S )NrE   r:   rL   r~   r   r   )r(   rK   rI   rJ   r   r   r   r   r   test_join_on_series  s   zTestJoin.test_join_on_seriesc                 C   s\   t dddgi}tdgdgdd}|j|dd}t ddgddgd|jd}t|| d S )	Nr<   r%   r   r=   rD   namerL   r   rC   )r   r   r~   rD   r   r   )r(   r)   dsr   r   r   r   r   test_join_on_series_buglet   s
   z#TestJoin.test_join_on_series_bugletc                 C   s   t tdd}d|d< d|d< t tddd}d	|d
< d|d< |j||d}t|||d}t|| |j||d}t|||d}t|| d S )Nr*   rC   Tboolrw   stringr5      r%   intr/   floatrO   )r   r   aranger~   _join_by_handr   r   )r(   	join_typedf1r-   re   r   r   r   r   test_join_index_mixed(  s   zTestJoin.test_join_index_mixedc                 C   s   t dddddtdg dd}|d jtjksJ |d	 jtjks%J t dddddtd
ddg dd}|j|ddd}g d}|d d |_|dd  |_t||}t	
|| d S )Nr/   r   rw   Tr7   r*   ru   r9   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   rB   int64bool_r~   rv   r   r   r   )r(   r   r-   re   expected_columnsr   r   r   r   test_join_index_mixed_overlap:  s$   

z&TestJoin.test_join_index_mixed_overlapzTODO(infer_string))reasonc                 C   s(   t  }|jt dgdgdgddd d S )Nrs   r   r8   ru   r\   rO   )r   r~   )r(   xr   r   r   test_join_empty_bug[  s   "zTestJoin.test_join_empty_bugc                 C   sp   t tjddddgd}ttjdd}||d< t tjddd	gd}|| || d S )
Nr   )   r   r<   r=   r   r   r>   )r   r%   q)r   r   r   r   r'   r   r~   )r(   r<   r>   r?   r   r   r   test_join_unconsolidateda  s   
z!TestJoin.test_join_unconsolidatedc                 C   sx  t jg dg dgddgd}t jg dg dgddgd}ttjdd|d	gd
}ttjdd|dgd
}|jdd}|jdd}|j|dd}t	|j
t	|j
}||||}|j|j_t|| |jj|jksyJ |jdd}|jdd}|j|ddjdd}t	|j
t	|j
}||||}|j|j_t|| |jj|jksJ d S )N)r<   r<   r<   r=   r=   r=   )r%   r   rs   r%   r   rs   firstsecondnames)r=   r=   r=   r>   r>   r>   r      zvar X)rH   rD   rv   zvar Yr   )levelr\   rO   r%   )r   r   r   r   r   r   r'   
sort_indexr~   r   valuesunionr   r   rD   r   r   )r(   index1index2r   r-   re   ex_indexr   r   r   r   test_join_multiindexn  sD   

zTestJoin.test_join_multiindexc           
      C   s  g d}g d}t jdt|}t|||d}|}tt jdd|g dd}|j|dd	gd
d}t|| dd	gddgd
dd}t||dd	gdd
dd}	t	
||	| t||dd	gdd
dd}	|jddgdd}|j|_|jjs{J t	
|| d S )N)
rx   rx   rx   rw   rw   bazr   quxr   snap)
ry   rt   rz   rt   ry   rt   ry   ry   rz   rt   r   )r!   r"   rH   )r*   rs   )j_onej_twoj_threeru   r!   r"   r^   rY   r   r   F)rg   rh   rP   sortT)rh   r   rP   r   r%   axis)r   r   r   r'   r   r   r~   r   reset_indexr   r   reindex_likedroprD   is_monotonic_increasing)
r(   %lexsorted_two_level_string_multiindexr!   r"   rH   rD   to_joinre   r   	expected2r   r   r   test_join_inner_multiindex  sP   		z#TestJoin.test_join_inner_multiindexc                 C   s   t ddgg dd}|dgdddgi}t dd	gg d
d}|jddd tjtjjdd t	||ddd W d    d S 1 sEw   Y  d S )N)r%   r   rs   )r+   r5   r   rq   r   r<   r=   meansum)   r*   r   r<   r=   r?   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_dfr   r   r   #test_join_hierarchical_mixed_raises  s   "z,TestJoin.test_join_hierarchical_mixed_raisesc           
      C   s  t tjddddgtjd}t tjdddgtjd}||}|jd dks/J |jd dks8J |jd d	ksAJ 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}|j|ddd}|jd dksJ |jd dksJ |jd d	ksJ |jd d	ksJ |j|ddd}	t||	 d S )Nr   )r*   r   r<   r=   rv   rB   )r*   r%   r>   float64float32r   r5   d   r   rq   mdr   Tr   )r   r   r   r   r'   r  r  r~   dtypesintegersastyper   r   r   )
r(   r<   r=   re   r>   r)   xpdfsrsxpr   r   r   test_join_float64_float32  s:   
z"TestJoin.test_join_float64_float32c                 C   s  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}|j||gdd}t||ddgdd}t||ddgdd}	| }|	|j }	|	jd|	d< |	jd|	d< t	
||	 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}|j||gdd}t||ddgdd}t||ddgdd}	| }t	
||	jd d |jf  t g dg dtjddtjddd}
tttddttdddd}|
j|dd}|
j|dd}|
j|dd}|
j|dd}t	
|| t	
|| t	
|| d S ) Nr%   r*      rq   r   r     r      )r<   r=   r@   r<   r=   r\   rO   rY   r   )r%   r%   r%   )r*   r  r   )r%   r%   r   )r  r  i,  )r  r  i  r^   )rw   rx   rw   rx   rw   rx   rw   rw   )rt   rt   ry   rz   ry   ry   rt   rz   r   r7   TESTr   rN   rX   )r   r  r~   r   r   rv   r<   r  r=   r   r   locr   r   r   r'   r   repeatr   )r(   r   r-   df3idf1idf2idf3r   df_partially_mergedr   r)   r  r^   r\   rN   rX   r   r   r   test_join_many_non_unique_index  sT   
"z(TestJoin.test_join_many_non_unique_indexc                 C   s   t d|U tg dg dd}tdg dig dd}|j|d	d
d}tg dg dg ddg dd}t|| |j|d	dd}tj|jttdd
d W d    d S 1 s]w   Y  d S )Nzfuture.infer_string)rw   rx   r   rw   r%   r   rs   r+   rr   value2rq   )rx   r   rw   rC   rn   T)rM   r   )rx   r   rw   rw   )r   rs   r%   r+   )r<   r=   r>   r>   )rn   r,   r*  )r%   r   r   rs   Fr+   )exact)	r   r   r~   r   r   r   rD   r   r   )r(   rj   rN   rX   re   r   r   r   r   test_join_sort;  s"   "zTestJoin.test_join_sortc                 C   s   t dg dig dd}t dg dig dd}||}t g dd	tjd
dtjgdg dd}t|| t dg dig dd}t dg dig dd}||}t g dd	d
d
tjgdg dd}t|| d S )Nr<   r)  )r%   r   rs   r<   rC   r=   )r5   r   r  r   )r%   rs   rs   r+   )r%   r   rs   rs   r+   r5   r   r  r   )r%   r   rs   rs   r<   )r%   r   r   r<   )r   r~   r   nanr   r   )r(   r   r-   r   r   r#  df4r   r   r    test_join_mixed_non_unique_indexT  s   

z)TestJoin.test_join_mixed_non_unique_indexc                 C   s   t jdddd}tttt||dgd}t||g}|j|ddd	}tt	tj
dtjd
ddddddg| jd}t|| d S )Nz
2016-01-01   M)r6   freqpnumru   r^   _df2)rP   r   rA   r   r%   pnum_df2rv   rD   )r	  period_ranger   r   r   r   r
   r~   r   r   r   r   r"  reshaper   rD   r   r   )r(   rD   r)   r-   r   r   r   r   r   !test_join_non_unique_period_indexg  s   $z*TestJoin.test_join_non_unique_period_indexc                 C   s   t tjddg dd}|ddd |ddd	 |d}td
}|r+d}t	j
t|d |  W d    n1 sAw   Y  |jdd}| }|j|dd d S )Nr   )r  r   )r<   r=   r>   r?   r@   r   r   r   idr5   dtrw   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cnr   r   r    test_mixed_type_join_with_suffixt  s    


z)TestJoin.test_mixed_type_join_with_suffixc                 C   sv  t tjddtdd}|ddg |ddg |d	d
g g}|d |dd  }t|| |ddg d d |ddg dd  |d	d
g dd g}dd }|d j|dd  dd}||||j	 |d |dd  }||||d j	 |d j|dd  dd}||||j	dd  d}t
jt|d |d j|dd  dd W d    d S 1 sw   Y  d S )Nr   )r*   r   abcdefr   r<   r=   r>   r?   r@   r   r   r%   	   c                    s8    fdd| D }|d  |dd  }t|| d S )Nc                    s   g | ]}|  qS r   )r   ).0r   	exp_indexr   r   
<listcomp>  s    zFTestJoin.test_join_many.<locals>._check_diff_index.<locals>.<listcomp>r   r%   r   )df_listr   rN  	reindexedr   r   rM  r   _check_diff_index  s   z2TestJoin.test_join_many.<locals>._check_diff_indexr\   rO   r^   r   z?Joining multiple DataFrames only supported for joining on indexr{   rL   )r   r   r   r   r'   r   r~   r   r   rD   r   r   r   )r(   r)   rP  re   rR  r   r   r   r   test_join_many  s$   ":"zTestJoin.test_join_manyc                 C   s   t tjddg dd}ddgd |d< |jd d d	d
gf }|jd d ddgf }|jd d dgf }|||g}t|| d S )Nr   )r   r+   r7   r   rw   rx   r+   rn   r8   r9   r:   r;   )	r   r   r   r   r'   r!  r~   r   r   )r(   r)   r   r-   r#  r   r   r   r   test_join_many_mixed  s   zTestJoin.test_join_many_mixedc           	      C   sb  t ttjddg ddttjdjddddddd	d
gdgdd}t ||gdd}|j|dd}|j	|_	t
|| ttjddddgd}ttjddddgd}ttjddddgd}ttjddddgd}|j|dddj|dddd}tjtjjdd |j|ddd W d    d S 1 sw   Y  d S )Nr   )r*   r+   )r8   r8   r9   r9   r   r   r*   r  r   r8   r:   r%   r   _2r?  )r+   r   r   yTr  r\   )r   r   rP   z0Passing 'suffixes' which cause duplicate columnsr{   )r
   r   r   r   r   r'   r  r9  r~   rv   r   r   r   r   r   r	  r
  r  )	r(   r)   r   r   wr   rV  zdtar   r   r   test_join_dups  sJ   
"zTestJoin.test_join_dupsc           	      C   sF  t jtdtdddggg dd}tdtdi|d	}t jtdtdgddgd}td
dd tddD i|d	}|j|ddg|d}| j| ddg|dg d}t	
|| d}tjt|d |j|d|d W d    n1 szw   Y  tjt|d |j|ddg|d W d    d S 1 sw   Y  d S )Nr   xyr%   r   )r   r[  numr   v1   rC   v2c                 S   s   g | ]}d | qS )r  r   )rL  ir   r   r   rO        z5TestJoin.test_join_multi_to_multi.<locals>.<listcomp>r  rY   r   r{   )r   r   r   r   r   r~   r   r   r  r   r   r   r   r   )	r(   r   	leftindexrN   
rightindexrX   r   r   r   r   r   r   test_join_multi_to_multi  s,    
"z!TestJoin.test_join_multi_to_multic                 C   s   t tjddddtdd}t tjddddtdd	}|j|d
d
d}| }ttj	gd td |d< t
|| d S )Nz
2018-01-01r5   zAmerica/Chicago)startr6   tzabcde)datevalsz
2018-01-03tuvwx)rh  vals_2rh  rL   r   tuvrk  )r   r	  
date_ranger   r~   r  r   r   r   r-  r   r   )r(   r   r-   r   r   r   r   r   #test_join_on_tz_aware_datetimeindex  s$   	z,TestJoin.test_join_on_tz_aware_datetimeindexc                 C   s   t g dg dg dg dgg dd}t|d d|d< t g d	g d
gg dddgd}t|d d|d< |j|ddgddgd}t tddddgtddddggddgg dd}|d d|d< t|| d S )N)
2012-08-02Lr*   )ro  Jr   )
2013-04-06rp  r  )rr  rq     )r   rV  r<   r   r   zM8[ns])ro  rq  r%   )rr  rp  r   )r   rV  rX  r   r+   r7  rV  rL   z2012-08-02 00:00:00rq  r%   r   z2013-04-06 00:00:00rp  r  )r   rV  rX  r<   ru   )	r   r	  to_datetimer  r~   r  r   r   r   )r(   dfadfbr   r   r   r   r   test_join_datetime_string  s2   	z"TestJoin.test_join_datetime_stringc                 C   s   ddg}t j||d}t jt|t|d}td|i|d}tdt|i|d}||}tddgddgdt jddgddgdd}t|| d S )Nr<   r=   
categoriesc1rC   c2)rz  r{  )r	  CategoricalIndexreversedr   r~   r   r   )r(   ixid1id2r   r-   r   r   r   r   r    test_join_with_categorical_index2  s   
z)TestJoin.test_join_with_categorical_index)6__name__
__module____qualname__r   fixturer)   r-   rK   rV   rZ   r]   r_   rf   ri   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  r  r(  r,  r/  r:  rH  rS  rT  rZ  rd  rn  rw  r  r   r   r   r   r    %   sh    

	

&


!
+>!6
-r    rN   _x_yc                 C   s2  |D ]}||    sJ q| |}||}	||D ]x\}
}t|| j|}t||j|}z||
}W n& ty] } z|dv rLtd|
 d|t|| j| W Y d }~n
d }~ww t	|| z|	|
}W n& ty } z|dv rtd|
 d|t||j| W Y d }~qd }~ww t	|| qd S )N)rN   r^   zkey z! should not have been in the join)rX   r^   )
r   r   r  _restrict_to_columnsrv   	get_groupr   AssertionError_assert_all_na_assert_same_contents)rN   rX   r   r   rP   r   r   r>   left_groupedright_grouped	group_keygroupl_joinedr_joinedlgrouperrrgroupr   r   r   rR   B  sD   




rR   c                    sR    fdd| j D }| jd d |f } | jfddd} | jd d  f } | S )Nc                    s(   g | ]}| v s| d  v r|qS ) replace)rL  r>   rv   suffixr   r   rO  h  s    "z(_restrict_to_columns.<locals>.<listcomp>c                    s   |   dS )Nr  r  )r   )r  r   r   <lambda>p  s    z&_restrict_to_columns.<locals>.<lambda>r   )rv   r!  r   )r  rv   r  foundr   r  r   r  g  s   r  c                    sd   d}|  | j}| | j}dd |D  t t|ks#J t fdd|D s0J d S )Niy)c                 S   s   h | ]}t |qS r   tuplerL  rowr   r   r   	<setcomp>~  ra  z(_assert_same_contents.<locals>.<setcomp>c                 3   s    | ]	}t | v V  qd S Nr  r  rowsr   r   	<genexpr>  s    z(_assert_same_contents.<locals>.<genexpr>)fillnadrop_duplicatesr   r   r   )
join_chunkrJ   NA_SENTINELjvaluessvaluesr   r  r   r  x  s   r  c                 C   s,   |D ]}||v r	q| |    sJ qd S r  )r   r   )r  source_columnsr   r>   r   r   r   r    s
   r  c           	      C   sZ   | j j|j |d}| |}||}| j|j}| D ]\}}|||< q|j|dS )NrO   r   )rD   r~   r   rv   appenditems)	r<   r=   rP   
join_indexa_reb_reresult_columnsr   r  r   r   r   r     s   


r   c                  C   sx   t dditjdgddd} t dditjd	gd
dd}| j|dd}t dgdgdtjdgddd}t|| d S )Nr@   r5   )r%   r   r+   r  r   rH   rD   r   r   )r   rs   )r=   r>   r^   rO   )r@   r   )r%   r   r+   rs   )r<   r=   r?   r>   rC   r   r   from_tuplesr~   r   r   )rN   rX   r   r   r   r   r   .test_join_inner_multiindex_deterministic_order  s   r  )	input_coloutput_colsr=   r<   a_xa_yc                 C   sb   t dddgi}t | ddgi}|j|dddd}t |d	 g d
|d g di}t|| d S )Nr<   r%   rs   r+   crossr  r  )rP   r   r   r   )r%   r%   rs   rs   )rs   r+   rs   r+   r   )r  r  rN   rX   r   r   r   r   r   test_join_cross  s
    r  c                 C   s   t dditjdgddd}t dditjd	gd
dd}|j|| d}| dkr;t dgdgdtjdgddgdd}nt dgdgdtjdgddgdd}t|| d S )Nr>   rs   )r%   r   r   r   r  r?   r+   )r   )r=   rO   rX   )r>   r?   )r   r%   r=   r<   rC   r  )r   rN   rX   r   r   r   r   r   test_join_multiindex_one_level  s   r  zcategories, valuesYX)r  r  r  r   r%   )r   r%   r%         @      ?)r  r  r  z
2020-12-31z
2019-12-31c                 C   s   t ddgt| | dddgdddg}t g dt|| dg d	dddg}|j|d
dd}t ddgt| | dddgddgdddg}t|| d S )Nr8   rx  r%   r   )r   r   r,   r   r   )r8   r8   r9   )rs   r+   r5   _leftr>  r   rs   r+   )r   r   
value_leftvalue_rightr   r   r  r~   r   r   )ry  r   rN   rX   r   r   r   r   r   1test_join_multiindex_not_alphabetical_categorical  s6   





r  zleft_empty, how, exp)
)FrN   rN   )FrX   empty)Fr^   r  )Fr\   rN   )Fr  r  )TrN   r  )TrX   rX   )Tr^   r  )Tr\   rX   )Tr  r  c                 C   s  t ddgddgdddd}t dgd	gd
ddd}| r&|d}n|d}|j||d}|dkrLt ddgddgtjtjgd}|d}n+|dkrbt tjgdgd	gd}|d}n|dkrwt ddgdd}|dkrw|d}|dkr| }t	|| d S )Nr   r%   rs   r+   )r8   r9   r   rA   r8   r5   )r8   r:   r   rO   rN   )r8   r9   r:   rX   )r9   r8   r:   r  r9   r:   r  r  r\   )
r   r  headr~   r   r-  rename_axisr   r   r   )
left_emptyrP   exprN   rX   r   r   r   r   r   test_join_empty  s&    
 
r  c                  C   s   t  } t dgd}t ddgd}| | }t dgd}t|| || }t g dd}t|| | | }t ddgd}t|| d S )Ntestr   rw   rx   r   )r  rw   r  )r   r   r   )r   r-   r#  r   r   r   r   r   $test_join_empty_uncomparable_columns  s   r  zhow, valuesr^   rp   r\   rX   r   r   r%   c                 C   s   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}|j|| d}t|| d S )	Nrp   rq   r<   r=   r  r  )r<   r=   r>   r?   rO   r  )rP   r   r   r-   r   r   r   r   r   3test_join_multiindex_categorical_output_index_dtype.  s6   






	r  )r   r   )rN   r  r  )rN   ))rA  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    rR   r  r  r  r   r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   sj    0
      
#%

	





	