
    {hhg                       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 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Z#d Z$d Z% ej&         e$            d           d             Z' ej&         e$            d           d             Z( ej&         e%            d           d             Z)ej&        d             Z* G d d          Z+d Z, G d d          Z-ej&        d             Z.ej&        d             Z/ G d d          Z0ej&        d             Z1ej&        d              Z2 G d! d"          Z3ej4        5                    d#d$ ej6        D              ed%d&gd%d&gd'(           ed d)d'*           ed+d,gd'-          gz   d. /          d0             Z7ej4        5                    d1d2d3gddd4d4d&fd5dd2d3gdd4d6d&fddd2d3gd6d4d&fd2d3gddd4d4dfd7dd2d3gdd4d6dfddd2d3gd6d4dfg          d8             Z8d9 Z9ej4        5                    d:d d d;d<id=d>gfd d d;d?id d>gfd d d;d@idAdBgfd d d;dCdDgidAdBgfdEd d;dFidEd gfdGdGd;dHidIdGgfdJdJd;dFidJdKgfdEdEd;dHidLdEgfdEdJd;dHidEdJgfdEdEd;dMidEdLgfd d d;dNidOd gfdEdEi dLdPgfd d i dAdBgfg          dQ             Z:ej4        5                    dRdS eg dTdUdVej;        gg dWdX          fd2 eg dYdZdUdVej;        gej;        d[d\d]gdX          fg          d^             Z<ej4        5                    d_g d`          da             Z=ej4        5                    d;dbdShd d dcg          dd             Z>erdendfZ?ej4        5                    dgdEdEdhdie? djfdEdE e@dE          dkfg          dl             ZAej4        5                    dmdndog          ej4        5                    dpd6d4g          dq                         ZBdr ZCds ZDdt ZEdu ZFej4        5                    dvdwdxg          dy             ZGdz ZHej4        5                    d{d|d}g          ej4        5                    d~dEd6dddgfdEd6dddgfg          d                         ZIej4        5                    d{d|d}g          ej4        5                    d~ddEiddgfddEiddgfg          d                         ZJej4        5                    d{d|d}g          ej4        5                    ddd6idd6ig          d                         ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRd ZSej4        5                    dddg          d             ZTd ZUd ZVd ZWej4        5                    dddg          d             ZXej4        5                    dg d          ej4        5                    dddg          d                         ZYd ZZej4        5                    dg d          ej4        5                    dd6d4g          ej4        5                    dd6d4g          ej4        5                    dd6d4g          ej4        5                    dd6d4g          ej4        5                    dd6d4g          ej4        5                    dd6d4g          d                                                                                     Z[d Z\d Z]ej4        5                    dd6d4g          ej4        5                    dd6d4g          d                         Z^ej4        5                    dg d          d             Z_dS )    )datedatetime	timedeltaN)PY314)is_object_dtypeis_string_dtype)CategoricalDtype)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndexIntervalIndex
MultiIndexPeriodIndex
RangeIndexSeriesTimedeltaIndex)concat)
MergeErrormerge   2   c           	         t          t          |                     }t          j        t          j        ||| z                      }t          |          |k     r<t          j        t          |          |d |t          |          z
           z             }t          j                            d                              |           |S )N   )	listrangenpasarraytilelenrandomdefault_rngshuffle)ngroupsnunique_groupsarrs       \/var/www/histauto/venv/lib/python3.11/site-packages/pandas/tests/reshape/merge/test_merge.pyget_test_datar*   )   s    w((M
*RW]AL99
:
:C
3xx!||jc]>QS\>%BBCCI!$$S)))J    c                  ,   t          dgd          t          dgd          t          dg          t          dg          t          dg          t          t          j        d          g          t          t          j        dd	
          g          gS )N   int64dtypeInt64gGz?fooT
2018-01-01
US/Easterntz)r   pd	Timestamp r+   r)   
get_seriesr:   4   s    s'"""s'"""vwv\**+,,\l;;;<== r+   c                      t          t          j        gd          t          t          j        gd          t          t          j        gd          t          t          j        g          gS )Nr1   r/   floatobject)r   r   nanr7   NaTr9   r+   r)   get_series_nar@   @   sW    xw'''xw'''xx(((x	 r+   c                     | j         j        S Nr0   namexs    r)   <lambda>rG   I   
    17< r+   )paramsidsc                     | j         S )zV
    A parametrized fixture returning a variety of Series of different
    dtypes
    paramrequests    r)   series_of_dtyperP   I        =r+   c                     | j         j        S rB   rC   rE   s    r)   rG   rG   R   rH   r+   c                     | j         S )zk
    A duplicate of the series_of_dtype fixture, so that it can be used
    twice by a single function
    rL   rN   s    r)   series_of_dtype2rT   R   rQ   r+   c                     | j         j        S rB   rC   rE   s    r)   rG   rG   [   s
    agl r+   c                     | j         S )zU
    A parametrized fixture returning a variety of Series with all NA
    values
    rL   rN   s    r)   series_of_dtype_all_narW   [   rQ   r+   c                  n    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   )r[   r\   	col_rightr   )df1df2s     r)   dfs_for_indicatorre   d   s^    
aVaV#sTT
U
UC
#OO+OO(	
 	
 C 8Or+   c                      e Zd Zej        d             Zej        d             Zej        d             Zej        d             Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dg d          d             Zej                            dddddddd dd!d dd"g          d#             Zd$ Z d% Z!d& Z"d' Z#d( Z$ej                            d)d*g d+fdg d,fg          ej                            dd-d.g          d/                         Z%d0 Z&d1 Z'ej        (                    d2          d3             Z)d4 Z*d5 Z+ej                            d6g d7          d8             Z,ej                            d6g d7          d9             Z-d: Z.d; Z/d< Z0d= Z1d> Z2d? Z3d@ Z4dA Z5dB Z6dC Z7dD Z8dE Z9dF Z:dG Z;dH Z<ej                            dd.dIg          ej                            dJ e=g dK           e=g dL          f e>g dMdNO           e>dPdQdRe?j@        e?j@        e?j@        gdNO          fgdS eAjB        D              eCjD        g dT           eCjD        dUdVdWeEjF        eEjF        eEjF        g          f eGg dXdYZ           eGdPd[d\e?j@        e?j@        e?j@        gdYZ          f eHg d]           eHd^d_d`e?j@        e?j@        e?j@        g          f          da                         ZIdb ZJej                            dd-d.g          dc             ZKdd ZLde ZMdfS )g	TestMergec                 B   t          t                      t                      t          j                            d                              d          t          j                            d                              d          d          }||d         dk             }|S )Nr   r   )key1key2data1data2rj   r-   r   r*   r   r"   r#   standard_normal)selfdfs     r)   rp   zTestMerge.dfr   s    %%..q11AA"EE..q11AA"EE	 
 
 6
Q	r+   c                     t          t          d          t          dd          t          j                            d                              d          d          S )N
   )r&   r_   )r%   r&   r   )ri   rj   valuerm   ro   s    r)   rd   zTestMerge.df2   s]    %+++%a2666..q11AA"EE 
 
 	
r+   c                     t          g dt          j                            d                              d          d          S )NrY   rZ   cdery   rY   r      keyv1r   r   r"   r#   rn   rt   s    r)   leftzTestMerge.left   sH    :::i++A..>>qAA 
 
 	
r+   c                     t          dt          j                            d                              d          ig d          S )Nv2r   r_   rx   rZ   rw   rY   indexr~   rt   s    r)   rightzTestMerge.right   sH    29((++;;A>>?&&&
 
 
 	
r+   c                     t                      }t          dddgiddgd          }t          ||dd          }t          dg id	          }t          j        ||           d S )
NrY   r-   r   r   r.   )r   r0   T
left_indexright_indexr/   r   r   tmassert_frame_equal)ro   df_emptydf_aresultexpecteds        r)   test_merge_inner_join_emptyz%TestMerge.test_merge_inner_join_empty   sp    ;;#1vq!fGDDDx$DIIIc2Yg666
fh/////r+   c                 x    t          ||          }t          ||ddg          }t          j        ||           d S )Nri   rj   onr   r   r   )ro   rp   rd   joinedexps        r)   test_merge_commonzTestMerge.test_merge_common   sA    r3B 0111
fc*****r+   c                     t          g dg dg dg dd          }|                    t                    }|}t          ||          }t	          j        ||           d S )N)r-   r   r-   r   )r   r-   r   r   )r   r   r   r   )r-   r   r   r^   r   r-   r   r^   )r   astyper<   r   r   r   ro   r   r   r   r   s        r)   test_merge_non_string_columnsz'TestMerge.test_merge_non_string_columns   sr     ,,,<<<PP
 
 E""tU##
h/////r+   c                     |                     d          }|                     d          }t          ||d          }t          ||d                               d          }t          j        ||           d S )Nri   r   )	set_indexr   r   r   )ro   rp   rd   r   r   r   r   s          r)   test_merge_index_as_on_argz$TestMerge.test_merge_index_as_on_arg   su     ||F##f%%tUv...SV,,,66v>>
fh/////r+   c                 d   t          g dt          j                            d                              d          d          }t          dt          j                            d                              d          ig d          }t          ||d	d
dd          }t          ||d	d
dd          }t          j        ||j        d d |j	        f                    t          ||d	d
dd
          }t          ||d	d
dd
          }t          j        ||j        d d |j	        f                    d S )Nrv   r   rz   r{   r   r_   r   r   r|   Tr   F)left_onr   howsortr   )right_onr   r   r   )
r   r   r"   r#   rn   r   r   r   loccolumns)ro   r   r   merged1merged2s        r)   (test_merge_index_singlekey_right_vs_leftz2TestMerge.test_merge_index_singlekey_right_vs_left   sh   :::i++A..>>qAA 
 
 29((++;;A>>?&&&
 
 

 %Df5
 
 
 4%DgE
 
 
 	gw{111go3E'FGGG%Df4
 
 
 4%DgD
 
 
 	gw{111go3E'FGGGGGr+   c                    t          g dt          j                            d                              d          d          }t          dt          j                            d                              d          ig d          }t          ||d	d
d          }|                    |d	          j        |j                 }t          j
        ||           t          ||d	d
d          }|                    |d	          j        |j                 }t          j
        ||j        d d |j        f                    d S )Nrv   r   rz   r{   r   r_   r   r   r|   Tinnerr   r   r   r   )r   r   r   )r   r   r"   r#   rn   r   joinr   r   r   r   r   ro   r   r   r   r   s        r)    test_merge_index_singlekey_innerz*TestMerge.test_merge_index_singlekey_inner   s8   :::i++A..>>qAA 
 
 29((++;;A>>?&&&
 
 
 tUEtQQQ99Uu9--1&,?
fh///udUtQQQ99Uu9--1&,?
fhl111fn3D&EFFFFFr+   c                    d}t          j        t          j        j        |          5  t          ||d           d d d            n# 1 swxY w Y   d}t          j        t          j        j        |          5  t          ||d           d d d            n# 1 swxY w Y   d}t          j        t          j        j        |          5  t          ||dd	           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t          ||dgddg           d d d            d S # 1 swxY w Y   d S )Nz&Must pass right_on or right_index=TruematchT)r   z$Must pass left_on or left_index=True)r   zRCan only pass argument "on" OR "left_on" and "right_on", not a combination of bothr|   )r   r   z)len\(right_on\) must equal len\(left_on\)ri   rj   r   r   )pytestraisesr7   errorsr   r   
ValueError)ro   rp   rd   r   r   msgs         r)   test_merge_misspecifiedz!TestMerge.test_merge_misspecified   sX   6]29/s;;; 	0 	0$$////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	04]29/s;;; 	1 	1$40000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1$ 	 ]29/s;;; 	7 	7$e6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 ;]:S111 	H 	H"cF8vv6FGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	HsG   AAA9BBB
C**C.1C.D66D:=D:c           	         d}t          j        t          |          5  t          ||ddddg           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ||dddgd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||dddgddg           d d d            d S # 1 swxY w Y   d S )	Nz>right_index parameter must be of type bool, not <class 'list'>r   r   Fri   rj   r   r   r   z=left_index parameter must be of type bool, not <class 'list'>r   r   r   r   )ro   rp   rd   r   s       r)   &test_index_and_on_parameters_confusionz0TestMerge.test_index_and_on_parameters_confusion  s   N]:S111 	 	 #V,   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 N]:S111 	 	"F+!   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	 	"F+#V,   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   AAA)BBB2CCCc                     t          ||d          }|d                                         dz                                  }t          |          |k    sJ d|v sJ d|v sJ d S )Nr|   r   r   v1_xv1_y)r   value_countssumr!   )ro   r   mergedexp_lens       r)   test_merge_overlapzTestMerge.test_merge_overlap  s{    tTe,,,;++--277996{{g%%%%r+   c           	      z   t          g dg dd          }t          g dg dd          }|                    |ddd	d
          }t          ddddddt          j        gd          }t          j        |d         |           t          dt          j        dddddgd          }t          j        |d         |           t          ddddddt          j        gd          }t          j        |d         |           t          dt          j        dddddgd          }t          j        |d         |           d S )N)r2   barbazr2   r-   r   r^   r_   )lkeyrs   )r2   r   quxr2   )r`      rz   r   )rkeyrs   r   r   outerT)r   r   r   r   r   r   r2   rD   r   r   r^   r-   r_   value_xr   r`   r   rz   value_y)r   r   r   r   r>   r   assert_series_equal)ro   r   r   r   r   s        r)   %test_merge_different_column_key_namesz/TestMerge.test_merge_different_column_key_names$  sW   ">">">VVWW#?#?#?,,,WWXX6Fd  
 
 eUE5%GfUUU
vf~s333eRVUE5%GfUUU
vf~s333aAq!Q/i@@@
vi0#666aAq!Q/i@@@
vi0#66666r+   c                 F   t          dddt          d                    }t          dddt          d                    }t          ||d	d	d	
          }d|d<   |d         dk                                    sJ d|d<   |d         dk                                    sJ d S )Nr   r-   rY   rZ   rr   r   r2   r   rw   rx   Tr   r   copyr   rY   peekaboorx   )r   r   r   all)ro   r   r   r   s       r)   test_merge_copyzTestMerge.test_merge_copy8  s    qq))r;;;E22%))DDDtUtDQQQsS	Q##%%%%% sc
e#((*******r+   c                 n   t          dddt          d                    }t          dddt          d                    }t          ||d	d	d
          }t          j        |d         j        |d         j                  sJ |s-t          j        |d         j        |d         j                  sJ d S d S )Nr   r-   r   rr   r   r2   r   r   TFr   rY   rx   )r   r   r   r   shares_memory_values)ro   using_array_managerusing_infer_stringr   r   r   s         r)   test_merge_nocopyzTestMerge.test_merge_nocopyD  s    qq))r;;;E22%))DDDtUtERRRs 3T#Y5FGGGGG! 	M#F3K$7s9KLLLLL	M 	MLLr+   c                    t          g dt          t          d                    dddg          }t          g dt          t          d                    d	          }t          ||dd
          }t          g dt	          j        dddddddt          j        t          j        g	          g ddg d          }t          j        ||           d S )Nr-   r-   r   r   r^   r`   r|   rs   rs   r|   r   r-   r-   r   r^   r_   r`   r   )r|   rvaluer   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|   rs   r   )rs   r|   r   )	r   r   r   r   r   arrayr>   r   r   )ro   r   r   r   r   s        r)   "test_intelligently_handle_join_keyz,TestMerge.test_intelligently_handle_join_keyN  s     #OOd588nn==QVGW
 
 
 "4"4"4U1XXOOPPtUu':::2221aAq!Q"GHH555 
 /..
 
 
 	fh/////r+   c                 R   t          dgdgd          }t          dgdgd          }t          ||d          }|d         j        d	k    sJ t          d
gdgd          }t          dgdgd          }t          ||d          }|d         j        dk    sJ t          ddgi          }t          ddgi          }t          j        dg          }t          j        dg          }t          ||||d          }|d         j        t          j        t
                    k    sJ d S )Nr-   rr   r{   r      r   r   r|   r.   TFr   boolvalr   r   r   key_0)r   r   r0   r   r   int)ro   rc   rd   rp   r   r   s         r)   test_merge_join_key_dtype_castz(TestMerge.test_merge_join_key_dtype_casta  sB    B40011B400113)))%y'))))qc2233s33443))) %y&((((%%%%x}}x}}3TDgFFF'{ BHSMM111111r+   c                    t          g dt          j        d          dddgd          }t          dt          j        d	          id
          }t          j        g dd
          }t	          ||d|d          }t	          |||dd          }t          j        |d         |d                    |d                                                                         sJ |d                                                                         sJ t          dt          j        d          idg          }t          dt          j        d	          i          }t          j        g d          }t          j        g d          }t	          ||||d          }t          g dt          d          }t          j        |d         |           t          dt          j        d          i          }t          dt          j        d	          i          }t          j        g dt          j        
          }t	          ||d|d          }t          j        |d         t          |d                     d S )Nr   r`   r   rs   r|   r.   r   r0   r   r   r/   r   r   r   r   r   r   rC   r^   )r   r-   r-   r   r   r^   T)r   r   r   r   )r   r   aranger   r   r   r   notnar   r   r   r.   )	ro   r   r   r|   r   r   r   r   r   s	            r)   test_handle_join_key_pass_arrayz)TestMerge.test_handle_join_key_pass_arrayx  sP   #OObill;;e$
 
 

 8RYq\\2'BBBh)))999tUECWMMMtS5gNNN
ve}gen===e}""$$((*****u~##%%))+++++'29Q<<07)DDD8RYq\\233x((x***++tUD4WMMM555SwOOO
vg999'29Q<<0118RYq\\233h))):::tUtcwOOO
vgs0I0I0IJJJJJr+   c                 (   t          j                    }t          ddgi|g          }t          dddgi||g          }dd  dd  d	d
 dd
 }t          j        t
          |          5  t          ||           d d d            d S # 1 swxY w Y   d S )NrF   rY   r   yrZ   rw   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   )ro   dtrc   rd   r   s        r)   &test_no_overlap_more_informative_errorz0TestMerge.test_no_overlap_more_informative_error  s   \^^seRD111sCj)"b:::7&*7 77;7 77 7/47 7 	 ]:S111 	 	#sOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   )BBBc           	         t          ddd          }t          ddd          }t          ddd          }t          ddd          }t          ddgi|g	          }t          d
ddgi||g	          }t          ||           t          dg di|||g	          }t          d
g di||||||g	          }t          ||           t          dddgi||g	          }t          d
ddgi||g	          }t          ||           d S )N  r`   r-   r   r^   r_   rF   rY   r   r   rZ   rw   )rY   rZ   q)rw   rx   ry   fghrx   r   r   _check_merge)ro   r   dt2dt3dt4rc   rd   s          r)   test_merge_non_unique_indexesz'TestMerge.test_merge_non_unique_indexes  sK   dAq!!tQ""tQ""tQ""seRD111sCj)"b:::S# ooo.sBnEEE0001#sCbRT9U
 
 
 	S#sCj)"b:::sCj)"b:::S#r+   c                     t          ddd          }t          ddd          }t          ddd          }t          dg di||||g          }t          d	g d
i|||||g          }t          ||           d S )Nr  r`   r-   r   r^   rF   rY   rZ   rw   rx   r   r   )ry   r  r  z hir  )ro   r   r  r	  rc   rd   s         r)   (test_merge_non_unique_index_many_to_manyz2TestMerge.test_merge_non_unique_index_many_to_many  s    dAq!!tQ""tQ""2223Cb";MNNN,,,-c3R5L
 
 
 	S#r+   c                     t          dgdgd          }t          dg i          }t          ||dd          }t          j        ||           t          ||dd          }t          j        ||           d S )Nr-   r   r   r|   r   r   r   r   )ro   r   r   r   s       r)   test_left_merge_empty_dataframez)TestMerge.test_left_merge_empty_dataframe  s    !s33445"+&&tUu&999
fd+++udu':::
fd+++++r+   r   )r   r   r   r   c                     t          g |d d                   }|                                }|                    ||          }t          j        ||           d S )Nr   r   r   )r   r   r   r   r   )ro   r   r   r   r   r   s         r)   test_merge_empty_dataframez$TestMerge.test_merge_empty_dataframe  sY     5!9---		5c**
fd+++++r+   kwargTr   rF   r   r   rY   r   r   r   c                     t          g d          }t          g d          }t          g dt                    }t          ||fd|i|}t          j        ||           d S )NrY   rZ   rw   r   rF   r   zrY   rZ   rw   rF   r   r  r   r   )r   r=   r   r   r   )ro   	join_typer  r   r   exp_inr   s          r)   !test_merge_left_empty_right_emptyz+TestMerge.test_merge_left_empty_right_empty  sz     111///222#A#A#APPPtU;;	;U;;
ff-----r+   c           	         t          g d          t          g dg dg dgg d          t          t          j        t          j        gdz  t                    t          j        t          j        gdz  t                    t          j        t          j        gdz  t                    g d	g d
g ddg d          }|dd         }fd}fd}ddddddfD ]} |||            |||           ddd} |||           g d|d<    |||           ddd} |||           t          j        t          j        gdz  t                    |d<    |||           d S )Nr  r   r-   r   r^   r_   r`   r   rz   r   	   r  r^   r/   r-   r_   rz   r   r`   r   r^   r   r#  r  r   c                     t          fddi|}t          j        ||            t          fddi|}t          j        ||            d S )Nr   r   r   r   r   r  r   r   r   s      r)   check1z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check1  sg    4==G=u==F!&#...4<<F<e<<F!&#.....r+   c                     t          fddi|}t          j        ||            t          fddi|}t          j        ||            d S )Nr   r   r   r   r(  s      r)   check2z>TestMerge.test_merge_left_empty_right_notempty.<locals>.check2  g    4==G=u==F!&#...4==G=u==F!&#.....r+   Tr   rF   r  rY   r  r   r-   r   r   )r   r   r   r>   r=   )ro   exp_outr  r)  r+  r  r   r   s         @@r)   $test_merge_left_empty_right_notemptyz.TestMerge.test_merge_left_empty_right_notempty  s   111999iii;___UUUXrvhl&999Xrvhl&999Xrvhl&999YYYYYY  322

 

 

 1	/ 	/ 	/ 	/ 	/ 	/	/ 	/ 	/ 	/ 	/ 	/  55S11
 	# 	#E F65!!!F7E""""55vu yywS11vux1F;;;wr+   c                    t          g dg dg dgg d          t          g d          t          g dg dg d	t          j        t          j        gd
z  t                    t          j        t          j        gd
z  t                    t          j        t          j        gd
z  t                    dg d          dd         j                            t                    _        fdfdd S )Nr   r!  r"  r  r   r  r$  r%  r&  r^   r/   r  r   c                     t          fddi|}t          j        ||            t          fddi|}t          j        ||            d S )Nr   r   r   r   r(  s      r)   r)  z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check1/  r,  r+   c                     t          fddi|}t          j        ||            t          fddi|}t          j        ||            ddddddddd	ddd
fD ]} |            |           d S )Nr   r   r   Tr   rF   r  rY   r  r   r   )	r   r  r   r)  r+  r  r.  r   r   s	      r)   r+  z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check25  s    4<<F<e<<F!&#...4==G=u==F!&#...  $D99#5555S11	 ' ' vu%%%w&&&&' 'r+   )r   r   r   r>   r=   r   r   )ro   r)  r+  r  r.  r   r   s    @@@@@@r)   $test_merge_left_notempty_right_emptyz.TestMerge.test_merge_left_notempty_right_empty  sQ   )))YYY			:OOOTTT///222YYYYYYXrvhl&999Xrvhl&999Xrvhl&999  322

 

 

 1|**622	/ 	/ 	/ 	/ 	/ 	/	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'r+   c                 b   t          ||dddg          }|d d         }t          t          |j        d                   t          |j        d                   t          |j        d                   dg d          }|                    |d          }t	          j        ||           d S )	Nr   r|   rs   r   r   r/   r|   r   r   r   )r   r   dtypesr   r   r   )ro   rP   rT   rp   r   r   actuals          r)   test_merge_empty_framez TestMerge.test_merge_empty_frameE  s    #.>??G$
 
 
 bqb6BIe$4555!	'(:;;;!	'(:;;; 
 211
 
 
 u--
fh/////r+   c                     t          ||dddg          }t          ||dddg          }t          |||dg d          }|                    |d          }t          j        ||           d S )Nr   r|   rs   r   r5  r   r   )ro   rP   rW   df_leftdf_rightr   r7  s          r)   test_merge_all_na_columnz"TestMerge.test_merge_all_na_columnW  s    #.DEEG$
 
 
 #.DEEG$
 
 
 &11 
 211
 
 
 xE22
fh/////r+   c                 >   t           j                            d                              ddd          t           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        |          }|j                                        }t          j	        |          }t          j        |t           j                            d                              d          d          }|
                    |dd          }t          ||dd          }t          j        ||           |j                                        |j                                        k                                    sJ d S )Nr   r   rr   sizer  r-      i  r_   i  r^   i  r`   )var1var2var3rz   )rC  var8rC  Fr   r   )r   r"   r#   integersr   r   	from_dictrC  uniquer   r   r   r   r   )ro   rx   rp   rC  newr   r   s          r)   test_merge_nosortzTestMerge.test_merge_nosortl  s    I))!,,55a"5EEI))!,,55a"5EEq"%%q!$$q!$$q"%%q!$$q!$$q!$$q!$$q!$$q!$$
 
   ##w~~wt}}!29#8#8#;#;#B#B1#E#EFF
 
 #&u55BU333
fc***  FK$6$6$8$88==???????r+   )r   valuesF)r-   r-   r   r-   r-   )r   r-   r-   r-   r-   r   r   c                     t          dg di          }|                    |d||          }t          |dg          }t          j        ||           d S )NrY   )r-   r   r-   )r   r   r   r   r   )ro   r   rK  r   rp   r   r   s          r)    test_merge_same_order_left_rightz*TestMerge.test_merge_same_order_left_right  s`     YYY'(("#D99VcU333
fh/////r+   c           	         t          ddgddgd          }t          dgdg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                                           g d         }|j        	                    d          |_        t          j        ||d           d S )Nr   r-   i1i2rP  i3rP  _)r   rsuffix        r   r-   )rP  rQ  i1_rS  Nr/   r   rP  rQ  rX  rS  r=   Fcheck_dtype)r   r   r   r>   r   r=   r   reset_indexr   r   r   r   ro   rc   rd   r   r   s        r)   test_merge_nan_rightzTestMerge.test_merge_nan_right  s   1vaV4455s1#..//#$44!a..A,, RV,,!bf--A,,  ===VLLL	 	 	 Yt__[]]4446 	  ..x88
fhEBBBBBBr+   c                 ,   t          ddgddgd          }t          dgdgd          }|                    |dd	
          }t          ddddt          j        dddddt          j        dd          g d         }t	          j        ||           d S )Nr   r-   g      ?      ?rO  gffffff?rR  rT  rP  )rU  r   rW  rV  )rP  rX  rQ  rS  rY  )r   r   r   r>   r   r   r]  s        r)   test_merge_nan_right2zTestMerge.test_merge_nan_right2  s    1vc3Z8899s3%0011#st44ll26**#&&-"&99	 
 
 $
#
#% 	fh/////r+   zMignore:Passing a BlockManager|Passing a SingleBlockManager:DeprecationWarningc                      G fddt                      |          }|                    |d          }t          |          sJ d S )Nc                   *    e Zd Ze fd            ZdS )0TestMerge.test_merge_type.<locals>.NotADataFramec                     S rB   r9   )ro   NotADataFrames    r)   _constructorz=TestMerge.test_merge_type.<locals>.NotADataFrame._constructor  s	    $$r+   N)__name__
__module____qualname__propertyrg  )rf  s   r)   rf  rd    s8        % % % % X% % %r+   rf  ri   r   )r   r   
isinstance)ro   rp   rd   nadr   rf  s        @r)   test_merge_typezTestMerge.test_merge_type  sy    	% 	% 	% 	% 	% 	% 	%I 	% 	% 	%
 mB36**&-0000000r+   c           
      |   t          j        t          ddddd          gt          dd          gd          }t          t	          d          	          }d
}t
          }|rd }t          j        ||          5  t          ||gd          }t          ||gd          }d d d            n# 1 swxY w 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          j        ||           d S )Ni     r`   8   r   iW  )rx   tr   r   zDThe behavior of DataFrame concatenation with empty or all-NA entriesr   Tignore_index)r   rG  r   r   r   FutureWarningr   assert_produces_warningr   r   r=   r   )ro   r   rx   rp   r   warnr   r   s           r)   test_join_append_timedeltasz%TestMerge.test_join_append_timedeltas  s    D"aB//0	!U8K8K7LMM
 
 tDzz***T 	D'C888 	8 	8Qd333BRG$777F	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 tRAr22HT2q!R4P4PQ5))9Q+>+>? 
 
  	/v..H
fh/////s   9'B,,B03B0c           	         t          j        d          }t          t          ||gddg                    }t          t          |gdg                    }|                    |dd          }t          t          ||gt          d                    t          |t          j        gt          d                    d	          }t          j	        ||           d S )
Ni ABr   rr   )rU  r   AB)00r)
r   timedelta64r   r   r   r   r7   r?   r   r   )ro   tdlhsrhsr   r   s         r)   test_join_append_timedeltas2z&TestMerge.test_join_append_timedeltas2  s     ^I&&BxSz:::;;tC511122#s77RHDJJ777b"&\d<<< 
 
 	fh/////r+   unit)Dr  msmsusnsc                 ,   t          dddgi          }t          d d gddgd          }d| d}|dv rd	}n|}|                    |                              d          }|d         j        |k    sJ |                    |dd
          }t          j        ddg|          }t          j	        j
        j                            ||j                  }t          ddg|dddg          }	|	d         j        |k    sJ t          j        ||	           d S )N	entity_ide   f   daysr   rD   zdatetime64[]r  r  r  zdatetime64[s]Tr  natr/   r  r  r   )r   r   r   to_framer0   r   r   r   r7   corearraysDatetimeArray_simple_newr   r   )
ro   r  rc   serr0   	exp_dtyperd   r   r  r   s
             r)   test_other_datetime_unitz"TestMerge.test_other_datetime_unit  sI    sCj122dD\#s&AAA%d%%%?""'IIIjj##,,V446{ I----3FFxi888w~+77DJ7OO!3Z  !&)
 
 
 6{ I----
fc*****r+   c                 ~   t          dddgi          }t          d d gddgd          }d| d}|dv rsd	}t          j        t          |
          5  |                    |           d d d            n# 1 swxY w Y   |                    d                              d          }n;|                    |                              d          }|d         j        |k    sJ |                    |dd          }t          ddgt          j
        ddg|          dddg          }t          j        ||           d S )Nr  r  r  r  r  zm8[r  r  z/Supported resolutions are 's', 'ms', 'us', 'ns'r   zm8[s]Tr  r  r/   r  r   )r   r   r   r   r   r   r  r0   r   r   r   r   r   )	ro   r  rc   r  r0   r   rd   r   r   s	            r)   test_other_timedelta_unitz#TestMerge.test_other_timedelta_unit  s    sCj122dD\#s&AAAd?""CCz555 " "

5!!!" " " " " " " " " " " " " " " **W%%..v66CC**U##,,V44Cv;$----3FF*bhu~U.S.S.STT &)
 
 
 	fc*****s   A33A7:A7c                    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          j        t	          ||          |           g d	|_        d
}t          j        t          |          5  t	          ||           d d d            d S # 1 swxY w Y   d S )Nr   r!  r"  r|   r}   r   )r|   r2   r2   )r|   r   r   )r|   r}   r   v3v4)r|   r2   r2   r   r   )ri   r2   r2   z?Data columns not unique: Index\(\['foo'\], dtype='object|str'\)r   )r   r   r   r   r   r   r   r   )ro   rp   rd   r   r   s        r)   &test_overlapping_columns_error_messagez0TestMerge.test_overlapping_columns_error_message+  sc   yyy			KKLL			)))LLMM***
+++ yyiiiiiiii 
 
 ?>>
eBnnh777 -,,P]:S111 	 	"cNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   6CCCc                    t          t          j        ddd          ddgd          }t          t          j        ddd          g d	d          }t          t          j        dd
d          ddt          j        t          j        gt          j        dddgd          }t          ||dd          }t          j        ||           d S )N20151010r   r4   periodsr6   r-   r   20151011r^   r   r_   r5  r|   r   r   )r   r7   
date_ranger   r>   r   r   r   r   s        r)   test_merge_on_datetime64tzz$TestMerge.test_merge_on_datetime64tzC  s    }Z|LLLQ 
 
 }Z|LLL" 
 
 }Z|LLLq"&"&1FAq!, 
 
 tUu':::
fh/////r+   c                 0   t          ddgt          j        ddd          d          }t          ddgt          j        ddd          d          }t          g d	t          t          j        ddd                    t          j        gz   t          j        gt          t          j        ddd                    z   d
          }t          ||dd          }t          j        ||           |d         j        dk    sJ |d         j        dk    sJ d S )Nr-   r   r  r4   r  r   r^   r  r   r5  r|   r   r   r   zdatetime64[ns, US/Eastern]r   )	r   r7   r  r   r?   r   r   r   r0   r   s        r)   test_merge_datetime64tz_valuesz(TestMerge.test_merge_datetime64tz_values\  sD   1vz1NNN 
 
 1vz1NNN 
 
  yyj! U U UVV6(F8r}Z|LLLMMN	 
 
 tUu':::
fh///i &*FFFFFi &*FFFFFFFr+   c           	         t          j        d          }t          t          dg|          dgt          dg|          dg d          }|d d	         }|                    |d
          }t          t          |          t          t                    t          |          t          t                    t          |          dg d          }t          j        ||           d S )NUTCr5   2018r/   g      @2019)r   rs   date2r   r   r   r   )r   r   date2_xr   date2_y)	r7   DatetimeTZDtyper   r   r   r   r<   r   r   )ro   dtzr   r   r   r   s         r)    test_merge_on_datetime64tz_emptyz*TestMerge.test_merge_on_datetime64tz_emptyw  s    E***%vhc:::&xs;;; 
 /..
 
 
 RaRyEf--S)))!...!,,,!...!,,,  IHH	
 	
 	
 	fh/////r+   c                    t          t          j        dddd          dg          }d|d	<   t          t          j        g d
          dd          }|d         j                            d          j                            d          |d<   t          ||dd          }t          t          j        dddd          dgdz  t          j	        gdz  z   t          j	        gdz  dgdz  z   d          }t          j        ||           d S )Nz2017-10-29 01:00r_   r  zEurope/Madrid)r  freqr6   r   r   r-   rs   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00r   )r   rs   r  r   r   r   rz   r^   )r   r   r   )r   r7   r  to_datetimer   tz_localize
tz_convertr   r   r>   r   r   r]  s        r)   +test_merge_datetime64tz_with_dst_transitionz5TestMerge.test_merge_datetime64tz_with_dst_transition  s>   M,acoVVVH
 
 
 G    	 	
 
 &kn0077:EEoVVFsCW888&   37bfX\1F8a<1#'1 
 
 	fh/////r+   c           	      ,   t          j        ddd          }t          t          t	          t          |                              |dg          }t          ||g          }|                    |ddd	          }t          t          j	        t          j
        dt          j        
                              d                              dd          d          ddg|                                j                  }t!          j        ||           d S )Nz
2016-01-01   Mr  r  pnumr   r   Tr   )r   r   r   r/   r   r-   pnum_xpnum_yr   r   )r7   period_ranger   r   r   r!   r   r   r   r    r   r.   repeatreshape
sort_indexr   r   r   )ro   r   rp   rd   r   r   s         r)   "test_merge_non_unique_period_indexz,TestMerge.test_merge_non_unique_period_index  s    bsCCCtE#e**--..efXNNNb"X#$DgNNGBIb11188;;CCBJJANNx(..""(
 
 

 	fh/////r+   c                    t          t          j        ddd          ddgd          }t          t          j        ddd          g d	d          }t          t          j        dd
d          ddt          j        t          j        gt          j        dddgd          }t          ||dd          }t          j        ||           d S )Nr  r   r  r  r-   r   r  r^   r   r_   r5  r|   r   r   )r   r7   r  r   r>   r   r   r   r   s        r)   test_merge_on_periodszTestMerge.test_merge_on_periods  s    OJDDDPQSTvVV
 
 z13GGG" 
 
 z13GGGq"&"&1FAq!, 
 
 tUu':::
fh/////r+   c                 8   t          ddgt          j        ddd          d          }t          ddgt          j        ddd          d          }t          j        ddd          }t          j        ddd          }t          g d	t          |          t          j        gz   t          j        gt          |          z   d
          }t          ||dd          }t          j        ||           |d         j        dk    sJ |d         j        dk    sJ d S )Nr-   r   r  r  r  r   r^   r  r   r5  r|   r   r   r   z	Period[D]r   )	r   r7   r  r   r?   r   r   r   r0   )ro   r   r   exp_xexp_yr   r   s          r)   test_merge_period_valuesz"TestMerge.test_merge_period_values  s9   FR_ZQT%U%U%UVV
 
 FR_ZQT%U%U%UVV
 
 
AC@@@
AC@@@ yy;;"&1F8d5kk1 
 
 tUu':::
fh///i &+5555i &+555555r+   c                    |\  }}|                                 }|                                 }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<   |g d         }t          ||ddd          }t          j        ||           |                    |ddd          }t          j        ||           t          j        ||           t          j        ||           |}|                    ddi          }t          ||ddd          }	t          j        |	|           |                    |ddd          }	t          j        |	|           d S )Nr   r-   r   r^   r_   r`   r-   r   rY   rZ   r^   r_   r`   )r[   col_conflict_xr]   col_conflict_yra   )	left_onlyboth
right_onlyr  r  r  r  r  r  
categories_merge)r[   r  r]   r  ra   r  r[   r   Tr   r   	indicatorcustom_namer   )	r   r   r   r>   r
   r   r   r   rename)
ro   re   rc   rd   df1_copydf2_copy	df_resulttestdf_result_custom_nametest_custom_names
             r)   test_indicatorzTestMerge.test_indicator  s   $S88::88::***#$a"H #rvrvrvrvF#%61aAq"9 faAq!4 
 
	 *   ;::

 

 

	(   	
	 S#&gFFF
dI...yyWyEE
dI... 	c8,,,
c8,,, !* 5 < <}- != !
 !
 !W
 
 
 	.0EFFF99F= % 
 
 	.0EFFFFFr+   c                 <   |\  }}d}t          j        t          |          5  t          ||ddd           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    |ddd           d d d            d S # 1 swxY w Y   d S )Nz<indicator option can only accept boolean or string argumentsr   r[   r   r`   r  r   )ro   re   rc   rd   r   s        r)   #test_merge_indicator_arg_validationz-TestMerge.test_merge_indicator_arg_validation'  sK   $SL]:S111 	A 	A#sv7a@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A]:S111 	@ 	@IIcf'QI???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s#   AAA*BBBc                    |\  }}t          ||ddd          }|j        dk                                    sJ |                     |ddd          }|j        dk                                    sJ t          ||ddd          }|j        dk                                    sJ |                     |ddd          }|j        dk                                    sJ t          ||ddd          }|j        d	k                                    sJ |                     |ddd          }|j        d	k                                    sJ d S )
Nr[   r   Tr  r  r   r  r   r  )r   r  r   )ro   re   rc   rd   test2test3test4s          r)   %test_merge_indicator_result_integrityz/TestMerge.test_merge_indicator_result_integrity1  s^   $Sc36vFFF,1133333		#&f	EE,1133333c36w$GGG+0022222		#&g	FF+0022222c36w$GGG&++-----		#&g	FF&++-------r+   c           	         |\  }}dD ]}t          dddg|ddgi          }d| d}t          j        t          |          5  t	          ||ddd	
           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    |ddd	
           d d d            n# 1 swxY w Y   t          ddgddgd          }d}t          j        t          |          5  t	          ||ddd
           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    |ddd
           d d d            d S # 1 swxY w Y   d S )N)_right_indicator_left_indicatorr  r[   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  )r[   custom_column_namez:Cannot use name of an existing column for indicator columnr  r   r   r   r   r   )ro   re   rc   rT  r  df_badcolumnr   s          r)   test_merge_indicator_invalidz&TestMerge.test_merge_indicator_invalidD  s   "QB 	P 	PA$fq!fa!Q%@AALM !M M M 
 z555 Q Qc<F4PPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Qz555 P P		,6w$	OOOP P P P P P P P P P P P P P P !1a&A!O!OPPJ]:S111 	 	.   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	 	IIW@T    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   A##A'	*A'		B//B3	6B3	.DDD5EE #E c                 p   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<   t          ||ddgdd          }t          j        ||           |                    |ddgdd          }t          j        ||           d S )Nr   r-   rY   rZ   )r[   col2)r-   r-   r^   )rZ   rF   r   )r   r-   r-   r^   rY   rZ   rF   r   )r  r  r  r  r  r  r  r[   r  r   Tr  r   r
   r   r   r   )ro   df3df4hand_coded_resulttest5s        r)   %test_merge_indicator_multiple_columnsz/TestMerge.test_merge_indicator_multiple_columnsf  s    !Q#s<<==OOODDEE%!\\+?+?+?@@
 
 '2===:::'
 '
 '
(#
 c3FF#3DQQQ
e%6777		#66"24	PP
e%677777r+   c                    t          g dg ddt          d                    }t          g dg ddt          d	                    }|                                }|                                }t          ||d
d
d          }t	          j        ||           t	          j        ||           t          g dg dg dg ddt          d          g d          }t          ||d
d
d          }t	          j        ||           t          g dg dg ddt          d                    }t          ||dd          }t	          j        ||           t	          j        ||           t	          j        ||           t          ||dd          }t	          j        ||           t          g dg dg ddg dt          d                    }|                    d          }	t          |	|d
dd          }t	          j        ||           t          |t          dgdgddg          g          }
t          ||
d
d
d           d}t          j	        t          |          5  t          ||
d
d
d           d d d            n# 1 swxY w Y   t          j	        t          |          5  t          ||
dd           d d d            n# 1 swxY w Y   t          |t          dgdgddg          gd
          }t          ||d
d
d           d }t          j	        t          |          5  t          ||d
d
d           d d d            n# 1 swxY w Y   t          j	        t          |          5  t          ||dd           d d d            n# 1 swxY w Y   t          ||
dd!           d"}t          j	        t          |          5  t          ||
d
d
d           d d d            n# 1 swxY w Y   d#}t          j	        t          |          5  t          ||
dd           d d d            n# 1 swxY w Y   d$}t          j	        t          |          5  t          ||dd%           d d d            n# 1 swxY w Y   t          g d&g d'g ddt          d                    }t          g d(g d)g d*d+t          d                    }t          g d(g d)g d,g d*dt          d                    }d-}t          j	        t          |          5  t          ||dd           d d d            n# 1 swxY w Y   t          ||dd.gd          }t	          j        ||           d S )/Nr  )catdogweaselhorser   r_   r   rY   rZ   rw   rx   ry   )meowbarkum... weasel noise?naychirprY   rw   r`   Tz1:1)r   r   validate)r  r  r	  r
  )a_xrZ   a_yrw   r  
one_to_oner  rY   )r   r  rZ   rY   rw   r  )r   r   r  ry   mooone_to_manyzBMerge keys are not unique in right dataset; not a one-to-one merger   cowr^   )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)rY   rY   rZ   rZ   )r   r-   r   r-   rY   rY   rZ   )r   r-   r   )r  r  r	  )rY   rZ   rx   )r  r  r  zQMerge keys are not unique in either left or right dataset; not a one-to-one mergerZ   )r   r   r   r   r   r   r   r   r   r   r   r   )ro   r   r   	left_copy
right_copyr   r   
expected_2
expected_3left_index_resetright_w_dupsr   left_w_dupsexpected_multis                 r)   test_validationzTestMerge.test_validationy  s.	   &&&-N-N-NOO((
 
 

 ...LLL  ((
 
 
 IIKK	ZZ\\
tUtPUVVV
dI...
eZ000 +++666+++CCC	  ((,,,	
 	
 	
 %Dd\
 
 
 	fh///)))666CCC 
 ((
 
 

 tUsU;;;
dI...
eZ000
fj111tUs\BBB
fj111 666)))CCC 
 $OO((
 
 

  >>#..!
 
 
 	fj111 uise5'0J0JSTRU&V&V&VWXX"	
 	
 	
 	
 S]:S111 	 	 %   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	E 	E$|DDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 9C5w77sCCCD4
 
 
 	"	
 	
 	
 	
 R]:S111 	 	 %   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	E 	E+u|DDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	k<C.IIIIS]:S111 	 	 &   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 S]:S111 	M 	M+|mLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M
	 	 ]:S111 	= 	=$#<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= )))!\\666 
 ((
 
 
 $__YY<<< 
 ((
 
 
 #$__YY---<<<	  ((
 
 
% 	 ]:S111 	7 	7$#6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 tUSzEBBB
fn55555s   *JJJ1KKK5MMM<NN #N O88O<?O< Q  QQ(RRR+UUUc                     t          g g g d          }t          j        d          5  t          ||d           d d d            d S # 1 swxY w Y   d S )Nr  raise)divider   r   )r   r   errstater   )ro   rY   s     r)   )test_merge_two_empty_df_no_division_errorz3TestMerge.test_merge_two_empty_df_no_division_error>  s    BRb1122[((( 	' 	'!Q:&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A		AAr   zindex,expected_index)r-   r   r_   )r-   r   r_   NNN)
2001-01-01
2002-02-02
2003-03-03zM8[ns]r/   r'  r(  r)  c                 n    g | ]2}t          g d |          t          g dt          j                  f3S )r   r/   )r-   r   r^   NNN)r   r   float64.0dtyps     r)   
<listcomp>zTestMerge.<listcomp>U  sY       
  )))4000555RZHHH  r+   )r-   r   r   r^   r^   r_   r0  r1  r2  )r'  
2001-01-02
2001-01-03r  )r  r3  r4  )1d2d3dr5  r6  r7  c           
      r   t          g dg dd|          }t          dg di          }|                    |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           t          j        ||           d S )Nr-  rY   r|   r   rZ   r  r|   Tr   )r   r   r   r-   r-   r-   r   r   r   r^   r_   r`   rY   r|   rZ   r   )inplace)r   r   r   r>   r   r   r   )ro   r   r   expected_indexrc   rd   r   r   s           r)   $test_merge_on_index_with_more_valuesz.TestMerge.test_merge_on_index_with_more_valuesD  s    ^ iii			::%HHH00012234SII						AAA &%%

 

 

 	>4888
fh/////r+   c                    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dd          }t	          j        ||           d S )Nr   )r   r-   r-   r9  rZ   r-   r   r^   N)r   r-   r-   r   )r-   r   r   r^   r<  r   r-   r   r  r|   Tr   r   r   r   r>   r   r   r   r   s        r)   test_merge_right_index_rightz&TestMerge.test_merge_right_index_right  s     yyy;;<<3			*++!//,,,\\\JJ%%%aBF#
 
 

 E5dPP
fh/////r+   c                 "   t          ddgddgd          }t          ddgddgd          }|                    |dd	g|
          }|dk    rt          ddgddgd          }nt          ddgddgd          }t          j        ||           d S )Nr  pig(   rp  )animal	max_speedquetzalP   rG  rH  r   r   r   )ro   r   left_dfright_dfr   r   s         r)   test_merge_preserves_row_orderz(TestMerge.test_merge_preserves_row_order  s     u~RHMMNNE(:"bRRSSxX{,CMM'>> Y,>bRTX!V!VWWHH UEN"b!R!RSSH
fh/////r+   c           	         t          g dt          g dt          d                    d          }t          dg dit          g d                    }|                    |d	d
d          }t          g dt          g d          g dddddt
          j        g          }|                    g d          }t          j	        ||           d S )Nr   r  abcr  r9  rZ   r  r   r|   Tr   r   rA  )rY   rY   rZ   rw   )r-   r-   r   r^   r<  r   r-   r   r   )
r   r
   r   r   r   r   r>   reindexr   r   r   s        r)   8test_merge_take_missing_values_from_index_of_other_dtypezBTestMerge.test_merge_take_missing_values_from_index_of_other_dtype  s   YY"???tE{{KKK 
 
 3			*2B???2S2STTTE5dPP$__"#7#7#788!\\ 
 aBF#
 
 
 ##,=,=,=#>>
fh/////r+   c                 R   t          t          j        d                              d          dz   g d          }t          t          j        d                              d          dz   g d          }|j        j        D ]}d|j        _        |                    |           d S )	Nr   )r_   r`   r-   r  r   )r`   r_   r  F)	r   r   r   r  _mgrr  flags	writeabler   )ro   rk   rl   r(   s       r)   test_merge_readonlyzTestMerge.test_merge_readonly  s    IbMM!!&))A-7P7P7P
 
 
 IbMM!!&))A-7K7K7K
 
 

 :$ 	( 	(C"'CIEr+   N)Nrh  ri  rj  r   fixturerp   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  markparametrizer  r  r/  r3  r8  r<  rJ  rM  r^  ra  filterwarningsrn  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r&  r   r   r7   r?   r   ALL_REAL_NUMPY_DTYPESr   from_tuplesr   r>   r   r   r?  rC  rM  rQ  rV  r9   r+   r)   rg   rg   q   s"       ^  ^ ^
 
 ^
 ^
 
 ^
 ^
 
 ^
0 0 0+ + +

0 
0 
00 0 0H H H8G G G*H H H&  8     7 7 7(
+ 
+ 
+M M M0 0 0&2 2 2.K K K@    *  , , , [U$G$G$GHH, , IH, [55S11D11--		
 . . .- - -^(' (' ('T0 0 0$0 0 0*@ @ @@ [e___5ooo7NO  [UVW$5660 0 76 0C C C*0 0 0 [W 	1 	1 	10 0 040 0 0  [V%K%K%KLL+ + ML+: [V%K%K%KLL+ + ML+2  00 0 02G G G60 0 020 0 0@0 0 00 0 0*6 6 6,=G =G =G~@ @ @. . .&     D8 8 8&C6 C6 C6J' ' ' [UWg$677[ ! ++  !<!<!<==
 >>>h   !<rvrvrvV"  	&	
 
 4  &	
, *)*B*B*BCC))VVRVRVRVD +&	
8 FFFSQQQ!<rvrvrvV  7&	
F 11122dD"&"&"&IJJE&	
) )T0 0U) ) 87V0*0 0 0 [UVW$566	0 	0 76	00 0 0*    r+   rg   c                    dD ]}dD ]}}|                      |||          }t          |                                 |                                ||          }|                    d          }t	          j        ||d           ~d S )N)r   r   r   )TFr   r   r   F)check_names)r   r   r\  r   r   r   )rF   r   r   r   r   r   s         r)   r  r    s    ) G G! 	G 	GDVVA3TV22FQ]]__ammoo3TRRRH))'22H !&(FFFFF	GG Gr+   c                      e Zd Zej                            dddg eddg                              d          g          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                         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             Zd Zd Zd Z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          fddg eddge          fg          d              Zej                            d eddgd!          g d"f eddg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(d)gf ej        d%dd&'          ddgf ej        d%dd&'          d*dgf ej        d+d,           ej        d+dd-.          fg	          d/             Zej                            d0ddgd1fg d2fdgd3fdgd4fg          d5             Zej                            d0d6d7gd1fg d2fd7gd3fd6gd4fg          d8             Z ej                            d9d2g d:g d;gfd1g d;g d:gfd4g d:g d;gfd3g d;g d:gfg          d<             Z!d= Z"ej                            d>g d?          d@             Z#dAS )BTestMergeDtypes
right_valsr2   r   categoryc                 x   t          ddgt          ddg                              d          ddgddgt          ddgd	          t          ddgd
	          d          }t          d|i          }t          ||d          }t	          |j        j                  st          |j        j                  sJ d S d S )Nr2   r   rc  r-   r         ?       @uint64r/   int32)rz  r{  Cr  EFrz  r   )r   r   r   r   r   rz  r0   r   )ro   rb  r   r   r   s        r)   test_differentzTestMergeDtypes.test_different  s     U^UEN++22:>>V3ZQF(333QF'222 	
 	
 3
+,,
 tUs+++vx~..Q/&(.2Q2QQQQQQQQr+   d1d2c           	         t          j        |          }t          j        |          }t          t          j        g ddz  |          ddgdz  t          j        t          j        d          t           j                  d          }t          j        d	d
g          }t          dt          j        ddg|          i|          }|                    |ddg          }|	                                }	|j
        dk    rt          j        d          }t          j        t           j        |          |	d<   d|	j        |	j        dk    |	j        dk    z  df<   d|	j        |	j        dk    |	j        dk    z  df<   t          j        ||	           |                    |ddgd          }|	                    ddgdd           t          j        ||	           d S )Nr-  r   r/   r2   r   r@     )k1k2v)r   r   )r-   r2   r   r`   rz   r   rq  rr  r   r  r+  r   r-   TrE  	mergesort)kindr=  )r   r0   r   r   r   r.   r   r\  r   r   ru  r>   r   rq  rr  r   r   sort_values)
ro   rm  rn  dtype1dtype2r   r   r   r   r   s
             r)   test_join_multi_dtypesz&TestMergeDtypes.test_join_multi_dtypes  s   
 ""hyyy1}F;;;enr)Xbimm28<<< 
 
 &
J'?@@41a&!?!?!?@NNN5dD\2299;;;#Xi((F"&777JKhkQ&8;%+?@$FGJKhkQ&8;%+?@$FG
fh///5dD\==dD\TJJJ
fh/////r+   zint_vals, float_vals, exp_valsr   )re  rf        @XYre  rz  r-   r^   r   rf  c                 ,   t          d|i          }t          d|i          }t          |          }|                    |dd          }t          j        ||           |                    |dd          }t          j        ||ddg                    d S )Nr|  r}  r   r   )ro   int_vals
float_valsexp_valsrz  r{  r   r   s           r)   test_merge_on_ints_floatsz)TestMergeDtypes.test_merge_on_ints_floats
  s     sHo&&sJ'((X&&C#66
fh///C#66
fhSz&:;;;;;r+   c                    t          ddgddgdddg          }t          d	gd
gdddg          }|                    |dd          }t          ddgddgt          j        dgdg d          }t	          j        ||           d S )Nre  rf  rr   r   r{   r|   r}   r   r      )r|   r   r   r   r   g      i@r  )r   r   r   r>   r   r   r]  s        r)   test_merge_key_dtype_castz)TestMergeDtypes.test_merge_key_dtype_cast   s    c
2r(;;eT]SSSC511E4=III35f55#Jr2hrvuoFF'''
 
 
 	fh/////r+   c                    t          dg di          }t          dg di          }t          dgdgd          }t          j        t                    5  |                    |dd          }t          j        ||           d d d            n# 1 swxY w Y   t          j        t                    5  |                    |dd          }t          j        ||ddg                    d d d            n# 1 swxY w Y   t          dt          j        t          j        dgi          }t          j        d           5  |                    |dd          }t          j        ||ddg                    d d d            d S # 1 swxY w Y   d S )	Nr|  r   r}  )皙?g      @rz  r^   rz  r{  r   )r   r   rv  UserWarningr   r   r   r>   )ro   rz  r{  r   r   s        r)   !test_merge_on_ints_floats_warningz1TestMergeDtypes.test_merge_on_ints_floats_warning+  s`   
 sIII&''sOOO,--A3cU3344'44 	4 	4WWQcW::F!&(333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 '44 	@ 	@WWQcW::F!&(C:*>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@
 sRVRVS1233'-- 	@ 	@WWQcW::F!&(C:*>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s6   .BBB26C44C8;C8;6E>>FFc                 J   t          dt          ddgt                    i          }t          dddgi          }t          dddgit                    }t          ||d          }t	          j        ||           t          ||d          }t	          j        ||           d S Nr|   TFr/   r   )r   r   r=   r   r   r   ro   rc   rd   r   r   s        r)   (test_merge_incompat_infer_boolean_objectz8TestMergeDtypes.test_merge_incompat_infer_boolean_objectC  s    e}F C C CDEEu.//edE]36BBBsCE***
fh///sCE***
fh/////r+   c                 `   t          dt          ddt          j        gt                    i          }t          dddgi          }t          dddgit                    }t          ||d          }t          j        ||           t          ||d          }t          j        ||           d S r  )r   r   r   r>   r=   r   r   r   r  s        r)   5test_merge_incompat_infer_boolean_object_with_missingzETestMergeDtypes.test_merge_incompat_infer_boolean_object_with_missingN  s     eRV'<F K K KLMMu.//edE]36BBBsCE***
fh///sCE***
fh/////r+   zdf1_vals, df2_valsr-  )rY   rZ   rY   )rV  re  rf  r   FTr/   c                 8   t          d|i          }t          d|i          }t          ||dg          }t          |j        j                  sJ t          ||dg          }t          |j        j                  st          |j        j                  sJ d S d S )Nrz  r   )r   r   r   rz  r0   r   )ro   df1_valsdf2_valsrc   rd   r   s         r)   !test_merge_incompat_dtypes_are_okz1TestMergeDtypes.test_merge_incompat_dtypes_are_okZ  s      h((h((sCSE***vx~.....sCSE***vx~..Q/&(.2Q2QQQQQQQQr+   rg  r  rh  )r~  12z1/1/2011r  r  z
2011-01-01z
2011-01-02rV  20130101)r  r4   r  c                    t          d|i          }t          d|i          }d|d         j         d|d         j         d}t          j        |          }t	          j        t          |          5  t          ||dg           d d d            n# 1 swxY w Y   d|d         j         d|d         j         d}t          j        |          }t	          j        t          |          5  t          ||dg           d d d            n# 1 swxY w Y   t          |          t          |          k    rt          |||d          }t          |||d          }d|d         j         d|d         j         d	}t          j        |          }t	          j        t          |          5  t          ||           d d d            n# 1 swxY w Y   d|d
         j         d|d
         j         d}t          j        |          }t	          j        t          |          5  t          ||dd
g           d d d            d S # 1 swxY w Y   d S d S )Nrz  You are trying to merge on  and zE columns for key 'A'. If you wish to proceed you should use pd.concatr   r   rz  r{  ri  r{  zE columns for key 'B'. If you wish to proceed you should use pd.concatri  zE columns for key 'C'. If you wish to proceed you should use pd.concat)	r   r0   reescaper   r   r   r   r!   )ro   r  r  rc   rd   r   r  r  s           r)    test_merge_incompat_dtypes_errorz0TestMergeDtypes.test_merge_incompat_dtypes_errorr  s   4 h((h((S#c(. S Ss3x~ S S S 	 inn]:S111 	& 	&#su%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&
S#c(. S Ss3x~ S S S 	 inn]:S111 	& 	&#su%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&
 x==CMM)) (IIJJC(IIJJC
Wc#hn W W3s8> W W W  )C..Cz555    c3                             Wc#hn W W3s8> W W W  )C..Cz555 / /c3C:..../ / / / / / / / / / / / / / / / / // *)sH   1BBB*D

DD*GGG II	Izexpected_data, howr   r   r   r   c                    t          dgdg|          }t          dgdg|          }t          |||          }t          t          |                    }t          ||dg|          }t	          j        ||           d S )N)r-   idr   r   r   r   r   r0   r   r   r   r!   r   r   )	ro   any_numeric_ea_dtyper   expected_datarm  rn  r   	exp_indexr   s	            r)   test_merge_EA_dtypez#TestMergeDtypes.test_merge_EA_dtype  s     vv5IJJJvv5IJJJr23'''s=1122	TFBV
 
 
 	fh/////r+   rY   rZ   c                    t          dgdg|          }t          dgdg|          }t          |||          }t          t          |                    }t          ||dg|          }t	          j        ||           d S )N)rY   r  r   )rZ   r   r  r  )	ro   r   r  any_string_dtyperm  rn  r   exp_idxr   s	            r)   test_merge_string_dtypez'TestMergeDtypes.test_merge_string_dtype  s     x$7GHHHx$7GHHHr23'''S//004&@P
 
 
 	fh/////r+   zhow, expected_data)Tr-   r_   )Fr`   r^   c                     t          ddgddgd          }t          ddgddgd          }t          |||	          }t          |g d
          }t          j        ||           d S )NTFr-   r`   rz  r{  r^   r_   rz  ri  r   r  r   r   )ro   r   r  rc   rd   r   r   s          r)   test_merge_bool_dtypez%TestMergeDtypes.test_merge_bool_dtype  s     tUm1a&99::udm1a&99::sCS)))]OOODDD
fh/////r+   c                 v   t          g dg ddt          j                              }|                                }t          dddt          j        dgd	d
dt          j        dgd|          }|                                }t          ||dg|          }t          j        ||           t          j        ||           t          t          j
        d          t          j                    t          j
        d          gt          j        g d                    }t          j        |j        |           d S )N)r  r  34N)r  5678)lvl0zlvl1-ar  zlvl1-b)datar0   r  r  r  r  r  r  911)r  r  zlvl1-cr  )r   r   r   r   O)r  r  r  r   )r   r7   StringDtyper   NAr   r   r   r   r   r0   r   r\  r   r6  )	ro   r  string_dtyperc   r  rd   r  r   r   s	            r)   test_merge_ea_with_stringz)TestMergeDtypes.test_merge_ea_with_string  sP   $>$>$>$=$=$=  .""
 
 
 88::%(#sBE3$?%(#sBE4$@  
 
 
 88::Cs0B/CSSS 	c8,,,
c8,,, Xc]]BN,,bhsmm<(LLL 
 
 
 	v}h77777r+   zleft_empty, how, exp)
)Fr   r   )Fr   empty)Fr   r  )Fr   r   )Fcrossempty_cross)Tr   r  )Tr   r   )Tr   r  )Tr   r   )Tr  r  c                 f   t          ddgddgd          }t          dgdgdd	          }|r|                    d
          }n|                    d
          }|                    ||          }|dk    r.t          ddgddgt          j        t          j        gd          }nZ|dk    r!t          dgt          j        gdgd          }n3|dk    rt          g dd          }n|dk    rt          g dd          }|dk    r|                    dd          }t          j        ||           d S )Nr   r-   r^   r_   r  r`   r  r.   r/   r   r   r   r  r   r  r   r  )A_xr{  A_yri  r   rz  Trs  )r   headr   r   r>   rv  r   r   )ro   
left_emptyr   r   r   r   r   r   s           r)   test_merge_emptyz TestMergeDtypes.test_merge_empty  sX     1vQF33441#..g>>> 	"99Q<<DDJJqMMEEs++&== 1vQF"&"&AQ!R!RSSHHG^^ s"&!D!DEEHHG^^ HHHHHM!! )A)A)AQQQH'>>++Cd+CCH
fh/////r+   N)$rh  ri  rj  r   rX  rY  r   r   rl  r   r.   rh  intcint16int8uint8r+  float32float16ry  r  r  r  r  r  r=   r   r  r7   r  r  r  r  r  r  r  r9   r+   r)   ra  ra    sj       [u~vvuen'='='D'DZ'P'PQ R R R& [rx27BHbgrxH  [TBHbj"*bj#QRR0 0 SR 0> [(YYyyy)O)OPYYc
1a&Sz$B$BCV___QF#s&D&DE	
 < < <	0 	0 	0@ @ @0	0 	0 	0
0 
0 
0 [ YY//66zBBC__ff___55<<ZHHIVVVUDM8889VVVUDM6667	

 
R R
 
R [ VQF(+++___=VQF'***OOO<YY(__ooo.YY(j!#>>>|, R]:qs;;;aVDR]:qs;;;c3ZHj!444j!EEE	
 *3/ 3/+ *3/j [VWMS'NS&M		
 	0 	0 	0 [3Z!MUGUFO		
 	0 	0 	0 [|||]]]34}}}lll34lllMMM23}}}lll34		
 0 0 08 8 8B [	
 	
 	
 0 0 0 0 0r+   ra  c                  T   t          t          t          j                            d                              ddgd                                        t          ddg                    t          j                            d                              g dd          d          S )Nr   r2   r   )rr   r>  )onetwothreer{  )r   r   r   r"   r#   choicer   r	   r9   r+   r)   r   r   ?  s    	%%a((//U/KK f%uen5566&&q))001H1H1Hu0UU		
 	
  r+   c                      t          t          ddg                              t          ddg                    ddgd          S )Nr2   r   r-   r   )r|  Z)r   r   r   r	   r9   r+   r)   r   r   K  sO    ''../?/O/OPPQ	
 	
  r+   c            
          e Zd Zd Zd Zd Zd Zej        	                    dddg          d             Z
d	 Zej        	                    d
d d d g          d             Zd Z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                         Zd ZdS )TestMergeCategoricalc                    t          ||d          }|j                                        }|st          j        d          nd}t          t          ddg          ||gg d	          }t          j        ||           d S )
Nr|  r   r  strr2   r   r  )r|  Y_xY_yr   	r   r6  r  r   r0   r   r	   r   r   )ro   r   r   r   r   r0   r   s          r)   test_identicalz#TestMergeCategorical.test_identicalV  s    tTc***))++%7BU%888%G%%%
 
 
 	vx00000r+   c                 &   t          ||d          }|j                                        }|st          j        d          nd}t          t          ddg          |t          j        d          gg d	
          }t          j        ||           d S )Nr|  r   r  r  r2   r   r  r.   r|  r}  r  r   r  ro   r   r   r   r   r   r0   r   s           r)   
test_basiczTestMergeCategorical.test_basica  s     tUs+++))++%7BU UEN;;;!!
 "//
 
 
 	vx00000r+   c           	         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<   t          ||ddd          }|d                             t	          dg                    |d<   t          j        ||           |                                }|d                             d          |d<   t          ||ddd          }t          j        ||           |                                }|d                             d          |d<   |                                }|d                             d          |d<   t          ||ddd          }t          j        ||           d S )NrY   rZ   rw   rx   ry   )r   r-   r   r^   r_   nullr   r  r  r   r   )r   r   r   rc  )r   r   r   r   r	   r   r   )ro   r   r   rp   r   crightr   clefts           r)   test_merge_categoricalz+TestMergeCategorical.test_merge_categoricalq  s    ==Fv&VLL 
 
 ==== 
 
 4FC#FFF 7799
 Sk((44stVsKKK ,,-=vh-G-GHH
fh/// 		3Z&&z22c
uf&#LLL
fh/// Sk((44s		3Z&&z22c
uf&#LLL
fh/////r+   c                 >   t          t          g dg d          g dd          }t          t          g dg d          g dd          }t          ||dg	          }t          t          g d          g dg d
d          }t          j        ||           d S )Nr  r  )A0B0C0)FooLeft)ri  r{  rz  )C1B1A1)r  Rightr  r   )r  r  r  )r  r  r  r  r]  s        r)   'tests_merge_categorical_unordered_equalz<TestMergeCategorical.tests_merge_categorical_unordered_equal  s    "???OOO*** 
 
 "???OOO+++ 
 
 sCUG,,,"???33***+++ 
 
 	fh/////r+   orderedTFc                    t          ddg|          }t          g dt          g d|          g dd                              d	d
g          }t          g dt          g d|          g dd                              d	d
g          }t	          ||ddd          }t          g dt          g d|          g dddt
          j        gd                              d	d
g          }t          j        ||           d S )NP2P1r  r  )ri  ri  r  )r  r  r  r/   r-  )r  prY   r  r  )rz  ri  ri  )r  r  r  )rr   rp  r@  )r  r  rm  r   Tr   g      &@g      (@)r  r  rY   rm  )	r	   r   r
   r   r   r   r>   r   r   )ro   r  pcatrc   rd   r   r   s          r)   5test_multiindex_merge_with_unordered_categoricalindexzJTestMergeCategorical.test_multiindex_merge_with_unordered_categoricalindex  sY     D$<III%oo !3!3!34@@@YY 
 
 )T3K
 
  	 %oo !3!3!34@@@"ll 
 
 )T3K
 
  	 sCV$OOO%oo !3!3!34@@@YYT26*	 
 
 )T3K
 
  	 	fh/////r+   c                 *   |                     |j                            d                    }t          ||d          }|j                                        }|st          j        d          nd}t          t          ddg	          |t          d
dg	          gg d          }t          j        ||           |j        j                            |j        j                  sJ |j        j                            |j        j                  sJ d S )Nrc  )r  r|  r   r  r  r2   r   r  r-   r   r  r   )assignr  r   r   r6  r  r   r0   r   r	   r   r   r|  rK  #_categories_match_up_to_permutationr  s           r)   test_other_columnsz'TestMergeCategorical.test_other_columns  s
   uw~~j99::tUs+++))++%7BU UEN;;; QF333
 "//
 
 
 	vx000 v}@@QQQQQw~AA&(/RRRRRRRr+   changec                     | S rB   r9   rE   s    r)   rG   zTestMergeCategorical.<lambda>  s    a r+   c                 J    |                      t          g d                    S )N)r2   r   bahr   r	   rE   s    r)   rG   zTestMergeCategorical.<lambda>  s"    ahh/0E0E0EFFGG r+   c                 H    |                      t          d                    S )NTr  r  rE   s    r)   rG   zTestMergeCategorical.<lambda>  s    ahh/===>> r+   c                     ||j                             d                    }|                    |          }t          |j         j        j        t                    sJ t          ||d|          }|j        	                                }|st          j        d          nd}	t          |	|	t          j        d          gg d	          }
t          j        ||
           d S )
Nr=   )r|  r|  r   r  r  r.   r  r   )r|  r   r  rl  rK  r0   r	   r   r6  r  r   r   r   r   )ro   r   r  r   r   r   r|  r   r   r0   r   s              r)   test_dtype_on_merged_differentz3TestMergeCategorical.test_dtype_on_merged_different  s     F57>>(++,,q!!$&--/?@@@@@ tUs	:::))++%7BU5%'):):;???SSS
vx00000r+   c                    dt          g dz  g ddz  z  fddD             fddD             d	          }|                    d
           }t          ||t          |j                            }t          j        ||           d S )Nr`   )
rY   rZ   rw   rx   ry   r  r  r  r  j)rr  wrF   r   r  r   c                 ,    g | ]}|gd z  z  D ]}|S r  r9   r-  eachletterr  s      r)   r/  zKTestMergeCategorical.test_self_join_multiple_categories.<locals>.<listcomp>	  sJ       #'&1*q.      r+   )r  r&   ur  oc                 &    g | ]}|gz  D ]}|S r9   r9   r  s      r)   r/  zKTestMergeCategorical.test_self_join_multiple_categories.<locals>.<listcomp>  sH        $(&1*      r+   )
aabbccddeeffgghhiijjr  c                 ,    |                      d          S )Nrc  )r   rE   s    r)   rG   zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>"  s     4 4 r+   r   )r   applyr   r   r   r   r   )ro   rp   r   r  s      @r)   "test_self_join_multiple_categoriesz7TestMergeCategorical.test_self_join_multiple_categories  s     GGG!K...2Q6    9  
   !   
 
: XX4455 r2$rz"2"2333
fb)))))r+   c                    t          t          ddd          dgt          ddd          dggddg          }|d                             d	          |d<   t          t          ddd          dgt          ddd
          dggddg          }|d                             d	          |d<   t          t          j        d                                          ddgt          j        d                                          dt
          j        gt          j        d                                          t
          j        dggg d          }t          ||ddg          }t          j	        ||           t          t          j        d                                          ddggg d          }t          ||ddg          }t          j	        ||           d S )Ni  r-   r  r   ?r   num2r   rc  r^   ffffff?num4r'  r3  r4  )r   r"  r$  r   r  r   )
r   r   r   r7   r8   r   r>   r   r   r   )ro   rp   rd   expected_outerresult_outerexpected_innerresult_inners          r)   test_dtype_on_categorical_datesz4TestMergeCategorical.test_dtype_on_categorical_dates)  s    4A$tD!Q'7'7&=>QWHX
 
 
 Z&&z226
4A$tD!Q'7'7&=>QWHX
 
 
 &k((44F"l++0022C=l++0022C@l++0022BFC@
 -,,
 
 
 R'vh???
lN;;;"l<((--//c:;,,,
 
 
 R'vh???
lN;;;;;r+   z.category_column,categories,expected_categories)FTTF)r   r-   r-   r   r-   r   )FalseTruer+  r*  r+  r*  c                    t          g d|d          }|d                             t          ||                    |d<   t          ddgddgd	          }|                    |          }t          ddg|ddgd
          }|d                             t          ||                    |d<   t	          j        ||           d S )Nr   )r  r  r  r  r   r_   r-   r#  )r  num)r  r  r-  )r   r   r	   r   r   r   )	ro   category_columnr  expected_categoriesr  rc   rd   r   r   s	            r)   /test_merging_with_bool_or_int_cateorical_columnzDTestMergeCategorical.test_merging_with_bool_or_int_cateorical_columnI  s     |||ODDEEZ&&'7
G'T'T'TUUE
1vq!f55663QF3FPQSTvVVWW"5/00Z999
 
 	h/////r+   c                    t          t          ddt          j        gd          dd          }t	          ||d          }t          t          ddt          j        gd          ddd          }t          j        ||           d S )	Nr-   r   r1   r/   r  rz  r   )rz  B_xB_y)r   r   r   r>   r   r   r   )ro   rp   r   r   s       r)   test_merge_on_int_arrayz,TestMergeCategorical.test_merge_on_int_arraya  s    VQ26N'BBBKKLLr2#&&&!Qw777!LL
 
 	fh/////r+   N)rh  ri  rj  r  r  r  r  r   rX  rY  r  r  r  r  r)  r0  r4  r9   r+   r)   r  r  U  s       	1 	1 	11 1 1 )0 )0 )0V0 0 02 [Yu660 0 7608S S S* [KGG>>	
 1 1 1$&* &* &*P< < <@ [Yu66[8'''$uF\\Aq6Aq6*///&'1BVWDUV	
 0 0  7600 0 0 0 0r+   r  c                  0    t          dg dig d          S )NrY   r   rr   r   r   r-   r   r   rb   r9   r+   r)   rK  rK  k  s"    c;;;'yyy9999r+   c                  0    t          dg dig d          S )NrZ   ,  d   r  r^   r-   r   r   rb   r9   r+   r)   rL  rL  p  s"    c???+999====r+   c                   >   e Zd Zej                            ddd eddgddgdd	d
g          fdd eddgddgdd
d	g          fdd eg dddej        gdg d          fdd eg dej        ddgdg d          fdd eej        ddgg ddg d          fdd eddej        gg ddg d          fdd edddej        gej        dddgdg d          fdd edddej        gej        dddgdg d          fg          d             Z	dS )TestMergeOnIndexeszhow, sort, expectedr   Fr   rr   r  r;  r   r   r-   r   Tr   r6  r7  )r   rr   r   r-  r   r9  r<  r;  r  r:  r   r   r   r:  r   c                 Z    t          ||dd||          }t          j        ||           d S )NT)r   r   r   r   r   )ro   rK  rL  r   r   r   r   s          r)   test_merge_on_indexesz(TestMergeOnIndexes.test_merge_on_indexesv  sB    ` X$DcPT
 
 
 	fh/////r+   N)
rh  ri  rj  r   rX  rY  r   r   r>   rA  r9   r+   r)   r>  r>  u  s)       [eYYb"XS#J'G'GPQSTvVVVWdIIRHC:&F&FqRSfUUUV	3RV2DEEYYYWWW 	2632DEEYYYWWW 	62r*AA   	r26*AA   	b"bf-RVS#s4KLL&,,   	b"bf-RVS#s4KLL&,,  G+	
. .^0 0_. .^0 0 0r+   r>  r   c                 6    g | ]}t          d dg|d          S )r-   r   	index_colrC   )r   r,  s     r)   r/  r/    s+    VVVTUAq6K000VVVr+   rz  r{  rC  )r  rD   r   )startstoprD   r3   z
2018-01-02r   c                 @    t          |           j         d| j         dS )N[r  )typerh  r0   rE   s    r)   rG   rG     s"    T!WW%22222 r+   )rJ   c                     t          dddgi|           }t          dddgi|           }|                    |dg	          }t          ddgddgd
|           }t          j        ||           d S )N	left_datar-   r   r   
right_datare  rf  rC  r   )rJ  rK  r   )r   r   r   r   r   s        r)   test_merge_index_typesrL    s     kAq6*%888D|c3Z0>>>EZZ;-Z00F1vc3ZHHPUVVVH&(+++++r+   z-on,left_on,right_on,left_index,right_index,nmr   r   F)NNNTTr{  T)NNNTTNc           
      $   t          dg dit          j        ddgddggddg	          
          }t          g dt          j        ddgddggddg	          |          }t          ddgddgdt          j        ddgdggddg	          
          }|-t	          ||| ||||          }	t          j        |	|           d S d}
t          j        t          |
          5  t	          ||| ||||          }	d d d            d S # 1 swxY w Y   d S )Nrz  r   rY   rZ   r   r-   r   r   namesr   r   r  r_   r^   r  )r   r   r   r   r   z$Cannot merge a Series without a namer   )
r   r   from_productr   r   r   r   r   r   r   )r   r   r   r   r   nmrY   rZ   r   r   r   s              r)   test_merge_seriesrR    s    		lll%SzAq6&:7GBTUUU	 	 	A 	%SzAq6&:7GBTUUU	 	 	A
 !fAq6""%SzA3&7?QRRR  H 
~!#
 
 
 	fh/////4]:S111 		 		!%'  F		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   !DD	D	c                  X   t          dg dit          j        ddgddggddg	          
          } t          g dt          j        ddgddggddg	          d          }t	          j        t          d          5  t          | |ddg           d d d            d S # 1 swxY w Y   d S )Nrz  r   rY   rZ   r   r-   r   r   rN  r   r   )r{  ri  r  z-Not allowed to merge between different levelsr   r   )r   r   rP  r   r   r   r   r   r   s     r)   test_merge_series_multilevelrT    s-    		lll%SzAq6&:7GBTUUU	 	 	A 	%SzAq6&:7GBTUUU	 	 	A
 
I
 
 
 + + 	a)****+ + + + + + + + + + + + + + + + + +s   =BB#&B#z!col1, col2, kwargs, expected_colssuffixes) _dupr~  0_dup)NrW  )_x_y0_x0_yrY  rZ  rY   )NrZ  rV  )rY  Nz0.0_xrZ   b_yr  )NrY  )_aN0_ar  c                    t          | g di          }t          |g di          }t          ddgddgddgg|	          } |j        |fd
d
d|}t          j        ||           t          ||fd
d
d|}t          j        ||           d S )Nr   r!  r-   r_   r   r`   r^   r   r   Tr   r   )r[   r  kwargsexpected_colsrY   rZ   r   r   s           r)   test_merge_suffixrc  		  s    ( 	4#$$A4#$$A1a&1a&1a&1=IIIHQWQD4TDDVDDF&(+++1aEDdEEfEEF&(+++++r+   zhow,expectedr   r?  <   F   X       )rz  r  B2)r-   r;  r  r:  rJ  rg  rh  ri  c                     t          g dg dd          }t          g dg dd          }t          ||d| d          }g d	|_        t          j        ||           d S )
N)r;  r  r-   )rd  re  rJ  r  r?  rf  rz  )rY  rY  )r   r   rU  )rz  r2  r2  )r   r   r   r   r   )r   r   rK  rL  r   s        r)   test_merge_duplicate_suffixrl  )	  s}    , mmm,,,??@@G___EEFFH7H#MMMF***H&(+++++r+   zcol1, col2, suffixes))rY   rY   )NN)rY   rY   )rV  N)r   r   )NrV  c                     t          | g di          }t          |g di          }d}t          j        t          |          5  t	          ||dd|           d d d            d S # 1 swxY w Y   d S )Nr   r^   r_   r`   z'columns overlap but no suffix specifiedr   Tr   r   rU  r  )r[   r  rU  rY   rZ   r   s         r)   test_merge_suffix_errorrp  G	  s     	4#$$A4#$$A 4C	z	-	-	- J JatIIIIJ J J J J J J J J J J J J J J J J Js   A&&A*-A*r   r   r   c                     t          dg di          }t          dg di          }t          j        t          d          5  t	          ||dd|            d d d            d S # 1 swxY w Y   d S )	NrY   r   rZ   rn  zPassing 'suffixes' as ar   Tro  )r   r   r   	TypeErrorr   )rU  rY   rZ   s      r)   test_merge_suffix_raisesrt  V	  s    3			"##A3			"##A	y(A	B	B	B J JatIIIIJ J J J J J J J J J J J J J J J J J   A$$A(+A(z2, got 3r  zcol1, col2, suffixes, msgr  z%too many values to unpack \(expected z\)z1not enough values to unpack \(expected 2, got 1\)c                     t          | g di          }t          |g di          }t          j        t          |          5  t	          ||dd|           d d d            d S # 1 swxY w Y   d S )Nr   rn  r   Tro  r  )r[   r  rU  r   rY   rZ   s         r)   test_merge_suffix_length_errorrw  b	  s     	4#$$A4#$$A	z	-	-	- J JatIIIIJ J J J J J J J J J J J J J J J J Jru  	cat_dtyper  r  reversec                    t          g dd          t          g dd          d}t          t          g d                              |d                   g dd                              d          }g d}g d}|r(|                                 |                                 t          t          |                              ||                    |d	                              d          }|                    |d
d
          }t          g dg dt          g d                              |d                   d                              d          }t          j        ||           d S )Nr  Fr  )r  r  r  r   r2   r   r2   r2   r   Tr   r   r   r2   )	r	   r   r   r   r   ry  r   r   r   )	rx  ry  
cat_dtypesrc   data_foo
data_rightrd   r   r   s	            r)   test_merge_equal_cat_dtypesr  v	  s   
  ???EJJJ???EJJJ J
 ''..z%/@AA999UU i  HJ 
x  ''
9(=>>TT i  YYstY>>FIIYY///**11*U2CDD	
 	
  i  &(+++++r+   c                  B   t          g dd          } t          t          ddg                              |           ddgd                              d	          }t          t          g d                              |           g d
d                              d	          }|                    |dd          }t          ddgddgt          ddg                              |           d                              d	          }t          j        ||           d S )Nr  Fr  rY   rZ   r-   r   r{  r2   )r^   r   r-   r|  Tr   r^   r}  )r	   r   r   r   r   r   r   r   )rx  rc   rd   r   r   s        r)   test_merge_equal_cat_dtypes2r  	  s.    OOOUKKKI Sz"")))44q!fEE i  ''..y99IIINN i  YYstY>>FQ1a&c
1C1C1J1J91U1UVV i  &(+++++r+   c            
      r   t          dt          t          j        dd          t          j        dd          gd          i          } |                                 }|d                             d          |d<   t          || dd	          }|                                 }t          j        ||           d S )
NrY   r   r-   r   intervalr/   rc  r   r  )	r   r   r7   Intervalr   r   r   r   r   )r   r   r   r   s       r)   test_merge_on_cat_and_ext_arrayr  	  s    	fbk!Q''Q):):;:NNNO E ::<<DS	  ,,DI4G444Fzz||H&(+++++r+   c                    	
 g d} g d	t          j        | 	fddg          }t          |          }d|d<   t          |          }d|d<   d	d

|                    |d
f          }	fd| D             }|dgz  }|	
fd| D             z  }t          j        |ddg          }t          |          }t          j        ||d           d S )Nr  r  r  r  r   r   rN  r   rV  r  rY  rZ  r   rU  c                 (    g | ]}D ]	}|z   |f
S r9   r9   )r-  r  r-  l_sufnumberss      r)   r/  z1test_merge_multiindex_columns.<locals>.<listcomp>	  s/    MMMWMMcv~s#MMMMr+   )r  rV  c                 (    g | ]}D ]	}|z   |f
S r9   r9   )r-  r  r-  r  r_sufs      r)   r/  z1test_merge_multiindex_columns.<locals>.<listcomp>	  s/    NNNgNNs$NNNNr+   FrZ  )r   rP  r   r   r\  r   r   )lettersr   frame_xframe_yr   tuplesr>  r   r  r  r  s           @@@r)   test_merge_multiindex_columnsr  	  s&    #""GooG#Wg$6w>PQQQE&&&GGDM&&&GGDMEE]]7tu~]GGF NMMMM'MMMF
zlF
NNNNN7NNNNF+F7G:LMMMN000H&(>>>>>>r+   c                  (   t          g dg dd          } t          g dt          j        g d          d          }t          | |dd	          }t          g dg dt          j        g d
          d          }t	          j        ||           d S )Nr  )r  r  r  )rF   r   r  )200020012002)r   r  r   r   r  )r  r  r?   r  )r   r7   r  r   r   r   rc   rd   r   r   s       r)    test_merge_datetime_upcast_dtyper  	  s    
///@@
A
AC
ooBN3K3K3K$L$LMM C 3C000F   7 7 788	
 	
 H &(+++++r+   n_categoriesr`      c                    t          dgt          t          |                     z             }t          t          | dz             dg|          }t          dggdgt          dgt          t          |                                         }t	          ||ddd	          }t          d
 t          | dz             D             ddg|          }t          j        ||           d S )Nr   r-   rs   r  r   r  r   Tr   c                 >    g | ]}|d k     r|dgn|t           j        gS )r   g      @)r   r>   )r-  r  s     r)   r/  z9test_categorical_non_unique_monotonic.<locals>.<listcomp>	  s.    MMMQUU!SBFMMMr+   r   r   )r   r   r   r   r   r   r   )r  r   rc   rd   r   r   s         r)   %test_categorical_non_unique_monotonicr  	  s    
 "1#U<-@-@(A(A"ABBJ
E,*++gYj
Q
Q
QC

	stE,4G4G/H/HIII  C 3DdKKKFMMU<!;K5L5LMMMI&  H
 (F+++++r+   c                     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	d
gd          }|                     |ddg          }t          j        ||           t          g dg dd          g dd} t          |           } t          g dg dd          g dg dd}t          |                              d	d
g          d         }t          | |                                ddgd	d
gd          }|                    d	d
gd          }|                     |ddg          }t          j        ||           d S )N)rY   rZ   rY   rw   rY   rZ   r  )r   r-   r   r-   r   r   )Cat1Int1)rY   rZ   rw   rY   rZ   rw   )r   r   r   r-   r-   r-   )r  g333333?r!  r#  r`  g?)CatIntFactorr  r  r  r  r  r   r   r-   )axisr   r  Tr  )	r
   r   r   r   r\  dropr   r   r   )rY   rZ   r   r   s       r)   &test_merge_join_categorical_multiindexr  
  sJ    :::OOOLL"""	 	A 	!A 999???KK!!!000	 	A
 	!u~..x8A		   H }}eU^!}44HVVA66*V++F(F+++ ***OOOT
 
 
 #""		 	A 	!A ***OOOT
 
 
 "!!000	 	A 	!u~..x8A		   H }}eU^!}44HVVA66*V++F(F+++++r+   funcr   
merge_asof)ra  err_msg)r   r   r   r   )r   r   r   r   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          |          5   t	          t
          |           ||fi | d d d            d S # 1 swxY w Y   d S )Nr-   r   r^   r_   r   r`   r   r  zCan only pass argument "r   " OR "z" not both\.r   r   r   r   r   getattrr7   r  ra  r  r   r   r   s         r)   /test_merge_join_cols_error_reporting_duplicatesr  <
  s     Aq6A//00DQF!Q0011E
Pgaj
P
P

P
P
PC	z	-	-	- 1 1D$000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1   BBB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          |          5   t	          t
          |           ||fi | d d d            d S # 1 swxY w Y   d S )Nr-   r   r^   r_   r   r`   r   r  zMust pass "r   r  z"\.r   r  r  s         r)   ,test_merge_join_cols_error_reporting_missingr  M
  s     Aq6A//00DQF!Q0011E
:
:
:71:
:
:
:C	z	-	-	- 1 1D$000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1r  ra  c                    t          ddgddgd          }t          ddgddgd          }d	}t          j        t          |
          5   t	          t
          |           ||fddi| d d d            d S # 1 swxY w Y   d S )Nr-   r   r^   r_   r   r`   r   r  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r   r   rY   r  )r  ra  r   r   r   s        r)   1test_merge_join_cols_error_reporting_on_and_indexr  ^
  s     Aq6A//00DQF!Q0011E	:  
z	-	-	- 9 9D$88#88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   
 A77A;>A;c                      t          ddgddgd          } t          ddgddgd          }t          | |ddd          }t          ddgddgddgddgddgd          }t          j        ||           d S )	Nr-   r2   )rF   r  r   TrF   )r   r   r   )rF   x_xz_xx_yz_yr   r   r   r   r   s       r)   test_merge_right_left_indexr  r
  s    Aq67788DQF%8899E4GsKKKFQq65>q65>	
 	
 H &(+++++r+   c                     t          dgdgd                              ddg          } t          ddgi                              dg          }t          g g dt          j                                      ddg          }t	          | |dgd          }t          j        ||           t	          || ddg	          }t          j        ||           d S )
Nr-   r   r   rY   rZ   r/   Tr  r  )r   r   r   r.   r   r   r   rc   rd   r   r   s       r)   $test_merge_result_empty_index_and_onr  
  s    
1#QC((
)
)
3
3S#J
?
?C
S1#J


)
)3%
0
0Cr++28<<<FFSzRRH3cU===F&(+++3u===F&(+++++r+   c                  p   t          g dddd          } t          g ddd          }t          j        t          d          5  t	          | |d	           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          || dd
           d d d            d S # 1 swxY w Y   d S )Nr   r-   r   )rY   rZ   b_xr   (Passing 'suffixes' which cause duplicater   rY   r   )rZ  rY  r  r   r   r   r   r   rq  s     r)   .test_merge_suffixes_produce_dup_columns_raisesr  
  sI   9991Q7788DIIIA..//E	z)S	T	T	T # #dEc""""# # # # # # # # # # # # # # # 
z)S	T	T	T : :eTcL9999: : : : : : : : : : : : : : : : : :s$   A$$A(+A(
B++B/2B/c                      t          g dg dgg d          } t          ddgdd          }t          | |d	
          }t          g dgg d          }t          j        ||           d S )Nr:  r;  )rY   rZ   rZ   r   r-   r^   r   r   rY   r   )r-   r-   r-   r   )rY   r  r  r]  r   r  s       r)   3test_merge_duplicate_columns_with_suffix_no_warningr  
  s     iii+___EEEDQF++,,E43'''F,,,1K1K1KLLLH&(+++++r+   c                      t          g dg dgg d          } t          ddgdd          }t          j        t          d	
          5  t	          | |d           d d d            d S # 1 swxY w Y   d S )N)r-   r-   r-   r-   )r   r   r   r   )rY   rZ   rZ   r  r   r-   r^   r   r   r  r   rY   r   r  rq  s     r)   Itest_merge_duplicate_columns_with_suffix_causing_another_duplicate_raisesr  
  s     lllLLL1;Q;Q;QRRRDQF++,,E	z)S	T	T	T # #dEc""""# # # # # # # # # # # # # # # # # #s   	A))A-0A-c                  "   t          ddgddggt          ddg                    } t          dd	gd
dggddg          }t          || ddd          }t          g dg dgt          g d                    }t          j        ||           d S )Nr-   r   r^   r_   rY        \@r   r#  rr   rp  r@  rF   r   r   Tr   )r#  rr   r-   r   )rp  r@  r^   r_   )rF   r   rY   r  r   r   r   r   r   r  s       r)   %test_merge_string_float_column_resultr  
  s    
aVaV$eS%L.A.A
B
B
BC
aWr2h'#s
<
<
<C3TtLLLF	'7M7M7M1N1N  H &(+++++r+   c                      t          dgdgdg          } t          dgdgdg          }t          j        t          d          5  t	          | |dgd	           d d d            d S # 1 swxY w Y   d S )
Nr|  ri     )r  r   r   i  zCan only pass argumentr   T)r   r   r  )df_1df_2s     r)   /test_mergeerror_on_left_index_mismatched_dtypesr  
  s    3%#rd;;;D3%#se<<<D	z)A	B	B	B 5 5dDcUt44445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   A((A,/A,c                  :   t          t          d                    } t          | t          d          d          }t          dt          dd          i          }t          ||| d          }t          ||| j        d          }t          j        ||           d S )Nr^   r  ri  r   rz  r   )r   r   r   r   _datar   r   )cir   r   resr   s        r)   #test_merge_on_left_categoricalindexr  
  s    	%((	#	#BBU1XX..//Ec5A;;'((D
eR#
6
6
6CT5"(SAAAH#x(((((r+   r0   r1   c                    t          ddgddgd|           }t          t          j        t          j        gddgd|           }t          ||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|           }t	          j        ||           t          ||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|           }t	          j        ||           d S )Nr-   r   )r|   r[   r/   r^   r_   )r|   r  r|   r   r   )r|   r[   r  )r|   r  r[   rB  )r0   r   r   r   r   s        r)   test_merge_outer_with_NaNr  
  sQ    aVaV44EBBBDrvrv.A??uMMME45g666Fq"&"&)2626*VRVQ*	
 	

   H &(+++ 5$5g666Fq"&"&)VRVQ*2626*	
 	

   H &(+++++r+   c                     t          ddgit          dgd                    } t          ddgit          dgd                    }t          | |dd          }t          dgdd          }t          j        ||           d S )	NrY   r-   rw   r   r   rx   r   )r  r  r  r  s       r)    test_merge_different_index_namesr  
  s    cA3ZuaSs';';';<<<DsQCjqc(<(<(<===E4c:::F!Q//00H&(+++++r+   c                     t          g ddd|           }t          g ddd|           }|                    ||          }t          g dddd|           }t          j        ||           d S )	Nr   r-   r   r/   r   r  r   r  r   r  r  r   r   r   r   s         r)   test_merge_ear  
  s    9991--5IJJJDIIIA..6JKKKEZZ9Z--Fyyyqq99AUVVVH&(+++++r+   c           	         t          g ddd|           }t          g ddd|                                           }|                    ||          }t          t          g d|           t          g d|           t          g d	|                                           d
          }t	          j        ||           d S )Nr   r-   r   r/   r   r  r   r:  r;  r  )r   lowerr   r   r   r   r  s         r)   test_merge_ea_and_non_ear  
  s    9991--5IJJJDIIIA..6J6P6P6R6RSSSEZZ9Z--F			)=>>>			)=>>>			)=)C)C)E)EFFF	
 	
 H &(+++++r+   r.   int64[pyarrow]c                 z   t          j        d           t          dddgi|           }t          dddgid          }|                    |          }|                                }t          j        ||           |                    |          }|                                }t          j        ||           d S )NpyarrowrY   r-   r   r/   r  )r   importorskipr   r   r   r   r   )r0   rp   rd   r   r   s        r)   !test_merge_arrow_and_numpy_dtypesr    s     	"""	C!Q=	.	.	.B
S1a&M)9
:
:
:CXXc]]FwwyyH&(+++YYr]]FxxzzH&(+++++r+   r   )r   r   r   r   r6   zAmerica/Chicagoc                 Z   t          j        ddd|           t          j        ddd|           t          j        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                             d          }n?|dk    r|j        ddg         }n)|dk    r#|j        ddg                             d          }|	                    |d|          }t          j        ||           d S )Ni  r`   r@  r5         r   re  rf  )rr  rY   rr  r  r-   )rr  rZ   r  )rr  rY   rZ   r   Tr  r   r   r   r   )r7   r8   r   r   as_unitr   r>   ilocr\  r   r   r   )r6   r   valsrc   rd   r   r   s          r)   (test_merge_datetime_different_resolutionr    s   
 	T1bR(((
T1bR(((
T1bR(((D
 $rr(#s44
5
5C3x{""4((CH
$qrr(#s44
5
5C3x{""3''CHt3RV*<BFCQTCUVVWWHSM$,,T22HSM
g~~=!%11t1<<	=!Q(	=!Q(44$4??YYssY,,F&(+++++r+   c                      t          dddgi          } t          ddgit          j        ddgdg          	          }t          ddgdt          j        gd
          }|                     |dgdd          }t          j        ||           d S )Ncolrz  r{  rZ   r;  )rz  )ri  rN  )r  r   )r  rZ   Tr   r   )r   r   r\  r   r>   r   r   r   )rp   rd   r   r   s       r)   "test_merge_multiindex_single_levelr  5  s    	EC:&	'	'B
C5\$ff%5eWEEE  C #s3-@@AAHXXcE7&XIIF&(+++++r+   )r   r   r   r   r   on_indexleft_uniqueleft_monotonicright_uniqueright_monotonicc                 J   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          }|r0|                    d          }|                    d          }ddd}	nddi}	t          ||f| |d	|	}
|r(|                                }|                                }| d
v r| dv r|||}}}n|||}}}| dk    r[t          |d         j                                      |d         j                  }|d                             |          }||         }|r|	                    d          }|s|d         
                                }|                    |d         j        d          }|                    t          j                  }|d                             |j                  }|                                }n| dk    r|d         
                                }|d         
                                }|                    |d          }|                    t          j                  }|j        j                            |j                  }t          d|i          }|	                    d          }|r|                    d          }n|                    d          }t'          j        |
|           d S )Nr   r^   r_   r-   r|   Tr   r   r^  )r   r   r   )r   r   r   )
fill_valuer   r  )appendr   r   r   r\  setrK  intersectionisinrv  r   rP  r   r   intpr  r  mulr   r   r   )r   r   r  r  r  r  r  r   r   	on_kwargsr   r   otherother_uniquekeep_values	keep_maskother_value_countsrepeatsleft_countsright_countsexpected_countss                        r)   test_merge_combinationsr	  B  sL    q6D 0.AAQ////.AAQ///FE 2/0QQq1111/0QQq111eT]##Duen%%E "~~e$$&&#'==		5M	4@Cd@@i@@F $!!!!##
(((###,0%\eHH,14\eH'>>d5k011>>uU|?RSSK ,,[99I	*H 	3++E22H 	+!&u!:!:!<!<(00%1GTU0VVGnnRW--G--gn==H((**H	5k..00U|0022%//,1/EE)0099"(/667MNNeX.//''.. 3%%e,,''T'22&(+++++r+   c                  V   t          dt          j        gt          j                              } t          dg          }t          dgd          }t          j        t          d          5  |                     |          }d d d            n# 1 swxY w Y   t          j	        ||           t          j        t          d          5  |                    |           }d d d            n# 1 swxY w Y   t          j	        ||
                    d	                     t          dg          }t          d
gdgd          }|                     |          }t          j	        ||           |                    |           }t          j	        ||
                    d	                     d S )Nre  r/   r`  r   r1   r   zYou are mergingr   r+  r-   )r   r   r>   r7   
Int64Dtyper   rv  r  r   r   r   r  s       r)   !test_merge_ea_int_and_float_numpyr    s   
S"&M
9
9
9C
SE

C!G444H		#K7H	I	I	I    3                             &(+++		#K7H	I	I	I    3                             &(//)"<"<===
SE

C!qc999HYYs^^F&(+++YYs^^F&(//)"<"<=====s$   ,BBB	C++C/2C/c                 Z   t          j        d           t          dddgi|           }t          ddit          ddg|                     }|                    |ddd	
          }t          t          ddg|           dt          j        gd          }t          j	        ||           d S )Nr  rY   rZ   r/   r-   rw   r   Tr   r   r   )
r   r  r   r   r   r   r   r>   r   r   )r  r   r   r   r   s        r)   test_merge_arrow_string_indexr    s    
	"""cC:&.>???DsAheS#J>N&O&O&OPPPEZZs&ZIIFc3Z'788826{KK H &(+++++r+   r  right_emptyc                    t          ddgddg          }t          ddgg d          }| r|j        d d         }|r|j        d d         }t          ||dgd          }t          ddgg d	          }| r|r|j        d d         }n%| rt          j        |d<   n|rt          j        |d
dg<   t          j        ||           d S )Nr-   r   rz  r{  r  )rz  ri  r  r   r   )rz  r{  ri  r  ri  r  )r   r  r   r   r>   r   r   )r  r  rc   rd   r   r   s         r)   $test_merge_empty_frames_column_orderr    s    AaS3*
5
5
5C
AaS///
:
:
:C hrrl hrrl37333F1#/C/C/CDDDH &k &=!$	 &	 &!v#s&(+++++r+   c                 ~   t          dt          dd gd          i          }t          dt          dgd          i          }d|d         j         d|d         j         d}t          j        t
          t          j        |          	          5  |                    |d| 
           d d d            n# 1 swxY w Y   d|d         j         d|d         j         d}t          j        t
          t          j        |          	          5  |                    |d| 
           d d d            d S # 1 swxY w Y   d S )Nr|   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   r0   r   r   r   r  r  r   )r   r   r   r   s       r)   !test_merge_datetime_and_timedeltar    s   eVQI5EFFFGHHDufaS0ABBBCDDE	Qd5k&7 	Q 	QeEl>P 	Q 	Q 	Q  
z3	8	8	8 - -

5U
,,,- - - - - - - - - - - - - - -	QeEl&8 	Q 	QtE{?P 	Q 	Q 	Q  
z3	8	8	8 - -DU,,,- - - - - - - - - - - - - - - - - -s$   B55B9<B9D22D69D6)r   r   )`r   r   r   r  numpyr   r   pandas.compatr   pandas.core.dtypes.commonr   r   pandas.core.dtypes.dtypesr	   pandasr7   r
   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.core.reshape.concatr   pandas.core.reshape.merger   r   r*   r:   r@   rW  rP   rT   rW   re   rg   r  ra  r   r   r  rK  rL  r>  rX  rY  r[  rL  rR  rT  rc  r>   rl  rp  rt  TWO_GOT_THREEtuplerw  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  r9   r+   r)   <module>r     s           
 
			                   7 6 6 6 6 6                                    - - - - - -          	 	 	   zz||)?)?@@@  A@ zz||)?)?@@@  A@ }},B,BCCC  DC 	 	 	P P P P P P P Pf*	G 	G 	Gl0 l0 l0 l0 l0 l0 l0 l0^      S0 S0 S0 S0 S0 S0 S0 S0l : : : > > >40 40 40 40 40 40 40 40n VVR=UVVV#sc
MMM
555|\2EEE 	32  	 		, 	,	 		, 3
7	T4s;+	!4c:	tgw'uc:
7	T4t<,	!4d;	tgw'ud;	 % % %P+ + +$ '	
A
L)C>:	
A
N+a\:	
A
L)E5>:	
A
T4L)E5>:	a*l+c1X6	cJ-~>	cJ-U|<	cJ-s|<	cJ-Sz:	cJ-U|<	
A
L)E1:6	c2u~&	
ArE5>" $, ,% $,  I%oob"bf-=___UU 	
 I+++r2rv.63S1  		
 *, ,+ *, JJJ J J	 J vw&7!a9P9P%QRRJ J SRJ $,

  GmGGG		
 
c55::ST J J J uen55T5M22 ,  , 32 65 ,F, , ,,, , ,? ? ?<, , ," !S22, , 32,*5, 5, 5,p '<!899	-	-	</HI$	/	/*m1LM 1 1  :91 '<!899
S	J67
c	Y56 1 1  :91 '<!899		t 	9 	9  :9	9, , ,"	, 	, 	,	: 	: 	:, , ,# # #, , ,5 5 5	) 	) 	) 4/22, , 32,8, , ,, , ,, , , 7,<"=>>, , ?>,  C C CDD&7899, , :9 ED,2
, 
, 
,  C C CDD$//dE]33u66)D%=99$77*T5M::?, ?, ;: 87 :9 76 43 0/ ED?,D> > >.	, 	, 	, e}55u66, , 76 65,*  C C CDD- - ED- - -r+   