
    Owgy                     R   d dl Zd dlZd dlmc mZ d dlZd dl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 ej.                  d        Zej.                  d        Zej.                  d        Zej.                  d        Zej.                  d	        Z G d
 d      Z G d d      Zy)    N)	DataFrameIndex
MultiIndex
RangeIndexSeries	Timestampoption_context)concat)mergec                      g d} g d}t         j                  j                  d      j                  t	        |             }t        | ||d      S )z=left dataframe (not multi-indexed) for multi-index join tests)
barr   r   foor   bazr   quxr   snap)
twoonethreer   r   r   r   r   r   r      key1key2data)nprandomdefault_rngstandard_normallenr   r   s      \/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/reshape/merge/test_multi.pyleftr       sD     SDUD99  #33CI>DdD$?@@    c                 B    | }ddg|j                   _        g d|_        |S )z:right dataframe (multi-indexed) for multi-index join testsr   r   )j_onej_twoj_three)indexnamescolumns) multiindex_dataframe_random_datadfs     r   rightr+       s%     
*Bf%BHHN.BJIr!   c                  b    t        g dg dg dg dg ddg d      j                  g d      S )	N)Ar-   Br.   C)r-   r.   r-   r/   r-   )AMr0   IPr0   OP)hbwnhbhbor4   r3   )i  i?  i	  i  i\  )OriginDestinationPeriodTripPurpTripsr(   )r6   r7   r8   r9   r   	set_index r!   r   
left_multir?   *   s7    /44;3	
 I	 i?@	Ar!   c                  b    t        g dg dg dg dg ddg d      j                  g d      S )	N)r-   r-   r.   r.   r/   r/   E)r-   r.   r-   r.   r-   r.   F)r0   r0   r1   r0   r2   r1   r0   )abcrD   rC   rD   rC   )d   P   Z   rG   K   #   7   )r6   r7   r8   LinkTypeDistancer;   )r6   r7   r8   rL   r<   r>   r!   r   right_multirN   8   s7    9>@;5	
 L	 i?@	Ar!   c                  
    g dS )N)r6   r7   r8   r>   r>   r!   r   on_cols_multirP   F   s    ..r!   c            
          e Zd Zd Zej
                  j                  dd ej                  d ej                  d            g      ej
                  j                  dddg      d               Z
ej
                  j                  dddg      d	        Zd
 Zd Zd Zd Zd Zd Zd Zej
                  j                  ddej(                  eeg      d        Zej
                  j                  dddg      d        Zej2                  d        Zej2                  d        Zej2                  d        Zd Zd Zd Zd Z d Z!y) TestMergeMultic                 l   ddg}|j                  |||      j                  d      }t        ||j                         ||      }t        j                  ||       |j                  |||d      j                  d      }t        ||j                         ||d      }t        j                  ||       y )Nr   r   onhowT)droprU   rV   sort)joinreset_indexr   tmassert_frame_equal)selfr    r+   	join_typeon_colsresultexpecteds          r   test_merge_on_multikeyz%TestMergeMulti.test_merge_on_multikeyL   s    6"5W)<HHdHSu002wIN
fh/5W)$GSS T 
 %##%'yt
 	fh/r!   infer_stringFTpyarrow)marksrY   c                   	 t        d|      5  g d	d 	fd}t        t        t        t	        j
                  t        d      t        d      dz                     }t        t        j                  j                  d      j                  |d	      d
dg      }|j                  ddt        j                  j                  d      j                  ddt        |            j                  d             t        j                  j                  d      j                  t        |            }|j                   |   j#                         } |      |d<    |       |d<   |j%                  	d        ||||       t        j&                  |j(                  dd dd
f<   t        j&                  |j(                  dd ddf<   t        j&                  |j(                  dd ddf<    |      |d<   t        j                  j                  d      j                  t        |            }|j                   |d df   } |       |d<   |j%                  	d        ||||       d d d        y # 1 sw Y   y xY w)Nzfuture.infer_string)1st2nd3rdc                 x    d fd} || d          || d         dz  z   | d   j                  d      dz  z   S )	Nc                 &    | | k7  rdS t        |       S )Nr   )ord)rC   s    r   <lambda>zNTestMergeMulti.test_left_join_multi_index.<locals>.bind_cols.<locals>.<lambda>g   s    a1f #a& r!   c                 >    | j                        t        d      z
  S )NrC   )maprm   )tsiords    r   rn   zNTestMergeMulti.test_left_join_multi_index.<locals>.bind_cols.<locals>.<lambda>h   s    rvvd|c#h6 r!   rh   rj   g      Y@ri   r   
   )fillna)r*   frr   s     @r   	bind_colsz<TestMergeMulti.test_left_join_multi_index.<locals>.bind_colsf   sG    86E|a5	lS&882e9;K;KA;NQS;SSSr!   c                    | j                  |d|      }t        |       t        |      dz   k  sJ |d   j                         j                         rJ |d   j                         j                         rJ t	        j
                  |d   |d    d        |j                  d d d df         }t	        j
                  |d   |d       |j                  J |r't	        j                  ||j                  d	
             t        | |j                         |d      }t        t        |            |_        t	        j                  ||       y )Nr    rX      4th5thF)check_names	mergesortkind)rU   rY   rV   )rZ   r   isnaanyr\   assert_series_equalilocnamer]   sort_valuesr   r[   r   r&   )r    r+   rY   resra   outrv   icolss         r   run_assertsz>TestMergeMulti.test_left_join_multi_index.<locals>.run_assertsk   s&   ii%V$iG4y3s8a<///u:??,00222u:??,00222&&s5zCJ;ER"388AssF#34&&s5z6uM{{***))#su;/WXD%"3"3"5%dPVW&s3x0	%%c3/r!   rC   zrx   r   )2   r   rh   rj   r;   ri   r   rs   floatry   rz   T)inplace            )r	   listrp   chrr   arangerm   r   r   r   choiceinsertintegersr   astypepermutationr   copyr=   nanloc)
r^   rY   rd   r   lcr    ir+   rv   r   s
           @@r   test_left_join_multi_indexz)TestMergeMulti.test_left_join_multi_index^   s   
 1<@ ;	+)ET
0( c#ryyS3s8a<@ABB		%%a(//G<uenD KK		%%a(11!RTCJJ7S 		%%a(44SY?AIIaL%%'E#D/DK%e,,E%LOOE4O0eT* %'FFDHHQTT5[!$&FFDHHQTT5[!$&FFDHHQTT5[!#D/DK		%%a(44SY?AIIa"f%E%e,,E%LOOE4O0eT*w;	+ ;	+ ;	+s   II))I2c                     ddg}|j                  ||dd|      }|j                  ||dd|      }||j                     }t        j                  ||       y )Nr   r   Tr    )left_onright_indexrV   rY   r+   )right_on
left_indexrV   rY   )r   r(   r\   r]   )r^   r    r+   rY   r`   merged_left_rightmerge_right_lefts          r   test_merge_right_vs_leftz'TestMergeMulti.test_merge_right_vs_left   st     6" JJ7&t ' 
 !;;7tt ' 

 ,,=,E,EF
/1ABr!   c                 X   t        t        d      t        j                  ddgg dgddg      d	      }t	        t        d
      g ddd      }t        ||j                         ddg      }t	        t        d
      g ddgdz  t        d      d      }t        j                  ||       y )Nr   r-   r.   rx   r   r   lev1lev2r'   Amount)r   AAABBB)rx   r   r   rx   r   r   r   )r   r   colrU   )r   r   r   r   )
r   ranger   from_productr   r   r   r[   r\   r]   )r^   sr*   ra   rb   s        r   .test_merge_multiple_cols_with_mixed_cols_indexz=TestMergeMulti.test_merge_multiple_cols_with_mixed_cols_index   s    !H##c3Z$;FFCST

 X8JSTUVr1==?/?@X*sQw(	
 	fh/r!   c                    t        d      D cg c]  }t        |       }}t        j                  |d      }|d d d   }t	        ||t        j
                  j                  d      j                  d      d      }t	        |d d d   |d d d   t        j
                  j                  d      j                  d      d      }t        ||d       y c c}w )	Ni'  r   r   i N  )r   r   value1)r   r   value2outerrV   )	r   strr   tiler   r   r   r   r   )r^   r   r   r   r*   df2s         r    test_compress_group_combinationsz/TestMergeMulti.test_compress_group_combinations   s     %e-1A--wwtQDbDz))//2BB5I
 SqS	SqS	))//2BB5I
 	b#7#+ .s   Cc           
         ddg}t        g ddz  ddgdz  t        j                  t        j                  d      t        j                  	      d
      }t        j                  ddg      }t        dddgi|      }|j                  ||      }|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                  ||       |j                  |dd       |j                  ||d      }t        j                  ||       t        g ddz  ddgdz  t        j                  g ddz  t        j                   	      t        j                  t        j                  d      t        j"                  	      d      }t        j                  ddg      }t        dddgi|      }|j                  ||      }|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                  ||       |j                  |d      }|j                  ||d      }t        j                  ||       y )Nk1k2)r   rx   r      r   r         dtype)r   r   v)r   r   )rx   r   v2r      r&   r   r   rx   r}   T)r   r   )rU   rY   )r   r   k3r   r~   )r   r   arrayr   int64r   from_tuplesrZ   r   r   r   r   r   r\   r]   r   float32int32)r^   r`   r    r&   r+   ra   rb   s          r   #test_left_join_index_preserve_orderz2TestMergeMulti.test_left_join_index_preserve_order   s   ,!menr)XXbiim288<
 &&
J'?@4!Q.65W-99;JKhkkQ&8;;%+?@$FGJKhkkQ&8;;%+?@$FG
fh/7dC99UwT9:
fh/ !menr)hhy1}BJJ?XXbiim288<	
 &&
J'?@4!Q.65W-99;JKhkkQ&8;;%+?@$FGJKhkkQ&8;;%+?@$FG
fh/##G+#>99UwT9:
fh/r!   c                    t        g dg dg dg dg dg dg dg dg d	g d
g
g dg d      }t        g dg dg dg dg dg dg dg dg dg dg dg dg dg dgg d      j                  g d      }|j                  |g dd !      }t        g d"g d#d$d%d&d't        j                  gg d(g d)g d*d+d%d,d-t        j                  gg d.g d/g d0g d1g d2g d3g d4gg d5g d6      }t        j                  ||       |j                  |g dd d78      }|j                  g dd9:      }t        j                  ||       y );N)XYr/   rC   )Wr   r/   e)VQr-   h)r   RDr   )r   r   r   rD   )r   r   r-   rE   )r   r   r.   ru   )r   r   r/   g)r   r   r/   j)r   r   r.   d)colacolbcolctag)
r   r   r   rx   r   r   r   r   	   r   r(   r&   )r   r   r/   r   )r   r   r.   r   )r   r   r.   r   )r   r   r-   rx   )r   r   r-   r   )r   r   r.   r   )r   r   r/   r   )r   r   r/   r   )r   r   r/   i)r   r   r/   i)r   r   r/   r   )r   r   r   r   )r   r   r   r   )r   r   r-   )col1col2col3valr;   )r   r   r   )r   r   r   r    rT   )r   r   r/   rC   r   )r   r   r/   rC   r   r   r   r/   r   )r   r   r-   r   r   )r   r   r   r   r   )r   r   r   r   r   r   r   rD   )r   r   r-   rE   rx   )r   r   r-   rE   r   )r   r   r.   ru   r   )r   r   r.   ru   r   )r   r   r/   r   r   )r   r   r/   r   r   )r   r   r.   r   r   )r   r   r   r   r   )r   r   r   r   rx   rx   r   r   r   r   r   r   r   r   TrX   r}   r~   )r   r=   rZ   r   r   r\   r]   r   )r^   r    r+   ra   rb   s        r   +test_left_join_index_multi_match_multiindexz:TestMergeMulti.test_left_join_index_multi_match_multiindex  sM   $$$$$$$$$$ 40
" """"""""##""##  4#
$ ),
-% 	( 5%=6J''c3RVV,('(c3RVV,'''''''  ;<%
* 	fh/5%=6PTU''(@{'S
fh/r!   c                    t        ddgddgddgddggdd	gg d
      }t        ddgddgddgddgddgddgddgddggddg      j                  d      }|j                  |dd      }t        g dg dg dg dddt        j                  gg dg dddt        j                  ggg d g d!      }t        j                  ||       |j                  |ddd"#      }|j                  dd$%      }t        j                  ||       t        ||j                         dd&      }t        t        |            |_        t        j                  ||       y )'NrE   r   rD   rx   rC   r   r   r   r   )r   r   rx   r   r   r   wxr   yr   rr   qr   charr;   r    rT   )rE   r   r   )rE   r   r   )rE   r   r   )rE   r   r   )rC   r   r   )rC   r   r   )r   r   r   )r   r   r   r   r   rx   rx   r   TrX   r}   r~   rV   rU   )r   r=   rZ   r   r   r\   r]   r   r   r[   r   r   r&   )r^   r    r+   ra   rb   	expected2s         r    test_left_join_index_multi_matchz/TestMergeMulti.test_left_join_index_multi_matchX  sv   1XQx#qC84EN
 c
c
c
c
c
c
c
c
	 FO
 )E
 	 5U7a a 	 +*
 	fh/5UTB(([(A	
fi0 tU..0fG#CM2
fh/r!   c           	         t        t        d      t        j                  j	                  d      j                  d      t        j                  j	                  d      j                  d      t        d      t        j                  j	                  d      j                  d      dg d      }t        ddt        j                  t        j                  t        j                  gdd	t        j                  t        j                  t        j                  gd
      }t        ||dd      }|j                  dgd      }|j                  |      }t        j                  ||       y )Nabcder   r   )idv1r   dummyv3r;   rC   rD   gX9v?gʡE@)r   sv3r   r    rT   rx   )axis)r   r   r   r   r   r   r   r   rW   rZ   r\   r]   )r^   r    r+   ra   rdfrb   s         r   test_left_merge_na_bugletz(TestMergeMulti.test_left_merge_na_buglet  s   7mii++A.>>qAii++A.>>qAgii++A.>>qA 6	
 C8ubffbffbff=
 tUt8jj$aj(99S>
fh/r!   c           
         g dg dg dddt         j                  gg dg dddt         j                  gg d	g d
g	}t        |g d      }ddt         j                  gddt         j                  gddt         j                  gddt         j                  gddt         j                  gddt         j                  gg}t        |g d      }|j                  |d      }|j	                  d      j                  |j	                  d      d      }|j                  dt         j                        }t        j                  ||       y )N)  r-         ?)r   r.   r  )  r.   r  i  r.   )  r.         @)r   r/   r  r/   )  r/   g      @)r  r/   r  )yearpanelr   r;   r-   r  r  r  r   r   i)r   r   r   r   rt   replacer\   r]   )r^   r   frame
other_dataotherra   rb   s          r   test_merge_na_keysz!TestMergeMulti.test_merge_na_keys  s   33

 $(AB 333333

 *.GHU0<<%++ELL,>G+L##D"&&1
fh/r!   klassNc                    t        g dg ddg      }t        j                  |j                        |_        |j                  j                  }| ||      }t        j                  g dt
        j                        }t        g d|d      }|j                  |d|gd	      }t        j                  ||       t        |g dg dd
      }|j                  ||j                  j                  gd	      }t        j                  ||       y Nr   )z
2016-01-01z
2017-01-01z
2018-01-01rC   r;   )i  i  i  r   )rC   key_1innerrT   )key_0a_xa_yr   pdto_datetimer&   r  r   r   r   r   r\   r]   )r^   r  r*   	on_vector	exp_yearsrb   ra   s          r   test_merge_datetime_indexz(TestMergeMulti.test_merge_datetime_index  s     AC5
 >>"((+HHMM	i(IHH/rxx@	9yAB"#y!1w?
fh/y9UV""((--g>
fh/r!   
merge_typer    r+   c           	      \   t        dddgit        j                  t        d      dgt        d      dggddg	      
      }t        t        j                  g ddg	      dg      }t        j                  t        d      dgt        d      dggddg	      }|dk(  rst        ddgt	        j
                  t        j                  t        j                  gt              d|
      }|j                  |dddg      }|j                  |d      }nrt        t	        j
                  t        j                  t        j                  gt              ddgd|
      }|j                  |dddg      }|j                  |d      }t        j                  ||       t        j                  ||       y )Nr   r  z
1950-01-01r-   z
1950-01-02r.   dater  r   )r   r&   state)r&   r(   r    r   )r   r  r   r   )r  r   r+   )r   r   r   r   r   r   r   objectr   rZ   r\   r]   )r^   r  r    r+   expected_indexrb   results_mergeresults_joins           r   (test_merge_datetime_multi_index_empty_dfz7TestMergeMulti.test_merge_datetime_multi_index_empty_df  s    c
 ((L)3/)L2I31OPw'	
 ((FG3DEPWy
 $//%s+i.Es-KL7#

   #JXXrvvrvv&6fE %H !JJu&fg=NJOM99U97L XXrvvrvv&6fE #J %H "KK'vw>OKPM ::d:8L
mX6
lH5r!   c                 V    t        g dg dg ddg d      j                  d      }|S )Nr   )r   rx   r   )ffffAPAi^ )household_idmalewealthr;   r'  r<   )r^   	households     r   r*  zTestMergeMulti.household  s6     )!6
 7
 )N
# 	 r!   c                     t        g dddddddt        j                  gddd	d	d
dt        j                  gg ddg d      j                  ddg      }|S )Nrx   r   r   r   r   r   r   nl0000301109nl0000289783gb00b03mlx29lu0197800237nl0000289965ABN AmroRobecoRoyal Dutch ShellAAB Eastern Europe Equity FundPostbank BioTech Fonds      ?皙?333333?333333?r:        ?r8  )r'  asset_idr   sharer;   r'  r=  )r   r   r   r=   )r^   	portfolios     r   r?  zTestMergeMulti.portfolio  sy     5""""""FF ''4,FF ?), B/
0 )^Z0
11 	2 r!   c           	          t        g dg dg dg dg dg dd      j                  dd	g      j                  g d
      }|S )N)r   rx   rx   r   r   r   )r%  r&  r&      xArA  rA  )r2  r3  r4  r4  r5  r6  )r8  r9  r:  r;  r:  r<  )rx   r   r   r   r   r   )r-  r.  r/  r/  r0  r1  )r(  r)  r   r>  r'  r=  r'  r=  )r(  r)  r   r>  r;   )r   r=   reindex)r^   rb   s     r   rb   zTestMergeMulti.expected1  sX     . B$6!)> Y
34W@WAC 	F r!   c                     |j                         }|j                         }|j                  |d      }t        j                  ||       y )Nr  r   )r   rZ   r\   r]   r^   r?  r*  rb   ra   s        r   test_join_multi_levelsz%TestMergeMulti.test_join_multi_levelsX  s>    NN$	NN$	 	w7
fh/r!   c                     |j                         }|j                         }t        |j                         |j                         dgd      j                  ddg      }t	        j
                  ||       y )Nr'  r  rT   r=  )r   r   r[   r=   r\   r]   rD  s        r   (test_join_multi_levels_merge_equivalencez7TestMergeMulti.test_join_multi_levels_merge_equivalencea  sm    NN$	NN$	 !!#!!#	

 )^Z0
1 	 	fh/r!   c                 Z   |j                         }|j                         }|j                  |d      }t        |t        ddgit	        j
                  dt        j                  fgddg      	      gd
d      j                  |j                        }t        j                  ||d       y )Nr   r   r>  r8  r   r'  r=  r   r   r   T)r   rY   r;   F)check_index_type)r   rZ   r
   r   r   r   r   r   rB  r(   r\   r]   rD  s        r   test_join_multi_levels_outerz+TestMergeMulti.test_join_multi_levels_outern  s    NN$	NN$		w7 4&)(44[M.*1M
 
 '(**'
+ 	 	fhGr!   c                    |j                         }|j                         }d|j                  _        t        j                  t
        d      5  |j                  |d       d d d        |j                         }|j                  j                  ddg       t        j                  t
        d      5  |j                  |d       d d d        y # 1 sw Y   nxY w# 1 sw Y   y xY w)Nr   z+cannot join with no overlapping index names)matchr  r   r'  z'columns overlap but no suffix specified)r   r&   r   pytestraises
ValueErrorrZ   	set_names)r^   r?  r*  
portfolio2s       r   test_join_multi_levels_invalidz-TestMergeMulti.test_join_multi_levels_invalid  s    NN$	NN$	  %	]]K
 	3 NN9'N2	3
 ^^%
""NE#:;]]:-VW 	4OOI7O3	4 	4	3 	3	4 	4s   C1CCC#c           
         t        g dddddddt        j                  gg ddg d      j                  d	d
g      }t        g dg dg dd      j                  d
dg      }t        g dg dg dg dg dd      j                  g d      j	                  ddg      }t        |j                         |j                         d
gd      j                  g d      }t        j                  ||       t        g dg dg dg dg dd      j                  g d      j	                  ddg      }t        |j                         |j                         d
gd       j                  g d      }t        j                  ||       y )!Nr,  r-  r/  r0  r1  r7  )r'  r=  r>  r;   r'  r=  )r/  r/  r/  r0  r0  )               )S緖?D >?
?HRE?)r=  t
log_returnr^  )r   r   r   r   r   r   r   r   )r/  r/  r/  r/  r/  r/  r0  r0  )rT  rU  rV  rT  rU  rV  rW  rX  )r:  r:  r:  r;  r;  r;  r:  r:  )rY  rZ  r[  rY  rZ  r[  r\  r]  )r'  r=  r^  r>  r_  )r'  r=  r^  r>  r_  r  rT   )r   r   r   r   r   r   r   r   r   rx   r   r   )r/  r/  r/  r/  r/  r/  r0  r0  r1  r-  r-  N)rT  rU  rV  rT  rU  rV  rW  rX  NNNN)r:  r:  r:  r;  r;  r;  r:  r:  r<  r8  r9  r8  )rY  rZ  r[  rY  rZ  r[  r\  r]  NNNNr   )	r   r   r   r=   rB  r   r[   r\   r]   )r^   r*  r_  rb   ra   s        r   test_join_multi_levels2z&TestMergeMulti.test_join_multi_levels2  s     5""""""FF ? :
 )^Z0
1 	"  /
$ )Z%
&% 	* $<	! BH	#6 Y89Wg|4W5; 	B !!#""$|	

 )5
6 	 	fh/ $H!#Y:<z Y89Wg|4W5 	D !!#""$|	

 )5
6 	 	fh/r!   )"__name__
__module____qualname__rc   rM  markparametrizeparamtd
skip_if_nor   r   r   r   r   r   r   r   r  r   asarrayr   r   r  r#  fixturer*  r?  rb   rE  rG  rJ  rR  r`  r>   r!   r   rR   rR   K   s   0$ [[Ty9Q RS [[VdE]3<+ 4<+| [[VeT]3C 4C 0&$240lC0J00d000@ [[WtRZZ&GH0 I0, [[\FG+<=,6 >,6\ ^^	 	 ^^ 8 ^^$ $L00H,4$Z0r!   rR   c                       e Zd Zd Zd Zej                  j                  ddej                  e
eg      d        Zd Zd Zy)TestJoinMultiMultic                    |j                   j                  }|j                   j                  }|dk(  r||j                  |      z   }n||j                  |      z   }t        |j	                         |j	                         ||      j                  |      j                         }|j                  ||      j                         }	t        j                  |	|       y )Nr+   r   r   )
r&   r'   
differencer   r[   r=   
sort_indexrZ   r\   r]   
r^   r?   rN   r_   rP   
left_namesright_nameslevel_orderrb   ra   s
             r   test_join_multi_multiz(TestJoinMultiMulti.test_join_multi_multi4  s    %%++
!''--%
(=(=k(JJK${'='=j'IIK &&('') 	 Y{#Z\ 	 )<GGI
fh/r!   c                 &   |j                  |j                        }|j                  |j                        }|j                  j                  }|j                  j                  }|dk(  r||j	                  |      z   }n||j	                  |      z   }t        |j                         |j                         ||      j                  |      j                         }|j                  ||      j                         }	t        j                  |	|       y )Nr;   r+   r   r   )rW   r(   r&   r'   rn  r   r[   r=   ro  rZ   r\   r]   rp  s
             r   test_join_multi_empty_framesz/TestJoinMultiMulti.test_join_multi_empty_framesJ  s      __Z-?-?_@
!&&{/B/B&C%%++
!''--%
(=(=k(JJK${'='=j'IIK &&('') 	 Y{#Z\ 	 )<GGI
fh/r!   boxNc                    t        g dg ddg      }t        j                  |j                        |_        |j                  j                  }| ||      }t        j                  g dt
        j                        }t        g d|d      }|j                  |d|gd	      }t        j                  ||       t        |g dg dd
      }|j                  ||j                  j                  gd	      }t        j                  ||       y r  r  )r^   rw  r*   r  r  rb   ra   s          r   r  z,TestJoinMultiMulti.test_merge_datetime_indexe  s     AC5
 >>"((+HHMM	?IIHH/rxx@	9yAB"#y!1w?
fh/y9UV""((--g>
fh/r!   c                    t        j                  g dddg      }t        g dg dd|      }t        j                  g d	dd
g      }t        g dg dd|      }|j                  |      }t	        |j                         |j                         dgd      j                  g d      }t        j                  ||       y )N))K0X0)rz  X1)K1X2keyr   r   )A0A1A2)B0B1B2)r-   r.   r   ))rz  Y0)r}  Y1)K2Y2)r  Y3r   )C0C1C2C3)D0D1D2D3)r/   r   r  rT   )r  r   r   )	r   r   r   rZ   r   r[   r=   r\   r]   )r^   
index_leftr    index_rightr+   ra   rb   s          r   test_single_common_levelz+TestJoinMultiMulti.test_single_common_level|  s    ++6ucl

 $+=>j
 !,,DUTWL
 *1IJ

 5! 1 1 3W

)%
& 	 	fh/r!   c                 R   t        j                  ddgddggddg      }t        j                  g dddg      }t        |d	g d
i      }t        |dg di      }|j	                  |      }t        |g d
dddt
        j                  gd      }t        j                  ||       y )Nrx   r   r   r   rC   rD   r   ))r   rx   )r   r   )r   rx   r   )rs         (   )r&   r   r   )r   r   fingr  r   r   )r   r   )	r   r   r   r   rZ   r   r   r\   r]   )r^   midx1midx3r    r+   ra   rb   s          r   test_join_multi_wrong_orderz.TestJoinMultiMulti.test_join_multi_wrong_order  s     ''!Q!Q(8c
K&&'?SzRuC1A+BCS2H,IJ5!'vueRVV.LM

 	fh/r!   )ra  rb  rc  rt  rv  rM  rd  re  r   ri  r   r   r  r  r  r>   r!   r   rl  rl  3  sI    0,06 [[UT2::vu$EF0 G0,020r!   rl  )numpyr   rM  pandas.util._test_decoratorsutil_test_decoratorsrg  pandasr  r   r   r   r   r   r   r	   pandas._testing_testingr\   pandas.core.reshape.concatr
   pandas.core.reshape.merger   rj  r    r+   r?   rN   rP   rR   rl  r>   r!   r   <module>r     s      ) )     - + A A   
A 
A 
A 
A / /e0 e0Ps0 s0r!   