
    o[we0v                     V   d dl Zd dlZd dlZd dl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ej        d
             Z G d d          Z G d d          ZdS )    N)	DataFrameIndex
MultiIndex
RangeIndexSeries	Timestamp)concat)mergec                      g d} g d}t           j                            d                              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      Elib/python3.11/site-packages/pandas/tests/reshape/merge/test_multi.pyleftr      s\     SRRDUUUD9  ##33CII>>DdD$??@@@    c                 8    | }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%BHN...BJIr    c                  r    t          g dg dg dg dg ddg d                              g d          S )	N)Ar,   Br-   C)r,   r-   r,   r.   r,   )AMr/   IPr/   OP)hbwnhbhbor3   r2   )i  i?  i	  i  i\  )OriginDestinationPeriodTripPurpTripsr'   )r5   r6   r7   r8   r   	set_index r    r   
left_multir>   '   ss    ///444444;;;333	
 	
 IHH	 	 	 i???@@	Ar    c                  r    t          g dg dg dg dg ddg d                              g d          S )	N)r,   r,   r-   r-   r.   r.   E)r,   r-   r,   r-   r,   r-   F)r/   r/   r0   r/   r1   r0   r/   )abcrC   rB   rC   rB   )d   P   Z   rF   K   #   7   )r5   r6   r7   LinkTypeDistancer:   )r5   r6   r7   rK   r;   r=   r    r   right_multirM   5   ss    999>>>@@@;;;555	
 	
 LKK	 	 	 i???@@	Ar    c                  
    g dS )N)r5   r6   r7   r=   r=   r    r   on_cols_multirO   C   s    ....r    c                  
    g dS )N)r5   r6   r7   r8   rK   r=   r=   r    r   idx_cols_multirQ   H   s    FFFFr    c                      e Zd Zd Zej                            dddg          d             Zej                            dddg          d             Zd Z	d Z
d	 Zd
 Zd Zd Zd Zej                            ddej        eeg          d             Zej                            dddg          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S )TestMergeMultic                    ddg}|                     |||                              d          }t          ||                                ||          }t          j        ||           |                     |||d                              d          }t          ||                                ||d          }t          j        ||           d S )Nr   r   onhowT)droprV   rW   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_multikeyN   s    6"5W)<<HHdHSSu0022wINNN
fh///5W)$GGSS T 
 
 %##%%'yt
 
 
 	fh/////r    rZ   FTc                    g dd fd}t          t          t          t          j        t          d          t          d          dz                                 }t          t          j                            d          	                    |d          d	d
g          }|
                    ddt          j                            d                              ddt          |                                        d                     t          j                            d                              t          |                    }|j        |                                         } |          |d<    |           |d<   |                    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                            d                              t          |                    }|j        |d df         } |           |d<   |                    d            ||||           d S )N)1st2nd3rdc                     d fd} || d                    || d                   dz  z   | d                              d          dz  z   S )	Nc                 0    | | k    rdnt          |           S )Nr   )ord)rB   s    r   <lambda>zNTestMergeMulti.test_left_join_multi_index.<locals>.bind_cols.<locals>.<lambda>e   s    !q&&QQc!ff r    c                 N    |                                t          d          z
  S )NrB   )maprk   )tsiords    r   rl   zNTestMergeMulti.test_left_join_multi_index.<locals>.bind_cols.<locals>.<lambda>f   s    266$<<#c((2 r    rf   rh   g      Y@rg   r   g     @)fillna)r)   frp   s     @r   	bind_colsz<TestMergeMulti.test_left_join_multi_index.<locals>.bind_colsd   s]    44D2222A1RY<<!!BuI,,"44r%y7G7G7J7JS7PPPr    c                    |                      |d|          }t          |           t          |          dz   k     sJ |d                                                                         rJ |d                                                                         rJ t	          j        |d         |d          d            |j        d d d df                   }t	          j        |d         |d           |j        J |r*t	          j        ||	                    d	
                     t          | |                                |d          }t          t          |                    |_        t	          j        ||           d S )Nr   rY      4th5thF)check_names	mergesortkind)rV   rZ   rW   )r[   r   isnaanyr]   assert_series_equalilocnamer^   sort_valuesr
   r\   r   r%   )r   r*   rZ   resrb   outrs   icolss         r   run_assertsz>TestMergeMulti.test_left_join_multi_index.<locals>.run_assertsi   su   ))Eed)CCCt99s3xx!|++++5z((,,.....5z((,,....."3u:E
{NNNNYsx3B3/00F"3u:v5IIII;&&& U%c3??5{?+S+STTTe//11e$FSSSC"3s88,,CI!#s+++++r    rB   zru   r   )i  r   rf   rh   r:   rg   r   i  floatrv   rw   T)inplace   %      +   )listrn   chrr   arangerk   r   r   r   choiceinsertintegersr   astypepermutationr   copyr<   nanloc)	r_   rZ   r   lcr   ir*   rs   r   s	          @@r   test_left_join_multi_indexz)TestMergeMulti.test_left_join_multi_index`   sy   %%%	Q 	Q 	Q
	, 	, 	, 	, 	, 	,( #c29SXXs3xx!|<<==>>I!!!$$++B	::UEN
 
 
 	I!!!$$--as4yyAAHHQQ	
 	
 	
 I!!!$$00T;;	!!!##iooU!	%(((et,,,D%&&& "$B!#B!#BiooUI!!!$$00T;;	!SbS&!!	%(((et,,,D%&&&&&r    c                     ddg}|                     ||dd|          }|                     ||dd|          }||j                 }t          j        ||           d S )Nr   r   Tr   )left_onright_indexrW   rZ   r*   )right_on
left_indexrW   rZ   )r
   r'   r]   r^   )r_   r   r*   rZ   ra   merged_left_rightmerge_right_lefts          r   test_merge_right_vs_leftz'TestMergeMulti.test_merge_right_vs_left   s     6" JJ7&t ' 
 
 !;;7tt ' 
 

 ,,=,EF
/1ABBBBBr    c                    t          t          d          t          j        ddgg dgddg          d	          }t	          t          d
          g ddd          }t          ||                                ddg          }t	          t          d
          g ddgdz  t          d          d          }t          j	        ||           d S )N   r,   r-   ru   r   r   lev1lev2r&   Amount)r   AAABBB)ru   r   r   ru   r   r   r   )r   r   colrV   )r   r   r   r   )
r   ranger   from_productr   r   r
   r\   r]   r^   )r_   sr)   rb   rc   s        r   .test_merge_multiple_cols_with_mixed_cols_indexz=TestMergeMulti.test_merge_multiple_cols_with_mixed_cols_index   s    !HH#c3Z$;FFCSTTT
 
 

 X8J8J8JSTUUVVr1==??/?@@@X***sQw((	 
 
 	fh/////r    c                    t          j        d          }t          j        |d          }|d d d         }t	          ||t          j                            d                              d          d          }t	          |d d d         |d d d         t          j                            d                              d          d          }t          ||d           d S )	Ni'  r   r   i N  )r   r   value1)r   r   value2outerrW   )	r]   makeStringIndexr   tiler   r   r   r   r
   )r_   r   r   r)   df2s        r    test_compress_group_combinationsz/TestMergeMulti.test_compress_group_combinations   s    !%((wtQDDbDz)//22BB5II 
 
 SSqS	SSqS	)//22BB5II 
 
 	b#7######r    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|          }|                    ||          }|                                }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           |                    ||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|          }|                    ||          }|                                }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          }t          j        ||           d S )Nk1k2)r   ru   r      r   r         dtype)r   r   v)r   r   )ru   r   v2      r%   r   r   ru   rz   T)r|   r   )rV   rZ   )r   r   k3r   r{   )r   r   arrayr   int64r   from_tuplesr[   r   r   r   r   r   r]   r^   r   float32int32)r_   ra   r   r%   r*   rb   rc   s          r   #test_left_join_index_preserve_orderz2TestMergeMulti.test_left_join_index_preserve_order   s   ,ii!menr)Xbimm28<<< 
 
 &
J'?@@4!Q.6665W--99;;JKhkQ&8;%+?@$FGJKhkQ&8;%+?@$FG
fh///7dCCC99UwT9::
fh/// ii!menr)hyyy1}BJ???Xbimm28<<<	 
 
 &
J'?@@4!Q.6665W--99;;JKhkQ&8;%+?@$FGJKhkQ&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                              g d          }|                    |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        ||           |                    |g dd d78          }|                    g dd9:          }t          j        ||           d S );N)XYr.   rB   )Wr   r.   e)VQr,   h)r   RDr   )r   r   r   rC   )r   r   r,   rD   )r   r   r-   rr   )r   r   r.   g)r   r   r.   j)r   r   r-   d)colacolbcolctag)
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,   ru   )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   rU   )r   r   r.   rB   r   )r   r   r.   rB   r   r   r   r.   r   )r   r   r,   r   r   )r   r   r   r   r   )r   r   r   r   r   r   r   rC   )r   r   r,   rD   ru   )r   r   r,   rD   r   )r   r   r-   rr   r   )r   r   r-   rr   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   ru   ru   r   r   r   r   r   r   r   r   TrY   rz   r{   )r   r<   r[   r   r   r]   r^   r   )r_   r   r*   rb   rc   s        r   +test_left_join_index_multi_match_multiindexz:TestMergeMulti.test_left_join_index_multi_match_multiindex  s   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 433000
 
 
" """"""""""""""""""""""""######""""""######  433#
 
 
$ ),,,
-
-% 	( 5%=%=%=6JJ''''''c3RV,((('''(((c3RV,'''''''''''''''''''''  ;::<<<%
 
 
* 	fh///5%=%=%=6PTUU''(@(@(@{'S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                              d          }|                    |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        ||           |                    |ddd"#          }|                    dd$%          }t          j        ||           t          ||	                                dd&          }t          t          |                    |_        t          j        ||           d S )'NrD   r   rC   ru   rB   r   r   r   r   )r   r   ru   r   r   r   wxr   yr   rr   qr   charr:   r   rU   )rD   r   r   )rD   r   r   )rD   r   r   )rD   r   r   )rB   r   r   )rB   r   r   )r   r   r   )r   r   r   r   r   ru   ru   r   TrY   rz   r{   rW   rV   )r   r<   r[   r   r   r]   r^   r   r
   r\   r   r   r%   )r_   r   r*   rb   rc   	expected2s         r    test_left_join_index_multi_matchz/TestMergeMulti.test_left_join_index_multi_matchV  s   1XQx#qC84EN,,
 
 
 c
c
c
c
c
c
c
c
	 FO
 
 
 )E

 	 5U77a a 	 +*****
 
 
 	fh///5UTBB(([(AA	
fi000 tU..00fGGG#CMM22
fh/////r    c           	         t          t          d          t          j                            d                              d          t          j                            d                              d          t          d          t          j                            d                              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          }|                    dgd          }|	                    |          }t          j        ||           d S )Nabcder   r   )idv1r   dummyv3r:   rB   rC   gX9v?gʡE@)r   sv3r   r   rU   ru   )axis)r   r   r   r   r   r   r   r
   rX   r[   r]   r^   )r_   r   r*   rb   rdfrc   s         r   test_left_merge_na_bugletz(TestMergeMulti.test_left_merge_na_buglet  s:   7mmi++A..>>qAAi++A..>>qAAgi++A..>>qAA  655	
 	
 	
 C8ubfbfbf= 
 
 tUt888jj$aj((99S>>
fh/////r    c           
      v   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          }|                    |d          }|                    d                              |                    d          d          }|                    dt           j                  }t          j        ||           d S )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
   rq   replacer]   r^   )r_   r   frame
other_dataotherrb   rc   s          r   test_merge_na_keysz!TestMergeMulti.test_merge_na_keys  s\   33

 $(A(A(ABBB 333333

 *.G.G.GHHHU00<<%%++ELL,>,>G+LL##D"&1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          }|                    |d|gd	          }t          j
        ||           t          |g dg dd
          }|                    ||j        j        gd	          }t          j
        ||           d S Nr   )z
2016-01-01z
2017-01-01z
2018-01-01rB   r:   )i  i  i  r   )rB   key_1innerrU   )key_0a_xa_yr   pdto_datetimer%   r  r   r   r   r
   r]   r^   )r_   r  r)   	on_vector	exp_yearsrc   rb   s          r   test_merge_datetime_indexz(TestMergeMulti.test_merge_datetime_index  s    IIAAAC5
 
 
 >"(++HM	i((IH///rx@@@	999yAABB"#y!1w??
fh///y999UUV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    rwt          ddgt	          j        t          j        t          j        gt                    d|
          }|                    |dddg          }|	                    |d          }nvt          t	          j        t          j        t          j        gt                    ddgd|
          }|                    |dddg          }|	                    |d          }t          j        ||           t          j        ||           d S )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
   r[   r]   r^   )r_   r  r   r*   expected_indexrc   results_mergeresults_joins           r   (test_merge_datetime_multi_index_empty_dfz7TestMergeMulti.test_merge_datetime_multi_index_empty_df  s    c
 (L))3/)L2I2I31OPw'  	
 
 
 (FG3DEEEPWy
 
 
 $/%%s+i.E.Es-KL7#
 
 

   #JXrvrv&6fEEE  %  H !JJu&fg=NJOOM99U977LL Xrvrv&6fEEE #J  %  H "KK'vw>OKPPM ::d:88L
mX666
lH55555r    c                 f    t          g dg dg ddg d                              d          }|S )Nr   )r   ru   r   )ffffAPAi^ )household_idmalewealthr:   r&  r;   )r_   	households     r   r)  zTestMergeMulti.household  s\     )		!		666 
 766
 
 
 )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                              ddg          }|S )Nru   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?r9        ?r7  )r&  asset_idr   sharer:   r&  r<  )r   r   r   r<   )r_   	portfolios     r   r>  zTestMergeMulti.portfolio  s     5 5 5""""""F ''4,F ?>>) , BAA/
 
 
0 )^Z0
1
11 	2 r    c           	          t          g dg dg dg dg dg dd                              dd	g                              g d
          }|S )N)r   ru   ru   r   r   r   )r$  r%  r%      xAr@  r@  )r1  r2  r3  r3  r4  r5  )r7  r8  r9  r:  r9  r;  )ru   r   r   r   r   r   )r,  r-  r.  r.  r/  r0  )r'  r(  r   r=  r&  r<  r&  r<  )r'  r(  r   r=  r:   )r   r<   reindex)r_   rc   s     r   rc   zTestMergeMulti.expected/  s     ...     BAA$6$6$6! ! !)  > Y
344W@@@WAAC 	F r    c                     |                                 }|                                 }|                    |d          }t          j        ||           d S )Nr  r   )r   r[   r]   r^   r_   r>  r)  rc   rb   s        r   test_join_multi_levelsz%TestMergeMulti.test_join_multi_levelsV  sP    NN$$	NN$$	 	w77
fh/////r    c                    |                                 }|                                 }t          |                                |                                dgd                              ddg          }t	          j        ||           d S )Nr&  r  rU   r<  )r   r
   r\   r<   r]   r^   rC  s        r   (test_join_multi_levels_merge_equivalencez7TestMergeMulti.test_join_multi_levels_merge_equivalence_  s    NN$$	NN$$	 !!##!!##	
 
 

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

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

 )555
6
6 	 	fh/////r    )__name__
__module____qualname__rd   rK  markparametrizer   r   r   r   r   r   r   r   r  r   asarrayr   r   r  r"  fixturer)  r>  rc   rD  rF  rH  rP  r^  r=   r    r   rS   rS   M   s       0 0 0$ [VeT]33;' ;' 43;'z [VeT]33C C 43C 0 0 0&$ $ $240 40 40lC0 C0 C0J00 00 00d0 0 000 0 0@ [WtRZ&GHH0 0 IH0, [\FG+<==,6 ,6 >=,6\ ^	 	 ^	 ^  ^8 ^$ $ ^$L0 0 00 0 00 0 0,4 4 4$Z0 Z0 Z0 Z0 Z0r    rS   c                       e Zd Zd Zd Zej                            ddej	        e
eg          d             Zd Zd ZdS )TestJoinMultiMultic                 :   t          |                                |                                ||                              |                                          }|                    ||                                          }t          j        ||           d S )Nr   r   )r
   r\   r<   
sort_indexr[   r]   r^   r_   r>   rM   r`   rO   rQ   rc   rb   s           r   test_join_multi_multiz(TestJoinMultiMulti.test_join_multi_multi2  s    
 &&(('')) 	   Y~&&Z\\ 	 )<<GGII
fh/////r    c                    |                     |j                  }|                     |j                  }t          |                                |                                ||                              |                                          }|                    ||                                          }t          j        ||           d S )Nr:   r   r   )	rX   r'   r
   r\   r<   ri  r[   r]   r^   rj  s           r   test_join_multi_empty_framesz/TestJoinMultiMulti.test_join_multi_empty_framesD  s      __Z-?_@@
!&&{/B&CC &&(('')) 	   Y~&&Z\\ 	 )<<GGI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          }|                    |d|gd	          }t          j
        ||           t          |g dg dd
          }|                    ||j        j        gd	          }t          j
        ||           d S r  r  )r_   rn  r)   r  r  rc   rb   s          r   r  z,TestJoinMultiMulti.test_merge_datetime_indexX  s    IIAAAC5
 
 
 >"(++HM	?IIH///rx@@@	999yAABB"#y!1w??
fh///y999UUV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|          }|                    |          }t	          |                                |                                dgd                              g d          }t          j        ||           d S )N))K0X0)rq  X1)K1X2keyr   r   )A0A1A2)B0B1B2)r,   r-   r   ))rq  Y0)rt  Y1)K2Y2)r  Y3r   )C0C1C2C3)D0D1D2D3)r.   r   r  rU   )rv  r   r   )	r   r   r   r[   r
   r\   r<   r]   r^   )r_   
index_leftr   index_rightr*   rb   rc   s          r   test_single_common_levelz+TestJoinMultiMulti.test_single_common_levelo  s.   +666ucl
 
 

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

)%%%
&
& 	 	fh/////r    c                 f   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          }|                    |          }t          |g d
dddt
          j        gd          }t          j        ||           d S )Nru   r   r   r   rB   rC   r   ))r   ru   )r   r   )r   ru   r   )
         (   )r%   r   r   )r   r   fingr  r   r   )r   r   )	r   r   r   r   r[   r   r   r]   r^   )r_   midx1midx3r   r*   rb   rc   s          r   test_join_multi_wrong_orderz.TestJoinMultiMulti.test_join_multi_wrong_order  s     '!Q!Q(8c
KKK&'?'?'?SzRRRuC1A1A1A+BCCCS2H2H2H,IJJJ5!!'''vueRV.LMM
 
 

 	fh/////r    )r_  r`  ra  rk  rm  rK  rb  rc  r   rd  r   r   r  r  r  r=   r    r   rg  rg  1  s        0 0 0$0 0 0( [UT2:vu$EFF0 0 GF0,0 0 020 0 0 0 0r    rg  )numpyr   rK  pandasr  r   r   r   r   r   r   pandas._testing_testingr]   pandas.core.reshape.concatr	   pandas.core.reshape.merger
   re  r   r*   r>   rM   rO   rQ   rS   rg  r=   r    r   <module>r     s                                 - - - - - - + + + + + + A A A    
A 
A 
A 
A 
A 
A / / / G G Ga0 a0 a0 a0 a0 a0 a0 a0Hh0 h0 h0 h0 h0 h0 h0 h0 h0 h0r    