a
    Pfڞ                    @   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  dd
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j23d?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j23dJd 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j23dcd&eg dddedfej9gg dgdhfd@eg didjdedfej9gej9dkdldmgdhfgdndo Z:ej23dpg dqdrds Z;ej23dKd$d&hd d dtgdudv Z<ej23dwdxdUdUe=dUdyfgdzd{ Z>ej23d|d}d~gej23ddDdBgdd Z?dd Z@dd ZAdd ZBdd ZCej23dddgdd ZDdd ZEej23dddgej23ddUdDdddgfdUdDdddgfgdd ZFej23dddgej23dddUiddgfddUiddgfgdd ZGej23dddgej23dddDiddDigdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPej23dddgdd ZQdd ZRdd ZSdd ZTej23dddgdd ZUej23dg dej23dddgddń ZVddǄ ZWej23dg dȢej23ddDdBgej23ddDdBgej23ddDdBgej23ddDdBgej23ddDdBgej23ddDdBgddЄ ZXdd҄ ZYddԄ ZZej23ddDdBgej23ddDdBgdd؄ Z[ej23dg dȢddڄ 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 rPtt ||d |t|   }tjd| |S )N   )	listrangenpZasarraytilelenrandomdefault_rngshuffle)ngroupsnZunique_groupsarr r$   ^/var/www/ai-form-bot/venv/lib/python3.9/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Int64gGz?fooT
2018-01-01
US/Easterntz)r   pd	Timestampr$   r$   r$   r%   
get_series2   s    r3   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   nanr1   NaTr$   r$   r$   r%   get_series_na>   s
    
r8   c                 C   s   | j jS Nr*   namexr$   r$   r%   <lambda>G       r>   )paramsidsc                 C   s   | j S )zV
    A parametrized fixture returning a variety of Series of different
    dtypes
    paramrequestr$   r$   r%   series_of_dtypeG   s    rF   c                 C   s   | j jS r9   r:   r<   r$   r$   r%   r>   P   r?   c                 C   s   | j S )zk
    A duplicate of the series_of_dtype fixture, so that it can be used
    twice by a single function
    rB   rD   r$   r$   r%   series_of_dtype2P   s    rG   c                 C   s   | j jS r9   r:   r<   r$   r$   r%   r>   Y   r?   c                 C   s   | j S )zU
    A parametrized fixture returning a variety of Series with all NA
    values
    rB   rD   r$   r$   r%   series_of_dtype_all_naY   s    rH   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   )rK   rL   	col_rightr
   )df1df2r$   r$   r%   dfs_for_indicatorb   s    rU   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dde>ddde?j@e?j@e?j@gddfgdd eAjBD eCDg deCDdddeEjFeEjFeEjFgfeGg dddeGddde?j@e?j@e?j@gddfeHg deHddde?j@e?j@e?j@gfdd ZIdd ZJejd/dKdLgdd ZKdd ZLdd ZMdS )	TestMergec                 C   sF   t t t tjddtjddd}||d dk }|S )Nr   r   )key1key2data1data2rX   r'   r
   r&   r   r   r   standard_normal)selfdfr$   r$   r%   r^   p   s    
zTestMerge.dfc                 C   s,   t tddtdddtjdddS )N
   )r"   rO   )r!   r"   r   )rW   rX   valuer[   r]   r$   r$   r%   rT      s    
zTestMerge.df2c                 C   s    t g dtjdddS )NrI   rJ   cdere   rI   r      keyv1r
   r   r   r   r\   ra   r$   r$   r%   left   s
    zTestMerge.leftc                 C   s"   t dtjddig ddS )Nv2r   rO   rd   rJ   rc   rI   indexrj   ra   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 )
NrI   r'   r   r   r(   )ro   r*   T
left_indexright_indexr)   r
   r   tmassert_frame_equal)r]   df_emptyZ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 )NrW   rX   onr   ru   rv   )r]   r^   rT   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   rN   r   r'   r   rN   )r
   astyper4   r   ru   rv   r]   rk   rp   ry   rx   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 )NrW   r{   )	set_indexr   ru   rv   )r]   r^   rT   rk   rp   rx   ry   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 )Nrb   r   rf   rg   rl   rO   rm   rn   rh   Trk   F)left_onrs   howsortrp   )right_onrr   r   r   )
r
   r   r   r   r\   r   ru   rv   loccolumns)r]   rk   rp   Z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 )Nrb   r   rf   rg   rl   rO   rm   rn   rh   Tinnerr   rs   r   r{   )r   rr   r   )r
   r   r   r   r\   r   joinr   ro   ru   rv   r   r]   rk   rp   rx   ry   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:0    Y  d}t jtjj|d t||dd W d    n1 s~0    Y  d}t jtjj|d  t||ddd	 W d    n1 s0    Y  d
}t jt|d& t||dgddgd W d    n1 s0    Y  d S )Nz&Must pass right_on or right_index=TruematchT)rr   z$Must pass left_on or left_index=True)rs   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothrh   )r   r|   z)len\(right_on\) must equal len\(left_on\)rW   rX   r   r   )pytestraisesr1   errorsr   r   
ValueError)r]   r^   rT   rk   rp   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>0    Y  d}t jt|d& t||dddgdd W d    n1 s0    Y  t jt|d* t||dddgddgd W d    n1 s0    Y  d S )	Nz>right_index parameter must be of type bool, not <class 'list'>r   rk   FrW   rX   r   rr   rs   z=left_index parameter must be of type bool, not <class 'list'>r   r   r   r   )r]   r^   rT   r   r$   r$   r%   &test_index_and_on_parameters_confusion   s4    $$z0TestMerge.test_index_and_on_parameters_confusionc                 C   sN   t ||dd}|d  d  }t||ks2J d|v s>J d|v sJJ d S )Nrh   r{   r   Zv1_xZv1_y)r   value_countssumr   )r]   rk   mergedZ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   rN   rO   )lkeyr`   )r,   r   quxr,   )rP      rf   r   )rkeyr`   r   r   outerT)r   r   r   r   r   r   r,   r;   r   r   rN   r'   rO   value_xr   rP   r   rf   value_y)r
   r   r   r   r6   ru   assert_series_equal)r]   rk   rp   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 sZJ d|d< |d dk svJ d S )Nr   r'   rI   rJ   r_   rn   r,   r   rc   rd   Trr   rs   copyr   rI   Zpeekaboord   )r
   r   r   all)r]   rk   rp   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sZJ |szt|d j|d jszJ d S )Nr   r'   r   r_   rn   r,   r   r   TFr   rI   rd   )r
   r   r   r   Zshares_memoryZ_values)r]   using_array_managerusing_infer_stringrk   rp   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   rN   rP   rh   r`   r`   rh   r   r'   r'   r   rN   rO   rP   r   )rh   rvaluer   r|   r   	r'   r'   r'   r'   r   r   rN   rO   rP   r   r'   r   rN   rO   )	r   r'   r   r'   r   r   rN   rO   rP   )rh   r`   r   )r`   rh   r   )	r
   r   r   r   r   arrayr6   ru   rv   )r]   rk   rp   r~   ry   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sDJ t d
gdgd}t dgdgd}t||dd}|d jdksJ t ddgi}t ddgi}tdg}tdg}t||||dd}|d jttksJ d S )Nr'   r_   rg   r      r   r   rh   r(   TFr   boolvalr   r   r   key_0)r
   r   r*   r   r   int)r]   rS   rT   r^   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   sJ |d   sJ 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   rP   r   r`   rh   r(   r   r*   r   r   r)   r   r   r   r   r   r   r:   rN   )r   r'   r'   r   r   rN   T)rr   r   r   r   )r
   r   aranger   r   ru   r   Znotnar   r   r   r(   )	r]   rk   rp   rh   r   r   r   r   ry   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    n1 s~0    Y  d S )Nr=   rI   rn   yrJ   rc   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   )r]   dtrS   rT   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  rP   r'   r   rN   rO   r=   rI   rn   r   rJ   rc   )rI   rJ   q)rc   rd   re   fghrd   r   r
   _check_merge)r]   r   dt2dt3Zdt4rS   rT   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   rP   r'   r   rN   r=   rI   rJ   rc   rd   rn   r   )re   r   r   z hir   )r]   r   r   r   rS   rT   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   rh   rk   r   rp   rt   )r]   rk   rp   rx   r$   r$   r%   test_left_merge_empty_dataframe  s    z)TestMerge.test_left_merge_empty_dataframer   )r   rk   rp   r   c                 C   s:   t g |d d d}| }|j||d}t|| d S )Nr   rn   r   )r
   r   r   ru   rv   )r]   ro   r   rk   rp   rx   r$   r$   r%   test_merge_empty_dataframe  s    z$TestMerge.test_merge_empty_dataframekwargTrq   r=   rr   r   rI   r   rs   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rI   rJ   rc   r   r=   r   zrI   rJ   rc   r=   r   r   r   r   )r
   r5   r   ru   rv   )r]   	join_typer   rk   rp   exp_inrx   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 ]}||| ||| qddd}||| g d|d< ||| ddd}||| tjtjgd td|d< ||| d S )Nr   r   r'   r   rN   rO   rP   r   rf   r   	   r   rN   r)   r'   rO   rf   r   rP   r   rN   r   r   r   r   c                    sH   t  fddi|}t||  t  fddi|}t||  d S )Nr   r   rk   r}   r   r   rx   rk   rp   r$   r%   check1  s    z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check1c                    sH   t  fddi|}t||  t  fddi|}t||  d S )Nr   rp   r   r}   r   r   r$   r%   check2  s    z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2Trq   r=   r   rI   r   r   r'   r   r   )r
   r   r   r6   r5   )r]   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   rN   r)   r   r   c                    sH   t  fddi|}t||  t  fddi|}t||  d S )Nr   r   rp   r}   r   r   r$   r%   r   -  s    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 ]} | | qhd S )Nr   rk   r   Trq   r=   r   rI   r   r   r}   r   r   r   r   r   rk   rp   r$   r%   r   3  s    
z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check2)r
   r   r   r6   r5   ro   r   ra   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   rh   r`   r   r   r)   rh   r   r   r{   )r
   r   dtypesr   ru   rv   )r]   rF   rG   r^   rw   ry   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   rh   r`   r   r   r{   rt   )r]   rF   rH   Zdf_leftZdf_rightry   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   r_   sizer   r'      i  rO   i  rN   i  rP   )Zvar1Zvar2var3rf   )r  Zvar8r  Fr|   r   )r   r   r   Zintegersr   r
   	from_dictr  uniquer   r   ru   rv   r   )r]   rd   r^   r  newrx   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'   rk   rp   c                 C   s@   t dg di}|j|d||d}t |dgd}t|| d S )NrI   )r'   r   r'   )r|   r   r   r   rt   )r]   r   r	  r   r^   rx   ry   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  r5   FZcheck_dtype)r
   r   r   r6   r   r5   r   reset_indexr   r   ru   rv   r]   rS   rT   rx   ry   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   r6   ru   rv   r  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| s8J d S )Nc                       s   e Zd Ze fddZdS )z0TestMerge.test_merge_type.<locals>.NotADataFramec                    s    S r9   r$   ra   NotADataFramer$   r%   _constructor  s    z=TestMerge.test_merge_type.<locals>.NotADataFrame._constructorN)__name__
__module____qualname__propertyr  r$   r  r$   r%   r    s   r  rW   r{   )r
   r   
isinstance)r]   r^   rT   Znadrx   r$   r  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}|rDd }tj||d0 t||gdd}t||gdd}W d    n1 s0    Y  t tdddddtdddddgtddtddgd}|r|	t
}t|| d S )Ni     rP   8   r   iW  )rd   tr   r   zDThe behavior of DataFrame concatenation with empty or all-NA entriesr   TZignore_index)r
   r  r   r   r   FutureWarningru   assert_produces_warningr   r   r5   rv   )r]   r   rd   r^   r   warnrx   ry   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Brn   rrk   )r  r   ZAB)0Z0r)
r   Ztimedelta64r
   r   r   r   r1   r7   ru   rv   )r]   tdlhsrhsrx   ry   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sfJ |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sJ t||	 d S )N	entity_ide   f   daysro   r;   zdatetime64[]r6  r   r7  zdatetime64[s]Tr   natr)   r<  r?  r   )r
   r   r   to_framer*   r   r   r   r1   corearraysZDatetimeArrayZ_simple_newru   rv   )
r]   r5  rS   serr*   Z	exp_dtyperT   rx   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 rd	}tjt|d
 || W d    n1 sl0    Y  |dd}n"||d}|d j|ksJ |j|ddd}t ddgt	j
ddg|ddddgd}t|| d S )Nr<  r=  r>  r?  r@  zm8[rA  rB  z/Supported resolutions are 's', 'ms', 'us', 'ns'r   zm8[s]Tr   rC  r)   rD  r   )r
   r   r   r   r   r   rE  r*   r   r   r   ru   rv   )	r]   r5  rS   rH  r*   r   rT   rx   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    n1 s0    Y  d S )Nr   r   r   rh   ri   rl   )rh   r,   r,   )rh   r   r   )rh   ri   rl   Zv3Zv4)rh   r,   r,   r   r   )rW   r,   r,   zBData columns not unique: Index\(\['foo'\], dtype='object|string'\)r   )r
   r   ru   rv   r   r   r   r   )r]   r^   rT   ry   r   r$   r$   r%   &test_overlapping_columns_error_message)  s$    

	

z0TestMerge.test_overlapping_columns_error_messagec                 C   s   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   r.   periodsr0   r'   r   20151011rN   r   rO   r   rh   r   r   )r
   r1   
date_ranger   r6   r   ru   rv   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sJ |d jdksJ d S )Nr'   r   rM  r.   rN  r   rN   rP  r   r   rh   r   r   r   zdatetime64[ns, US/Eastern]r   )	r
   r1   rQ  r   r7   r   ru   rv   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UTCr/   Z2018r)   g      @Z2019)r   r`   Zdate2r   r   r   r{   )r   r   Zdate2_xr   Zdate2_y)	r1   ZDatetimeTZDtyper
   r   r   r   r4   ru   rv   )r]   Zdtzrp   rk   rx   ry   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:00rO   r   zEurope/Madrid)rO  freqr0   r   r   r'   r`   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00r   )r   r`   rT  r   r   r|   rf   rN   )r   r   r   )r
   r1   rQ  to_datetimer   Ztz_localizeZ
tz_convertr   r   r6   ru   rv   r  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rO  rV  Zpnumro   r   Tr   )rr   rs   r   r)   r   r'   Zpnum_xZpnum_yr   ro   )r1   period_ranger
   r   r   r   r   r   r   r   r   r(   repeatreshape
sort_indexro   ru   rv   )r]   ro   r^   rT   rx   ry   r$   r$   r%   "test_merge_non_unique_period_index  s    $z,TestMerge.test_merge_non_unique_period_indexc                 C   s   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 )NrM  r   r6  r\  r'   r   rP  rN   r   rO   r   rh   r   r   )r
   r1   r`  r   r6   r   ru   rv   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sJ |d jdksJ d S )Nr'   r   rM  r6  r\  r   rN   rP  r   r   rh   r   r   r   z	Period[D]r   )	r
   r1   r`  r   r7   r   ru   rv   r*   )r]   rk   rp   Zexp_xZexp_yry   rx   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   rN   rO   rP   r'   r   rI   rJ   rN   rO   rP   )rK   col_conflict_xrM   col_conflict_yrQ   )	left_onlyboth
right_onlyrl  rl  rl  rj  rl  rk  
categories_merge)rK   rh  rM   ri  rQ   rp  rK   r   Tr|   r   Z	indicatorZcustom_namer   )	r   r
   r   r6   r   r   ru   rv   rename)
r]   rU   rS   rT   df1_copydf2_copyZ	df_resulttestZdf_result_custom_nameZ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 sB0    Y  t jt|d" |j|dddd W d    n1 s0    Y  d S )Nz<indicator option can only accept boolean or string argumentsr   rK   r   rP   rq  r   )r]   rU   rS   rT   r   r$   r$   r%   #test_merge_indicator_arg_validation%  s    0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 sPJ t ||dddd}|jdk stJ |j |dddd}|jdk sJ t ||dddd}|jd	k sJ |j |dddd}|jd	k sJ d S )
NrK   rk   Trq  rl  rp   rj  r   rk  )r   rp  r   )r]   rU   rS   rT   Ztest2Ztest3Ztest4r$   r$   r%   %test_merge_indicator_result_integrity/  s    z/TestMerge.test_merge_indicator_result_integrityc              	   C   sX  |\}}dD ]}t dddg|ddgi}d| d}tjt|d" t||ddd	d
 W d    n1 sj0    Y  tjt|d" |j|ddd	d
 W d    q1 s0    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0    Y  tjt|d" |j|dddd
 W d    n1 sJ0    Y  d S )N)Z_right_indicatorZ_left_indicatorrp  rK   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   Trq  )rK   custom_column_namez:Cannot use name of an existing column for indicator columnry  r
   r   r   r   r   )r]   rU   rS   r  r   Zdf_badcolumnr   r$   r$   r%   test_merge_indicator_invalidB  s2    02&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'   rI   rJ   )rK   col2)r'   r'   rN   )rJ   r=   r   )r   r'   r'   rN   rI   rJ   r=   r   )rj  rk  rl  rl  rm  rn  rp  rK   r|  r   Trq  r
   r   r   ru   rv   )r]   df3df4Zhand_coded_resultZ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 s0    Y  tj	t
|d  t||
ddd W d    n1 s80    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 s0    Y  tj	t
|d  t||ddd W d    n1 s0    Y  t||
dd!d d"}tj	t
|d" t||
d
d
dd W d    n1 sJ0    Y  d#}tj	t
|d  t||
ddd W d    n1 s0    Y  d$}tj	t|d  t||dd%d W d    n1 s0    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 s0    Y  t||dd.gdd}t|| d S )/Nr   )catdogweaselhorser   rO   rn   rI   rJ   rc   rd   re   )meowbarkum... weasel noise?nayZchirprI   rc   rP   Tz1:1)rr   rs   validate)r  r  r  r  )a_xrJ   a_yrc   r]  Z
one_to_oner   rI   )r|   r  rJ   rI   rc   r_  )rr   r   r  re   mooZone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger   cowrN   )r   Zmany_to_onezAMerge keys are not unique in left dataset; not a one-to-one mergeZ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"Z	jibberish)rI   rI   rJ   rJ   )r   r'   r   r'   rI   rI   rJ   )r   r'   r   )r  r  r  )rI   rJ   rd   )r  r  r  zQMerge keys are not unique in either left or right dataset; not a one-to-one mergerJ   )r
   r   r   r   ru   rv   r   r   r   r   r   r   )r]   rk   rp   Z	left_copyZ
right_copyrx   ry   Z
expected_2Z
expected_3Zleft_index_resetZright_w_dupsr   Zleft_w_dupsZexpected_multir$   r$   r%   test_validationw  s   	
	

 &0&0&00		0zTestMerge.test_validationc                 C   sN   t g g g d}tjdd t||dd W d    n1 s@0    Y  d S )Nr   raise)divider   r{   )r
   r   Zerrstater   )r]   rI   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   rO   )r'   r   rO   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   rN   NNN)r   r   float64.0Zdtypr$   r$   r%   
<listcomp>S  s   zTestMerge.<listcomp>)r'   r   r   rN   rN   rO   r  r  r  )r  
2001-01-02
2001-01-03r6  )rV  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   rI   rh   rn   rJ   rg  rh   Tr   )r   r   r   r'   r'   r'   r   r   r   rN   rO   rP   rI   rh   rJ   r   )inplace)r
   r   r   r6   r   ru   rv   )r]   r   ro   expected_indexrS   rT   rx   ry   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  rJ   r'   r   rN   N)r   r'   r'   r   )r'   r   r   rN   r  r   r'   r   r_  rh   Trp   r   r
   r   r6   r   ru   rv   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r`t ddgddgd}nt ddgddgd}t|| d S )Nr  pig(   r%  )animal	max_speedZquetzalP   r  r  r   rp   rt   )r]   r   left_dfright_dfrx   ry   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  abcrn  r  rJ   r   rn   rh   Trp   r   r  )rI   rI   rJ   rc   )r'   r'   r   rN   r  r   r'   r   r   )
r
   r   r   r	   r   r   r6   reindexru   rv   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_qH|| d S )	Nr   )rO   rP   r'   r  r   )rP   rO   r}  F)	r
   r   r   rb  Z_mgrrG  flagsZ	writeabler   )r]   rY   rZ   r#   r$   r$   r%   test_merge_readonly  s    
zTestMerge.test_merge_readonlyN)Nr  r   r!  r   fixturer^   rT   rk   rp   rz   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
  r  r  filterwarningsr$  r,  r4  rI  rJ  rL  rR  rS  rU  rY  rd  re  rf  rv  rw  rx  r{  r  r  r  r	   r   r1   r7   ru   ALL_REAL_NUMPY_DTYPESr   from_tuplesr   r6   r   r   r  r  r  r  r  r$   r$   r$   r%   rV   o   s   

	

	
 


	

/* 


 ?
" F

#
*
rV   c                 C   sZ   dD ]P}dD ]F}| j |||d}t|  | ||d}|d}tj||dd qqd S )N)r   rk   r   )TFr   r   ro   F)Zcheck_names)r   r   r  r   ru   rv   )r=   r   r   r   rx   ry   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s~J d S )Nr,   r   r  r'   r         ?       @uint64r)   int32)r-  r.  Cr6  EFr-  r{   )r
   r   r   r   r   r-  r*   r   )r]   r  rk   rp   rx   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rt 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,   rl   rP   rf   rn   r  r  r{   r   r  r   r'   Tr  Z	mergesort)kindr  )r   r*   r
   r   r   r(   r   r  r   r   r  r6   r   r  r  ru   rv   sort_values)
r]   r  r  Zdtype1Zdtype2rk   ro   rp   rx   ry   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'   rN   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  r  r   rt   )r]   Zint_valsZ
float_valsZexp_valsr-  r.  ry   rx   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  r_   r   rg   rh   ri   r   r      )rh   rl   rl   rk   r   g      i@rK  )r
   r   r   r6   ru   rv   r  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 sn0    Y  tt4 |j|ddd}t||ddg  W d    n1 s0    Y  t dtjtjdgi}td 4 |j|ddd}t||ddg  W d    n1 s"0    Y  d S )	Nr  r   r  )皙?g      @r  rN   r  r  r   )r
   ru   r*  UserWarningr   rv   r   r6   )r]   r-  r.  ry   rx   r$   r$   r%   !test_merge_on_ints_floats_warning)  s    *2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 Nrh   TFr)   r{   )r
   r   r5   r   ru   rv   r]   rS   rT   ry   rx   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   r6   r5   r   ru   rv   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   )rI   rJ   rI   )r  r  r  r   FTr)   c                 C   sh   t d|i}t d|i}t||dgd}t|jjs8J t||dgd}t|jjsdt|jjsdJ d S )Nr-  r{   )r
   r   r   r-  r*   r   )r]   df1_valsdf2_valsrS   rT   rx   r$   r$   r%   !test_merge_incompat_dtypes_are_okX  s    z1TestMergeDtypes.test_merge_incompat_dtypes_are_okr  r   r  )r0  12z1/1/2011r6  r\  z
2011-01-01z
2011-01-02r  Z20130101)rO  r.   rN  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 st0    Y  d|d j d|d j d}t|}tjt|d  t||dgd W d    n1 s0    Y  t|t|krt |||d}t |||d}d|d j d|d j d	}t|}tjt|d t|| W d    n1 sn0    Y  d|d
 j d|d
 j d}t|}tjt|d" t||dd
gd W d    n1 s0    Y  d S )Nr-  You are trying to merge on  and zE columns for key 'A'. If you wish to proceed you should use pd.concatr   r{   r-  r.  r  r.  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   )r]   r  r  rS   rT   r   r  r  r$   r$   r%    test_merge_incompat_dtypes_errorp  s2    
.
.
*
z0TestMergeDtypes.test_merge_incompat_dtypes_errorzexpected_data, howr   r   rp   rk   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   ro   r   r*   r
   r   r   r   ru   rv   )	r]   any_numeric_ea_dtyper   expected_datar  r  rx   Z	exp_indexry   r$   r$   r%   test_merge_EA_dtype  s    
z#TestMergeDtypes.test_merge_EA_dtyperI   rJ   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)rI   r  r   )rJ   r   r  r  )	r]   r   r  any_string_dtyper  r  rx   Zexp_idxry   r$   r$   r%   test_merge_string_dtype  s    
z'TestMergeDtypes.test_merge_string_dtypezhow, expected_data)Tr'   rO   )FrP   rN   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'   rP   r-  r.  rN   rO   r-  r  r   r  r   rt   )r]   r   r  rS   rT   rx   ry   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)r  r  34N)r  5678)lvl0zlvl1-ar  zlvl1-b)datar*   r  r  r  r  r  r  9Z11)r  r  zlvl1-cr  )rk   rp   r|   r   O)r  r  r  rn   )r
   r1   ZStringDtyper   ZNAr   ru   rv   r   r   r*   r   r  r   r   )	r]   r   Zstring_dtyperS   rs  rT   rt  r   ry   r$   r$   r%   test_merge_ea_with_string  s0    z)TestMergeDtypes.test_merge_ea_with_stringzleft_empty, how, exp)
)Frk   rk   )Frp   empty)Fr   r  )Fr   rk   )Fcrossempty_cross)Trk   r  )Trp   rp   )Tr   r  )Tr   rp   )Tr  r  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}nT|dkrt dgtjgdgd}n2|dkrt g ddd}n|dkrt g ddd}|dkr|jddd}t|| d S )Nr   r'   rN   rO   r  rP   r  r(   r)   r   r   rk   r  rp   r  r   r  )ZA_xr.  ZA_yr  r   r-  Tr(  )r
   headr   r   r6   r  ru   rv   )r]   
left_emptyr   r   rk   rp   rx   ry   r$   r$   r%   test_merge_empty  s"    
"z TestMergeDtypes.test_merge_emptyN)$r  r   r!  r   r  r  r   r   r  r   r(   r  ZintcZint16Zint8Zuint8r  Zfloat32Zfloat16r  r  r  r  r  r  r5   r   r  r1   rQ  r  r  r  r  r
  r  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   )r_   r   )onetwothreer  )r
   r   r   r   r   choicer   r   r$   r$   r$   r%   rk   =  s    
rk   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%   rp   I  s
    rp   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{   r	  stringr,   r   rn  )r  ZY_xZY_yrn   	r   r   rc  r   r*   r   r   ru   r   )r]   rk   r   r   rx   r*   ry   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{   r	  r  r,   r   rn  r(   r  r  r  rn   r  r]   rk   rp   r   r   rx   r*   ry   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 )NrI   rJ   rc   rd   re   )r   r'   r   rN   rO   nullr   r   r   r   rk   )r   r   r   r  )r
   r   r   r   r   ru   rv   )r]   rp   rk   r^   ry   Zcrightrx   Z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 )Nr  rn  )ZA0B0ZC0)FooLeft)r  r.  r-  )C1B1A1)r   Rightr   r{   )r$  r#  r"  )r   r!  r%  r~  r  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ro  r'  )r  r  r6  )r(  r)  r(  r)   r   )r  prI   r  r+  )r-  r  r  )r(  r(  r)  )r_   r%  r  )r  r+  r  rk   Tr   g      &@g      (@)r  r+  rI   r  )	r   r
   r   r   r   r   r6   ru   rv   )r]   r'  ZpcatrS   rT   rx   ry   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sJ |jj|jjsJ d S )Nr  )r  r  r{   r	  r  r,   r   rn  r'   r   r  rn   )assignr  r   r   r   rc  r   r*   r   r   ru   r   r  r	  Z#_categories_match_up_to_permutationr  r$   r$   r%   test_other_columns  s    
z'TestMergeCategorical.test_other_columnschangec                 C   s   | S r9   r$   r<   r$   r$   r%   r>     r?   zTestMergeCategorical.<lambda>c                 C   s   |  tg dS )N)r,   r   Zbahr   r   r<   r$   r$   r%   r>     r?   c                 C   s   |  tddS )NTr'  r0  r<   r$   r$   r%   r>     r?   c                 C   s   ||j d}|j|d}t|j jjts0J t||d|d}|j	 }|sXt
dnd}	t|	|	t
dgg dd	}
t||
 d S )
Nr5   )r  r  r   r	  r  r(   r  rn   )r  r   r-  r#  r	  r*   r   r   r   rc  r   r   ru   r   )r]   r/  r   rk   rp   r   r  r   rx   r*   ry   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 )NrP   )
rI   rJ   rc   rd   re   r   r   r   r   j)r'  wr=   r   r   r   c                    s$   g | ]}|gd    D ]}|qqS r  r$   r  Zeachletterr7  r$   r%   r    s   zKTestMergeCategorical.test_self_join_multiple_categories.<locals>.<listcomp>)r7  r"   ur+  oc                    s    g | ]}|g  D ]}|qqS r$   r$   r5  r7  r$   r%   r    s   )
ZaaZbbccddeeffZgghhiiZjjr   c                 S   s
   |  dS )Nr  )r   r<   r$   r$   r%   r>      r?   zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>r{   )r
   applyr   r   r   ru   rv   )r]   r^   rx   r$   r7  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'   r  r   ?r   num2r   r  rN   ffffff?num4r  r  r  )r   rC  rE  r   rW  r   )
r
   r   r   r1   r2   r   r6   r   ru   rv   )r]   r^   rT   Zexpected_outerZresult_outerZexpected_innerZ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TruerH  rG  rH  rG  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   )r  r  r  r1  r   rO   r'   r   )r  num)r  r  rI  )r
   r   r   r   ru   rv   )	r]   Zcategory_columnro  Zexpected_categoriesr'  rS   rT   rx   ry   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)   r  r-  r{   )r-  B_xZB_y)r
   r   r   r6   r   ru   rv   )r]   r^   rx   ry   r$   r$   r%   test_merge_on_int_array_  s    z,TestMergeCategorical.test_merge_on_int_arrayN)r  r   r!  r  r  r  r&  r   r  r  r,  r.  r2  rA  rF  rJ  rL  r$   r$   r$   r%   r  S  s6   +

( r  c                   C   s   t dg dig ddS )NrI   r   r_   r   r   r'   r   rn   rR   r$   r$   r$   r%   r  i  s    r  c                   C   s   t dg dig ddS )NrJ   ,  d   r  rN   r'   r   rn   rR   r$   r$   r$   r%   r  n  s    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   r_   r  rQ  r   r   r'   rn   Trk   rM  rN  )r   r_   r   r   rp   rO  rR  rQ  r  rP  r   r   r   rP  r   c                 C   s$   t ||dd||d}t|| d S )NT)rr   rs   r   r   r}   )r]   r  r  r   r   ry   rx   r$   r$   r%   test_merge_on_indexest  s    0z(TestMergeOnIndexes.test_merge_on_indexesN)
r  r   r!  r   r  r  r
   r   r6   rU  r$   r$   r$   r%   rS  s  sR   ""  	/rS  ro   c                 C   s   g | ]}t d dg|ddqS )r'   r   	index_colr:   )r   r  r$   r$   r%   r    r?   r  r-  r.  rV  )ro  r;   r   )startstopr;   r-   z
2018-01-02r   c                 C   s   t | j d| j dS )N[rA  )typer  r*   r<   r$   r$   r%   r>     r?   )rA   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   rn   
right_datar  r  rV  r{   )r[  r\  rt   )ro   rk   rp   rx   ry   r$   r$   r%   test_merge_index_types  s
    r]  z-on,left_on,right_on,left_index,right_index,nmr   r   F)NNNTTr.  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rt||| ||||d}	t|	| nHd}
tjt	|
d& t||| ||||d}	W d    n1 s0    Y  d S )Nr-  r   rI   rJ   r   r'   r   r   namesrn   r   r@  rO   rN   r  )r|   r   r   rr   rs   z$Cannot merge a Series without a namer   )
r
   r   from_productr   r   ru   rv   r   r   r   )r|   r   r   rr   rs   nmrI   rJ   ry   rx   r   r$   r$   r%   test_merge_series  sF    
	rb  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    n1 s0    Y  d S )Nr-  r   rI   rJ   r   r'   r   r   r^  rn   r   )r.  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    
rc  z!col1, col2, kwargs, expected_colssuffixes) _dupr0  Z0_dup)Nrf  )_x_yZ0_xZ0_yrg  rh  rI   )Nrh  r  )rg  Nz0.0_xrJ   b_yr  )Nrg  )Z_aNZ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'   rO   r   rP   rN   r   r   Trq   rt   )rK   r|  kwargsZexpected_colsrI   rJ   ry   rx   r$   r$   r%   test_merge_suffix	  s    rk  zhow,expectedrT  <   F   X       )r-  r#  ZB2)r'   rQ  r  rP  r  ro  rp  rq  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)rQ  r  r'   )rl  rm  r  r  rT  rn  r-  )rg  rg  )r|   r   rd  )r-  rK  rK  )r
   r   r   ru   rv   )r   ry   r  r  rx   r$   r$   r%   test_merge_duplicate_suffix'	  s
    
rr  zcol1, col2, suffixes))rI   rI   )NN)rI   rI   )re  N)r   r   )Nre  c                 C   sh   t | g di}t |g di}d}tjt|d" t||dd|d W d    n1 sZ0    Y  d S )Nr   rN   rO   rP   z'columns overlap but no suffix specifiedr   Trr   rs   rd  rz  )rK   r|  rd  rI   rJ   r   r$   r$   r%   test_merge_suffix_errorE	  s
    ru  r   c                 C   sd   t dg di}t dg di}tjtdd" t||dd| d W d    n1 sV0    Y  d S )	NrI   r   rJ   rs  zPassing 'suffixes' as ar   Trt  )r
   r   r   	TypeErrorr   )rd  rI   rJ   r$   r$   r%   test_merge_suffix_raisesT	  s    rw  zcol1, col2, suffixes, msg)rI   rI   r   z(too many values to unpack \(expected 2\)z1not enough values to unpack \(expected 2, got 1\)c                 C   sd   t | g di}t |g di}tjt|d" t||dd|d W d    n1 sV0    Y  d S )Nr   rs  r   Trt  rz  )rK   r|  rd  r   rI   rJ   r$   r$   r%   test_merge_suffix_length_error]	  s    rx  	cat_dtyper  r  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}|rp|  |  tt|||  |d	d}|j|d
d
d}tg dg dtg d|d dd}t|| d S )Nr   Fr*  )r  r  r  r   r,   rk   r,   r,   rp   Trq   rk   rp   r,   )	r   r
   r   r   r   rz  r   ru   rv   )	ry  rz  Z
cat_dtypesrS   Zdata_fooZ
data_rightrT   rx   ry   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*  rI   rJ   r'   r   r{  r,   )rN   r   r'   r|  Trq   rN   r}  )r   r
   r   r   r   r   ru   rv   )ry  rS   rT   rx   ry   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 )
NrI   r   r'   r   intervalr)   r  r   rW  )	r
   r   r1   ZIntervalr   r   r   ru   rv   )rp   rk   rx   ry   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   r  r  r  r   r   r^  r   re  r  rg  rh  r|   rd  c                    s"   g | ]}D ]}|  |fqqS r$   r$   r  r6  rI  )l_sufnumbersr$   r%   r  	  r?   z1test_merge_multiindex_columns.<locals>.<listcomp>)r  re  c                    s"   g | ]} D ]}| |fqqS r$   r$   r  )r  r_sufr$   r%   r  	  r?   Fr  )r   r`  r
   r   r  ru   rv   )lettersro   Zframe_xZframe_yrx   Ztuplesr  ry   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   )r  r  r  )r=   r   r  )20002001Z2002)r   r   rk   r   rW  )r  r  r7   r   )r
   r1   rX  r   ru   rv   rS   rT   rx   ry   r$   r$   r%    test_merge_datetime_upcast_dtype	  s    r  n_categoriesrP      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'   r`   r_  r   rn  rk   Tr   c                 S   s&   g | ]}|d k r|dgn|t jgqS )r   g      @)r   r6   )r  r   r$   r$   r%   r  	  r?   z9test_categorical_non_unique_monotonic.<locals>.<listcomp>r   r   )r	   r   r   r
   r   ru   rv   )r  rr   rS   rT   rx   ry   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)rI   rJ   rI   rc   rI   rJ   r   )r   r'   r   r'   r   r   )Cat1Int1)rI   rJ   rc   rI   rJ   rc   )r   r   r   r'   r'   r'   )r  g333333?rB  rD  r  g?)CatIntFactorr  r  r  r  r  rk   r   r'   )Zaxisr{   r  Tr1  )	r   r
   r   r   r  dropr   ru   rv   )rI   rJ   ry   rx   r$   r$   r%   &test_merge_join_categorical_multiindex	  sT    r  funcr   Z
merge_asof)rj  err_msg)r   rr   r   rr   )r   rs   r   rs   c                 C   s   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    n1 s0    Y  d S )Nr'   r   rN   rO   r   rP   r   r  zCan only pass argument "r   " OR "z" not both\.r   r
   r   r   r   getattrr1   r  rj  r  rk   rp   r   r$   r$   r%   /test_merge_join_cols_error_reporting_duplicates2
  s
    
r  c                 C   s   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    n1 s0    Y  d S )Nr'   r   rN   rO   r   rP   r   r  zMust pass "r   r  z"\.r   r  r  r$   r$   r%   ,test_merge_join_cols_error_reporting_missingC
  s
    
r  rj  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    n1 sp0    Y  d S )Nr'   r   rN   rO   r   rP   r   r  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r   r|   rI   r  )r  rj  rk   rp   r   r$   r$   r%   1test_merge_join_cols_error_reporting_on_and_indexT
  s    
r  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   rp   Tr=   )r   rr   r   )r=   Zx_xZz_xZx_yZz_yrt   rk   rp   rx   ry   r$   r$   r%   test_merge_right_left_indexh
  s    	r  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   rI   rJ   r)   Tr   r   )r
   r   r   r(   r   ru   rv   rS   rT   ry   rx   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 sX0    Y  tjtdd  t|| dd
d W d    n1 s0    Y  d S )Nr   r'   r   )rI   rJ   b_xr   (Passing 'suffixes' which cause duplicater   rI   r{   )rh  rg  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  )rI   rJ   rJ   r   r'   rN   r   r   rI   r{   )r'   r'   r'   r   )rI   r  r  ri  rt   r  r$   r$   r%   3test_merge_duplicate_columns_with_suffix_no_warning
  s
    r  c                  C   sn   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    n1 s`0    Y  d S )N)r'   r'   r'   r'   )r   r   r   r   )rI   rJ   rJ   r  r   r'   rN   r   r   r  r   rI   r{   r  r   r$   r$   r%   Itest_merge_duplicate_columns_with_suffix_causing_another_duplicate_raises
  s    r  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   rN   rO   rI        \@r   r   r_   r%  r  r=   r   r   Tr   )r   r_   r'   r   )r%  r  rN   rO   )r=   r   rI   r  r
   r   r   ru   rv   r  r$   r$   r%   %test_merge_string_float_column_result
  s     r  c                  C   sl   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    n1 s^0    Y  d S )
Nr  r     )r  r   ro   i  zCan only pass argumentr   T)r|   rr   r  )Zdf_1Zdf_2r$   r$   r%   /test_mergeerror_on_left_index_mismatched_dtypes
  s    r  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 )NrN   r  r  r   r-  r   )r	   r   r
   r   _dataru   rv   )cirp   rk   resry   r$   r$   r%   #test_merge_on_left_categoricalindex
  s    r  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   )rh   rK   r)   rN   rO   )rh   r|  rh   r   r   )rh   rK   r|  )rh   r|  rK   r  )r*   rk   rp   rx   ry   r$   r$   r%   test_merge_outer_with_NaN
  s(    r  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 )	NrI   r'   rc   r   rn   rd   r   )r  r  r  r  r$   r$   r%    test_merge_different_index_names
  s
    r  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   rt   r  r   rk   rp   rx   ry   r$   r$   r%   test_merge_ea
  s
    r  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   ru   rv   r  r$   r$   r%   test_merge_ea_and_non_ea
  s    r  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pyarrowrI   r'   r   r)   r  )r   importorskipr
   r   r   ru   rv   )r*   r^   rT   rx   ry   r$   r$   r%   !test_merge_arrow_and_numpy_dtypes  s    


r  r   )r   rk   r   rp   r0   zAmerica/Chicagoc                 C   s:  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r|jdg jdd}n8|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  rP   r  r/         r   r  r  )r'  rI   r'  r;  r'   )r'  rJ   r8  )r'  rI   rJ   r   Tr  rk   r   rp   r   )r1   r2   r
   r   Zas_unitr   r6   ilocr  r   ru   rv   )r0   r   valsrS   rT   ry   rx   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colr-  r.  rJ   rQ  )r-  )r  r^  )r  ro   )r  rJ   Trk   r   )r
   r   r  r   r6   r   ru   rv   )r^   rT   ry   rx   r$   r$   r%   "test_merge_multiindex_single_level+  s    r  )rk   rp   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}|rR| |rJdnd n| |r^dnd td|i}td|i}|r|d}|d}ddd}	nddi}	t||f| |d	|	}
|r| }| }| d
v r| dv r|||  }}}n|||  }}}| dkrBt|d j|d j}|d |}|| }|rR|	d}|s |d 
 }|j|d jdd}|tj}|d |j}| }nb| 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   rN   rO   r'   rh   Trq   r|   r  )rk   rp   r   )rk   r   r   )Z
fill_valuer   r  )appendr
   r   r   r  setr	  intersectionisinr  r   r  r   r   Zintpra  rE  mulro   ru   rv   )r   r   r  r  r  r  r  rk   rp   Z	on_kwargsrx   ry   otherZother_uniqueZkeep_valuesZ	keep_maskZother_value_countsZrepeatsZleft_countsZright_countsZexpected_countsr$   r$   r%   test_merge_combinations8  s^    







r  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\0    Y  t	|| tjtdd || }W d    n1 s0    Y  t	||
d	 t dg}t d
gdgdd}| |}t	|| || }t	||
d	 d S )Nr  r)   r  r   r+   r   zYou are mergingr   r  r'   )r
   r   r6   r1   Z
Int64Dtyperu   r*  r  r   rv   r   r  r$   r$   r%   !test_merge_ea_int_and_float_numpy  s    
((


r  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 )Nr  rI   rJ   r)   r'   rc   rn   Trk   r   r   )
r   r  r
   r   r   r   r   r6   ru   rv   )r  rk   rp   rx   ry   r$   r$   r%   test_merge_arrow_string_index  s    
r  r  right_emptyc                 C   s   t ddgddgd}t ddgg dd}| r:|jd d }|rL|jd d }t||dgdd}t ddgg d	d}| r|r|jd d }n"| rtj|d< n|rtj|d
dg< t|| d S )Nr'   r   r-  r.  r]  )r-  r  r6  r   r   )r-  r.  r  r6  r  r6  )r
   r  r   r   r6   ru   rv   )r  r  rS   rT   rx   ry   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 s0    Y  d|d j d|d j d}tjtt|d	  |j|d| d
 W d    n1 s0    Y  d S )Nrh   r'   zdatetime64[ns]r)   ztimedelta64[ns]r  r  zG columns for key 'key'. If you wish to proceed you should use pd.concatr   r   )	r
   r   r*   r   r   r   r  r  r   )r   rk   rp   r   r$   r$   r%   !test_merge_datetime_and_timedelta  s    .r  )r   r   )]r   r   r   r  numpyr   r   Zpandas.core.dtypes.commonr   r   Zpandas.core.dtypes.dtypesr   Zpandasr1   r   r	   r
   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingru   Zpandas.core.reshape.concatr   Zpandas.core.reshape.merger   r   r&   r3   r8   r  rF   rG   rH   rU   rV   r   r  rk   rp   r  r  r  rS  r  r  r  r]  rb  rc  rk  r6   rr  ru  rw  tuplerx  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$   r$   r$   r%   <module>   s~  4
	



          ]  q

	  

7


(

	


#
8		
	
		
B