Ë
    ômxiØ“  ã                   ó”  — 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 d-d„Z G d„ d«      Zd.d„Zd	„ Zd
„ Zd„ Zd/d„Zd„ Z ejB                  jE                  ddddgfdddgfg«      d„ «       Z#d„ Z$ejB                  jE                  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jB                  jE                  d"g d#¢«      d$„ «       Z&d%„ Z'ejB                  jE                  d&d'g d(¢fd)g d(¢fdg d(¢fd*g d+¢fg«      d,„ «       Z(y)0é    N)Úusing_string_dtype)
ÚCategoricalÚ	DataFrameÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚbdate_rangeÚconcatÚmergeÚoption_contextc           	      ó^  — t        t        | «      «      }t        j                  t        j                  ||| z  «      «      }t        |«      |k  r0t        j                  t        |«      |d |t        |«      z
   z   «      }t        j                  j                  d«      j                  |«       |S )Né   )	ÚlistÚrangeÚnpÚasarrayÚtileÚlenÚrandomÚdefault_rngÚshuffle)ÚngroupsÚnÚunique_groupsÚarrs       ú[/home/htdocs/ttos/venv/lib/python3.12/site-packages/pandas/tests/reshape/merge/test_join.pyÚget_test_datar      s€   € Üœ˜w›Ó(€MÜ
�*‰*”R—W‘W˜]¨A°©LÓ9Ó
:€Cä
ˆ3ƒx�!‚|Ü�j‰jœ˜c› ]°>°Q¼¸S»±\Ð%BÑBÓCˆä‡I�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                  j                  d
d ej                   d ej$                  d«      ¬«      g«      d„ «       Zd„ Zd„ Zd„ Zej                  j                  dddd ej0                  ddg«      g«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Z d!„ Z!ej                  jE                   e#«       d"¬#«      d$„ «       Z$d%„ Z%d&„ Z&d'„ Z'd(„ Z(d)„ Z)d*„ Z*ej                  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„ Z5y)6ÚTestJoinc                 ó  — t        t        «       t        «       t        j                  j	                  d«      j                  d«      t        j                  j	                  d«      j                  d«      dœ«      }||d   dkD     }|S )Nr   é2   )Úkey1Úkey2Údata1Údata2r%   é   ©r   r   r   r   r   Ústandard_normal)ÚselfÚdfs     r   r,   zTestJoin.df'   sn   € ää%›Ü%›ÜŸ™×.Ñ.¨qÓ1×AÑAÀ"ÓEÜŸ™×.Ñ.¨qÓ1×AÑAÀ"ÓEñ	ó
ˆð ��6‘
˜Q‘ÑˆØˆ	r   c                 ó¢   — t        t        d¬«      t        dd¬«      t        j                  j	                  d«      j                  d«      dœ«      S )Né
   )r   é   )r   r   r   )r$   r%   Úvaluer)   )r+   s    r   Údf2zTestJoin.df26   sC   € ää%¨Ô+Ü%¨a°2Ô6ÜŸ™×.Ñ.¨qÓ1×AÑAÀ"Ó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@   sb   € ò +Ú*Ú9Ü˜Z°Ô3ñ	
ˆô ˜4¤uÒ-FÌfÔ'UÔVˆô Ø˜S™	¨d°3©iÑ8ÀÀSÁ	ô
ˆð �vˆ~Ðr   c                 ó~   — t        ||d¬«      }t        |||dgd¬«       t        ||«      }t        |||ddgd¬«       y )Nr%   ©ÚonÚleft©Úhowr$   ©r   Ú_check_join©r+   r,   r1   Újoined_key2Újoined_boths        r   Útest_left_outer_joinzTestJoin.test_left_outer_joinQ   sB   € Ü˜B ¨Ô/ˆÜ�B˜˜[¨6¨(¸Õ?ä˜B “nˆÜ�B˜˜[¨6°6Ð*:ÀÖGr   c                 ó„   — t        ||dd¬«      }t        |||dgd¬«       t        ||d¬«      }t        |||ddgd¬«       y )Nr%   Úright©rS   rV   rU   r$   rW   rY   s        r   Útest_right_outer_joinzTestJoin.test_right_outer_joinX   óG   € Ü˜B ¨°GÔ<ˆÜ�B˜˜[¨6¨(¸Õ@ä˜B ¨Ô1ˆÜ�B˜˜[¨6°6Ð*:ÀÖHr   c                 ó„   — t        ||dd¬«      }t        |||dgd¬«       t        ||d¬«      }t        |||ddgd¬«       y )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¬«       y )Nr%   Úinnerr_   rU   r$   rW   rY   s        r   Útest_inner_joinzTestJoin.test_inner_joinf   ra   r   c                 ó:   — t        ||dd¬«      }d|v sJ ‚d|v sJ ‚y )Nr%   ©z.fooz.bar)rS   Úsuffixesúkey1.foozkey1.bar©r   ©r+   r,   r1   Újoineds       r   Útest_handle_overlapzTestJoin.test_handle_overlapm   s/   € Ü�r˜3 6Ð4DÔEˆà˜VÑ#Ð#Ð#Ø˜VÑ#Ð#Ñ#r   c                 ó<   — t        ||ddd¬«      }d|v sJ ‚d|v sJ ‚y )Nr%   r$   ri   )Úleft_onÚright_onrj   rk   zkey2.barrl   rm   s       r   Ú!test_handle_overlap_arbitrary_keyz*TestJoin.test_handle_overlap_arbitrary_keys   s9   € ÜØØØØØ%ô
ˆð ˜VÑ#Ð#Ð#Ø˜VÑ#Ð#Ñ#r   Úinfer_stringFTÚpyarrow)Úmarksc                 óØ  — |\  }}|j                  |d¬«      }t        j                  |d   |d   d¬«       t        j                  |d   |d   d¬«       t        d	g d
¢i«      }t        dg d¢ig d¢¬«      }|j                  |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¬«      }|
j                  |d¬«      }|j                  |d¬«      }t        j                  |d   d   «      sJ ‚t        j                  |d   d   «      sJ ‚t        j                  t        d¬«      5  |j                  |d¬«       d d d «       |j                  «       }d}t        j                  t        |¬«      5  |j                  |d¬«       d d d «       y # 1 sw Y   ŒSxY w# 1 sw Y   y xY w)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Ú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+   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¨�Ó,ˆÜ
×Ñ˜v iÑ0°&¸±+È5ÕQÜ
×Ñ˜v iÑ0°&¸±+È5ÕQô ˜Ò8Ð9Ó:ˆÜ˜¢)Ð,²OÔDˆØ—‘˜ �Ó'ˆÜÚ-ºÑHó
ˆô 	×Ñ˜f hÔ/ô ˜1˜# ˜s Q C˜²È%ÈÔQˆÜ˜5˜' E 7Ð+°A°q°6ÀEÀ7ÔKˆÜ˜1˜# ˜s˜¨A¨q¨6¸G¸9ÔEˆØ—‘˜4 E�Ó*ˆØ—‘˜T e�Ó,ˆÜ�x‰x˜˜u™ cÑ*Ô+Ð+Ð+Ü�x‰x˜˜w™¨Ñ,Ô-Ð-Ð-ô �]‰]œ8¨7Ô3ñ 	(Ø�K‰K˜ 3ˆKÔ'÷	(ð —k‘k“mˆðCð 	ô �]‰]œ:¨SÔ1ñ 	-Ø�K‰K˜¨ˆKÔ,÷	-ð 	-÷	(ð 	(ú÷	-ð 	-ús   Å.GÆ7G ÇGÇ G)c                 ór  — t        t        j                  j                  d«      j	                  ddgd¬«      t        j                  j                  d«      j                  d«      dœ«      }t        t        j                  j                  d«      j	                  ddgd¬«      t        j                  j                  d«      j                  d«      dœt        j                  t        d«      d	d
gg«      ¬«      }d}t        j                  t        |¬«      5  t        ||dd¬«       d d d «       y # 1 sw Y   y xY w)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‘Y×*Ñ*¨1Ó-×4Ñ4°c¸3°ZÀaÐ4ÓHÜ—Y‘Y×*Ñ*¨1Ó-×=Ñ=¸aÓ@ñó
ˆô ä—Y‘Y×*Ñ*¨1Ó-×4Ñ4°c¸3°ZÀbÐ4ÓIÜ—Y‘Y×*Ñ*¨1Ó-×=Ñ=¸bÓAñô ×)Ñ)¬5°«8°c¸3°ZÐ*@ÓAô
ˆð XˆÜ�]‰]œ:¨SÔ1ñ 	:Ü�"�c 3°DÕ9÷	:÷ 	:ñ 	:ús   ÄD-Ä-D6c           	      ó€  — t        t        j                  j                  d«      j	                  ddgd¬«      t        j                  j                  d«      j                  d«      dœt        j                  t        d«      t        d«      g«      ¬«      }t        t        j                  j                  d«      j	                  ddgd	¬«      t        j                  j                  d«      j                  d	«      dœ«      }d
}t        j                  t        |¬«      5  t        ||dd¬«       d d d «       y # 1 sw Y   y xY w)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‘Y×*Ñ*¨1Ó-×4Ñ4°c¸3°ZÀaÐ4ÓHÜ—Y‘Y×*Ñ*¨1Ó-×=Ñ=¸aÓ@ñô ×(Ñ(¬%°«(´D¸³KÐ)@ÓAô
ˆô ä—Y‘Y×*Ñ*¨1Ó-×4Ñ4°c¸3°ZÀbÐ4ÓIÜ—Y‘Y×*Ñ*¨1Ó-×=Ñ=¸bÓAñó
ˆð XˆÜ�]‰]œ:¨SÔ1ñ 	:Ü�"�c C°DÕ9÷	:÷ 	:ñ 	:ús   ÄD4Ä4D=c                 óv  — t        t        j                  j                  d«      j	                  ddgd¬«      t        j                  j                  d«      j                  d«      dœ«      }t        t        j                  j                  d«      j	                  ddgd¬«      t        j                  j                  d«      j                  d«      dœt        j                  t        d«      d	d
gg«      ¬«      }d}t        j                  t        |¬«      5  t        ||dddg¬«       d d d «       y # 1 sw Y   y xY w)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‘Y×*Ñ*¨1Ó-×4Ñ4°c¸3°ZÀaÐ4ÓHÜ—Y‘Y×*Ñ*¨1Ó-×=Ñ=¸aÓ@ñó
ˆô ä—Y‘Y×*Ñ*¨1Ó-×4Ñ4°c¸3°ZÀbÐ4ÓIÜ—Y‘Y×*Ñ*¨1Ó-×=Ñ=¸bÓAñô ×)Ñ)¬5°«8°c¸3°ZÐ*@ÓAô
ˆð ;ˆÜ�]‰]œ:¨SÔ1ñ 	=Ü�"�c C°#°s°Õ<÷	=÷ 	=ñ 	=ús   ÄD/Ä/D8Ú
wrong_typer   ÚstrNr   r(   c                 ó<  — t        dddgi«      }dt        |«      › d�}t        j                  t        |¬«      5  t        ||dd¬«       d d d «       t        j                  t        |¬«      5  t        ||dd¬«       d d d «       y # 1 sw Y   Œ=xY w# 1 sw Y   y xY w)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Ý   s›   € ô ˜˜a ˜V�}Ó%ˆðÜ�jÓ!Ð" +ð/ð 	ô �]‰]œ9¨CÔ0ñ 	=Ü�*˜b¨#¸Õ<÷	=ä�]‰]œ9¨CÔ0ñ 	=Ü�"�j¨#¸Õ<÷	=ð 	=÷	=ð 	=ú÷	=ð 	=ús   ºBÁ-BÂBÂBc                 óÞ   — |\  }}|j                  |d¬«      }|j                  ddi¬«      }|g d¢   }|j                  d«      }|j                  ||¬«      }t        j                  ||«       y )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î   sk   € Ø&‰ˆ�Ø—;‘;˜v¨#�;Ó.ˆØ—?‘?¨C°¨>�?Ó:ˆØÒJÑKˆà—:‘:˜c“?ˆØ—‘˜V¨�Ó1ˆÜ
×Ñ˜f hÕ/r   c                 ól  — |\  }}|j                  |j                  g «      d¬«      }|D ]+  }||v sJ ‚||   j                  «       j                  «       rŒ+J ‚ |j                  |j                  g «      dd¬«      }t	        j
                  |j                  |j                  «       t        |«      dk(  sJ ‚y )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ˆØò 	,ˆCØ˜&‘=Ð �=Ø˜#‘;×#Ñ#Ó%×)Ñ)Õ+Ð+Ð+ð	,ð —+‘+˜fŸn™n¨RÓ0°S¸g�+ÓFˆÜ
×Ñ˜gŸo™o¨v¯~©~Ô>Ü�7‹|˜qÒ Ð Ñ r   c                 óŠ  — t        dg d¢i«      }t        dddgiddg¬«      }|j                  |dd	¬
«      }|j                  |d¬«      }||d   j                  «          }t        j                  |d   |d   «       t        j                  |d   |d   d¬«       t        j
                  |j                  |j                  «       y )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´   € Ü˜Ò=Ð>Ó?ˆÜ˜ 1 a &Ð)°#°s°Ô<ˆà—‘˜ ¨G�Ó4ˆà—7‘7˜3 5�7Ó)ˆØ˜H WÑ-×3Ñ3Ó5Ñ6ˆÜ
×Ñ˜v e™}¨h°u©oÔ>Ü
×Ñ˜v g™°¸Ñ0AÈuÕUÜ
×Ñ˜fŸl™l¨H¯N©NÕ;r   c                 óÂ   — t        dg d¢i«      }t        dg d¢ig d¢¬«      }|j                  |dg¬«      }|j                  |d¬«      }t        j                  ||«       y )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Ð9Ó:ˆÜ˜¢)Ð,²OÔDˆð —‘˜ % �Ó)ˆØ—7‘7˜3 5�7Ó)ˆä
×Ñ˜f hÕ/r   c                 ó”   — |\  }}|j                  |d   d¬«      }|j                  |dg   d¬«      }t        j                  ||«       y )NrJ   r?   rR   )r‰   rŠ   rŒ   )r+   rP   rN   rO   r¼   r”   s         r   Útest_join_on_serieszTestJoin.test_join_on_series  sK   € Ø&‰ˆ�Ø—‘˜V IÑ.°3�Ó7ˆØ—;‘;˜v y kÑ2°s�;Ó;ˆÜ
×Ñ˜f hÕ/r   c                 óÐ   — t        dddgi«      }t        dgdgd¬«      }|j                  |d¬«      }t        ddgddgdœ|j                  ¬«      }t	        j
                  ||«       y )	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   se   € ä˜˜a ˜V�}Ó%ˆÜ�Q�C ˜s¨Ô-ˆØ—‘˜ �Ó$ˆÜ A q 6°°A°Ñ7¸r¿x¹xÔHˆÜ
×Ñ˜f hÕ/r   c                 ó†  — t        t        j                  d«      ¬«      }d|d<   d|d<   t        t        j                  dd«      ¬«      }d	|d
<   d|d<   |j                  ||¬«      }t	        |||¬«      }t        j                  ||«       |j                  ||¬«      }t	        |||¬«      }t        j                  ||«       y )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­   € äœbŸi™i¨›mÔ,ˆØˆˆF‰ØˆˆH‰äœbŸi™i¨¨2Ó.Ô/ˆØˆˆE‰
ØˆˆG‰à—‘˜# 9�Ó-ˆÜ   c¨yÔ9ˆÜ
×Ñ˜f hÔ/à—‘˜# 9�Ó-ˆÜ   c¨yÔ9ˆÜ
×Ñ˜f hÕ/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¢¬«      }|j                  |dd¬«      }g d¢}|d d |_        |dd  |_        t        ||«      }t        j                  ||«       y )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_overlap:  sÝ   € ÜØ˜A E°Ñ5Ü—)‘)˜B“-Ú(ô
ˆð
 �3‰x�~‰~¤§¡Ò)Ð)Ð)Ø�3‰x�~‰~¤§¡Ò)Ð)Ð)äØ˜A E°Ñ5Ü—)‘)˜A˜r 1Ó%Ú(ô
ˆð —‘˜# v°v�Ó>ˆò	
Ðð ' r¨Ð*ˆŒØ& q rÐ*ˆŒÜ   cÓ*ˆÜ
×Ñ˜f hÕ/r   zTODO(infer_string))Úreasonc                 ó\   — t        «       }|j                  t        dgdgdg¬«      d¬«       y )Nr~   r   r=   r€   rc   rU   )r   r‰   )r+   Úxs     r   Útest_join_empty_bugzTestJoin.test_join_empty_bug[  s*   € ô ‹KˆØ	�‰Œy˜!˜ Q C°#°Ô7¸WˆÕEr   c                 óª  — t        t        j                  j                  d«      j	                  d«      ddg¬«      }t        t        j                  j                  d«      j	                  d«      «      }||d<   t        t        j                  j                  d«      j	                  d«      d	g¬«      }|j                  |«       |j                  |«       y )
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_unconsolidateda  s    € äÜ�I‰I×!Ñ! !Ó$×4Ñ4°WÓ=ÈÈSÀzô
ˆô ”2—9‘9×(Ñ(¨Ó+×;Ñ;¸BÓ?Ó@ˆØˆˆ#‰Ü”b—i‘i×+Ñ+¨AÓ.×>Ñ>¸wÓGÐRUÐQVÔWˆð 	
�‰ˆqŒ	Ø	�‰ˆq�	r   c                 óX  — t        j                  g d¢g d¢gddg¬«      }t        j                  g d¢g d¢gddg¬«      }t        t        j                  j                  d«      j                  d«      |d	g¬
«      }t        t        j                  j                  d«      j                  d«      |dg¬
«      }|j                  d¬«      }|j                  d¬«      }|j                  |d¬«      }t        |j                  «      j                  t        |j                  «      «      }|j                  |«      j                  |j                  |«      «      }|j                  |j                  _        t        j                   ||«       |j                  j                  |j                  k(  sJ ‚|j                  d¬«      }|j                  d¬«      }|j                  |d¬«      j                  d¬«      }t        |j                  «      j                  t        |j                  «      «      }|j                  |«      j                  |j                  |«      «      }|j                  |j                  _        t        j                   ||«       |j                  j                  |j                  k(  sJ ‚y )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_multiindexn  s  € Ü×'Ñ'Ú+Ò-?Ð@Ø˜HÐ%ô
ˆô
 ×'Ñ'Ú+Ò-?Ð@Ø˜HÐ%ô
ˆô
 Ü—‘×&Ñ& qÓ)×9Ñ9¸!Ó<ØØ�Iô
ˆô
 Ü—‘×&Ñ& qÓ)×9Ñ9¸!Ó<ØØ�Iô
ˆð �n‰n 1ˆnÓ%ˆØ�n‰n 1ˆnÓ%ˆà—‘˜# 7�Ó+ˆÜ˜Ÿ™Ó'×-Ñ-¬e°F·M±MÓ.BÓCˆØ—;‘;˜xÓ(×-Ñ-¨c¯k©k¸(Ó.CÓDˆØ%Ÿ|™|ˆ�‰ÔÜ
×Ñ˜f hÔ/Ø�|‰|×!Ñ! V§\¡\Ò1Ð1Ð1à�n‰n 1ˆnÓ%ˆØ�n‰n 1ˆnÓ%ˆà—‘˜# 7�Ó+×6Ñ6¸QÐ6Ó?ˆÜ˜Ÿ™Ó'×-Ñ-¬e°F·M±MÓ.BÓCˆØ—;‘;˜xÓ(×-Ñ-¨c¯k©k¸(Ó.CÓDˆØ%Ÿ|™|ˆ�‰Ôä
×Ñ˜f hÔ/Ø�|‰|×!Ñ! V§\¡\Ò1Ð1Ñ1r   c                 óÌ  — g d¢}g d¢}t         j                  j                  d«      j                  t	        |«      «      }t        |||dœ«      }|}t        t         j                  j                  d«      j                  d«      |g d¢¬«      }|j                  |dd	gd
¬«      }t        ||j                  «       dd	gddgd
d¬«      }t        ||dd	gdd
d¬«      }	t        j                  ||	j                  |«      «       t        ||dd	gdd
d¬«      }	|j                  ddgd¬«      }|j                  |_        |j                  j                  sJ ‚t        j                  ||«       y )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™  sh  € ÚVˆò
ˆô �y‰y×$Ñ$ QÓ'×7Ñ7¼¸D»	ÓBˆÜ $°¸dÑCÓDˆà5ˆÜÜ�I‰I×!Ñ! !Ó$×4Ñ4°WÓ=ØÚ1ô
ˆð —‘˜7¨°Ð'7¸W�ÓEˆÜØØ×ÑÓ!Ø˜VÐ$Ø˜xÐ(ØØô
ˆô ØØØ˜fÐ%ØØØô
ˆ	ô 	×Ñ˜f i×&<Ñ&<¸VÓ&DÔEäØØØ˜fÐ%ØØØô
ˆ	ð —=‘= '¨8Ð!4¸1�=Ó=ˆØŸ™ˆŒà�|‰|×3Ò3Ð3Ð3Ü
×Ñ˜f hÕ/r   c                 ó^  — t        ddgg d¢¬«      }|j                  dg«      j                  dddgi«      }t        dd	gg d
¢¬«      }|j                  dd¬«       t	        j
                  t        j                  j                  d¬«      5  t        ||dd¬«       d d d «       y # 1 sw Y   y xY w)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×  s¢   € ô ˜	 9Ð-²ÔGˆØ—‘˜S˜EÓ"×&Ñ&¨¨f°e¨_Ð'=Ó>ˆÜ˜i¨Ð4ºoÔNˆØ×Ñ˜3¨ÐÔ-ä�]‰]Ü�I‰I× Ñ Ð(Wô
ñ 	Gô �&˜(¨tÀÕF÷	G÷ 	Gñ 	Gús   Â
B#Â#B,c                 ó   — t        t        j                  j                  d«      j	                  d«      ddgt        j
                  ¬«      }t        t        j                  j                  d«      j	                  d«      dgt        j                  ¬«      }|j                  |«      }|j                  d   dk(  sJ ‚|j                  d   dk(  sJ ‚|j                  d   d	k(  sJ ‚t        j                  j                  d«      j                  d
dd«      j                  d«      }t        j                  j                  d«      j                  d«      j                  d«      }t        j                  j                  d«      j                  d«      j                  d	«      }t        |||dœ«      }t        |||dœ«      }t        t        j                  j                  d«      j                  d«      j                  d	«      dg¬«      }|j                  |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 ‚|j                  |dd¬«      }	t        j                  ||	«       y )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‰I×!Ñ! !Ó$×4Ñ4°WÓ=Ø˜#�JÜ—*‘*ô
ˆô
 Ü�I‰I×!Ñ! !Ó$×4Ñ4°WÓ=Ø�EÜ—*‘*ô
ˆð
 —‘˜“ˆØ�}‰}˜SÑ! YÒ.Ð.Ð.Ø�}‰}˜SÑ! YÒ.Ð.Ð.Ø�}‰}˜SÑ! YÒ.Ð.Ð.ä�I‰I×!Ñ! !Ó$×-Ñ-¨a°°CÓ8×?Ñ?ÀÓHˆÜ�I‰I×!Ñ! !Ó$×+Ñ+¨CÓ0×7Ñ7¸	ÓBˆÜ�I‰I×!Ñ! !Ó$×+Ñ+¨CÓ0×7Ñ7¸	ÓBˆÜ˜Q Q¨QÑ/Ó0ˆÜ˜q q¨qÑ1Ó2ˆÜÜ�I‰I×!Ñ! !Ó$×+Ñ+¨AÓ.×5Ñ5°iÓ@È4È&ô
ˆð �X‰X�a °$ˆXÓ7ˆØ�y‰y˜‰~ Ò(Ð(Ð(Ø�y‰y˜‰~ Ò*Ð*Ð*Ø�y‰y˜‰~ Ò*Ð*Ð*Ø�y‰y˜‰ )Ò+Ð+Ð+à�Z‰Z˜ 3°DˆZÓ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œ«      }|j                  ddg«      }|j                  ddg«      }|j                  ddg«      }|j                  ||gd¬«      }t        ||ddgd¬«      }t        ||ddgd¬«      }	|j	                  «       }|	|j
                     }	|	j                  j                  d«      |	d<   |	j                  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œ«      }|j                  ddg«      }|j                  ddg«      }|j                  ddg«      }|j                  ||gd¬«      }t        ||ddgd¬«      }t        ||ddgd¬«      }	|j	                  «       }t        j                  ||	j                  d d …|j
                  f   «       t        g d¢g d¢t        j                  j                  d«      j                  d«      t        j                  j                  d«      j                  d«      dœ«      }
t!        t        j"                  t        j$                  d«      d«      t        j"                  t        j$                  d«      d«      d¬«      }|
j                  |d¬«      }|
j                  |d¬«      }|
j                  |d¬«      }|
j                  |d¬«      }t        j                  ||«       t        j                  ||«       t        j                  ||«       y ) 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<   Ú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 !˜f¨A¨q¨6¸¸R¸ÑAÓBˆÜ˜q !˜f¨A¨q¨6¸¸c¸
ÑCÓDˆÜ˜q !˜f¨A¨q¨6¸¸t¸ÑEÓFˆØ�}‰}˜c 3˜ZÓ(ˆØ�}‰}˜c 3˜ZÓ(ˆØ�}‰}˜c 3˜ZÓ(ˆà—‘˜D $˜<¨W�Ó5ˆä# C¨°#°s°ÀÔIÐÜÐ,¨c°s¸C°jÀgÔNˆà×#Ñ#Ó%ˆØ˜FŸN™NÑ+ˆØ Ÿ
™
×)Ñ)¨'Ó2ˆ�‰Ø Ÿ
™
×)Ñ)¨'Ó2ˆ�‰Ü
×Ñ˜f hÔ/äšiªiºlÑKÓLˆÜšiªiºoÑNÓOˆÜšiªiÒ>PÑQÓRˆØ�}‰}˜c 3˜ZÓ(ˆØ�}‰}˜c 3˜ZÓ(ˆØ�}‰}˜c 3˜ZÓ(ˆØ—‘˜D $˜<¨W�Ó5ˆä# C¨°#°s°ÀÔIÐÜÐ,¨c°s¸C°jÀgÔNˆà×#Ñ#Ó%ˆä
×Ñ˜f h§l¡l²1°f·n±nÐ3DÑ&EÔFô âMÚQÜ—Y‘Y×*Ñ*¨1Ó-×=Ñ=¸aÓ@Ü—Y‘Y×*Ñ*¨1Ó-×=Ñ=¸aÓ@ñ	ó
ˆô Ü�I‰I”b—i‘i “l AÓ&¬b¯i©i¼¿	¹	À!»ÀaÓ.HÈvô
ˆð —‘˜˜w�Ó'ˆØ—‘˜˜w�Ó'ˆØ�w‰w�q˜fˆwÓ%ˆØ—‘˜˜w�Ó'ˆÜ
×Ñ˜e UÔ+Ü
×Ñ˜e TÔ*Ü
×Ñ˜e UÕ+r   c           	      ó¦  — t        d|«      5  t        g d¢g d¢dœ«      }t        dg d¢ig d¢¬«      }|j                  |d	d
¬«      }t        g d¢g d¢g d¢dœg d¢¬«      }t        j                  ||«       |j                  |d	d¬«      }t        j
                  |j                  t        t        d«      «      d
¬«       d d d «       y # 1 sw Y   y xY w)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   rI  )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_sort;  sÅ   € ô Ð1°<Ó@ñ 	MÜÚ4º|ÑLóˆDô ˜xªÐ9ÒAVÔWˆEà—Y‘Y˜u¨°T�YÓ:ˆFÜ â7Ú)Ú2ñò
 #ôˆHô ×!Ñ! &¨(Ô3ð —Y‘Y˜u¨°U�YÓ;ˆFÜ×!Ñ! &§,¡,´´e¸A³h³ÀtÕL÷'	M÷ 	Mñ 	Mús   �B1CÃCc                 óî  — t        dg d¢ig d¢¬«      }t        dg d¢ig d¢¬«      }|j                  |«      }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¢¬«      }|j                  |«      }t        g d¢d	d
d
t        j                  gdœg d¢¬«      }t	        j
                  ||«       y )NrA   rH  )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”   rA  Údf4s          r   Ú test_join_mixed_non_unique_indexz)TestJoin.test_join_mixed_non_unique_indexT  sÍ   € ä˜šlÐ+²>ÔBˆÜ˜šlÐ+²<Ô@ˆØ—‘˜#“ˆÜÚ!¨¬B¯F©F°A°q¼"¿&¹&Ð(AÑBÚ#ô
ˆô 	×Ñ˜f hÔ/ä˜šlÐ+²>ÔBˆÜ˜šlÐ+²<Ô@ˆØ—‘˜#“ˆÜÚ a¨¨A¬r¯v©vÐ%6Ñ7º~ô
ˆô 	×Ñ˜f hÕ/r   c           	      óò  — t        j                  ddd¬«      }t        t        t	        t        |«      «      «      |dg¬«      }t        ||g«      }|j                  |dd¬	«      }t        t        j                  t        j                  dt        j                  ¬
«      j                  d«      j                  dd«      d«      ddg|j                  «       j                  ¬«      }t!        j"                  ||«       y )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_indexg  s½   € ä—‘ °b¸sÔCˆÜ”tœE¤# e£*Ó-Ó.°eÀfÀXÔNˆÜ�b˜"�XÓˆØ—‘˜ '°6�Ó:ˆÜÜ�G‰G”B—I‘I˜b¬¯©Ô1×8Ñ8¸Ó;×CÑCÀBÈÓJÈAÓNØ˜ZÐ(Ø—.‘.Ó"×(Ñ(ô
ˆô
 	×Ñ˜f hÕ/r   c                 ó  — t        t        j                  j                  d«      j	                  d«      g d¢¬«      }|j                  ddd«       |j                  ddd	«       |j                  d«      }t        j                  d
«      }|rd}t        j                  t        |¬«      5  |j                  «        d d d «       |j                  d¬«      }|j                  «       }|j                  |d¬«       y # 1 sw Y   Œ?xY w)Nr   )r9  rÿ   )rA   rB   rC   rD   rE   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  sÌ   € äÜ�I‰I×!Ñ! !Ó$×4Ñ4°WÓ=Ú2ô
ˆð 	�	‰	�!�T˜1ÔØ
�	‰	�!�T˜5Ô!à—*‘*˜TÓ"ˆÜ�i‰iÐ@ÓAˆÙØAˆCÜ�]‰]œ9¨CÔ0ñ 	Ø�L‰LŒN÷	à�\‰\ tˆ\Ó,ˆØ�]‰]‹_ˆð 	�‰�˜HˆÕ%÷	ð 	ús   Â'C6Ã6C?c                 óö  — t        t        j                  j                  d«      j	                  d«      t        d«      ¬«      }|ddg   |ddg   |d	d
g   g}|d   j                  |dd  «      }t        j                  ||«       |ddg   d d |ddg   dd  |d	d
g   dd g}d„ }|d   j                  |dd  d¬«      } ||||j                  «       |d   j                  |dd  «      } ||||d   j                  «       |d   j                  |dd  d¬«      } ||||j                  dd «       d}t        j                  t        |¬«      5  |d   j                  |dd  d¬«       d d d «       y # 1 sw Y   y xY w)Nr   )r.   rÿ   Úabcdefr¸   rA   rB   rC   rD   rE   r�   r   r(   éþÿÿÿé	   c                 ó¤   — | D �cg c]  }|j                  |«      ‘Œ }}|d   j                  |dd  «      }t        j                  ||«       y c c}w )Nr   r(   )r¿   r‰   rŠ   rŒ   )Údf_listr¼   Ú	exp_indexrô   Ú	reindexedr”   s         r   Ú_check_diff_indexz2TestJoin.test_join_many.<locals>._check_diff_index”  sN   € Ø7>Ö?°!˜Ÿ™ 9Õ-Ð?ˆIÐ?Ø  ‘|×(Ñ(¨°1°2¨Ó7ˆHÜ×!Ñ! &¨(Õ3ùò @s   …A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,   rp  rn   rs  r™   s         r   Útest_join_manyzTestJoin.test_join_many‰  s‹  € ÜÜ�I‰I×!Ñ! !Ó$×4Ñ4°WÓ=ÄtÈHÃ~ô
ˆð �s˜C�j‘> 2 s¨C j¡>°2°s¸C°j±>ÐBˆà˜‘—‘ ¨¨ Ó-ˆÜ
×Ñ˜f bÔ)à�s˜C�j‘> # 2Ð&¨¨C°¨:©°q°rÐ(:¸BÀÀS¸z¹NÈ1ÈQÐ<OÐPˆò	4ð ˜‘—‘ ¨¨ °'�Ó:ˆÙ˜' 6¨2¯8©8Ô4à˜‘—‘ ¨¨ Ó-ˆÙ˜' 6¨7°1©:×+;Ñ+;Ô<à˜‘—‘ ¨¨ °'�Ó:ˆÙ˜' 6¨2¯8©8°A°a¨=Ô9àOˆÜ�]‰]œ:¨SÔ1ñ 	1Ø�A‰J�O‰O˜G A B˜K¨CˆOÔ0÷	1÷ 	1ñ 	1ús   ÅE/Å/E8c                 ó\  — t        t        j                  j                  d«      j	                  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   }|j                  ||g«      }t        j                  ||«       y )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   rA  r¼   s         r   Útest_join_many_mixedzTestJoin.test_join_many_mixed§  s¢   € ÜÜ�I‰I×!Ñ! !Ó$×4Ñ4°VÓ<Ú(ô
ˆð ˜E�N QÑ&ˆˆ5‰	Ø�f‰f’Q˜˜c˜
�]Ñ#ˆØ�f‰f’Q˜˜c˜
�]Ñ#ˆØ�f‰f’Q˜˜�ZÑ ˆà—‘˜3 ˜*Ó%ˆÜ
×Ñ˜f bÕ)r   c           
      ó”  — t        t        t        j                  j	                  d«      j                  d«      g d¢¬«      t        t        j                  j	                  d«      j                  ddd¬«      j                  dd«      d	d
g¬«      gd¬«      }t        ||gd¬«      }|j                  |d¬«      }|j                  |_	        t        j                  ||«       t        t        j                  j	                  d«      j                  d«      ddg¬«      }t        t        j                  j	                  d«      j                  d«      ddg¬«      }t        t        j                  j	                  d«      j                  d«      ddg¬«      }t        t        j                  j	                  d«      j                  d«      ddg¬«      }|j                  |dd¬«      j                  |ddd¬«      }t        j                  t        j                   j"                  d¬«      5  |j                  |dd¬«       d d d «       y # 1 sw Y   y xY w)Nr   )r.   r/   )r=   r=   r>   r>   r¸   r   r.   r9  rž   r=   r?   r(   r  Ú_2ra  )r/   r   rô   ÚyTr   rc   )r«   r£   rV   z0Passing 'suffixes' which cause duplicate columnsr†   )r   r   r   r   r   r*   r1  rZ  r‰   r�   rŠ   rŒ   r   rŽ   r�   r$  r%  r&  )	r+   r,   r”   r¼   Úwrô   ry  ÚzÚdtas	            r   Útest_join_dupszTestJoin.test_join_dups´  sõ  € ääÜ—I‘I×)Ñ)¨!Ó,×<Ñ<¸WÓEÚ0ôô Ü—I‘I×)Ñ)¨!Ó,×5Ñ5°a¸À"Ð5ÓE×MÑMÈbÐRSÓTØ  #˜Jôð	ð ô
ˆô ˜2˜r˜(¨Ô+ˆØ—‘˜ T�Ó*ˆØ!×)Ñ)ˆŒÜ
×Ñ˜f hÔ/ô Ü�I‰I×!Ñ! !Ó$×4Ñ4°VÓ<ÀsÈCÀjô
ˆô Ü�I‰I×!Ñ! !Ó$×4Ñ4°VÓ<ÀsÈCÀjô
ˆô Ü�I‰I×!Ñ! !Ó$×4Ñ4°VÓ<ÀsÈCÀjô
ˆô Ü�I‰I×!Ñ! !Ó$×4Ñ4°VÓ<ÀsÈCÀjô
ˆð �g‰g�a D°dˆgÓ;×AÑAØ˜$¨D°gð Bó 
ˆô �]‰]Ü�I‰I× Ñ ØDô
ñ 	<ð �I‰I�a D°dˆIÔ;÷		<÷ 	<ñ 	<ús   È H>È>Ic                 óB  — 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
t	        dd«      D �cg c]  }d|z  ‘Œ	 c}i|¬	«      }|j                  |ddg|¬«      }|j                  «       j                  |j                  «       ddg|¬«      j                  g d¢«      }t        j                  ||«       d}	t        j                  t        |	¬«      5  |j                  |d|¬«       d d d «       t        j                  t        |	¬«      5  |j                  |ddg|¬«       d d d «       y c c}w # 1 sw Y   ŒIxY w# 1 sw Y   y xY w)Nrª   Úxyr(   r   )rª   r  Únumrý   Úv1é   rH   Úv2r  r.  r_   r¡   r†   )r   r¦   r   r   r   r‰   r  r   r#  rŠ   rŒ   rŽ   r�   r’   )
r+   rÝ   Ú	leftindexrT   Ú
rightindexÚir^   r¼   r”   r™   s
             r   Útest_join_multi_to_multiz!TestJoin.test_join_multi_to_multiá  ss  € ä×+Ñ+Ü�%‹[œ$˜t›* q¨! fÐ-Ò5Iô
ˆ	ô ˜$¤ b£	Ð*°)Ô<ˆä×,Ñ,Ü�%‹[œ$˜t›*Ð%¨e°T¨]ô
ˆ
ô ˜4´5¸¸A³;Ö!?¨a #¨£'Ò!?Ð@È
ÔSˆà—‘˜5 e¨T ]¸	�ÓBˆà×ÑÓß‰U�5×$Ñ$Ó&¨E°4¨=¸iˆUÓHß‰YÒ+Ó,ð 	ô
 	×Ñ˜h¨Ô/àWˆÜ�]‰]œ:¨SÔ1ñ 	5Ø�I‰I�e ¨)ˆIÔ4÷	5ô �]‰]œ:¨SÔ1ñ 	>Ø�J‰J�t ¨ °9ˆJÔ=÷	>ð 	>ùò "@÷	5ð 	5ú÷	>ð 	>ús   Â
F
Ä,F	Å$FÆ	FÆFc                 ó   — t        t        j                  ddd¬«      t        d«      dœ«      }t        t        j                  ddd¬«      t        d«      d	œ«      }|j	                  |j                  d
«      d
¬«      }|j                  «       }t        t        j                  gdz  t        d«      z   «      |d<   t        j                  ||«       y )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   rM  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�Ó;ˆØ—8‘8“:ˆÜ#¤R§V¡V H¨q¡L´4¸³;Ñ$>Ó?ˆ�ÑÜ
×Ñ˜f hÕ/r   c                 ó  — t        g d¢g d¢g d¢g d¢gg d¢¬«      }t        j                  |d   «      j                  d«      |d<   t        g d	¢g d
¢gg d¢ddg¬«      }t        j                  |d   «      j                  d«      |d<   |j	                  |j                  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   j                  d«      |d<   t        j                  ||«       y )N)ú
2012-08-02ÚLr.   )r”  ÚJrØ   )ú
2013-04-06r•  r9  )r—  r–  é   )rô   ry  rA   r¸   rô   zM8[ns])r”  r–  r(   )r—  r•  r   )rô   ry  r{  r   r/   rX  ry  rR   z2012-08-02 00:00:00r–  r(   rØ   z2013-04-06 00:00:00r•  r9  )rô   ry  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  € äâ'Ú'Ú'Ú'ð	ò $ô
ˆô —>‘> # c¡(Ó+×2Ñ2°8Ó<ˆˆC‰ÜÚ#Ò%;Ð<Ú#Ø�a�&ô
ˆô
 —>‘> # c¡(Ó+×2Ñ2°8Ó<ˆˆC‰Ø—‘˜#Ÿ-™-¨¨c¨
Ó3¸¸c¸
�ÓCˆÜäÐ0Ó1°3¸¸2Ð>ÜÐ0Ó1°3¸¸2Ð>ðð �a�&Ú(ô
ˆð ! ™×,Ñ,¨XÓ6ˆ�‰Ü
×Ñ˜f hÕ/r   c                 ó‚  — ddg}t        j                  ||¬«      }t        j                  t        |«      t        |«      ¬«      }t        d|i|¬«      }t        dt        |«      i|¬«      }|j	                  |«      }t        ddgddgdœt        j                  ddgddg¬«      ¬«      }t        j                  ||«       y )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_index2  s­   € à�3ˆZˆÜ×!Ñ! "°Ô4ˆÜ×!Ñ!¤(¨2£,¼8ÀB»<ÔHˆä˜˜r˜
¨#Ô.ˆÜ˜œx¨›|Ð,°CÔ8ˆØ—‘˜#“ˆÜØ˜�: c¨3 ZÑ0Ü×%Ñ% s¨C j¸cÀ3¸ZÔHô
ˆô 	×Ñ˜f hÕ/r   )6Ú__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ñ   Úxfailr   rõ   rù   r  r  r)  r7  rF  rK  rO  r[  rj  rt  rv  r}  r‡  r’  rœ  r§  © r   r   r!   r!   %   só  „ à‡^�^ñó ðð ‡^�^ñ
ó ð
ð ‡^�^ñó ðò HòIòIòIò$ò	$ð ‡[�[×ÑØ˜  §¡¨T¸¸¿¹ÀyÓ9QÔ RÐSóñ$-óð$-òL:ò$:ò$=ð$ ‡[�[×Ñ˜\¨A¨u°d¸H¸B¿H¹HÀaÈÀVÓ<LÐ+MÓNñ=ó Oð=ò 0ò
!ò
<ò0ò0ò0ò0ò$0ðB ‡[�[×ÑÑ)Ó+Ð4HÐÓIñFó JðFò
ò)2òV:0ò|Gò&òB4,ðl ‡[�[×ÑØ˜  §¡¨T¸¸¿¹ÀyÓ9QÔ RÐSóñMóðMò,0ò&0ò&ò*1ò<*ò+<òZ>ò60ò00ó<0r   r!   rT   c                 ó¦  — |D ]%  }||   j                  «       j                  «       rŒ%J ‚ | j                  |«      }|j                  |«      }	|j                  |«      D ]o  \  }
}t        || j                  |«      }t        ||j                  |«      }	 |j                  |
«      }t        ||«       	 |	j                  |
«      }t        ||«       Œq y # t        $ r5}|dv rt        d|
› d�«      |‚t        || j                  |«       Y d }~ŒZd }~ww xY w# t        $ r5}|dv rt        d|
› d�«      |‚t        ||j                  |«       Y d }~Œíd }~ww xY w)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   B  sh  € àò 'ˆØ�a‰y�‰Ó ×$Ñ$Õ&Ð&Ð&ð'ð —<‘< Ó)€LØ—M‘M (Ó+€Mà"ŸN™N¨8Ó4ò 4Ñˆ	�5Ü'¨¨t¯|©|¸WÓEˆÜ'¨¨u¯}©}¸gÓFˆð
	4Ø!×+Ñ+¨IÓ6ˆFô " (¨FÔ3ð
	4Ø"×,Ñ,¨YÓ7ˆFô " (¨FÕ3ñ54øô ò 	=ØÐ'Ñ'Ü$Ø˜9˜+Ð%FÐGóàðô ˜8 T§\¡\°8×<Ñ<ûð	=ûô ò 	>ØÐ(Ñ(Ü$Ø˜9˜+Ð%FÐGóàðô ˜8 U§]¡]°H×=Ñ=ûð	>ús0   ÂCÂ1DÃ	DÃ+D
Ä
DÄ	EÄ+EÅEc                 óì   ‡— | j                   D �cg c]  }||v s|j                  ‰d«      |v sŒ|‘Œ }}| j                  d d …|f   } | j                  ˆfd„¬«      } | j                  d d …|f   } | S c c}w )NÚ c                 ó(   •— | j                  ‰d«      S )NrÄ  )Úreplace)rô   Úsuffixs    €r   ú<lambda>z&_restrict_to_columns.<locals>.<lambda>p  s   ø€ ¨1¯9©9°V¸RÓ+@€ r   r¸   )r�   rÆ  r?  r¹   )r½  r�   rÇ  rC   Úfounds     `  r   rµ  rµ  g  s~   ø€ à—=‘=öØ A¨¡L°A·I±I¸fÀbÓ4IÈWÒ4TŠð€Eð ð
 �I‰I’a˜�hÑ€Eð �L‰LÓ!@ˆLÓA€Eð �I‰I’a˜�jÑ!€Eà€Lùòs
   �A1®A1c                 óH  ‡— d}| j                  |«      j                  «       j                  }|j                  |«      j                  «       j                  }|D �ch c]  }t        |«      ’Œ c}Št	        ‰«      t	        |«      k(  sJ ‚t        ˆfd„|D «       «      sJ ‚y c c}w )Niy)íÿc              3   ó8   •K  — | ]  }t        |«      ‰v –— Œ y ­w©N)Útuple)Ú.0ÚrowÚrowss     €r   ú	<genexpr>z(_assert_same_contents.<locals>.<genexpr>€  s   øè ø€ Ò5 cŒu�S‹z˜TÔ!Ñ5ùs   ƒ)ÚfillnaÚdrop_duplicatesr  rÍ  r   rÁ   )Ú
join_chunkrO   ÚNA_SENTINELÚjvaluesÚsvaluesrÏ  rÐ  s         @r   r·  r·  x  s‡   ø€ Ø€Kà×Ñ Ó,×<Ñ<Ó>×EÑE€GØ�m‰m˜KÓ(×8Ñ8Ó:×AÑA€Gà")Ö*˜3ŒE�#�JÒ*€DÜˆt‹9œ˜F›Ò#Ð#Ð#ÜÓ5¨WÔ5Ô5Ð5Ñ5ùò +s   ÁBc                 ób   — |D ]*  }||v rŒ| |   j                  «       j                  «       rŒ*J ‚ y rÌ  )rÀ   rÁ   )rÔ  Úsource_columnsr»   rC   s       r   r¹  r¹  ƒ  s:   € Øò *ˆØ�‰=ØØ˜!‰}×!Ñ!Ó#×'Ñ'Õ)Ð)Ð)ñ*r   c                 ó<  — | j                   j                  |j                   |¬«      }| j                  |«      }|j                  |«      }| j                  j	                  |j                  «      }|j                  «       D ]
  \  }}|||<   Œ |j                  |¬«      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ƒ   € Ø—‘—‘˜aŸg™g¨3�Ó/€Jà�9‰9�ZÓ €DØ�9‰9�ZÓ €Dà—Y‘Y×%Ñ% a§i¡iÓ0€Nà—*‘*“,ò ‰ˆˆQØˆˆSŠ	ðà�<‰< ˆ<Ó/Ð/r   c                  ó:  — t        ddit        j                  dgd¬«      ¬«      } t        ddit        j                  d	gd
¬«      ¬«      }| j                  |d¬«      }t        dgdgdœt        j                  dgd¬«      ¬«      }t	        j
                  ||«       y )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˜   € äØ�1ˆXÜ×$Ñ$ i [¸ÔHô€Dô Ø�1ˆXœZ×3Ñ3°V°HÀJÔOô€Eð �Y‰Y�u 'ˆYÓ*€FÜØˆc˜˜ÑÜ×$Ñ$ l ^Ð;OÔPô€Hô ×Ñ˜& (Õ+r   )Ú	input_colÚoutput_colsrB   rA   Úa_xÚa_yc                 óÈ   — t        dddgi«      }t        | ddgi«      }|j                  |ddd¬«      }t        |d	   g d
¢|d   g d¢i«      }t        j                  ||«       y )NrA   r(   r~   r/   ÚcrossÚ_xÚ_y)rV   rä   rå   r   )r(   r(   r~   r~   )r~   r/   r~   r/   rÌ   )ræ  rç  rT   r^   r¼   r”   s         r   Útest_join_crossrî  ¨  sj   € ô
 �c˜A˜q˜6�]Ó#€DÜ�y 1 a &Ð)Ó*€EØ�Y‰Y�u '°4ÀˆYÓF€FÜ˜+ a™.ª,¸ÀA¹ÊÐUÓV€HÜ×Ñ˜& (Õ+r   c                 óž  — t        ddit        j                  dgd¬«      ¬«      }t        ddit        j                  d	gd
¬«      ¬«      }|j                  || ¬«      }| 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
                  ||«       y )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Ì   € äØ�1ˆXœZ×3Ñ3°V°HÀJÔOô€Dô ˜C ˜8¬:×+AÑ+AÀ4À&ÐPVÔ+WÔX€EØ�Y‰Y�u )ˆYÓ,€FØ�GÒÜØ�#˜Q˜CÑ Ü×(Ñ(¨&¨¸#¸s¸ÔDô
‰ô
 Ø�#˜Q˜CÑ Ü×(Ñ(¨&¨¸#¸s¸Ô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                 óx  — t        ddgt        | | ¬«      ddgdœ«      j                  ddg«      }t        g d¢t        || ¬«      g d	¢dœ«      j                  ddg«      }|j                  |d
d¬«      }t        ddgt        | | ¬«      ddgddgdœ«      j                  ddg«      }t	        j
                  ||«       y )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Þ   € ô à˜3�ZÜ! *¸ÔDØ˜�Vñ	
ó÷ �i�˜(Ð#Ó$ð 	ô â$Ü! &°ZÔ@Úñ	
ó÷ �i�˜(Ð#Ó$ð 
ð �Y‰Y�u g°xˆYÓ@€Fäà˜3�ZÜ! *¸ÔDØ˜a˜&Ø˜q˜6ñ		
ó÷ �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¬«      j                  d«      }t        dgd	gd
œd¬«      j                  d«      }| r|j                  d«      }n|j                  d«      }|j                  ||¬«      }|dk(  rCt        ddgddgt        j
                  t        j
                  gdœ«      }|j                  d«      }na|dk(  r2t        t        j
                  gdgd	gdœ«      }|j                  d«      }n*|dk(  r%t        ddgd¬«      }|dk7  r|j                  d«      }|dk(  rj                  «       }t        j                  |«       y )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   rM  Úrename_axisr  rŠ   rŒ   )Ú
left_emptyrV   ÚexprT   r^   r¼   r”   s          r   Útest_join_emptyr  ñ  s9  € ô  ˜A˜q˜6¨¨A¨Ñ/°wÔ?×IÑIÈ#ÓN€DÜ˜Q˜C q cÑ*°'Ô:×DÑDÀSÓI€EáØ�y‰y˜‹|‰à—
‘
˜1“ˆà�Y‰Y�u #ˆYÓ&€Fà
ˆf‚}Ü A q 6°°A°¼b¿f¹fÄbÇfÁfÐ=MÑNÓOˆØ×%Ñ% cÓ*‰Ø	�ŠÜ¤B§F¡F 8°1°#¸Q¸CÑ@ÓAˆØ×%Ñ% cÓ*‰Ø	�ŠÜ c¨3 Z°wÔ?ˆØ�'Š>Ø×+Ñ+¨CÓ0ˆHØ
ˆg‚~Ø×&Ñ&Ó(ˆä×Ñ˜& (Õ+r   c                  óB  — 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                  ||«       y )NÚtestr¸   r‚   ©rƒ   r	  )r  r‚   r  )r   rŠ   rŒ   )rÞ   r1   rA  r¼   r”   s        r   Ú$test_join_empty_uncomparable_columnsr    s•   € ä
‹+€CÜ
˜V˜HÔ
%€CÜ
˜U NÐ3Ô
4€Cà�3‰Y€FÜ & Ô*€HÜ×Ñ˜& (Ô+à�3‰Y€FÜÒ!@ÔA€HÜ×Ñ˜& (Ô+à�3‰Y€FÜ .°%Ð!8Ô9€HÜ×Ñ˜& (Õ+r   zhow, valuesrf   r{   rc   r^   ©r   r   r(   c                 óœ  — t        t        g d¢«      t        g d¢«      g d¢dœ«      j                  ddg«      }t        t        g d¢«      t        g d¢«      g d¢dœ«      j                  ddg«      }t        t        |«      t        |«      ||dœ«      j                  ddg«      }|j                  || ¬«      }t	        j
                  ||«       y )	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Î   € ô äšYÓ'ÜšYÓ'Úñ	
ó÷ �i��c�
Óð ô äšYÓ'ÜšYÓ'Úñ	
ó÷ �i��c�
Óð ô ä˜VÓ$Ü˜VÓ$ØØñ		
ó÷ �i��c�
Óð ð �X‰X�c˜sˆXÓ#€FÜ×Ñ˜& (Õ+r   )r=  r#   )rT   rì  rí  )rT   ))rc  Ú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!   rX   rµ  r·  r¹  rÜ   rå  r¬  r­  rî  rð  rú  r  r  r  r³  r   r   ú<module>r     s�  ðÛ 	ã Û å -ç )Ð )ã ÷÷ ÷ õ ó÷Z0ñ Z0óz"4òJò"6ò*ó
0ò,ð" ‡�×ÑØ  C¨#¨s¨Ð#4°s¸UÀE¸NÐ6KÐ"Lóñ,óð,ò,ð( ‡�×ÑØà
ˆsˆ’_Ð%Ø
ˆQˆ’ÐØ
ˆsˆ’_Ð%á�|Ó$¡i°Ó&=Ð>Ù�|Ó$¡i°Ó&=¹yÈÓ?VÐWð	
ð	óñ,óð,ð: ‡�×ÑØòóñ,óð,ò6,ð& ‡�×ÑØà	’)ÐØ	’)ÐØ	’ÐØ	’)Ðð	óñ,óñ,r   