o
    _~#gڞ                    @   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 r(tt ||d |t|   }tjd| |S )N   )	listrangenpasarraytilelenrandomdefault_rngshuffle)ngroupsnunique_groupsarr r&   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/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Int64gGz?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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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 sw   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 sJ 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   iW  )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_ide   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 sw   Y  tjt|d |j|dddd
 W d    d S 1 sw   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 sw   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 sw   Y  d#}tj	t
|d t||
ddd W d    n	1 sw   Y  d$}tj	t|d t||dd%d W d    n	1 sw   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quetzalP   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 sw   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rt |||d}t |||d}d|d j d|d j d	}t|}tjt|d t|| W d    n1 sw   Y  d|d
 j d|d
 j d}t|}tjt|d t||dd
gd W d    d S 1 sw   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rt|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