o
    �¨ÊhÚž ã                   @   s  d dl mZm Z mZ d dlZd dlZd dlZd dlmZm	Z	 d dl
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mZ d dlmZ d dlmZ d dlmZm Z  dÛd
d„Z!dd„ Z"dd„ Z#ej$e"ƒ dd„ d�dd„ ƒZ%ej$e"ƒ dd„ d�dd„ ƒZ&ej$e#ƒ dd„ d�dd„ ƒZ'ej$dd„ ƒZ(G dd„ dƒZ)dd „ Z*G d!d"„ d"ƒZ+ej$d#d$„ ƒZ,ej$d%d&„ ƒZ-G d'd(„ d(ƒZ.ej$d)d*„ ƒZ/ej$d+d,„ ƒZ0G d-d.„ d.ƒZ1ej2j3d/d0d1„ ej4D ƒed2d3gd2d3gd4d5�ed d6d4d7�ed8d9gd4d:�g d;d„ d<�d=d>„ ƒZ5ej2 3d?d@dAgdddBdBd3fdCdd@dAgddBdDd3fddd@dAgdDdBd3fd@dAgdddBdBdfdEdd@dAgddBdDdfddd@dAgdDdBdfg¡dFdG„ ƒZ6dHdI„ Z7ej2 3dJd d dKdLidMdNgfd d dKdOid dNgfd d dKdPidQdRgfd d dKdSdTgidQdRgfdUd dKdVidUd gfdWdWdKdXidYdWgfdZdZdKdVidZd[gfdUdUdKdXid\dUgfdUdZdKdXidUdZgfdUdUdKd]idUd\gfd d dKd^id_d gfdUdUi d\d`gfd d i dQdRgfg¡dadb„ ƒZ8ej2 3dcd&eg dd¢dedfej9gg dg¢dhœƒfd@eg di¢djdedfej9gej9dkdldmgdhœƒfg¡dndo„ ƒZ:ej2 3dpg dq¢¡drds„ ƒZ;ej2 3dKd$d&hd d dtœg¡dudv„ ƒZ<ej2 3dwdxdUdUe=dUƒdyfg¡dzd{„ ƒZ>ej2 3d|d}d~g¡ej2 3ddDdBg¡d€d�„ ƒƒZ?d‚dƒ„ Z@d„d…„ ZAd†d‡„ ZBdˆd‰„ ZCej2 3dŠd‹dŒg¡d�dŽ„ ƒZDd�d�„ ZEej2 3d‘d’d“g¡ej2 3d”dUdDd•œd–d—gfdUdDd˜œd™dšgfg¡d›dœ„ ƒƒZFej2 3d‘d’d“g¡ej2 3d”d–dUid™dšgfd™dUid–d—gfg¡d�dž„ ƒƒZGej2 3d‘d’d“g¡ej2 3dŸdšdDid—dDig¡d d¡„ ƒƒZHd¢d£„ ZId¤d¥„ ZJd¦d§„ ZKd¨d©„ ZLdªd«„ ZMd¬d­„ ZNd®d¯„ ZOd°d±„ ZPej2 3d²dd³g¡d´dµ„ ƒZQd¶d·„ ZRd¸d¹„ ZSdºd»„ ZTej2 3d²d¼d½g¡d¾d¿„ ƒZUej2 3dÀg dÁ¢¡ej2 3dÂddÃg¡dÄdÅ„ ƒƒZVdÆdÇ„ ZWej2 3dÀg dÈ¢¡ej2 3dÉdDdBg¡ej2 3dÊdDdBg¡ej2 3dËdDdBg¡ej2 3dÌdDdBg¡ej2 3dÍdDdBg¡ej2 3dÎdDdBg¡dÏdÐ„ ƒƒƒƒƒƒƒZXdÑdÒ„ ZYdÓdÔ„ ZZej2 3dÕdDdBg¡ej2 3dÖdDdBg¡d×dØ„ ƒƒZ[ej2 3dÀg dÈ¢¡dÙdÚ„ ƒZ\dS )Üé    )ÚdateÚdatetimeÚ	timedeltaN)Úis_object_dtypeÚis_string_dtype)ÚCategoricalDtype)ÚCategoricalÚCategoricalIndexÚ	DataFrameÚDatetimeIndexÚIndexÚIntervalIndexÚ
MultiIndexÚPeriodIndexÚ
RangeIndexÚSeriesÚTimedeltaIndex)Úconcat)Ú
MergeErrorÚmergeé   é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&   úW/var/www/html/env/lib/python3.10/site-packages/pandas/tests/reshape/merge/test_merge.pyÚget_test_data'   s   "r(   c                   C   sT   t dgdd�t dgdd�t dgƒt dgƒt dgƒt t d¡gƒt tjdd	d
�gƒgS )Né   Úint64©ÚdtypeÚInt64g®Gáz®ó?ÚfooTú
2018-01-01ú
US/Eastern©Útz)r   ÚpdÚ	Timestampr&   r&   r&   r'   Ú
get_series2   s   ùr5   c                   C   s8   t tjgdd�t tjgdd�t tjgdd�t tjgƒgS )Nr-   r+   ÚfloatÚobject)r   r   Únanr3   ÚNaTr&   r&   r&   r'   Úget_series_na>   s
   
ür:   c                 C   ó   | j jS ©N©r,   Úname©Úxr&   r&   r'   Ú<lambda>G   ó    rA   )ÚparamsÚidsc                 C   ó   | j S )zV
    A parametrized fixture returning a variety of Series of different
    dtypes
    ©Úparam©Úrequestr&   r&   r'   Úseries_of_dtypeG   ó   rJ   c                 C   r;   r<   r=   r?   r&   r&   r'   rA   P   rB   c                 C   rE   )zk
    A duplicate of the series_of_dtype fixture, so that it can be used
    twice by a single function
    rF   rH   r&   r&   r'   Úseries_of_dtype2P   rK   rL   c                 C   r;   r<   r=   r?   r&   r&   r'   rA   Y   rB   c                 C   rE   )zU
    A parametrized fixture returning a variety of Series with all NA
    values
    rF   rH   r&   r&   r'   Úseries_of_dtype_all_naY   rK   rM   c                  C   s@   t ddgddgddgdœƒ} t g d¢g d¢g d¢d	œƒ}| |fS )
Nr   r)   r   ÚaÚb)Úcol1Úcol_conflictÚcol_left)r)   r   é   é   é   )r   r   r   r   r   )rP   rQ   Ú	col_right©r
   )Údf1Údf2r&   r&   r'   Údfs_for_indicatorb   s   ýÿrZ   c                   @   sš  e Zd Zejd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dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zej d/g d0¢¡d1d2„ ƒZej d3d4d4d5œd4d6d7œd8d4d9œd8d6d:œg¡d;d<„ ƒZd=d>„ Z d?d@„ Z!dAdB„ Z"dCdD„ Z#dEdF„ Z$ej dGdHg dI¢fd4g dJ¢fg¡ej d/dKdLg¡dMdN„ ƒƒZ%dOdP„ Z&dQdR„ Z'ej (dS¡dTdU„ ƒZ)dVdW„ Z*dXdY„ Z+ej dZg d[¢¡d\d]„ ƒZ,ej dZg d[¢¡d^d_„ ƒZ-d`da„ Z.dbdc„ Z/ddde„ Z0dfdg„ Z1dhdi„ Z2djdk„ Z3dldm„ Z4dndo„ Z5dpdq„ Z6drds„ Z7dtdu„ Z8dvdw„ Z9dxdy„ Z:dzd{„ Z;d|d}„ Z<ej d/dLd~g¡ej de=g d€¢ƒe=g d�¢ƒfe>g d‚¢dƒd„�e>d…d†d‡e?j@e?j@e?j@gdƒd„�fgdˆd‰„ eAjBD ƒ¢eC Dg dŠ¢¡eC Dd‹dŒd�eEjFeEjFeEjFg¡f‘eGg dŽ¢d�d��eGd…d‘d’e?j@e?j@e?j@gd�d��f‘eHg d“¢ƒeHd”d•d–e?j@e?j@e?j@gƒf‘¡d—d˜„ ƒƒZId™dš„ ZJej d/dKdLg¡d›dœ„ ƒZKd�dž„ ZLdŸd „ ZMd¡S )¢Ú	TestMergec                 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   r    Ústandard_normal)ÚselfÚdfr&   r&   r'   rc   p   s   üÿ
zTestMerge.dfc                 C   s,   t tdd�tddd�tj d¡ d¡dœƒS )Né
   )r#   rT   )r"   r#   r   )r\   r]   Úvaluer`   ©rb   r&   r&   r'   rY      s   
ýÿzTestMerge.df2c                 C   s    t g d¢tj d¡ d¡dœƒS )N©rN   rO   ÚcÚdÚerj   rN   r   é   ©ÚkeyÚv1©r
   r   r   r    ra   rf   r&   r&   r'   Úleft‰   s
   þÿzTestMerge.leftc                 C   s"   t dtj d¡ d¡ig d¢d�S )NÚv2r   rT   ©ri   rO   rh   rN   ©Úindexro   rf   r&   r&   r'   Úright’   s   þzTestMerge.rightc                 C   sP   t ƒ }t dddgiddgdd�}t||ddd�}t dg idd	�}t ||¡ d S )
NrN   r)   r   r   r*   )rt   r,   T©Ú
left_indexÚright_indexr+   ©r
   r   ÚtmÚassert_frame_equal)rb   Údf_emptyÚdf_aÚresultÚexpectedr&   r&   r'   Útest_merge_inner_join_empty™   s
   z%TestMerge.test_merge_inner_join_emptyc                 C   s,   t ||ƒ}t ||ddgd�}t ||¡ d S )Nr\   r]   ©Úon©r   rz   r{   )rb   rc   rY   ÚjoinedÚexpr&   r&   r'   Útest_merge_common¡   s   
zTestMerge.test_merge_commonc                 C   sJ   t g d¢g d¢g d¢g d¢dœƒ}| t¡}|}t||ƒ}t ||¡ d S )N)r)   r   r)   r   )r   r)   r   r   )r   r   r   r   )r)   r   r   rS   ©r   r)   r   rS   )r
   Úastyper6   r   rz   r{   ©rb   rp   ru   r   r~   r&   r&   r'   Útest_merge_non_string_columns¦   s   ÿ

z'TestMerge.test_merge_non_string_columnsc                 C   sF   |  d¡}|  d¡}t||dd�}t||dd�  d¡}t ||¡ d S )Nr\   r�   )Ú	set_indexr   rz   r{   )rb   rc   rY   rp   ru   r~   r   r&   r&   r'   Útest_merge_index_as_on_arg²   s
   

z$TestMerge.test_merge_index_as_on_argc                 C   sÎ   t g d¢tj d¡ d¡dœƒ}t dtj d¡ d¡ig d¢d�}t||d	d
ddd�}t||d	d
ddd�}t ||jd d …|j	f ¡ t||d	d
dd
d�}t||d	d
dd
d�}t ||jd d …|j	f ¡ d S )Nrg   r   rk   rl   rq   rT   rr   rs   rm   Trp   F)Úleft_onrx   ÚhowÚsortru   )Úright_onrw   rŽ   r�   )
r
   r   r   r    ra   r   rz   r{   ÚlocÚcolumns)rb   rp   ru   Úmerged1Úmerged2r&   r&   r'   Ú(test_merge_index_singlekey_right_vs_left»   s.   þÿþÿÿÿÿ z2TestMerge.test_merge_index_singlekey_right_vs_leftc                 C   s¾   t g d¢tj d¡ d¡dœƒ}t dtj d¡ d¡ig d¢d�}t||d	d
dd�}|j|d	d�j|j }t	 
||¡ t||d	d
dd�}|j|d	d�j|j }t	 
||jd d …|jf ¡ d S )Nrg   r   rk   rl   rq   rT   rr   rs   rm   TÚinner©r�   rx   rŽ   r�   )r�   rw   rŽ   )r
   r   r   r    ra   r   Újoinr‘   rt   rz   r{   r’   ©rb   rp   ru   r~   r   r&   r&   r'   Ú test_merge_index_singlekey_inner×   s   þÿþ z*TestMerge.test_merge_index_singlekey_innerc                 C   s  d}t jtjj|d�� t||dd� W d   ƒ n1 sw   Y  d}t jtjj|d�� t||dd� W d   ƒ n1 s?w   Y  d}t jtjj|d�� t||ddd	� W d   ƒ n1 sbw   Y  d
}t jt|d�� t||dgddgd� W d   ƒ d S 1 s‡w   Y  d S )Nz&Must pass right_on or right_index=True©ÚmatchT)rw   z$Must pass left_on or left_index=True)rx   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothrm   )r�   r‚   z)len\(right_on\) must equal len\(left_on\)r\   r]   ©r�   r�   )ÚpytestÚraisesr3   Úerrorsr   r   Ú
ValueError)rb   rc   rY   rp   ru   Úmsgr&   r&   r'   Útest_merge_misspecifiedì   s"   ÿÿÿÿ"ÿz!TestMerge.test_merge_misspecifiedc                 C   sÞ   d}t jt|d�� t||ddddgd� W d   ƒ n1 sw   Y  d}t jt|d�� t||dddgdd� W d   ƒ n1 sCw   Y  t jt|d�� t||dddgddgd� W d   ƒ d S 1 shw   Y  d S )	Nz>right_index parameter must be of type bool, not <class 'list'>r›   rp   Fr\   r]   ©rŽ   rw   rx   z=left_index parameter must be of type bool, not <class 'list'>©rž   rŸ   r¡   r   )rb   rc   rY   r¢   r&   r&   r'   Ú&test_index_and_on_parameters_confusionÿ   s:   ûÿûÿû"ÿz0TestMerge.test_index_and_on_parameters_confusionc                 C   sN   t ||dd�}|d  ¡ d  ¡ }t|ƒ|ksJ ‚d|v sJ ‚d|v s%J ‚d S )Nrm   r�   r   Úv1_xÚv1_y)r   Úvalue_countsÚsumr   )rb   rp   ÚmergedÚexp_lenr&   r&   r'   Útest_merge_overlap  s
   zTestMerge.test_merge_overlapc                 C   sô   t g d¢g d¢dœƒ}t g d¢g d¢dœƒ}|j|ddd	d
d�}tddddddtjgdd�}t |d |¡ tdtjdddddgdd�}t |d |¡ tddddddtjgdd�}t |d |¡ tdtjdddddgdd�}t |d |¡ d S )N)r.   ÚbarÚbazr.   ©r)   r   rS   rT   )Úlkeyre   )r.   r®   Úquxr.   )rU   é   rk   r   )Úrkeyre   r±   r´   ÚouterT)r�   r�   rŽ   r�   r®   r¯   r.   ©r>   r²   r   rS   r)   rT   Úvalue_xr³   rU   r   rk   Úvalue_y)r
   r   r   r   r8   rz   Úassert_series_equal)rb   rp   ru   r«   r…   r&   r&   r'   Ú%test_merge_different_column_key_names"  s   
ÿz/TestMerge.test_merge_different_column_key_namesc                 C   sz   t dddœtdƒd�}t dddœtdƒd�}t||d	d	d	d
�}d|d< |d dk ¡ s-J ‚d|d< |d dk ¡ s;J ‚d S )Nr   r)   ©rN   rO   rd   rs   r.   r®   ©rh   ri   T©rw   rx   Úcopyr³   rN   Úpeekaboori   )r
   r   r   Úall)rb   rp   ru   r«   r&   r&   r'   Útest_merge_copy6  s   zTestMerge.test_merge_copyc                 C   s‚   t dddœtdƒd�}t dddœtdƒd�}t||d	d	d
d�}t |d j|d j¡s-J ‚|s=t |d j|d j¡s?J ‚d S d S )Nr   r)   r»   rd   rs   r.   r®   r¼   TFr½   rN   ri   )r
   r   r   r   Úshares_memoryÚ_values)rb   Úusing_array_managerÚusing_infer_stringrp   ru   r«   r&   r&   r'   Útest_merge_nocopyB  s   ÿzTestMerge.test_merge_nocopyc                 C   s˜   t g d¢ttdƒƒdœddgd�}t g d¢ttdƒƒd	œƒ}t||dd
d�}t g d¢t dddddddtjtjg	¡g d¢dœg d¢d�}t ||¡ d S )N©r)   r)   r   r   rS   rU   ©rm   re   re   rm   ©r’   ©r)   r)   r   rS   rT   rU   r³   )rm   Úrvaluerµ   ©r‚   rŽ   ©	r)   r)   r)   r)   r   r   rS   rT   rU   r   r)   r   rS   rT   )	r   r)   r   r)   r   r   rS   rT   rU   )rm   re   rË   )re   rm   rË   )	r
   r   r   r   r   Úarrayr8   rz   r{   )rb   rp   ru   r„   r   r&   r&   r'   Ú"test_intelligently_handle_join_keyL  s   ÿýúz,TestMerge.test_intelligently_handle_join_keyc                 C   sê   t dgdgdœƒ}t dgdgdœƒ}t||dd�}|d jd	ks"J ‚t d
gdgdœƒ}t dgdgdœƒ}t||dd�}|d jdksDJ ‚t ddgiƒ}t ddgiƒ}t dg¡}t dg¡}t||||dd�}|d jt t¡kssJ ‚d S )Nr)   rd   rl   r   é   rµ   ©rŽ   rm   r*   TFr   ÚboolÚval©r�   r�   rŽ   Úkey_0)r
   r   r,   r   rÎ   Úint)rb   rX   rY   rc   r±   r´   r&   r&   r'   Útest_merge_join_key_dtype_cast_  s   z(TestMerge.test_merge_join_key_dtype_castc           	      C   sŠ  t g d¢t d¡dœddgdd�}t dt d	¡idd
�}tjg d¢dd
�}t||d|dd�}t|||ddd�}t |d |d ¡ |d  ¡  ¡ sKJ ‚|d  ¡  ¡ sUJ ‚t dt d¡idgd�}t dt d	¡iƒ}t g d¢¡}t g d¢¡}t||||dd�}t	g d¢t
dd�}t |d |¡ t dt d¡iƒ}t dt d	¡iƒ}tjg d¢tjd
�}t||d|dd�}t |d t	|dd�¡ d S )NrÇ   rU   rÈ   re   rm   r*   ©r’   r,   rË   r³   r+   rÊ   rµ   rÔ   rÉ   rÍ   rÕ   r=   rS   )r   r)   r)   r   r   rS   T)rw   r�   rŽ   r¶   )r
   r   ÚarangerÎ   r   rz   r¹   ÚnotnarÀ   r   rÖ   r*   )	rb   rp   ru   rm   r«   r”   r±   r´   r   r&   r&   r'   Útest_handle_join_key_pass_arrayv  s0   ýz)TestMerge.test_handle_join_key_pass_arrayc                 C   sŽ   t  ¡ }tddgi|gd�}tdddgi||gd�}dd › dd › d	d
› dd
› �}tjt|d�� t||ƒ W d   ƒ d S 1 s@w   Y  d S )Nr@   rN   rs   ÚyrO   rh   z>No common columns to perform merge on. Merge options: left_on=z, right_on=z, left_index=Fz, right_index=r›   )r   Únowr
   rž   rŸ   r   r   )rb   ÚdtrX   rY   r¢   r&   r&   r'   Ú&test_no_overlap_more_informative_error–  s    ÿÿþþÿ"ÿz0TestMerge.test_no_overlap_more_informative_errorc                 C   sè   t dddƒ}t dddƒ}t dddƒ}t dddƒ}tddgi|gd	�}td
ddgi||gd	�}t||ƒ tdg d¢i|||gd	�}td
g d¢i||||||gd	�}t||ƒ tdddgi||gd	�}td
ddgi||gd	�}t||ƒ d S )NéÜ  rU   r)   r   rS   rT   r@   rN   rs   rÜ   rO   rh   )rN   rO   Úq)rh   ri   rj   ÚfÚgÚhri   ©r   r
   Ú_check_merge)rb   rÞ   Údt2Údt3Údt4rX   rY   r&   r&   r'   Útest_merge_non_unique_indexes¥  s   
ÿ
z'TestMerge.test_merge_non_unique_indexesc                 C   sl   t dddƒ}t dddƒ}t dddƒ}tdg d¢i||||gd�}td	g d
¢i|||||gd�}t||ƒ d S )Nrà   rU   r)   r   rS   r@   ©rN   rO   rh   ri   rs   rÜ   )rj   râ   rã   z hÚirå   )rb   rÞ   rç   rè   rX   rY   r&   r&   r'   Ú(test_merge_non_unique_index_many_to_manyº  s   ÿz2TestMerge.test_merge_non_unique_index_many_to_manyc                 C   sZ   t dgdgdœƒ}t dg iƒ}t||ddd�}t ||¡ t||ddd�}t ||¡ d S )Nr)   r   rÈ   rm   rp   rÌ   ru   ry   )rb   rp   ru   r~   r&   r&   r'   Útest_left_merge_empty_dataframeÄ  s   z)TestMerge.test_left_merge_empty_dataframerŽ   )r–   rp   ru   rµ   c                 C   s:   t g |d d… d�}| ¡ }|j||d�}t ||¡ d S )Nr   rs   rÑ   )r
   r¾   r˜   rz   r{   )rb   rt   rŽ   rp   ru   r~   r&   r&   r'   Útest_merge_empty_dataframeÎ  s   z$TestMerge.test_merge_empty_dataframeÚkwargTrv   r@   ©rw   r�   rN   ©r�   rx   r�   c                 C   sR   t g d¢d�}t g d¢d�}t g d¢td�}t||fd|i|¤Ž}t ||¡ d S )N©rN   rO   rh   rÉ   ©r@   rÜ   Úz©rN   rO   rh   r@   rÜ   rõ   rØ   rŽ   )r
   r7   r   rz   r{   )rb   Ú	join_typerð   rp   ru   Úexp_inr~   r&   r&   r'   Ú!test_merge_left_empty_right_empty×  s
   z+TestMerge.test_merge_left_empty_right_emptyc                    sL  t g d¢d�‰ t g d¢g d¢g d¢gg d¢d�‰t tjtjgd td�tjtjgd td�tjtjgd td�g d	¢g d
¢g d¢dœg d¢d�}|dd… }‡ ‡fdd„}‡ ‡fdd„}dddœdddœfD ]}|||ƒ |||ƒ qfdddœ}|||ƒ g d¢|d< |||ƒ dddœ}|||ƒ tjtjgd td�|d< |||ƒ d S )Nró   rÉ   ©r)   r   rS   ©rT   rU   r³   ©rk   r   é	   rô   rS   r+   ©r)   rT   rk   ©r   rU   r   ©rS   r³   rý   rö   r   c                    óH   t ˆ ˆfddi|¤Ž}t || ¡ t ˆ ˆfddi|¤Ž}t || ¡ d S )NrŽ   r–   rp   rƒ   ©r…   rð   r~   ©rp   ru   r&   r'   Úcheck1ü  ó   z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check1c                    r  )NrŽ   ru   rµ   rƒ   r  r  r&   r'   Úcheck2  r  z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2Trv   r@   rñ   rN   rò   ©r   r)   r   r�   )r
   r   rÎ   r8   r7   )rb   Úexp_outrø   r  r  rð   r&   r  r'   Ú$test_merge_left_empty_right_notemptyê  s8   "ú÷þ





z.TestMerge.test_merge_left_empty_right_notemptyc              
      sÒ   t g d¢g d¢g d¢gg d¢d�‰t g d¢d�‰t g d¢g d¢g d	¢tjtjgd
 td�tjtjgd
 td�tjtjgd
 td�dœg d¢d�‰ˆdd… ‰ˆj t¡ˆ_‡‡fdd„‰ ‡ ‡‡‡‡‡fdd„‰d S )Nrú   rû   rü   ró   rÉ   rô   rþ   rÿ   r   rS   r+   rö   r   c                    r  )NrŽ   r–   ru   rƒ   r  r  r&   r'   r  -  r  z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check1c                    s†   t ˆˆfddi|¤Ž}t || ¡ t ˆˆfddi|¤Ž}t || ¡ dddœdddœddd	œddd
œfD ]}ˆ ˆ|ƒ ˆˆ|ƒ q4d S )NrŽ   rp   rµ   Trv   r@   rñ   rN   rò   r�   rƒ   r  ©r  r  rø   r  rp   ru   r&   r'   r  3  s   ü
ùz>TestMerge.test_merge_left_notempty_right_empty.<locals>.check2)r
   r   rÎ   r8   r7   rt   rˆ   rf   r&   r
  r'   Ú$test_merge_left_notempty_right_empty  s    "ú÷z.TestMerge.test_merge_left_notempty_right_emptyc                 C   s|   t ||dœddgd�}|d d… }t t|jd d�t|jd d�t|jd d�dœg d¢d�}|j|dd�}t ||¡ d S )	NrÈ   rm   re   rÉ   r   r+   ©rm   r·   r¸   r�   )r
   r   Údtypesr   rz   r{   )rb   rJ   rL   rc   r|   r   Úactualr&   r&   r'   Útest_merge_empty_frameC  s   þýúz TestMerge.test_merge_empty_framec                 C   sb   t ||dœddgd�}t ||dœddgd�}t |||dœg d¢d�}|j|dd�}t ||¡ d S )NrÈ   rm   re   rÉ   r  r�   ry   )rb   rJ   rM   Údf_leftÚdf_rightr   r  r&   r&   r'   Útest_merge_all_na_columnU  s"   þþýúz"TestMerge.test_merge_all_na_columnc                 C   s   t j d¡jdddd�t j d¡jdddd�tdddƒtddd	ƒtd
ddƒtdddƒtddd	ƒtdd	dƒtddd	ƒtdddƒtd
ddƒtdddƒg
dœ}t |¡}|j ¡ }t  	|¡}t |t j d¡ d¡dœ¡}|j
|ddd�}t
||ddd�}t ||¡ |j ¡ |j ¡ k ¡ sŽJ ‚d S )Nr   r   rd   ©Úsizerà   r)   é   iÛ  rT   iÚ  rS   iØ  rU   )Úvar1Úvar2Úvar3rk   )r  Úvar8r  F©r‚   r�   )r   r   r    Úintegersr   r
   Ú	from_dictr  Úuniquer�   r   rz   r{   rÀ   )rb   ri   rc   r  Únewr~   r…   r&   r&   r'   Útest_merge_nosortj  s0   









öý


ÿ zTestMerge.test_merge_nosort)r�   ÚvaluesF)r)   r)   r   r)   r)   )r   r)   r)   r)   r)   rp   ru   c                 C   s@   t dg d¢iƒ}|j|d||d�}t |dgd�}t ||¡ d S )NrN   )r)   r   r)   )r‚   rŽ   r�   rÉ   ry   )rb   r�   r   rŽ   rc   r~   r   r&   r&   r'   Ú test_merge_same_order_left_rightŠ  s   z*TestMerge.test_merge_same_order_left_rightc                 C   s²   t ddgddgdœƒ}t dgdgdœƒ}|j|ddd�}t ddd	œddd	œdtjd	œdtjd	œddd	œd
œtg d
¢td�d� d ¡ ¡ g d¢ }|j 	d¡|_t
j||dd� d S )Nr   r)   ©Úi1Úi2©r#  Úi3r#  Ú_)r‚   Úrsuffixç        ©r   r)   )r#  r$  Úi1_r&  Nr+   rÉ   ©r#  r$  r+  r&  r7   F©Úcheck_dtype)r
   r˜   r   r8   r   r7   r‹   Úreset_indexr’   rˆ   rz   r{   ©rb   rX   rY   r~   r   r&   r&   r'   Útest_merge_nan_right–  s$   

ûø

õÿzTestMerge.test_merge_nan_rightc                 C   s~   t ddgddgdœƒ}t dgdgdœƒ}|j|dd	d
�}t dddœdtjdœdddœdtjdœdœƒg d¢ }t ||¡ d S )Nr   r)   g      à?ç      ø?r"  gffffffæ?r%  r'  r#  )r(  r‚   r*  r)  )r#  r+  r$  r&  r,  )r
   r˜   r   r8   rz   r{   r0  r&   r&   r'   Útest_merge_nan_right2«  s   

üÿùzTestMerge.test_merge_nan_right2zMignore:Passing a BlockManager|Passing a SingleBlockManager:DeprecationWarningc                    s<   G ‡ fdd„dt ƒ‰ ˆ |ƒ}|j|dd�}t|ˆ ƒsJ ‚d S )Nc                       s   e Zd Ze‡ fdd„ƒZdS )z0TestMerge.test_merge_type.<locals>.NotADataFramec                    s   ˆ S r<   r&   rf   ©ÚNotADataFramer&   r'   Ú_constructor¾  s   z=TestMerge.test_merge_type.<locals>.NotADataFrame._constructorN)Ú__name__Ú
__module__Ú__qualname__Úpropertyr6  r&   r4  r&   r'   r5  ½  s    r5  r\   r�   )r
   r   Ú
isinstance)rb   rc   rY   Únadr~   r&   r4  r'   Útest_merge_type¹  s   zTestMerge.test_merge_typec                 C   sê   t  tdddddƒgtddƒgdœ¡}t tdƒd	�}d
}t}|r"d }tj||d�� t||gdd�}t||gdd�}W d   ƒ n1 sDw   Y  t tdddddƒtdddddƒgtddƒtddƒgdœƒ}|rm| 	t
¡}t ||¡ d S )NiÝ  é   rU   é8   r   iäW  )ri   ÚtrÞ   rÉ   zDThe behavior of DataFrame concatenation with empty or all-NA entriesr›   T©Úignore_index)r
   r  r   r   r   ÚFutureWarningrz   Úassert_produces_warningr   rˆ   r7   r{   )rb   rÄ   ri   rc   r¢   Úwarnr~   r   r&   r&   r'   Útest_join_append_timedeltasÇ  s(   ÿþþÿ
z%TestMerge.test_join_append_timedeltasc                 C   s†   t  d¡}tt||gddgd�ƒ}tt|gdgd�ƒ}|j|ddd�}tt||gtdƒd�t|tjgtdƒd�d	œƒ}t 	||¡ d S )
Ni £áÚAÚBrs   Úrrp   )r(  rŽ   ÚAB)Ú0Ú0r)
r   Útimedelta64r
   r   r˜   r   r3   r9   rz   r{   )rb   ÚtdÚlhsÚrhsr~   r   r&   r&   r'   Útest_join_append_timedeltas2á  s   
þÿz&TestMerge.test_join_append_timedeltas2Úunit)ÚDrä   ÚmÚsÚmsÚusÚnsc           
      C   sÚ   t dddgiƒ}td d gddgdd�}d|› d�}|dv r d	}n|}| |¡ d¡}|d j|ks3J ‚|j|dd
d�}tjddg|d�}tj	j
jj||jd�}t ddg|dœddgd�}	|	d j|kseJ ‚t ||	¡ d S )NÚ	entity_idée   éf   Údays©rt   r>   zdatetime64[ú]©rS  rä   rT  zdatetime64[s]Trò   Únatr+   ©rY  r\  rÉ   )r
   r   rˆ   Úto_framer,   r   r   rÎ   r3   ÚcoreÚarraysÚDatetimeArrayÚ_simple_newrz   r{   )
rb   rR  rX   Úserr,   Ú	exp_dtyperY   r~   r\  r…   r&   r&   r'   Útest_other_datetime_unitñ  s&   þûz"TestMerge.test_other_datetime_unitc           	      C   sò   t dddgiƒ}td d gddgdd�}d|› d�}|dv rDd	}tjt|d
�� | |¡ W d   ƒ n1 s6w   Y  | d¡ d¡}n| |¡ d¡}|d j|ksUJ ‚|j|ddd�}t ddgt	j
ddg|d�dœddgd�}t ||¡ d S )NrY  rZ  r[  r\  r]  zm8[r^  r_  z/Supported resolutions are 's', 'ms', 'us', 'ns'r›   zm8[s]Trò   r`  r+   ra  rÉ   )r
   r   rž   rŸ   r¡   rˆ   rb  r,   r   r   rÎ   rz   r{   )	rb   rR  rX   rg  r,   r¢   rY   r~   r…   r&   r&   r'   Útest_other_timedelta_unit  s"   ÿþz#TestMerge.test_other_timedelta_unitc                 C   sÜ   t g d¢g d¢g d¢dœƒ}t g d¢g d¢g d¢dœƒ}g d¢|_g d¢|_t g d¢g d¢g d¢g d¢g d¢dœƒ}g d¢|_t t||ƒ|¡ g d	¢|_d
}tjt|d�� t||ƒ W d   ƒ d S 1 sgw   Y  d S )Nrú   rû   rü   ©rm   rn   rq   )rm   r.   r.   )rm   r®   r®   )rm   rn   rq   Úv3Úv4)rm   r.   r.   r®   r®   )r\   r.   r.   zBData columns not unique: Index\(\['foo'\], dtype='object|string'\)r›   )r
   r’   rz   r{   r   rž   rŸ   r   )rb   rc   rY   r   r¢   r&   r&   r'   Ú&test_overlapping_columns_error_message)  s&   

ûÿ
	
"ÿz0TestMerge.test_overlapping_columns_error_messagec                 C   óŽ   t tjdddd�ddgdœƒ}t tjdddd�g d	¢dœƒ}t tjdd
dd�ddtjtjgtjdddgdœƒ}t||ddd�}t ||¡ d S )NÚ20151010r   r0   ©Úperiodsr2   r)   rÈ   Ú20151011rS   rú   rT   r  rm   rµ   rÌ   )r
   r3   Ú
date_ranger   r8   r   rz   r{   r‰   r&   r&   r'   Útest_merge_on_datetime64tzA  s$   þÿþÿýÿz$TestMerge.test_merge_on_datetime64tzc              
   C   sÄ   t ddgtjdddd�dœƒ}t ddgtjdddd�dœƒ}t g d	¢ttjdddd�ƒtjg tjgttjdddd�ƒ d
œƒ}t||ddd�}t ||¡ |d jdksWJ ‚|d jdks`J ‚d S )Nr)   r   rp  r0   rq  rÈ   rS   rs  rú   r  rm   rµ   rÌ   r·   zdatetime64[ns, US/Eastern]r¸   )	r
   r3   rt  r   r9   r   rz   r{   r,   r‰   r&   r&   r'   Útest_merge_datetime64tz_valuesZ  s0   þÿþÿÿÿüÿ	z(TestMerge.test_merge_datetime64tz_valuesc                 C   sž   t jdd�}ttdg|d�dgtdg|d�dœg d¢d�}|d d	… }|j|d
d�}tt|d�ttd�t|d�ttd�t|d�dœg d¢d�}t ||¡ d S )NÚUTCr1   Ú2018r+   g      @Ú2019)r   re   Údate2rÉ   r   r   r�   )r   r·   Údate2_xr¸   Údate2_y)	r3   ÚDatetimeTZDtyper
   r   r   r   r6   rz   r{   )rb   Údtzru   rp   r~   r   r&   r&   r'   Ú test_merge_on_datetime64tz_emptyu  s(   ýúûø
z*TestMerge.test_merge_on_datetime64tz_emptyc                 C   sº   t tjddddd�dgd�}d|d	< t t g d
¢¡ddœƒ}|d j d¡j d¡|d< t||ddd�}t tjddddd�dgd tj	gd  tj	gd dgd  dœƒ}t
 ||¡ d S )Nz2017-10-29 01:00rT   rä   zEurope/Madrid)rr  Úfreqr2   r   rÉ   r)   re   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00r   )r   re   rw  rµ   ©rŽ   r‚   rk   rS   )r   r·   r¸   )r
   r3   rt  Úto_datetimerÞ   Útz_localizeÚ
tz_convertr   r   r8   rz   r{   r0  r&   r&   r'   Ú+test_merge_datetime64tz_with_dst_transitionŽ  s.   þÿøÿÿûÿ	z5TestMerge.test_merge_datetime64tz_with_dst_transitionc                 C   s”   t jdddd�}tttt|ƒƒƒ|dgd�}t||gƒ}|j|d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©rr  r€  Úpnum©rt   r’   Tr–   )rw   rx   rŽ   r+   r   éÿÿÿÿr)   Úpnum_xÚpnum_y©r’   rt   )r3   Úperiod_ranger
   r   r   r   r   r   r   r   rÙ   r*   ÚrepeatÚreshapeÚ
sort_indexrt   rz   r{   )rb   rt   rc   rY   r~   r   r&   r&   r'   Ú"test_merge_non_unique_period_index®  s   $ýz,TestMerge.test_merge_non_unique_period_indexc                 C   ro  )Nrp  r   rS  rˆ  r)   rÈ   rs  rS   rú   rT   r  rm   rµ   rÌ   )r
   r3   r�  r   r8   r   rz   r{   r‰   r&   r&   r'   Útest_merge_on_periods»  s    ÿþÿýÿzTestMerge.test_merge_on_periodsc                 C   sÌ   t ddgtjdddd�dœƒ}t ddgtjdddd�dœƒ}tjdddd�}tjdddd�}t g d	¢t|ƒtjg tjgt|ƒ d
œƒ}t||ddd�}t ||¡ |d jdks[J ‚|d jdksdJ ‚d S )Nr)   r   rp  rS  rˆ  rÈ   rS   rs  rú   r  rm   rµ   rÌ   r·   z	Period[D]r¸   )	r
   r3   r�  r   r9   r   rz   r{   r,   )rb   rp   ru   Úexp_xÚexp_yr   r~   r&   r&   r'   Útest_merge_period_valuesÐ  s$   ÿÿýÿz"TestMerge.test_merge_period_valuesc           
      C   s@  |\}}|  ¡ }|  ¡ }tg d¢ddtjtjtjtjgddtjtjtjtjgtjdddddgtjdddddgd	œƒ}tg d
¢g d¢d�|d< |g d¢ }t||dddd�}t ||¡ |j|dddd�}t ||¡ t ||¡ t ||¡ |}|jddid�}t||dddd�}	t |	|¡ |j|dddd�}	t |	|¡ d S )N©r   r)   r   rS   rT   rU   r)   r   rN   rO   rS   rT   rU   )rP   Úcol_conflict_xrR   Úcol_conflict_yrV   )Ú	left_onlyÚbothÚ
right_onlyr�  r�  r�  ©r›  r�  rœ  ©Ú
categoriesÚ_merge)rP   r™  rR   rš  rV   r¡  rP   rµ   T©r‚   rŽ   Ú	indicatorÚcustom_namerÉ   )	r¾   r
   r   r8   r   r   rz   r{   Úrename)
rb   rZ   rX   rY   Údf1_copyÚdf2_copyÚ	df_resultÚtestÚdf_result_custom_nameÚtest_custom_namer&   r&   r'   Útest_indicatoræ  sH   ûÿ	
÷ÿÿ
ÿÿzTestMerge.test_indicatorc                 C   s’   |\}}d}t jt|d�� t||dddd� W d   ƒ n1 s!w   Y  t jt|d�� |j|dddd� W d   ƒ d S 1 sBw   Y  d S )Nz<indicator option can only accept boolean or string argumentsr›   rP   rµ   rU   r¢  r¥   )rb   rZ   rX   rY   r¢   r&   r&   r'   Ú#test_merge_indicator_arg_validation%  s   ÿ"ÿz-TestMerge.test_merge_indicator_arg_validationc                 C   sä   |\}}t ||dddd�}|jdk ¡ sJ ‚|j |dddd�}|jdk ¡ s(J ‚t ||dddd�}|jdk ¡ s:J ‚|j |dddd�}|jdk ¡ sLJ ‚t ||dddd�}|jd	k ¡ s^J ‚|j |dddd�}|jd	k ¡ spJ ‚d S )
NrP   rp   Tr¢  r�  ru   r›  r–   rœ  )r   r¡  rÀ   )rb   rZ   rX   rY   Útest2Útest3Útest4r&   r&   r'   Ú%test_merge_indicator_result_integrity/  s   z/TestMerge.test_merge_indicator_result_integrityc              	   C   sV  |\}}dD ]T}t dddg|ddgiƒ}d|› d�}tjt|d�� t||ddd	d
� W d   ƒ n1 s5w   Y  tjt|d�� |j|ddd	d
� W d   ƒ n1 sUw   Y  qt ddgddgdœƒ}d}tjt|d�� t||dddd
� W d   ƒ n1 sƒw   Y  tjt|d�� |j|dddd
� W d   ƒ d S 1 s¤w   Y  d S )N)Ú_right_indicatorÚ_left_indicatorr¡  rP   r)   r   zECannot use `indicator=True` option when data contains a column named z;|Cannot use name of an existing column for indicator columnr›   rµ   Tr¢  )rP   Úcustom_column_namez:Cannot use name of an existing column for indicator columnr´  ©r
   rž   rŸ   r¡   r   )rb   rZ   rX   r'  rì   Údf_badcolumnr¢   r&   r&   r'   Útest_merge_indicator_invalidB  s<   ÿÿÿÿ€ûÿÿ"ÿz&TestMerge.test_merge_indicator_invalidc                 C   s¢   t ddgddgdœƒ}t g d¢g d¢dœƒ}t g d¢g d	¢dœƒ}tg d
¢g d¢d�|d< t||ddgddd�}t ||¡ |j|ddgddd�}t ||¡ d S )Nr   r)   rN   rO   )rP   Úcol2)r)   r)   rS   )rO   r@   rÜ   )r   r)   r)   rS   ©rN   rO   r@   rÜ   )r›  rœ  r�  r�  rž  rŸ  r¡  rP   r¸  rµ   Tr¢  ©r
   r   r   rz   r{   )rb   Údf3Údf4Úhand_coded_resultÚtest5r&   r&   r'   Ú%test_merge_indicator_multiple_columnsd  s   ÿ
þz/TestMerge.test_merge_indicator_multiple_columnsc                 C   s´  t g d¢g d¢dœtdƒd�}t g d¢g d¢dœtd	ƒd�}| ¡ }| ¡ }t||d
d
dd�}t ||¡ t ||¡ t g d¢g d¢g d¢g d¢dœtdƒg d¢d�}t||d
d
dd�}t ||¡ t g d¢g d¢g d¢dœtdƒd�}t||ddd�}t ||¡ t ||¡ t ||¡ t||ddd�}t ||¡ t g d¢g d¢g d¢dœg d¢tdƒd�}| d¡}	t|	|d
ddd�}t ||¡ t|t dgdgdœdgd�gƒ}
t||
d
d
dd� d}tj	t
|d�� t||
d
d
dd� W d   ƒ n1 sûw   Y  tj	t
|d�� t||
ddd� W d   ƒ n	1 �sw   Y  t|t dgdgdœdgd�gd
d�}t||d
d
dd� d }tj	t
|d�� t||d
d
dd� W d   ƒ n	1 �sYw   Y  tj	t
|d�� t||ddd� W d   ƒ n	1 �syw   Y  t||
dd!d� d"}tj	t
|d�� t||
d
d
dd� W d   ƒ n	1 �s¤w   Y  d#}tj	t
|d�� t||
ddd� W d   ƒ n	1 �sÆw   Y  d$}tj	t|d�� t||dd%d� W d   ƒ n	1 �sèw   Y  t g d&¢g d'¢g d¢dœtdƒd�}t g d(¢g d)¢g d*¢d+œtdƒd�}t g d(¢g d)¢g d,¢g d*¢dœtdƒd�}d-}tj	t
|d�� t||ddd� W d   ƒ n	1 �sCw   Y  t||dd.gdd�}t ||¡ d S )/Nrë   )ÚcatÚdogÚweaselÚhorser»   rT   rs   ©rN   rO   rh   ri   rj   )ÚmeowÚbarkúum... weasel noise?ÚnayÚchirp©rN   rh   rU   Tz1:1)rw   rx   Úvalidate)rÅ  rÆ  rÇ  rÈ  )Úa_xrO   Úa_yrh   rŠ  Ú
one_to_oneró   rN   )r‚   rË  ©rO   rN   rh   rŽ  )rw   r�   rË  rj   ÚmooÚone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger›   ÚcowrS   )r�   Úmany_to_onezAMerge keys are not unique in left dataset; not a one-to-one mergeÚmany_to_manyzCMerge keys are not unique in right dataset; not a many-to-one mergezBMerge keys are not unique in left dataset; not a one-to-many mergez™"jibberish" is not a valid argument. Valid arguments are:
- "1:1"
- "1:m"
- "m:1"
- "m:m"
- "one_to_one"
- "one_to_many"
- "many_to_one"
- "many_to_many"Ú	jibberish)rN   rN   rO   rO   )r   r)   r   r)   ©rN   rN   rO   )r   r)   r   )rÅ  rÆ  rÇ  )rN   rO   ri   )rÀ  rÁ  rÂ  zQMerge keys are not unique in either left or right dataset; not a one-to-one mergerO   )r
   r   r¾   r   rz   r{   r‹   r   rž   rŸ   r   r¡   )rb   rp   ru   Ú	left_copyÚ
right_copyr~   r   Ú
expected_2Ú
expected_3Úleft_index_resetÚright_w_dupsr¢   Úleft_w_dupsÚexpected_multir&   r&   r'   Útest_validationw  s.  þþû	üø
ÿýú	ýù

û ûûÿ	ÿÿûûÿ	ÿûÿ	ÿÿÿýú	ýú	üùÿÿzTestMerge.test_validationc                 C   sP   t g g g dœƒ}tjdd�� t||dd� W d   ƒ d S 1 s!w   Y  d S )Nró   Úraise)Údivider»   r�   )r
   r   Úerrstater   )rb   rN   r&   r&   r'   Ú)test_merge_two_empty_df_no_division_error<  s   "ÿz3TestMerge.test_merge_two_empty_df_no_division_errorrµ   zindex,expected_index)r)   r   rT   )r)   r   rT   NNN)ú
2001-01-01ú
2002-02-02ú
2003-03-03zM8[ns]r+   rä  rå  ræ  c                 C   s.   g | ]}t g d ¢|d�t g d¢tjd�f‘qS )rú   r+   )r)   r   rS   NNN)r   r   Úfloat64©Ú.0Údtypr&   r&   r'   Ú
<listcomp>S  s    ýþÿzTestMerge.<listcomp>)©r)   r   ©r   rS   ©rS   rT   rì  rí  rî  )rä  ú
2001-01-02ú
2001-01-03rS  )r€  rï  rð  )Ú1dÚ2dÚ3drñ  rò  ró  c              	   C   sš   t g d¢g d¢dœ|d�}t dg d¢iƒ}|j|dd|d�}t g d	¢g d
¢g d¢tjddgtjddgtjddggg d¢d�}|j|dd� t ||¡ d S )Nr  ©rN   rm   rs   rO   r˜  rm   Tr—   )r   r   r   ©r)   r)   r)   ©r   r   r   rS   rT   rU   ©rN   rm   rO   rÉ   )Úinplace)r
   r   r   r8   r‹   rz   r{   )rb   rŽ   rt   Úexpected_indexrX   rY   r~   r   r&   r&   r'   Ú$test_merge_on_index_with_more_valuesB  s   /


ú÷z.TestMerge.test_merge_on_index_with_more_valuesc                 C   sx   t g d¢g d¢dœƒ}t dg d¢iƒ}t g d¢g d¢g d¢dœg d¢d	d
dtjgd�}|j|dddd�}t ||¡ d S )Nrú   )r   r)   r)   rô  rO   ©r)   r   rS   N)r   r)   r)   r   )r)   r   r   rS   r÷  r   r)   r   rŽ  rm   Tru   r—   ©r
   r   r8   r   rz   r{   r‰   r&   r&   r'   Útest_merge_right_index_right‚  s   ýz&TestMerge.test_merge_right_index_rightc                 C   s†   t ddgddgdœƒ}t ddgddgdœƒ}|j|dd	g|d
�}|dkr0t ddgddgdœƒ}nt ddgddgdœƒ}t ||¡ d S )NrÁ  Úpigé(   r>  )ÚanimalÚ	max_speedÚquetzaléP   r   r  rÌ   ru   ry   )rb   rŽ   Úleft_dfÚright_dfr~   r   r&   r&   r'   Útest_merge_preserves_row_order‘  s   z(TestMerge.test_merge_preserves_row_orderc                 C   sž   t g d¢tg d¢tdƒd�dœƒ}t dg d¢itg d¢ƒd�}|j|d	d
dd�}t g d¢tg d¢ƒg d¢dœdddtjgd�}|jg d¢d�}t 	||¡ d S )Nrú   rÖ  ÚabcrŸ  rô  rO   ró   rs   rm   Tru   r—   rû  )rN   rN   rO   rh   )r)   r)   r   rS   r÷  r   r)   r   rÉ   )
r
   r   r   r	   r   r   r8   Úreindexrz   r{   r™   r&   r&   r'   Ú8test_merge_take_missing_values_from_index_of_other_dtype�  s    þÿ
ýúzBTestMerge.test_merge_take_missing_values_from_index_of_other_dtypec                 C   sd   t t d¡ d¡d g d¢d�}t t d¡ d¡d g d¢d�}|jjD ]}d|j_q$| |¡ d S )	NrÐ   )rT   rU   r)   rÄ  rÉ   )rU   rT   r¹  F)	r
   r   rÙ   r‘  Ú_mgrrd  ÚflagsÚ	writeabler   )rb   r^   r_   r%   r&   r&   r'   Útest_merge_readonly²  s   ÿÿ
zTestMerge.test_merge_readonlyN)Nr7  r8  r9  rž   Úfixturerc   rY   rp   ru   r€   r†   rŠ   rŒ   r•   rš   r£   r¦   r­   rº   rÁ   rÆ   rÏ   r×   rÛ   rß   rê   rí   rî   ÚmarkÚparametrizerï   rù   r	  r  r  r  r  r!  r1  r3  Úfilterwarningsr=  rF  rQ  ri  rj  rn  ru  rv  r  r…  r“  r”  r—  r¬  r­  r±  r·  r¿  rß  rã  r	   r   r3   r9   rz   ÚALL_REAL_NUMPY_DTYPESr   Úfrom_tuplesr   r8   r   r   rú  rý  r  r	  r  r&   r&   r&   r'   r[   o   sð    

	

	
 


üþ
	
/* ÿÿ


 ?
" F

þÿþüûûòÿþëþþå
#þÞþ*
r[   c                 C   sZ   dD ](}dD ]#}| j |||d�}t|  ¡ | ¡ ||d�}| d¡}tj||dd� qqd S )N)r–   rp   rµ   )TF©rŽ   r�   rt   F)Úcheck_names)r˜   r   r/  r‹   rz   r{   )r@   rÜ   rŽ   r�   r~   r   r&   r&   r'   ræ   Â  s   
ùÿræ   c                   @   s<  e Zd Zej dddgeddgƒ d¡g¡dd„ ƒZej de	j
e	je	je	je	je	jg¡ej de	j
e	je	je	jg¡d	d
„ ƒƒZej dg d¢g d¢g d¢g d¢dœfg d¢ddgddgddgdœfddgg d¢ddgddgdœfg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zej dg d ¢eg d!¢ƒ d¡fg d"¢eg d!¢ƒ d¡fd#dged$d%ged&�fd#dged$d%ged&�fg¡d'd(„ ƒZej deddgd)d&�g d*¢feddgd+d&�g d*¢fg d ¢g d,¢fg d"¢g d,¢fg d ¢g d,¢fejd-dd.d/�d0d1gfejd-dd.d/�d#dgfejd-dd.d/�d2dgfejd3dd4�ejd3dd5d6�fg	¡d7d8„ ƒZej d9ddgd:fg d;fdgd<fdgd=fg¡d>d?„ ƒZej d9d@dAgd:fg d;fdAgd<fd@gd=fg¡dBdC„ ƒZ ej dDd;g dE¢g dF¢gfd:g dF¢g dE¢gfd=g dE¢g dF¢gfd<g dF¢g dE¢gfg¡dGdH„ ƒZ!dIdJ„ Z"ej dKg dL¢¡dMdN„ ƒZ#dOS )PÚTestMergeDtypesÚ
right_valsr.   r®   Úcategoryc              
   C   s†   t ddgtddgƒ d¡ddgddgtddgdd	�tddgd
d	�dœƒ}t d|iƒ}t||dd�}t|jjƒs?t|jjƒsAJ ‚d S d S )Nr.   r®   r  r)   r   ç      ð?ç       @Úuint64r+   Úint32)rG  rH  ÚCrS  ÚEÚFrG  r�   )r
   r   rˆ   r   r   rG  r,   r   )rb   r  rp   ru   r~   r&   r&   r'   Útest_differentÏ  s   úÿ
$zTestMergeDtypes.test_differentÚd1Úd2c           
      C   s>  t  |¡}t  |¡}tt jg d¢d |d�ddgd t jt  d¡t jd�dœƒ}t d	d
g¡}tdt jddg|d�i|d�}|j|ddgd�}| 	¡ }	|j
dkrUt  d¡}t jt j|d�|	d< d|	j|	jdk|	jdk@ df< d|	j|	jdk|	jdk@ df< t ||	¡ |j|ddgdd�}|	jddgddd� t ||	¡ d S )Nr  r   r+   r.   r®   r  é   )Úk1Úk2Úv)r   r®   )r)   r.   rq   rU   rk   rs   r$  r%  r�   rì   rç  r   r)   Tr  Ú	mergesort)Úkindrø  )r   r,   r
   rÎ   rÙ   r*   r   r  r˜   r¾   r(  r8   r‘   r$  r%  rz   r{   Úsort_values)
rb   r!  r"  Údtype1Údtype2rp   rt   ru   r~   r   r&   r&   r'   Útest_join_multi_dtypeså  s*   


ýÿ

z&TestMergeDtypes.test_join_multi_dtypeszint_vals, float_vals, exp_valsrú   )r  r  ç      @©ÚXÚYr  r-  r)   rS   r   r  c                 C   sd   t d|iƒ}t d|iƒ}t |ƒ}|j|ddd�}t ||¡ |j|ddd�}t ||ddg ¡ d S )Nr/  r0  r�   ry   )rb   Úint_valsÚ
float_valsÚexp_valsrG  rH  r   r~   r&   r&   r'   Útest_merge_on_ints_floats  s   z)TestMergeDtypes.test_merge_on_ints_floatsc                 C   s~   t ddgddgdœddgd�}t d	gd
gdœddgd�}|j|ddd�}t ddgddgtjdgdœg d¢d�}t ||¡ d S )Nr  r  rd   rÐ   rl   rm   rn   rÉ   r   éÈ   )rm   rq   rq   rp   rÌ   g      i@rk  )r
   r   r   r8   rz   r{   r0  r&   r&   r'   Útest_merge_key_dtype_cast  s   þz)TestMergeDtypes.test_merge_key_dtype_castc                 C   s0  t dg d¢iƒ}t dg d¢iƒ}t dgdgdœƒ}t t¡� |j|ddd�}t ||¡ W d   ƒ n1 s7w   Y  t t¡� |j|ddd�}t ||ddg ¡ W d   ƒ n1 s^w   Y  t dtjtjdgiƒ}t d ¡� |j|ddd�}t ||ddg ¡ W d   ƒ d S 1 s‘w   Y  d S )	Nr/  rú   r0  )çš™™™™™ñ?g      @r-  rS   r-  r.  r�   )r
   rz   rD  ÚUserWarningr   r{   r   r8   )rb   rG  rH  r   r~   r&   r&   r'   Ú!test_merge_on_ints_floats_warning)  s    þþ"þz1TestMergeDtypes.test_merge_on_ints_floats_warningc                 C   st   t dtddgtd�iƒ}t dddgiƒ}t dddgitd�}t||dd�}t ||¡ t||dd�}t ||¡ d S ©Nrm   TFr+   r�   )r
   r   r7   r   rz   r{   ©rb   rX   rY   r   r~   r&   r&   r'   Ú(test_merge_incompat_infer_boolean_objectA  s   z8TestMergeDtypes.test_merge_incompat_infer_boolean_objectc                 C   sx   t dtddtjgtd�iƒ}t dddgiƒ}t dddgitd�}t||dd�}t ||¡ t||dd�}t ||¡ d S r:  )r
   r   r   r8   r7   r   rz   r{   r;  r&   r&   r'   Ú5test_merge_incompat_infer_boolean_object_with_missingL  s   zETestMergeDtypes.test_merge_incompat_infer_boolean_object_with_missingzdf1_vals, df2_valsr  )rN   rO   rN   )r)  r  r  r   FTr+   c                 C   sl   t d|iƒ}t d|iƒ}t||dgd�}t|jjƒsJ ‚t||dgd�}t|jjƒs2t|jjƒs4J ‚d S d S )NrG  r�   )r
   r   r   rG  r,   r   )rb   Údf1_valsÚdf2_valsrX   rY   r~   r&   r&   r'   Ú!test_merge_incompat_dtypes_are_okX  s   $z1TestMergeDtypes.test_merge_incompat_dtypes_are_okr  ró   r  )rK  Ú1Ú2z1/1/2011rS  rˆ  z
2011-01-01z
2011-01-02r)  Ú20130101)rr  r0   rq  c                 C   sæ  t d|iƒ}t d|iƒ}d|d j› d|d j› d�}t |¡}tjt|d�� t||dgd� W d   ƒ n1 s:w   Y  d|d j› d|d j› d�}t |¡}tjt|d�� t||dgd� W d   ƒ n1 smw   Y  t|ƒt|ƒkrñt |||dœƒ}t |||dœƒ}d|d j› d|d j› d	�}t |¡}tjt|d�� t||ƒ W d   ƒ n1 sµw   Y  d|d
 j› d|d
 j› d�}t |¡}tjt|d�� t||dd
gd� W d   ƒ d S 1 sêw   Y  d S d S )NrG  úYou are trying to merge on ú and zE columns for key 'A'. If you wish to proceed you should use pd.concatr›   r�   ©rG  rH  r  rH  zE columns for key 'B'. If you wish to proceed you should use pd.concatr  zE columns for key 'C'. If you wish to proceed you should use pd.concat)	r
   r,   ÚreÚescaperž   rŸ   r¡   r   r   )rb   r>  r?  rX   rY   r¢   r»  r¼  r&   r&   r'   Ú test_merge_incompat_dtypes_errorp  s<   ÿ
ÿÿ
ÿÿ
ÿÿ
"ÿéz0TestMergeDtypes.test_merge_incompat_dtypes_errorzexpected_data, howrµ   r–   ru   rp   c           	      C   s`   t dgdg|d�}t dgdg|d�}t|||d�}tt|ƒƒ}t ||dg|d�}t ||¡ d S )N)r)   ÚidrØ   ©r   rÑ   ©rt   r’   r,   ©r
   r   r   r   rz   r{   )	rb   Úany_numeric_ea_dtyperŽ   Úexpected_datar!  r"  r~   Ú	exp_indexr   r&   r&   r'   Útest_merge_EA_dtypeº  ó   
ÿz#TestMergeDtypes.test_merge_EA_dtyperN   rO   c           	      C   s`   t dgdg|d�}t dgdg|d�}t|||d�}tt|ƒƒ}t ||dg|d�}t ||¡ d S )N)rN   rJ  rØ   )rO   rÑ   rL  rM  )	rb   rŽ   rO  Úany_string_dtyper!  r"  r~   Úexp_idxr   r&   r&   r'   Útest_merge_string_dtypeÎ  rR  z'TestMergeDtypes.test_merge_string_dtypezhow, expected_data)Tr)   rT   )FrU   rS   c                 C   sZ   t ddgddgdœƒ}t ddgddgdœƒ}t|||d	�}t |g d
¢d�}t ||¡ d S )NTFr)   rU   ©rG  rH  rS   rT   ©rG  r  rÑ   rF  rÉ   ry   )rb   rŽ   rO  rX   rY   r~   r   r&   r&   r'   Útest_merge_bool_dtypeâ  s
   z%TestMergeDtypes.test_merge_bool_dtypec           	      C   sÀ   t g d¢g d¢dœt ¡ d�}| ¡ }t dddtjdgd	d
dtjdgdœ|d�}| ¡ }t||dg|d�}t ||¡ t ||¡ tt	 
d¡t ¡ t	 
d¡gt g d¢¡d�}t |j|¡ d S )N)rA  rB  Ú3Ú4N)rZ  Ú5Ú6Ú7Ú8)©Úlvl0zlvl1-a©r`  zlvl1-b)Údatar,   rA  rB  rY  r[  r]  r^  Ú9Ú11)r_  ©r`  zlvl1-cr_  )rp   ru   r‚   rŽ   ÚO)r_  ra  re  rs   )r
   r3   ÚStringDtyper¾   ÚNAr   rz   r{   r   r   r,   r   r  r¹   r  )	rb   r÷   Ústring_dtyperX   r¦  rY   r§  r«   r   r&   r&   r'   Útest_merge_ea_with_stringó  s0   þûþûÿþz)TestMergeDtypes.test_merge_ea_with_stringzleft_empty, how, exp)
)Frp   rp   )Fru   Úempty)Fr–   rk  )Frµ   rp   )FÚcrossÚempty_cross)Trp   rk  )Tru   ru   )Tr–   rk  )Trµ   ru   )Trl  rm  c                 C   sø   t ddgddgdœƒ}t dgdgdœdd	�}|r| d
¡}n| d
¡}|j||d�}|dkr?t ddgddgtjtjgdœƒ}n*|dkrPt dgtjgdgdœƒ}n|dkr]t g d¢dd�}n|dkrit g d¢dd�}|dkrt|jddd�}t ||¡ d S )Nr   r)   rS   rT   rV  rU   rW  r*   r+   r   rÑ   rp   rF  ru   rk  rØ   rm  )ÚA_xrH  ÚA_yr  rµ   rG  TrA  )r
   Úheadr   r   r8   r)  rz   r{   )rb   Ú
left_emptyrŽ   r…   rp   ru   r~   r   r&   r&   r'   Útest_merge_empty  s"   
"z TestMergeDtypes.test_merge_emptyN)$r7  r8  r9  rž   r  r  r   rˆ   r   r   r*   r  ÚintcÚint16Úint8Úuint8rç  Úfloat32Úfloat16r,  r4  r6  r9  r<  r=  r7   rÒ   r@  r3   rt  rI  rQ  rU  rX  rj  rr  r&   r&   r&   r'   r  Î  s¤    ÿ
ÿýþ
úþ
þþóþ
5
üþ
	
üþ
	üþ
	!þr  c                   C   sL   t ttj d¡jddgdd�ƒ tddgƒ¡tj d¡jg d¢dd�dœƒS )Nr   r.   r®   )rd   r  )ÚoneÚtwoÚthreer.  )r
   r   r   r   r    Úchoicerˆ   r   r&   r&   r&   r'   rp   =  s   ÿüÿrp   c                   C   s(   t tddgƒ tddgƒ¡ddgdœƒS )Nr.   r®   r)   r   )r/  ÚZ)r
   r   rˆ   r   r&   r&   r&   r'   ru   I  s
   þÿru   c                
   @   sò   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	d
dg¡dd„ ƒZ
dd„ Zej 	ddd„ dd„ dd„ g¡dd„ ƒZdd„ Zdd„ Zej 	d	d
dg¡ej 	dg d¢d
dgd
dgfg d¢ddgddgfg d ¢d!d"gd!d"gfg¡d#d$„ ƒƒZd%d&„ Zd'S )(ÚTestMergeCategoricalc                 C   sZ   t ||dd�}|j ¡ }|st d¡nd}ttddgd�||gg d¢d	�}t ||¡ d S )
Nr/  r�   rf  Ústringr.   r®   rŸ  )r/  ÚY_xÚY_yrs   ©	r   r  r’  r   r,   r   r   rz   r¹   )rb   rp   rÅ   r«   r~   r,   r   r&   r&   r'   Útest_identicalT  s   
þz#TestMergeCategorical.test_identicalc                 C   s`   t ||dd�}|j ¡ }|st d¡nd}ttddgd�|t d¡gg d	¢d
�}t ||¡ d S )Nr/  r�   rf  r  r.   r®   rŸ  r*   ©r/  r0  r}  rs   r‚  ©rb   rp   ru   rÅ   r«   r~   r,   r   r&   r&   r'   Ú
test_basic_  s   
ýúzTestMergeCategorical.test_basicc                 C   sD  t ddddddœddddddœdœƒ}t d	d	d	d	d	dœd
d
d
d
d
dœdœƒ}t||dddd�}| ¡ }| ¡ }|d  d¡|d< t||dddd�}|d  tdgƒ¡|d< t ||¡ | ¡ }|d  d¡|d< t||dddd�}t ||¡ | ¡ }|d  d¡|d< | ¡ }|d  d¡|d< t||dddd�}t ||¡ d S )NrN   rO   rh   ri   rj   )r   r)   r   rS   rT   Únullr¼   râ   rã   r»   rp   )rŽ   r�   r�   r  )r
   r   r¾   rˆ   r   rz   r{   )rb   ru   rp   rc   r   Úcrightr~   Úcleftr&   r&   r'   Útest_merge_categoricalo  s6   þÿþÿz+TestMergeCategorical.test_merge_categoricalc                 C   s„   t tg d¢g d¢d�g d¢dœƒ}t tg d¢g d¢d�g d¢dœƒ}t||dgd	�}t tg d¢ƒg d¢g d
¢dœƒ}t ||¡ d S )NrF  rŸ  )ÚA0ÚB0ÚC0)ÚFooÚLeft)r  rH  rG  )ÚC1ÚB1ÚA1)rŽ  ÚRightrŽ  r�   )r’  r‘  r�  )rŽ  r�  r“  rº  r0  r&   r&   r'   Ú'tests_merge_categorical_unordered_equalš  s$   þÿþÿ
ýÿz<TestMergeCategorical.tests_merge_categorical_unordered_equalÚorderedTFc                 C   sÆ   t ddg|d�}tg d¢tg d¢|d�g d¢dœƒ d	d
g¡}tg d¢tg d¢|d�g d¢dœƒ d	d
g¡}t||dddd�}tg d¢tg d¢|d�g d¢ddtjgdœƒ d	d
g¡}t ||¡ d S )NÚP2ÚP1©r   r•  )r  r  rS  )r–  r—  r–  r+   r  )rJ  ÚprN   rJ  r™  )rG  r  r  )r–  r–  r—  )rd   r>  r  )rJ  r™  r!  rp   Tr¤   g      &@g      (@)rJ  r™  rN   r!  )	r   r
   r   r‹   r   r   r8   rz   r{   )rb   r•  ÚpcatrX   rY   r~   r   r&   r&   r'   Ú5test_multiindex_merge_with_unordered_categoricalindex³  s8   ýÿ
úýÿ
ú
üÿ
ùzJTestMergeCategorical.test_multiindex_merge_with_unordered_categoricalindexc                 C   s¤   |j |j d¡d�}t||dd�}|j ¡ }|st d¡nd}tt	ddgd	�|t	d
dgd	�gg d¢d�}t
 ||¡ |jj |jj¡sEJ ‚|jj |jj¡sPJ ‚d S )Nr  )r}  r/  r�   rf  r  r.   r®   rŸ  r)   r   r„  rs   )Úassignr}  rˆ   r   r  r’  r   r,   r   r   rz   r¹   r/  r   Ú#_categories_match_up_to_permutationr…  r&   r&   r'   Útest_other_columnsÐ  s   
ýúz'TestMergeCategorical.test_other_columnsÚchangec                 C   s   | S r<   r&   r?   r&   r&   r'   rA   è  s    zTestMergeCategorical.<lambda>c                 C   s   |   tg d¢ƒ¡S )N)r.   r®   Úbah©rˆ   r   r?   r&   r&   r'   rA   é  s    c                 C   s   |   tdd�¡S )NT©r•  r¡  r?   r&   r&   r'   rA   ê  s    c                 C   sˆ   ||j  d¡ƒ}|j|d�}t|j jjtƒsJ ‚t||d|d�}|j 	¡ }|s,t
 d¡nd}	t|	|	t
 d¡gg d¢d	�}
t ||
¡ d S )
Nr7   )r/  r/  rÌ   rf  r  r*   r„  rs   )r/  rˆ   rœ  r;  r   r,   r   r   r  r’  r   r   rz   r¹   )rb   rŸ  r÷   rp   ru   rÅ   r/  r«   r~   r,   r   r&   r&   r'   Útest_dtype_on_merged_differentå  s   
z3TestMergeCategorical.test_dtype_on_merged_differentc                    sx   d‰ t g d¢ˆ  g d¢d ˆ  ‡ fdd„dD ƒ‡ fdd„d	D ƒd
œƒ}| dd„ ¡}t||t|jƒd�}t ||¡ d S )NrU   )
rN   rO   rh   ri   rj   râ   rã   rä   rì   Új)r@  Úwr@   rÜ   rõ   r   c                    s$   g | ]}|gd  ˆ  D ]}|‘qqS rK  r&   ©ré  ÚeachÚletter©rT  r&   r'   rë    s    ýþÿzKTestMergeCategorical.test_self_join_multiple_categories.<locals>.<listcomp>)rT  r#   Úur™  Úoc                    s    g | ]}|gˆ  D ]}|‘q	qS r&   r&   r¦  r©  r&   r'   rë    s    òóÿ)
ÚaaÚbbÚccÚddÚeeÚffÚggÚhhÚiiÚjjrë   c                 S   s
   |   d¡S )Nr  )rˆ   r?   r&   r&   r'   rA      s   
 zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>r�   )r
   Úapplyr   r   r’   rz   r{   )rb   rc   r~   r&   r©  r'   Ú"test_self_join_multiple_categoriesÿ  s   

þ
þøÿz7TestMergeCategorical.test_self_join_multiple_categoriesc                 C   s(  t tdddƒdgtdddƒdggddgd�}|d  d	¡|d< t tdddƒdgtddd
ƒdggddgd�}|d  d	¡|d< t t d¡ ¡ ddgt d¡ ¡ dtjgt d¡ ¡ tjdggg d¢d�}t||ddgd�}t 	||¡ t t d¡ ¡ ddggg d¢d�}t||ddgd�}t 	||¡ d S )NiÑ  r)   r7  r   çÍÌÌÌÌÌô?r   Únum2rÉ   r  rS   çffffffö?Únum4rä  rï  rð  )r   r¹  r»  rµ   r�  r–   )
r
   r   rˆ   r3   r4   r   r8   r   rz   r{   )rb   rc   rY   Úexpected_outerÚresult_outerÚexpected_innerÚresult_innerr&   r&   r'   Útest_dtype_on_categorical_dates'  s.   $ÿ$ÿýúþz4TestMergeCategorical.test_dtype_on_categorical_datesz.category_column,categories,expected_categories)FTTF)r   r)   r)   r   r)   r   )ÚFalseÚTruerÂ  rÁ  rÂ  rÁ  c           	      C   sŽ   t g d¢|dœƒ}|d  t||d�¡|d< t ddgddgd	œƒ}| |¡}t ddg|ddgd
œƒ}|d  t||d�¡|d< t ||¡ d S )Nr°   )rJ  rÀ  rÀ  r¢  r   rT   r)   rý   )rJ  Únum)rJ  rÀ  rÃ  )r
   rˆ   r   r   rz   r{   )	rb   Úcategory_columnr   Úexpected_categoriesr•  rX   rY   r~   r   r&   r&   r'   Ú/test_merging_with_bool_or_int_cateorical_columnG  s   

ÿzDTestMergeCategorical.test_merging_with_bool_or_int_cateorical_columnc                 C   s\   t tddtjgdd�ddœƒ}t||dd�}t tddtjgdd�dddœƒ}t ||¡ d S )	Nr)   r   r-   r+   rV  rG  r�   )rG  ÚB_xÚB_y)r
   r   r   r8   r   rz   r{   )rb   rc   r~   r   r&   r&   r'   Útest_merge_on_int_array_  s   ÿz,TestMergeCategorical.test_merge_on_int_arrayN)r7  r8  r9  rƒ  r†  rŠ  r”  rž   r  r  r›  rž  r£  r·  rÀ  rÆ  rÉ  r&   r&   r&   r'   r~  S  s8    +
ýþ
( ýþr~  c                   C   ó   t dg d¢ig d¢d�S )NrN   ©rÐ   rd   r   ©r   r)   r   rs   rW   r&   r&   r&   r'   r  i  ó   r  c                   C   rÊ  )NrO   ©é,  éd   r5  ©rS   r)   r   rs   rW   r&   r&   r&   r'   r  n  rÍ  r  c                   @   sZ  e Zd Zej dddeddgddgdœd	d
gd�fddeddgddgdœd
d	gd�fddeg d¢ddejgdœg d¢d�fddeg d¢ejddgdœg d¢d�fddeejddgg d¢dœg d¢d�fddeddejgg d¢dœg d¢d�fddedddejgejdddgdœg d¢d�fddedddejgejdddgdœg d¢d�fg¡dd„ ƒZ	dS )ÚTestMergeOnIndexeszhow, sort, expectedr–   FrÐ   rd   r5  rÐ  r»   r   r)   rs   Trp   rË  rÌ  )r   rd   rÐ   r  ru   rÎ  rÑ  ©rÐ  r5  rÏ  rú   rµ   r   rÏ  r‡   c                 C   s$   t ||dd||d�}t ||¡ d S )NT)rw   rx   rŽ   r�   rƒ   )rb   r  r  rŽ   r�   r   r~   r&   r&   r'   Útest_merge_on_indexest  s   0ÿz(TestMergeOnIndexes.test_merge_on_indexesN)
r7  r8  r9  rž   r  r  r
   r   r8   rÔ  r&   r&   r&   r'   rÒ  s  sT    "" ý ýÿýÿýþý	þýÝþ/rÒ  rt   c                 C   s   g | ]}t d dg|dd�‘qS )r)   r   Ú	index_colr=   )r   rè  r&   r&   r'   rë  ¬  s    rë  rG  rH  rÕ  )r   r>   r   )ÚstartÚstopr>   r/   z
2018-01-02r¶   c                 C   s   t | ƒj› d| j› d�S )Nú[r^  )Útyper7  r,   r?   r&   r&   r'   rA   ²  s    )rD   c                 C   sb   t dddgi| d�}t dddgi| d�}|j|dgd	�}t ddgddgd
œ| d�}t ||¡ d S )NÚ	left_datar)   r   rs   Ú
right_datar  r  rÕ  r�   )rÚ  rÛ  ry   )rt   rp   ru   r~   r   r&   r&   r'   Útest_merge_index_typesª  s
   rÜ  z-on,left_on,right_on,left_index,right_index,nmrµ   r–   F)NNNTTrH  T)NNNTTNc              
   C   s  t dg d¢itjddgddggddgd	�d
�}tg d¢tjddgddggddgd	�|d�}t ddgddgdœtjddgdggddgd	�d
�}|d ur]t||| ||||d�}	t |	|¡ d S d}
tjt	|
d�� t||| ||||d�}	W d   ƒ d S 1 s}w   Y  d S )NrG  r°   rN   rO   r   r)   rµ   r–   ©Únamesrs   r   r]  rT   rS   rV  )r‚   r�   r�   rw   rx   z$Cannot merge a Series without a namer›   )
r
   r   Úfrom_productr   r   rz   r{   rž   rŸ   r¡   )r‚   r�   r�   rw   rx   ÚnmrN   rO   r   r~   r¢   r&   r&   r'   Útest_merge_seriesÀ  sH   
þýþù	ù"ÿrá  c                  C   s    t dg d¢itjddgddggddgd	�d
�} tg d¢tjddgddggddgd	�dd�}tjtdd�� t| |ddgd� W d   ƒ d S 1 sIw   Y  d S )NrG  r°   rN   rO   r   r)   rµ   r–   rÝ  rs   r   )rH  r  r]  z-Not allowed to merge between different levelsr›   r�   )r
   r   rß  r   rž   rŸ   r   r   r»   r&   r&   r'   Útest_merge_series_multilevelõ  s   
þýÿ"ýrâ  z!col1, col2, kwargs, expected_colsÚsuffixes)Ú Ú_duprK  Ú0_dup)Nrå  )Ú_xÚ_yÚ0_xÚ0_yrç  rè  rN   )Nrè  r)  )rç  Nz0.0_xrO   Úb_yrÌ  )Nrç  )Ú_aNÚ0_arÍ  c                 C   sŠ   t | g d¢iƒ}t |g d¢iƒ}t ddgddgddgg|d	�}|j|fd
d
dœ|¤Ž}t ||¡ t||fd
d
dœ|¤Ž}t ||¡ d S )Nrú   rû   r)   rT   r   rU   rS   r³   rÉ   Trv   ry   )rP   r¸  ÚkwargsÚexpected_colsrN   rO   r   r~   r&   r&   r'   Útest_merge_suffix	  s   rð  zhow,expectedrÓ  é<   éF   ©éX  é¼  é   )rG  r‘  ÚB2)r)   rÐ  r5  rÏ  r  rô  rõ  rö  c                 C   sX   t g d¢g d¢dœƒ}t g d¢g d¢dœƒ}t||d| dd�}g d	¢|_t ||¡ d S )
N)rÐ  r5  r)   )rñ  rò  r  rV  rÓ  ró  rG  )rç  rç  )r‚   rŽ   rã  )rG  rÇ  rÇ  )r
   r   r’   rz   r{   )rŽ   r   r  r  r~   r&   r&   r'   Útest_merge_duplicate_suffix'	  s
   
rø  zcol1, col2, suffixes))rN   rN   )NN)rN   rN   )rä  N)r   r   )Nrä  c                 C   sj   t | g d¢iƒ}t |g d¢iƒ}d}tjt|d�� t||dd|d� W d   ƒ d S 1 s.w   Y  d S )Nrú   ©rS   rT   rU   z'columns overlap but no suffix specifiedr›   T©rw   rx   rã  rµ  )rP   r¸  rã  rN   rO   r¢   r&   r&   r'   Útest_merge_suffix_errorE	  s   "ÿrû  r  c                 C   sf   t dg d¢iƒ}t dg d¢iƒ}tjtdd�� t||dd| d� W d   ƒ d S 1 s,w   Y  d S )	NrN   rú   rO   rù  zPassing 'suffixes' as ar›   Trú  )r
   rž   rŸ   Ú	TypeErrorr   )rã  rN   rO   r&   r&   r'   Útest_merge_suffix_raisesT	  s
   "ÿrý  zcol1, col2, suffixes, msg)rN   rN   ró   z(too many values to unpack \(expected 2\)z1not enough values to unpack \(expected 2, got 1\)c                 C   sf   t | g d¢iƒ}t |g d¢iƒ}tjt|d�� t||dd|d� W d   ƒ d S 1 s,w   Y  d S )Nrú   rù  r›   Trú  rµ  )rP   r¸  rã  r¢   rN   rO   r&   r&   r'   Útest_merge_suffix_length_error]	  s
   "ÿrþ  Ú	cat_dtypery  rz  Úreversec           	      C   sâ   t g d¢dd�t g d¢dd�dœ}ttg d¢ƒ |d ¡g d¢dœƒ d¡}g d¢}g d¢}|r8| ¡  | ¡  tt|ƒ ||  ¡|d	œƒ d¡}|j|d
d
d�}tg d¢g d¢tg d¢ƒ |d ¡dœƒ d¡}t ||¡ d S )Nró   Fr˜  )ry  rz  ry  rú   ©r.   rp   r.   ©r.   ru   Trv   ©rp   ru   r.   )	r   r
   r   rˆ   r‹   r   r   rz   r{   )	rÿ  r   Ú
cat_dtypesrX   Údata_fooÚ
data_rightrY   r~   r   r&   r&   r'   Útest_merge_equal_cat_dtypesl	  s8   þÿþÿþýÿúr  c                  C   s¨   t g d¢dd�} ttddgƒ | ¡ddgdœƒ d	¡}ttg d¢ƒ | ¡g d
¢dœƒ d	¡}|j|ddd�}tddgddgtddgƒ | ¡dœƒ d	¡}t ||¡ d S )Nró   Fr˜  rN   rO   r)   r   r  r.   )rS   r   r)   r  Trv   rS   r  )r   r
   r   rˆ   r‹   r   rz   r{   )rÿ  rX   rY   r~   r   r&   r&   r'   Útest_merge_equal_cat_dtypes2‘	  s$   ÿþÿþ ÿþr  c                  C   sj   t dtt dd¡t dd¡gdd�iƒ} |  ¡ }|d  d¡|d< t|| ddd	�}|  ¡ }t ||¡ d S )
NrN   r   r)   r   Úintervalr+   r  r–   r�  )	r
   r   r3   ÚIntervalr¾   rˆ   r   rz   r{   )ru   rp   r~   r   r&   r&   r'   Útest_merge_on_cat_and_ext_array§	  s   "ÿr  c                     sÌ   g d¢} g d¢‰t j| ˆfddgd�}t|d�}d|d< t|d�}d|d< d	‰ d
‰|j|dˆ ˆfd�}‡ ‡fdd„| D ƒ}|dg7 }|‡‡fdd„| D ƒ7 }t j|ddgd�}t|d�}tj||dd� d S )Nrë   ©rA  rB  rY  rµ   r–   rÝ  rÉ   rä  rJ  rç  rè  ©r‚   rã  c                    s"   g | ]}ˆD ]}|ˆ  |f‘qqS r&   r&   ©ré  r¨  rÃ  )Úl_sufÚnumbersr&   r'   rë  É	  ó   " z1test_merge_multiindex_columns.<locals>.<listcomp>)rJ  rä  c                    s"   g | ]}ˆ D ]}|ˆ |f‘qqS r&   r&   r  )r  Úr_sufr&   r'   rë  Ë	  r  Fr-  )r   rß  r
   r   r  rz   r{   )Úlettersrt   Úframe_xÚframe_yr~   Útuplesrù  r   r&   )r  r  r  r'   Útest_merge_multiindex_columnsµ	  s    



r  c                  C   st   t g d¢g d¢dœƒ} t g d¢t g d¢¡dœƒ}t| |ddd	�}t g d¢g d¢t g d
¢¡dœƒ}t ||¡ d S )Nró   )rA  rB  rZ  )r@   rÜ   r  )Ú2000Ú2001Ú2002)rÜ   rõ   rp   rÜ   r�  )r  r  r9   rô   )r
   r3   r‚  r   rz   r{   ©rX   rY   r~   r   r&   r&   r'   Ú test_merge_datetime_upcast_dtypeÓ	  s   ÿýÿr  Ún_categoriesrU   é€   c                 C   sš   t dgtt| ƒƒ ƒ}tt| d ƒdg|d�}tdggdgt dgtt| ƒƒd�d�}t||dddd	�}td
d„ t| d ƒD ƒddg|d�}t ||¡ d S )Nr   r)   re   rŽ  r³   rŸ  rp   Tr¤   c                 S   s&   g | ]}|d k r|dgn|t jg‘qS )r   g      @)r   r8   )ré  rì   r&   r&   r'   rë  ó	  s   & z9test_categorical_non_unique_monotonic.<locals>.<listcomp>r·   r¸   )r	   r   r   r
   r   rz   r{   )r  rw   rX   rY   r~   r   r&   r&   r'   Ú%test_categorical_non_unique_monotonicä	  s   ýýr  c                  C   s`  t g d¢g d¢ƒg d¢dœ} t| ƒ} t g d¢g d¢ƒg d¢g d¢dœ}t|ƒ d	d
g¡d }t| | ¡ ddgd	d
gdd�}|jd	d
gdd�}| j|ddgd�}t ||¡ t g d¢g d¢dd�g d¢dœ} t| ƒ} t g d¢g d¢dd�g d¢g d¢dœ}t|ƒ d	d
g¡d }t| | ¡ ddgd	d
gdd�}|jd	d
gdd�}| j|ddgd�}t ||¡ d S )N)rN   rO   rN   rh   rN   rO   ró   )r   r)   r   r)   r   r   )ÚCat1ÚInt1)rN   rO   rh   rN   rO   rh   )r   r   r   r)   r)   r)   )r7  g333333ó?r¸  rº  r2  gš™™™™™ù?)ÚCatÚIntÚFactorr"  r#  r$  r   r!  rp   rÔ   r)   )Úaxisr�   rÏ  Tr¢  )	r   r
   r‹   r   r/  Údropr˜   rz   r{   )rN   rO   r   r~   r&   r&   r'   Ú&test_merge_join_categorical_multiindexú	  sT   þýûÿüÿûûr'  Úfuncr   Ú
merge_asof)rî  Úerr_msg)r�   rw   r�   rw   )r�   rx   r�   rx   c                 C   ó’   t ddgddgdœƒ}t ddgddgdœƒ}d	|d
 › d|d › d�}tjt|d�� tt| ƒ||fi |¤Ž W d   ƒ d S 1 sBw   Y  d S )Nr)   r   rS   rT   r»   rU   r³   rÊ  zCan only pass argument "r   ú" OR "z" not both\.r›   ©r
   rž   rŸ   r   Úgetattrr3   ©r(  rî  r*  rp   ru   r¢   r&   r&   r'   Ú/test_merge_join_cols_error_reporting_duplicates2
  ó   
"ÿr0  c                 C   r+  )Nr)   r   rS   rT   r»   rU   r³   rÊ  zMust pass "r   r,  z"\.r›   r-  r/  r&   r&   r'   Ú,test_merge_join_cols_error_reporting_missingC
  r1  r2  rî  c                 C   s€   t ddgddgdœƒ}t ddgddgdœƒ}d	}tjt|d
�� tt| ƒ||fddi|¤Ž W d   ƒ d S 1 s9w   Y  d S )Nr)   r   rS   rT   r»   rU   r³   rÊ  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r›   r‚   rN   r-  )r(  rî  rp   ru   r¢   r&   r&   r'   Ú1test_merge_join_cols_error_reporting_on_and_indexT
  s   
ÿ"ÿr3  c                  C   sv   t ddgddgdœƒ} t ddgddgdœƒ}t| |dddd�}t ddgddgddgddgddgdœƒ}t ||¡ d S )	Nr)   r.   )r@   rõ   ru   Tr@   )rŽ   rw   r�   )r@   Úx_xÚz_xÚx_yÚz_yry   ©rp   ru   r~   r   r&   r&   r'   Útest_merge_right_left_indexh
  s   ûÿ	r9  c                  C   s�   t dgdgdœƒ ddg¡} t ddgiƒ dg¡}t g g dœtjd� ddg¡}t| |dgdd�}t ||¡ t|| ddgd	�}t ||¡ d S )
Nr)   r   r»   rN   rO   r+   Trò   rñ   )r
   r‹   r   r*   r   rz   r{   ©rX   rY   r   r~   r&   r&   r'   Ú$test_merge_result_empty_index_and_ony
  s   r;  c                  C   s¦   t g d¢dddœƒ} t g d¢ddœƒ}tjtdd�� t| |dd	� W d   ƒ n1 s,w   Y  tjtdd�� t|| dd
d� W d   ƒ d S 1 sLw   Y  d S )Nrú   r)   r   )rN   rO   Úb_xr»   ú(Passing 'suffixes' which cause duplicater›   rN   r�   )rè  rç  r  ©r
   rž   rŸ   r   r   r  r&   r&   r'   Ú.test_merge_suffixes_produce_dup_columns_raises…
  s   ÿ"ÿr?  c                  C   sb   t g d¢g d¢gg d¢d�} t ddgddœƒ}t| |d	d
�}t g d¢gg d¢d�}t ||¡ d S )Nrõ  rö  )rN   rO   rO   rÉ   r)   rS   r   r»   rN   r�   )r)   r)   r)   r   )rN   r<  r<  rë  ry   r8  r&   r&   r'   Ú3test_merge_duplicate_columns_with_suffix_no_warning‘
  s
   r@  c                  C   sp   t g d¢g d¢gg d¢d�} t ddgddœƒ}tjtd	d
�� t| |dd� W d   ƒ d S 1 s1w   Y  d S )N)r)   r)   r)   r)   )r   r   r   r   )rN   rO   rO   r<  rÉ   r)   rS   r   r»   r=  r›   rN   r�   r>  r  r&   r&   r'   ÚItest_merge_duplicate_columns_with_suffix_causing_another_duplicate_raises›
  s
   "ÿrA  c                  C   s~   t ddgddggtddgƒd�} t dd	gd
dggddgd�}t|| dddd�}t g d¢g d¢gtg d¢ƒd�}t ||¡ d S )Nr)   r   rS   rT   rN   ç     €\@rÉ   rý   rd   r>  r  r@   rÜ   r–   Tr¤   )rý   rd   r)   r   )r>  r  rS   rT   )r@   rÜ   rN   rB  ©r
   r   r   rz   r{   r  r&   r&   r'   Ú%test_merge_string_float_column_result¤
  s    ÿrD  c                  C   sn   t dgdgdgd�} t dgdgdgd�}tjtdd�� t| |dgdd	� W d   ƒ d S 1 s0w   Y  d S )
Nr/  r  é   )rb  r’   rt   iç  zCan only pass argumentr›   T)r‚   rw   r>  )Údf_1Údf_2r&   r&   r'   Ú/test_mergeerror_on_left_index_mismatched_dtypes¯
  s
   "ÿrH  c                  C   sb   t tdƒƒ} t| tdƒdœƒ}tdtddƒiƒ}t||| dd�}t||| jdd�}t ||¡ d S )NrS   rV  r  r³   rG  r�   )r	   r   r
   r   Ú_datarz   r{   )Úciru   rp   Úresr   r&   r&   r'   Ú#test_merge_on_left_categoricalindex·
  s   rL  r,   r-   c                 C   sä   t ddgddgdœ| d�}t tjtjgddgdœ| d�}t||dd	d
�}t ddtjtjgddtjtjgtjtjddgdœ| d�}t ||¡ t||dd	d
�}t ddtjtjgtjtjddgddtjtjgdœ| d�}t ||¡ d S )Nr)   r   )rm   rP   r+   rS   rT   )rm   r¸  rm   rµ   rÌ   )rm   rP   r¸  )rm   r¸  rP   rü  )r,   rp   ru   r~   r   r&   r&   r'   Útest_merge_outer_with_NaNÃ
  s(   ýúýúrM  c                  C   sh   t ddgitdgdd�d�} t ddgitdgdd�d�}t| |ddd�}t dgddœƒ}t ||¡ d S )	NrN   r)   rh   r¶   rs   ri   r�   )rÌ  rÍ  rC  r8  r&   r&   r'   Ú test_merge_different_index_namesà
  s
   rN  c                 C   sb   t g d¢ddœ| d�}t g d¢ddœ| d�}|j||d�}t g d¢dddœ| d�}t ||¡ d S )	Nrú   r)   r»   r+   r   rÊ  rÑ   ró   ry   ©rN  r÷   rp   ru   r~   r   r&   r&   r'   Útest_merge_eaé
  s
   rP  c                 C   s†   t g d¢ddœ| d�}t g d¢ddœ|  ¡ d�}|j||d�}t tg d¢| d�tg d¢| d�tg d	¢|  ¡ d�d
œƒ}t ||¡ d S )Nrú   r)   r»   r+   r   rÊ  rÑ   rõ  rö  ró   )r
   Úlowerr   r   rz   r{   rO  r&   r&   r'   Útest_merge_ea_and_non_eaò
  s   ýÿrR  r*   úint64[pyarrow]c                 C   sr   t  d¡ tdddgi| d�}tdddgidd�}| |¡}| ¡ }t ||¡ | |¡}| ¡ }t ||¡ d S )NÚpyarrowrN   r)   r   r+   rS  )rž   Úimportorskipr
   r   r¾   rz   r{   )r,   rc   rY   r~   r   r&   r&   r'   Ú!test_merge_arrow_and_numpy_dtypes  s   


rV  rŽ   )r–   rp   rµ   ru   r2   zAmerica/Chicagoc                 C   s8  t jddd| d�t jddd| d�t jddd| d�g}t|d d… dd	gd
œƒ}|d j d¡|d< t|dd … dd	gdœƒ}|d j d¡|d< t|dd	tjgtjdd	gdœƒ}|d j d¡|d< |dkrq|jdg jdd�}n|dkr}|jddg }n|dkrŒ|jddg jdd�}|j	|d|d�}t
 ||¡ d S )Niç  rU   r  r1   é   é   r   r  r  )r@  rN   r@  rX  r)   )r@  rO   rU  )r@  rN   rO   r–   T©r&  rp   r   ru   rÌ   )r3   r4   r
   rÞ   Úas_unitr   r8   Úilocr/  r   rz   r{   )r2   rŽ   ÚvalsrX   rY   r   r~   r&   r&   r'   Ú(test_merge_datetime_different_resolution  s$   ý r]  c                  C   sn   t dddgiƒ} t ddgitjddgdgd�d	�}t ddgdtjgd
œƒ}| j|dgddd�}t ||¡ d S )NÚcolrG  rH  rO   rÐ  )rG  )r  rÝ  )rb  rt   )r^  rO   Trp   r—   )r
   r   r  r   r8   r   rz   r{   )rc   rY   r   r~   r&   r&   r'   Ú"test_merge_multiindex_single_level+  s   þr_  )rp   ru   r–   rµ   r�   Úon_indexÚleft_uniqueÚleft_monotonicÚright_uniqueÚright_monotonicc                 C   s$  ddg}|r|  |rdnd¡ n	|  |rdnd¡ ddg}|r)|  |r%dnd¡ n	|  |r/dnd¡ td|iƒ}td|iƒ}|rP| d¡}| d¡}dddœ}	nddi}	t||f| |d	œ|	¤Ž}
|rj| ¡ }| ¡ }| d
v rË| dv r{|||}}}n|||}}}| dkrŸt|d jƒ |d j¡}|d  |¡}|| }|r¦| 	d¡}|sÊ|d  
¡ }|j|d jdd�}| tj¡}|d  |j¡}| ¡ }n0| dkrû|d  
¡ }|d  
¡ }|j|dd�}| tj¡}|jj |j¡}td|iƒ}| 	d¡}|�r| d¡}n|jdd�}t |
|¡ d S )Nr   rS   rT   r)   rm   Trv   r‚   r  )rp   ru   r–   )rp   r–   r–   )Ú
fill_valuerµ   rY  )Úappendr
   r‹   r   r/  Úsetr   ÚintersectionÚisinr)  r©   r  rˆ   r   Úintpr�  rb  Úmulrt   rz   r{   )rŽ   r�   r`  ra  rb  rc  rd  rp   ru   Ú	on_kwargsr~   r   ÚotherÚother_uniqueÚkeep_valuesÚ	keep_maskÚother_value_countsÚrepeatsÚleft_countsÚright_countsÚexpected_countsr&   r&   r'   Útest_merge_combinations8  s`   


€
rv  c                  C   s  t dtjgt ¡ d�} t dgƒ}t dgdd�}tjtdd�� |  |¡}W d   ƒ n1 s.w   Y  t 	||¡ tjtdd�� | | ¡}W d   ƒ n1 sPw   Y  t 	|| 
d	¡¡ t dgƒ}t d
gdgdd�}|  |¡}t 	||¡ | | ¡}t 	|| 
d	¡¡ d S )Nr  r+   r2  r   r-   rØ   zYou are mergingr›   rç  r)   )r
   r   r8   r3   Ú
Int64Dtyperz   rD  r8  r   r{   rˆ   r:  r&   r&   r'   Ú!test_merge_ea_int_and_float_numpy�  s"   
ÿÿ


rx  c                 C   s|   t  d¡ tdddgi| d�}tdditddg| d�d�}|j|ddd	d
�}ttddg| d�dtjgdœƒ}t 	||¡ d S )NrT  rN   rO   r+   r)   rh   rs   Trp   r—   r»   )
rž   rU  r
   r   r   r   r   r8   rz   r{   )rS  rp   ru   r~   r   r&   r&   r'   Útest_merge_arrow_string_index˜  s   
ÿry  rq  Úright_emptyc                 C   s¼   t ddgddgd�}t ddgg d¢d�}| r|jd d… }|r&|jd d… }t||dgdd�}t ddgg d	¢d�}| rE|rE|jd d… }n| rMtj|d< n	|rVtj|d
dg< t ||¡ d S )Nr)   r   rG  rH  rŠ  )rG  r  rS  rµ   rÌ   )rG  rH  r  rS  r  rS  )r
   r[  r   r   r8   rz   r{   )rq  rz  rX   rY   r~   r   r&   r&   r'   Ú$test_merge_empty_frames_column_order¤  s   r{  c                 C   sø   t dtdd gdd�iƒ}t dtdgdd�iƒ}d|d j› d|d j› d�}tjtt |¡d	�� |j|d| d
� W d   ƒ n1 sCw   Y  d|d j› d|d j› d�}tjtt |¡d	�� |j|d| d
� W d   ƒ d S 1 suw   Y  d S )Nrm   r)   zdatetime64[ns]r+   ztimedelta64[ns]rD  rE  zG columns for key 'key'. If you wish to proceed you should use pd.concatr›   rÌ   )	r
   r   r,   rž   rŸ   r¡   rG  rH  r   )rŽ   rp   ru   r¢   r&   r&   r'   Ú!test_merge_datetime_and_timedelta»  s   ÿÿÿ"ÿr|  )r   r   )]r   r   r   rG  Únumpyr   rž   Úpandas.core.dtypes.commonr   r   Úpandas.core.dtypes.dtypesr   Úpandasr3   r   r	   r
   r   r   r   r   r   r   r   r   Úpandas._testingÚ_testingrz   Úpandas.core.reshape.concatr   Úpandas.core.reshape.merger   r   r(   r5   r:   r  rJ   rL   rM   rZ   r[   ræ   r  rp   ru   r~  r  r  rÒ  r  r  r  rÜ  rá  râ  rð  r8   rø  rû  rý  Útuplerþ  r  r  r  r  r  r  r'  r0  r2  r3  r9  r;  r?  r@  rA  rD  rH  rL  rM  rN  rP  rR  rV  r]  r_  rv  rx  ry  r{  r|  r&   r&   r&   r'   Ú<module>   s€   4
	



          ]  q

	  

7ýÿø

øþ
(óþ
ÿþýÿþùþ
	þ

þþ
#
8þþ	þþ	þþ
	
		
B