
    dz                       d dl mZm Z mZ d dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ 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- .          d/             Z7ej4        5                    d0d1d2gddd3d3d%fd4dd1d2gdd3d5d%fddd1d2gd5d3d%fd1d2gddd3d3dfd6dd1d2gdd3d5dfddd1d2gd5d3dfg          d7             Z8d8 Z9ej4        5                    d9d d d:d;id<d=gfd d d:d>id d=gfd d d:d?id@dAgfd d d:dBdCgid@dAgfdDd d:dEidDd gfdFdFd:dGidHdFgfdIdId:dEidIdJgfdDdDd:dGidKdDgfdDdId:dGidDdIgfdDdDd:dLidDdKgfd d d:dMidNd gfdDdDi dKdOgfd d i d@dAgfg          dP             Z:ej4        5                    dQdR eg dSdTdUej;        gg dVdW          fd1 eg dXdTdUdYej;        gdZd[ej;        d\gdW          fg          d]             Z<ej4        5                    d^g d_          d`             Z=ej4        5                    d:dadRhd d dbg          dc             Z>ej4        5                    dddedDdD e?dD          dffg          dg             Z@ej4        5                    dhdidjg          ej4        5                    dkd5d3g          dl                         ZAdm ZBdn ZCdo ZDdp ZEej4        5                    dqdrdsg          dt             ZFdu ZGej4        5                    dvdwdxg          ej4        5                    dydDd5dzd{d|gfdDd5d}d~dgfg          d                         ZHej4        5                    dvdwdxg          ej4        5                    dyd{dDid~dgfd~dDid{d|gfg          d                         ZIej4        5                    dvdwdxg          ej4        5                    ddd5id|d5ig          d                         ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRej4        5                    dddg          d             ZSd ZTd ZUd ZVej4        5                    dddg          d             ZWej4        5                    dg d          ej4        5                    dddg          d                         ZXdS )    )datedatetime	timedeltaN)is_categorical_dtypeis_object_dtype)CategoricalDtype)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndexIntervalIndex
MultiIndexPeriodIndex
RangeIndexSeriesTimedeltaIndex)concat)
MergeErrormerge   2   c           	      n   t          t          |                     }t          j        t          j        ||| z                      }t          |          |k     r<t          j        t          |          |d |t          |          z
           z             }t          j                            |           |S N)listrangenpasarraytilelenrandomshuffle)ngroupsnunique_groupsarrs       a/var/www/html/t/fyr/venv311/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c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_seriesr8   3   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 )Nr/   r-   floatobject)r   r   nanr5   NaTr7   r)   r'   get_series_nar>   ?   sW    xw'''xw'''xx(((x	 r)   c                     | j         j        S r   r.   namexs    r'   <lambda>rD   H   
    17< r)   )paramsidsc                     | j         S )zV
    A parametrized fixture returning a variety of Series of different
    dtypes
    paramrequests    r'   series_of_dtyperM   H        =r)   c                     | j         j        S r   r@   rB   s    r'   rD   rD   Q   rE   r)   c                     | j         S )zk
    A duplicate of the series_of_dtype fixture, so that it can be used
    twice by a single function
    rI   rK   s    r'   series_of_dtype2rQ   Q   rN   r)   c                     | j         j        S r   r@   rB   s    r'   rD   rD   Z   s
    agl r)   c                     | j         S )zU
    A parametrized fixture returning a variety of Series with all NA
    values
    rI   rK   s    r'   series_of_dtype_all_narT   Z   rN   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+      ab)col1col_conflictcol_left)r+   rV            )rV   rV   rV   rV   rV   )rY   rZ   	col_rightr   )df1df2s     r'   dfs_for_indicatorrc   c   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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$d. Z%d/ Z&d0 Z'd1 Z(d2 Z)ej                            d3g d4          d5             Z*ej                            d3g d4          d6             Z+d7 Z,d8 Z-d9 Z.d: Z/d; Z0d< Z1d= Z2d> Z3d? Z4d@ Z5dA Z6dB Z7dC Z8dD Z9dE Z:ej                            d*d,dFg          ej                            dG e;g dH           e;g dI          f e<g dJ           e<dKdLdMe=j>        e=j>        e=j>        g          fgdN e?j@        D              eAjB        g dO           eAjB        dPdQdReCjD        eCjD        eCjD        g          f eEg dSdTU           eEdKdVdWe=j>        e=j>        e=j>        gdTU          f eFg dX           eFdYdZd[e=j>        e=j>        e=j>        g          f          d\                         ZGd] ZHej                            d*d+d,g          d^             ZId_ ZJd` ZKdaS )b	TestMergec                     t          t                      t                      t          j                            d          t          j                            d          d          }||d         dk             }|S )Nr   )key1key2data1data2rh   r+   r   r(   r   r!   randn)selfdfs     r'   rn   zTestMerge.dfq   sd    %%,,,,	 
 
 6
Q	r)   c                     t          t          d          t          dd          t          j                            d          d          S )N
   )r$   r]   )r#   r$   )rg   rh   valuerk   rm   s    r'   rb   zTestMerge.df2   sM    %+++%a2666,, 
 
 	
r)   c                 d    t          g dt          j                            d          d          S )NrW   rX   cderw   rW      keyv1r   r   r!   rl   rr   s    r'   leftzTestMerge.left   s3    777ryq?Q?QRR
 
 	
r)   c                 f    t          dt          j                            d          ig d          S )Nv2r]   rv   rX   ru   rW   indexr|   rr   s    r'   rightzTestMerge.right   s/    $	 2 23;O;O;OPPPPr)   c                     t                      }t          dddgiddgd          }t          ||dd          }t          dg id	          }t          j        ||           d S )
NrW   r+   rV   r   r,   )r   r.   T
left_indexright_indexr-   r   r   tmassert_frame_equal)rm   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 )Nrg   rh   onr   r   r   )rm   rn   rb   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   rV   r   )r+   r   r   r\   r   r+   rV   r\   )r   astyper:   r   r   r   rm   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 )Nrg   r   )	set_indexr   r   r   )rm   rn   rb   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                    t          g dt          j                            d          d          }t          dt          j                            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 )Nrt   rx   ry   r   r]   r   r   rz   Tr}   F)left_onr   howsortr   )right_onr   r   r   )	r   r   r!   rl   r   r   r   loccolumns)rm   r}   r   merged1merged2s        r'   (test_merge_index_singlekey_right_vs_leftz2TestMerge.test_merge_index_singlekey_right_vs_left   s:   777ryq?Q?QRR
 
 4!3!34<P<P<PQQQ%Df5
 
 
 4%DgE
 
 
 	gw{111go3E'FGGG%Df4
 
 
 4%DgD
 
 
 	gw{111go3E'FGGGGGr)   c                 4   t          g dt          j                            d          d          }t          dt          j                            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 )Nrt   rx   ry   r   r]   r   r   rz   Tinnerr   r   r   r   )r   r   r   )r   r   r!   rl   r   joinr   r   r   r   r   rm   r}   r   r   r   s        r'    test_merge_index_singlekey_innerz*TestMerge.test_merge_index_singlekey_inner   s   777ryq?Q?QRR
 
 4!3!34<P<P<PQQQ 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 bothrz   )r   r   z)len\(right_on\) must equal len\(left_on\)rg   rh   r   r   )pytestraisesr5   errorsr   r   
ValueError)rm   rn   rb   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}   Frg   rh   r   r   r   z=left_index parameter must be of type bool, not <class 'list'>r   r   r   r   )rm   rn   rb   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 )Nrz   r   rV   v1_xv1_y)r   value_countssumr    )rm   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)r0   barbazr0   r+   rV   r\   r]   )lkeyrq   )r0   r   quxr0   )r^      rx   r   )rkeyrq   r   r   outerT)r   r   r   r   r   r   r0   rA   r   rV   r\   r+   r]   value_xr   r^   r   rx   value_y)r   r   r   r   r<   r   assert_series_equal)rm   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+   rW   rX   rp   r   r0   r   ru   rv   Tr   r   copyr   rW   peekaboorv   )r   r   r   all)rm   r}   r   r   s       r'   test_merge_copyzTestMerge.test_merge_copy%  s    qq))r;;;E22%))DDDtUtDQQQsS	Q##%%%%% sc
e#((*******r)   c                 f   t          dddt          d                    }t          dddt          d                    }t          ||d	d	d
          }t          j        |d         j        |d         j                  sJ t          j        |d         j        |d         j                  sJ d S )Nr   r+   r   rp   r   r0   r   r   TFr   rW   rv   )r   r   r   r   shares_memory_values)rm   using_array_managerr}   r   r   s        r'   test_merge_nocopyzTestMerge.test_merge_nocopy1  s    qq))r;;;E22%))DDDtUtERRRs 3T#Y5FGGGGGs 3U3Z5GHHHHHHHr)   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+   rV   rV   r\   r^   rz   rq   rq   rz   r   r+   r+   rV   r\   r]   r^   r   )rz   rvaluer   r   r   	r+   r+   r+   r+   rV   rV   r\   r]   r^   r   r+   rV   r\   r]   )	r   r+   r   r+   rV   rV   r\   r]   r^   )rz   rq   r   )rq   rz   r   )	r   r   r   r   r   arrayr<   r   r   )rm   r}   r   r   r   s        r'   "test_intelligently_handle_join_keyz,TestMerge.test_intelligently_handle_join_key:  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                 8   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        k    sJ d S )Nr+   rp   ry   rV      r   r   rz   r,   TFr   boolvalr   r   r   key_0)r   r   r.   r   r   int_)rm   ra   rb   rn   r   r   s         r'   test_merge_join_key_dtype_castz(TestMerge.test_merge_join_key_dtype_castM  s<    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'{ BG++++++r)   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          j
        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   rq   rz   r,   r   r.   r   r   r-   r   r   r   r   r   r   r@   r\   )r   r+   r+   rV   rV   r\   T)r   r   r   r   )r   r   aranger   r   r   r   notnar   r   r   r,   )	rm   r}   r   rz   r   r   r   r   r   s	            r'   test_handle_join_key_pass_arrayz)TestMerge.test_handle_join_key_pass_arrayd  sR   #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5RW7SSS
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 )NrC   rW   r   yrX   ru   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   )rm   dtra   rb   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+   rV   r\   r]   rC   rW   r   r   rX   ru   )rW   rX   q)ru   rv   rw   fghrv   r   r   _check_merge)rm   r   dt2dt3dt4ra   rb   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+   rV   r\   rC   rW   rX   ru   rv   r   r   )rw   r   r  z hir  )rm   r   r  r  ra   rb   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+   rV   r   rz   r}   r   r   r   )rm   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)   kwargTr   rC   r   r   rW   r   r   r   c                     t          g d          }t          g d          }t          g dt                    }t          ||fd|i|}t          j        ||           d S )NrW   rX   ru   r   rC   r   zrW   rX   ru   rC   r   r  r   r   )r   r;   r   r   r   )rm   	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+   rV   r\   r]   r^   r   rx   r   	   r  r\   r-   r+   r]   rx   rV   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   rC   r  rW   r  r   r+   rV   r   )r   r   r   r<   r;   )rm   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   rC   r  rW   r  r   r   )	r   r  r   r$  r&  r  r)  r}   r   s	      r'   r&  z>TestMerge.test_merge_left_notempty_right_empty.<locals>.check2  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   )rm   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   rz   rq   r   r   r-   )r   rz   r   r   )r   r   dtypesr   r   r   )rm   rM   rQ   rn   r   r   actuals          r'   test_merge_empty_framez TestMerge.test_merge_empty_frame(  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   rz   rq   r   rz   r   r   r   r   )rm   rM   rT   df_leftdf_rightr   r1  s          r'   test_merge_all_na_columnz"TestMerge.test_merge_all_na_column:  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          t           j                            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          }t          ||dd          }t          j        ||           |j                                        |j                                        k                                    sJ d S )Nr   rp   sizer   r+      i  rV   r]   i  r\   i  r^   )var1var2var3rx   )r>  var8r>  Fr   r   )r   r!   randintr   r   	from_dictr>  uniquer   r   r   r   r   )rm   rv   rn   r>  newr   r   s          r'   test_merge_nosortzTestMerge.test_merge_nosortO  s    I%%a"%55I%%a"%55q"%%q!$$q!$$q"%%q!$$q!$$q!$$q!$$q!$$q!$$
 
   ##w~~wt}}!49I9I!9L9L"M"MNN#&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}   r   c                     t          dg di          }|                    |d||          }t          |dg          }t          j        ||           d S )NrW   )r+   r   r+   )r   r   r   r   r   )rm   r   rF  r   rn   r   r   s          r'    test_merge_same_order_left_rightz*TestMerge.test_merge_same_order_left_rightm  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
                              d                                           g d         }t          j        ||d           d S )Nr   r+   i1i2rK  i3rK  _)r   rsuffix        r   r+   )rK  rL  i1_rN  NrK  rL  rS  rN  F)check_dtype)r   r   r   r<   r   reset_indexr   r   rm   ra   rb   r   r   s        r'   test_merge_nan_rightzTestMerge.test_merge_nan_righty  s    1vaV4455s1#..//#$44!a..A,, RV,,!bf--A,,   Yt__[]]444
6 	 	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      ?      ?rJ  gffffff?rM  rO  rK  )rP  r   rR  rQ  )rK  rS  rL  rN  rT  )r   r   r   r<   r   r   rW  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)   c                      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 r   r7   )rm   NotADataFrames    r'   _constructorz=TestMerge.test_merge_type.<locals>.NotADataFrame._constructor  s	    $$r)   N)__name__
__module____qualname__propertyra  )r`  s   r'   r`  r^    s8        % % % % X% % %r)   r`  rg   r   )r   r   
isinstance)rm   rn   rb   nadr   r`  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          	          }t          ||gd
          }t          ||gd
          }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  )rv   tr   r   T)ignore_index)
r   rB  r   r   r   r   r   r;   r   r   )rm   r   rv   rn   r   r   s         r'   test_join_append_timedeltasz%TestMerge.test_join_append_timedeltas  s    D"aB//0	!U8K8K7LMM
 
 tDzz***RG$///Qd333tRAr22HT2q!R4P4PQ5))9Q+>+>? 
 
  	/v..H
fh/////r)   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}   )rP  r   AB)00r)
r   timedelta64r   r   r   r   r5   r=   r   r   )rm   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   rA   zdatetime64[]r|  r  r}  zdatetime64[s]Tr  natr-   r  r  r   )r   r   r   to_framer.   r   r   r   r5   corearraysDatetimeArray_simple_newr   r   )
rm   r{  ra   serr.   	exp_dtyperb   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  r.   r   r   r   r   r   )	rm   r{  ra   r  r.   r   rb   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  rz   r{   r   )rz   r0   r0   )rz   r   r   )rz   r{   r   v3v4)rz   r0   r0   r   r   )rg   r0   r0   z;Data columns not unique: Index\(\['foo'\], dtype='object'\)r   )r   r   r   r   r   r   r   r   )rm   rn   rb   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 -,,L]: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20151010rV   r2   periodsr4   r+   r   20151011r\   r  r]   r4  rz   r   r   )r   r5   
date_ranger   r<   r   r   r   r   s        r'   test_merge_on_datetime64tzz$TestMerge.test_merge_on_datetime64tz  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+   rV   r  r2   r  r   r\   r  r  r4  rz   r   r   r   zdatetime64[ns, US/Eastern]r   )	r   r5   r  r   r=   r   r   r   r.   r   s        r'   test_merge_datetime64tz_valuesz(TestMerge.test_merge_datetime64tz_values3  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          j        d|j                  gdgt          j        d|j                  gdg d          }|d d         }|                    |d	
          }t          t          t                    t          |          t          |          t          t                    t          |          dg d          }t          j	        ||           d S )NUTCr3   2018g      @2019)r   rq   date2r   r   r   r   r-   )r   date2_xr   r   date2_y)
r5   DatetimeTZDtyper   r6   r4   r   r   r:   r   r   )rm   dtzr   r}   r   r   s         r'    test_merge_on_datetime64tz_emptyz*TestMerge.test_merge_on_datetime64tz_emptyN  s     E***f8889,v#&999: 
 /..
 
 
 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]   HzEurope/Madrid)r  freqr4   r   r   r+   rq   )z2017-10-29 03:00:00z2017-10-29 04:00:00z2017-10-29 05:00:00rV   )r   rq   r  r   r   r   rx   r\   )r   r   r   )r   r5   r  to_datetimer   tz_localize
tz_convertr   r   r<   r   r   rW  s        r'   +test_merge_datetime64tz_with_dst_transitionz5TestMerge.test_merge_datetime64tz_with_dst_transitiong  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-   rV   r+   pnum_xpnum_yr   r   )r5   period_ranger   r   r   r    r   r   r   r   r   r,   repeatreshape
sort_indexr   r   r   )rm   r   rn   rb   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  rV   r|  r  r+   r   r  r\   r  r]   r4  rz   r   r   )r   r5   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+   rV   r  r|  r  r   r\   r  r  r4  rz   r   r   r   z	Period[D]r   )	r   r5   r  r   r=   r   r   r   r.   )rm   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+   rV   r\   r]   r^   r+   rV   rW   rX   r\   r]   r^   )rY   col_conflict_xr[   col_conflict_yr_   )	left_onlyboth
right_onlyr  r  r  r  r  r  
categories_merge)rY   r  r[   r  r_   r  rY   r   Tr   r   	indicatorcustom_namer   )	r   r   r   r<   r	   r   r   r   rename)
rm   rc   ra   rb   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   rY   r   r^   r  r   )rm   rc   ra   rb   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 )
NrY   r}   Tr  r  r   r  r   r  )r   r  r   )rm   rc   ra   rb   test2test3test4s          r'   %test_merge_indicator_result_integrityz/TestMerge.test_merge_indicator_result_integrity  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  rY   r+   rV   zECannot use `indicator=True` option when data contains a column named z;|Cannot use name of an existing column for indicator columnr   r   Tr  )rY   custom_column_namez:Cannot use name of an existing column for indicator columnr  r   r   r   r   r   )rm   rc   ra   rO  r  df_badcolumnr   s          r'   test_merge_indicator_invalidz&TestMerge.test_merge_indicator_invalid  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+   rW   rX   )rY   col2)r+   r+   r\   )rX   rC   r   )r   r+   r+   r\   rW   rX   rC   r   )r  r  r  r  r  r  r  rY   r  r   Tr  r   r	   r   r   r   )rm   df3df4hand_coded_resulttest5s        r'   %test_merge_indicator_multiple_columnsz/TestMerge.test_merge_indicator_multiple_columns=  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   rW   rX   ru   rv   rw   )meowbarkum... weasel noise?naychirprW   ru   r^   Tz1:1)r   r   validate)r  r  r   r  )a_xrX   a_yru   r  
one_to_oner  rW   )r   r  rX   rW   ru   r  )r   r   r  rw   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)rW   rW   rX   rX   )r   r+   r   r+   rW   rW   rX   )r   r+   r   )r  r  r   )rW   rX   rv   )r  r  r  zQMerge keys are not unique in either left or right dataset; not a one-to-one mergerX   )r   r   r   r   r   r   r   r   r   r   r   r   )rm   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_validationP  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   )rm   rW   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+   rV   r]   )r+   rV   r]   NNN)
2001-01-01
2002-02-02
2003-03-03r  r  r   c                 n    g | ]2}t          g d |          t          g dt          j                  f3S )r  r-   )r+   rV   r\   NNN)r   r   float64.0dtyps     r'   
<listcomp>zTestMerge.<listcomp>)  sY       
  )))4000555RZHHH  r)   )r+   rV   rV   r\   r\   r]   r'  r(  r)  )r  
2001-01-02
2001-01-03r|  )r  r*  r+  )1d2d3dr,  r-  r.  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(  rW   rz   r   rX   r  rz   Tr   )r   r   r   r+   r+   r+   rV   rV   rV   r\   r]   r^   rW   rz   rX   r   )inplace)r   r   r   r<   r   r   r   )rm   r   r   expected_indexra   rb   r   r   s           r'   $test_merge_on_index_with_more_valuesz.TestMerge.test_merge_on_index_with_more_values  s    X 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+   r0  rX   r+   rV   r\   N)r   r+   r+   rV   )r+   rV   rV   r\   r3  r   r+   rV   r  rz   Tr   r   r   r   r<   r   r   r   r   s        r'   test_merge_right_index_rightz&TestMerge.test_merge_right_index_rightX  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(   rj  )animal	max_speedquetzalP   r>  r?  r   r   r   )rm   r   left_dfright_dfr   r   s         r'   test_merge_preserves_row_orderz(TestMerge.test_merge_preserves_row_orderg  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  r0  rX   r  r   rz   Tr   r   r8  )rW   rW   rX   ru   )r+   r+   rV   r\   r3  r   r+   rV   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_dtypes  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   )rm   ri   rj   r&   s       r'   test_merge_readonlyzTestMerge.test_merge_readonly  s    IbMM!!&))A-7P7P7P
 
 
 IbMM!!&))A-7K7K7K
 
 

 :$ 	( 	(C"'CIEr)   N)Lrb  rc  rd  r   fixturern   rb   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.  r2  r7  rE  rH  rX  r[  rh  rn  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
   r   r5   r=   r   ALL_REAL_NUMPY_DTYPESr   from_tuplesr   r<   r   r   r6  r:  rD  rH  rM  r7   r)   r'   re   re   p   s       ^  ^ ^
 
 ^
 ^
 
 ^

 ^Q Q ^Q0 0 0+ + +

0 
0 
00 0 0H H H,G G GH H H&  8     7 7 7(
+ 
+ 
+I I I0 0 0&, , ,.K K K@    *  , , , [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	1 	1 	10 0 0*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HHII!<rvrvrvV #	
 
 4  #	
& *)*B*B*BCC))VVRVRVRVD %#	
2 FFFSQQQ!<rvrvrvV  1#	
@ 11122dD"&"&"&IJJ?#	
& &N0 0O& & 87P0*0 0 0 [UVW$566	0 	0 76	00 0 0*    r)   re   c                    dD ]|}|                      ||          }t          |                                 |                                |d          }|                    d          }t	          j        ||d           }d S )N)r   r}   r   r   T)r   r   r   F)check_names)r   r   rV  r   r   r   )rC   r   r   r   r   s        r'   r  r    s    ) C Cs##!--//sNNN%%g.. 	fhEBBBBBC C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_valsr0   r   categoryc                 B   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J d S )Nr0   r   rX  r+   rV         ?       @uint64r-   int32)rp  rq  Cr|  EFrp  r   )r   r   r   r   r   rp  r.   )rm   rW  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~.......r)   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-   r0   r   r;     )k1k2v)rV   r   )r+   r0   r   r^   rx   r   rf  rg  r   r  r"  rV   r+   Tr@  	mergesort)kindr4  )r   r.   r   r   r   r,   r   rR  r   r   rj  r<   r   rf  rg  r   r   sort_values)
rm   rb  rc  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  )rZ  r[        @XYrZ  ro  r+   r\   rV   r[  c                 ,   t          d|i          }t          d|i          }t          |          }|                    |dd          }t          j        ||           |                    |dd          }t          j        ||ddg                    d S )Nrq  rr  r   r   )rm   int_vals
float_valsexp_valsrp  rq  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 )NrZ  r[  rp   r   ry   rz   r{   r   rV      )rz   r   r   r}   r   g      i@r  )r   r   r   r<   r   r   rW  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 )	Nrq  r  rr  )皙?g      @ro  r\   ro  rp  r   )r   r   assert_produces_warningUserWarningr   r   r   r<   )rm   rp  rq  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 Nrz   TFr-   r   )r   r   r;   r   r   r   rm   ra   rb   r   r   s        r'   (test_merge_incompat_infer_boolean_objectz8TestMergeDtypes.test_merge_incompat_infer_boolean_object  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_missing!  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(  )rW   rX   rW   )rQ  rZ  r[  r   FTr-   c                    t          d|i          }t          d|i          }t          ||dg          }t          |j        j                  sJ t          ||dg          }t          |j        j                  sJ d S )Nrp  r   )r   r   r   rp  r.   )rm   df1_valsdf2_valsra   rb   r   s         r'   !test_merge_incompat_dtypes_are_okz1TestMergeDtypes.test_merge_incompat_dtypes_are_ok-  s      h((h((sCSE***vx~.....sCSE***vx~.......r)   r\  r  r]  )rt  12z1/1/2011r|  r  z
2011-01-01z
2011-01-02rQ  20130101)r  r2   r  c                 0   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            d S # 1 swxY w Y   d S )Nrp  zYou are trying to merge on z and z9 columns. If you wish to proceed you should use pd.concatr   r   )r   r.   reescaper   r   r   r   )rm   r  r  ra   rb   r   s         r'    test_merge_incompat_dtypes_errorz0TestMergeDtypes.test_merge_incompat_dtypes_errorE  s   4 h((h(('#c(. ' '3x~' ' ' 	
 inn]:S111 	& 	&#su%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&
'#c(. ' '3x~' ' ' 	
 inn]:S111 	& 	&#su%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s$   1BBB*DDD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   rV   r   r   r   r.   r   r   r   r    r   r   )	rm   any_numeric_ea_dtyper   expected_datarb  rc  r   	exp_indexr   s	            r'   test_merge_EA_dtypez#TestMergeDtypes.test_merge_EA_dtypeu  s     vv5IJJJvv5IJJJr23'''s=1122	TFBV
 
 
 	fh/////r)   rW   rX   c                    t          dgdg|          }t          dgdg|          }t          |||          }t          t          |                    }t          ||dg|          }t	          j        ||           d S )N)rW   r  r   )rX   r   r  r  )	rm   r   r  any_string_dtyperb  rc  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^   rp  rq  r\   r]   rp  r^  r   rp  rq  r^  r   r   )rm   r   r  ra   rb   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)datar.   r  r  r  r  r  r  911)r  r  zlvl1-cr  )r}   r   r   r   O)r  r  r  r   )r   r5   StringDtyper   NAr   r   r   r   r   r.   r   rR  r   r0  )	rm   r  string_dtypera   r  rb   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                 D   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          }nf|dk    r!t          t          j        gdgdgd          }n?|dk    r t          g dd          }|r
|g d         }n|dk    rt          g dd          }t          j        ||           d S )NrV   r+   r\   r]   r  r^   r  r,   r-   r   r   r}   r  r   )rq  rp  r^  r  r   r  )A_xrq  A_yr^  )r   headr   r   r<   r   r   )rm   
left_emptyr   r   r}   r   r   r   s           r'   test_merge_emptyz TestMergeDtypes.test_merge_empty  sL     1vQF33441#..g>>> 	"99Q<<DDJJqMMEEs++&== 1vQF"&"&AQ!R!RSSHHG^^ xqc!D!DEEHHG^^ HHHH 5#OOO4M!! )A)A)AQQQH
fh/////r)   N)$rb  rc  rd  r   rO  rP  r   r   ra  r   r,   r]  intcint16int8uint8r"  float32float16rn  rw  rz  r  r  r  r;   r   r  r5   r  r  r  r  r  r  r  r7   r)   r'   rV  rV    sc       [u~vvuen'='='D'DZ'P'PQ / / /& [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	

 
/ /
 
/ [ 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	
 *& &+ *&6 [VWMS'NS&M		
 	0 	0 	0 [3Z!MUGUFO		
 	0 	0 	0 [|||]]]34|||]]]34lllMMM23}}}lll34		
 0 0 08 8 8B [	
 	
 	
 0 0 0 0 0r)   rV  c                  F   t           j                            d           t          t	          t           j                            ddgd                                        t          ddg                    t           j                            g dd          d          S )N  r0   r   )rp   r9  )onetwothreerp  )r   r!   seedr   r   choicer   CDTr7   r)   r'   r}   r}     s    INN4	((%e(DDEELLUEN##  !!"9"9"9!FF		
 	
  r)   c                      t           j                            d           t          t	          ddg                              t          ddg                    ddgd          S )Nr  r0   r   r+   rV   )rq  Z)r   r!   r  r   r   r   r  r7   r)   r'   r   r     s]    INN4eU^$$++C,?,?@@1vNN  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                                        }t          t	          ddg          t          j        d          t          j        d          gg d          }t          j        ||           d S )	Nrq  r   r0   r   r  r  )rq  Y_xY_yr   	r   r0  r  r   r   r   r.   r   r   )rm   r}   r   r   r   s        r'   test_identicalz#TestMergeCategorical.test_identical  s    tTc***))++%888"(3--RUW%%%
 
 
 	vx00000r)   c                    t          ||d          }|j                                        }t          t	          ddg          t          j        d          t          j        d          gg d	          }t          j        ||           d S )
Nrq  r   r0   r   r  r  r,   rq  rr  r  r   r  rm   r}   r   r   r   r   s         r'   
test_basiczTestMergeCategorical.test_basic  s     tUs+++))++ 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 )NrW   rX   ru   rv   rw   )r   r+   rV   r\   r]   nullr   r   r  r   r}   )r   r   r   rX  )r   r   r   r   r   r   r   )rm   r   r}   rn   r   crightr   clefts           r'   test_merge_categoricalz+TestMergeCategorical.test_merge_categorical&  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)r^  rq  rp  )C1B1A1)r  Rightr  r   )r  r  r  )r  r  r  r  rW  s        r'   'tests_merge_categorical_unordered_equalz<TestMergeCategorical.tests_merge_categorical_unordered_equalQ  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  )r^  r^  r|  )r  r  r  r-   r(  )r  prW   r  r  )rp  r^  r^  )r  r  r  )rp   rj  r;  )r  r  rb  r}   Tr   g      &@g      (@)r  r  rW   rb  )	r   r   r	   r   r   r   r<   r   r   )rm   r  pcatra   rb   r   r   s          r'   5test_multiindex_merge_with_unordered_categoricalindexzJTestMergeCategorical.test_multiindex_merge_with_unordered_categoricalindexj  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                                        }t          t          ddg          t          j	        d          t          d	d
g          gg d          }t          j        ||           |j        j                            |j        j                  sJ |j        j                            |j        j                  sJ d S )NrX  )r  rq  r   r0   r   r  r  r+   rV   r  r   )assignr  r   r   r0  r  r   r   r   r.   r   r   rq  rF  #_categories_match_up_to_permutationr  s         r'   test_other_columnsz'TestMergeCategorical.test_other_columns  s    uw~~j99::tUs+++))++ 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 r   r7   rB   s    r'   rD   zTestMergeCategorical.<lambda>  s    a r)   c                 J    |                      t          g d                    S )N)r0   r   bahr   r  rB   s    r'   rD   zTestMergeCategorical.<lambda>  s!    ahhs#8#8#899:: r)   c                 H    |                      t          d                    S )NTr  r  rB   s    r'   rD   zTestMergeCategorical.<lambda>  s    ahhs400011 r)   c                     ||j                             d                    }|                    |          }t          |j         j        j                  sJ t          ||d|          }|j                                        }t          t          j        d          t          j        d          t          j        d          gg d          }t          j        ||           d S )	Nr;   )rq  rq  r   r  r,   r  r   )rq  r   r  r   rF  r.   r   r0  r  r   r   r   r   )	rm   r  r  r}   r   rq  r   r   r   s	            r'   test_dtype_on_merged_differentz3TestMergeCategorical.test_dtype_on_merged_different  s     F57>>(++,,q!!#DFM$788888 tUs	:::))++Xc]]BHSMM28G+<+<=___
 
 
 	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^   )
rW   rX   ru   rv   rw   r   r  r  r  j)rl  wrC   r   r  rV   c                 ,    g | ]}|gd z  z  D ]}|S r  r7   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 r7   r7   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 )NrX  )r   rB   s    r'   rD   zITestMergeCategorical.test_self_join_multiple_categories.<locals>.<lambda>  s     4 4 r)   r   )r   applyr   r   r   r   r   )rm   rn   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|  rV   ?r   num2r   rX  r\   ffffff?num4r  r*  r+  )r   r  r  r   r  r   )
r   r   r   r5   r6   r   r<   r   r   r   )rm   rn   rb   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)rV   r+   r+   rV   r+   rV   )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  rV   r]   r+   r  )r  num)r  r  r#  )r   r   r  r   r   r   )	rm   category_columnr  expected_categoriesr  ra   rb   r   r   s	            r'   /test_merging_with_bool_or_int_cateorical_columnzDTestMergeCategorical.test_merging_with_bool_or_int_cateorical_column  s     |||ODDEEZ&&s:w'G'G'GHHE
1vq!f55663QF3FPQSTvVVWW"5/00Z1Q1Q1QRR
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+   rV   r/   r-   r  rp  r   )rp  B_xB_y)r   r   r   r<   r   r   r   )rm   rn   r   r   s       r'   test_merge_on_int_arrayz,TestMergeCategorical.test_merge_on_int_array  s    VQ26N'BBBKKLLr2#&&&!Qw777!LL
 
 	fh/////r)   N)rb  rc  rd  r  r  r  r  r   rO  rP  r  r  r  r  r  r&  r*  r7   r)   r'   r  r    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::11	
 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 )NrW   r   rp   r   rV   r+   r   r   r`   r7   r)   r'   rB  rB    s"    c;;;'yyy9999r)   c                  0    t          dg dig d          S )NrX   ,  d   ry  r\   r+   rV   r   r`   r7   r)   r'   rC  rC  !  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   rp   ry  r1  r   rV   r+   r   Tr}   r,  r-  )r   rp   r   r(  r   r/  r2  r1  ry  r0  r  r   r   r0  r   c                 Z    t          ||dd||          }t          j        ||           d S )NT)r   r   r   r   r   )rm   rB  rC  r   r   r   r   s          r'   test_merge_on_indexesz(TestMergeOnIndexes.test_merge_on_indexes'  sB    ` X$DcPT
 
 
 	fh/////r)   N)
rb  rc  rd  r   rO  rP  r   r   r<   r7  r7   r)   r'   r4  r4  &  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)   r4  r   c                 6    g | ]}t          d dg|d          S )r+   rV   	index_colr@   )r   r#  s     r'   r&  r&  _  s+    VVVTUAq6K000VVVr)   rp  rq  r9  )r  rA   rV   )startstoprA   r1   z
2018-01-02r   c                 @    t          |           j         d| j         dS )N[r  )typerb  r.   rB   s    r'   rD   rD   e  s"    T!WW%22222 r)   )rG   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+   rV   r   
right_datarZ  r[  r9  r   )r@  rA  r   )r   r}   r   r   r   s        r'   test_merge_index_typesrB  ]  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)NNNTTrq  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 )Nrp  r   rW   rX   r   r+   r   r   namesr   rV   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   nmrW   rX   r   r   r   s              r'   test_merge_seriesrH  s  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 )Nrp  r   rW   rX   r   r+   r   r   rD  r   rV   )rq  r^  r  z-Not allowed to merge between different levelsr   r   )r   r   rF  r   r   r   r   r   r   s     r'   test_merge_series_multilevelrJ    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) _duprt  0_dup)NrM  )_x_y0_x0_yrO  rP  rW   )NrP  rQ  )rO  Nz0.0_xrX   b_yr  )NrO  )_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]   rV   r^   r\   r   r   Tr   r   )rY   r  kwargsexpected_colsrW   rX   r   r   s           r'   test_merge_suffixrY    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   r5  <   F   X       )rp  r  B2)r1  ry  r+   r0  rA  r]  r^  r_  c                     t          g dg dd          }t          g dg dd          }t          ||d| d          }g d	|_        t          j        ||           d S )
N)r1  ry  r+   )rZ  r[  rA  r  r5  r\  rp  )rO  rO  )r   r   rK  )rp  r(  r(  )r   r   r   r   r   )r   r   rB  rC  r   s        r'   test_merge_duplicate_suffixrb    s}    , mmm,,,??@@G___EEFFH7H#MMMF***H&(+++++r)   zcol1, col2, suffixes))rW   rW   )NN)rW   rW   )rL  N)r   r   )NrL  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   rK  r  )rY   r  rK  rW   rX   r   s         r'   test_merge_suffix_errorrf    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 )	NrW   r  rX   rd  zPassing 'suffixes' as ar   Tre  )r   r   r   	TypeErrorr   )rK  rW   rX   s      r'   test_merge_suffix_raisesrj  	  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col1, col2, suffixes, msg)rW   rW   r  z(too many values to unpack \(expected 2\)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  rd  r   Tre  r  )rY   r  rK  r   rW   rX   s         r'   test_merge_suffix_length_errorrm  	  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rk  	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  r0   r}   r0   r0   r   Tr   r}   r   r0   )	r   r   r   r   r   ro  r   r   r   )	rn  ro  
cat_dtypesra   data_foo
data_rightrb   r   r   s	            r'   test_merge_equal_cat_dtypesrw  	  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  rW   rX   r+   rV   rq  r0   )r\   rV   r+   rr  Tr   r\   rs  )r   r   r   r   r   r   r   r   )rn  ra   rb   r   r   s        r'   test_merge_equal_cat_dtypes2ry  D	  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 )
NrW   r   r+   rV   intervalr-   rX  r   r  )	r   r   r5   Intervalr   r   r   r   r   )r   r}   r   r   s       r'   test_merge_on_cat_and_ext_arrayr}  Z	  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             
fd| D             z   }t          j        ||gddg          }t          |          }d|d<   t	          j        ||           d S )Nr
  r  r  r  r   r   rD  r   rL  r  rO  rP  r   rK  c                     g | ]}|z   S r7   r7   )r$  r  l_sufs     r'   r&  z1test_merge_multiindex_columns.<locals>.<listcomp>|	  s    <<<&v~<<<r)   c                     g | ]}|z   S r7   r7   )r$  r  r_sufs     r'   r&  z1test_merge_multiindex_columns.<locals>.<listcomp>|	  s0     @ @ @!@ @ @r)   )r   rF  r   r   r   r   )lettersnumbersr   frame_xframe_yr   expected_labelsr5  r   r  r  s            @@r'   test_merge_multiindex_columnsr  h	  s9    #""GooG#Wg$6w>PQQQE&&&GGDM&&&GGDMEE]]7tu~]GGF =<<<G<<< @ @ @ @%,@ @ @ O  ,	'"7G*<  N 000HHTN&(+++++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  )rC   r   r  )200020012002)r   r  r}   r   r  )r  r  r=   r  )r   r5   r  r   r   r   ra   rb   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+   rq   r  r   r  r}   Tr   c                 >    g | ]}|d k     r|dgn|t           j        gS )rV   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   ra   rb   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)rW   rX   rW   ru   rW   rX   r  )r   r+   r   r+   r   r   )Cat1Int1)rW   rX   ru   rW   rX   ru   )r   r   r   r+   r+   r+   )r|  g333333?r  r  rZ  g?)CatIntFactorr  r  r  r  r  r}   r   r+   )axisr   r  Tr  )	r	   r   r   r   rV  dropr   r   r   )rW   rX   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)rW  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+   rV   r\   r]   r   r^   r   r  zCan only pass argument "r   " OR "z" not both\.r   r   r   r   r   getattrr5   r  rW  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+   rV   r\   r]   r   r^   r   r  zMust pass "r   r  z"\.r   r  r  s         r'   ,test_merge_join_cols_error_reporting_missingr  	  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  rW  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+   rV   r\   r]   r   r^   r   r  zZCan only pass argument "on" OR "left_index" and "right_index", not a combination of both\.r   r   rW   r  )r  rW  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+   r0   )rC   r  r   TrC   )r   r   r   )rC   x_xz_xx_yz_yr   r}   r   r   r   s       r'   test_merge_right_left_indexr  
  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+   rV   r   rW   rX   r-   Tr  r  )r   r   r   r,   r   r   r   )ra   rb   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+   rV   )rW   rX   b_xr   (Passing 'suffixes' which cause duplicater   rW   r   )rP  rO  r  r   r   r   r   r   rg  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 )Nr1  r2  )rW   rX   rX   r   r+   r\   rV   r   rW   r   )r+   r+   r+   rV   )rW   r  r  rS  r   r  s       r'   3test_merge_duplicate_columns_with_suffix_no_warningr  F
  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+   )rV   rV   rV   rV   )rW   rX   rX   r  r   r+   r\   rV   r   r  r   rW   r   r  rg  s     r'   Itest_merge_duplicate_columns_with_suffix_causing_another_duplicate_raisesr  P
  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+   rV   r\   r]   rW        \@r   r  rp   rj  r;  rC   r   r   Tr   )r  rp   r+   rV   )rj  r;  r\   r]   )rC   r   rW   r  r   r   r   r   r   r  s       r'   %test_merge_string_float_column_resultr  Y
  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 )
Nrq  r^     )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  d
  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  r^  r   rp  r   )r
   r   r   r   _datar   r   )cir   r}   resr   s        r'   #test_merge_on_left_categoricalindexr  l
  s    	%((	#	#BBU1XX..//Ec5A;;'((D
eR#
6
6
6CT5"(SAAAH#x(((((r)   r.   r/   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          t          j        t          j        ddgddt          j        t          j        gt          j        t          j        ddgd|           }t	          j        ||           d S )Nr+   rV   )rz   rY   r-   r\   r]   )rz   r  rz   r   r   )rz   rY   r  )rz   r  rY   r9  )r.   r}   r   r   r   s        r'   test_merge_outer_with_NaNr  x
  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FBFAq)2626*VRVQ*	
 	

   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 )	NrW   r+   ru   r   r   rv   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-   rV   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-   rV   r  r   r1  r2  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pyarrowrW   r+   rV   r-   r  )r   importorskipr   r   r   r   r   )r.   rn   rb   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   r4   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;  r3         rV   rZ  r[  )rl  rW   rl  r  r+   )rl  rX   r~  )rl  rW   rX   r   T)r  r}   r   r   r   )r5   r6   r   r   as_unitr   r<   ilocrV  r   r   r   )r4   r   valsra   rb   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)   )r   r   )Yr   r   r   r  numpyr   r   pandas.core.dtypes.commonr   r   pandas.core.dtypes.dtypesr   pandasr5   r	   r
   r   r   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.api.typesr  pandas.core.reshape.concatr   pandas.core.reshape.merger   r   r(   r8   r>   rN  rM   rQ   rT   rc   re   r  rV  r}   r   r  rB  rC  r4  rO  rP  rQ  rB  rH  rJ  rY  r<   rb  rf  rj  tuplerm  rw  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r7   r)   r'   <module>r     s           
 
			             7 6 6 6 6 6                                    4 4 4 4 4 4 - - - - - -          	 	 	   zz||)?)?@@@  A@ zz||)?)?@@@  A@ }},B,BCCC  DC 	 	 	e e e e e e e eP)C C CQ0 Q0 Q0 Q0 Q0 Q0 Q0 Q0h
 	 	 	   M0 M0 M0 M0 M0 M0 M0 M0` : : : > > >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.RVS1  		
 *, ,+ *, JJJ J J	 J vw&7!a9P9P%QRRJ J SRJ P	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, , ,r)   