
    dLt                     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                            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randnlenr   r   s      a/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/reshape/merge/test_multi.pyleftr      sL     SRRDUUUD9??3t99%%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hbor1   r0   )i  i?  i	  i  i\  )OriginDestinationPeriodTripPurpTripsr%   )r3   r4   r5   r6   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-   r.   r-   r/   r.   r-   )abcrA   r@   rA   r@   )d   P   Z   rD   K   #   7   )r3   r4   r5   LinkTypeDistancer8   )r3   r4   r5   rI   r9   r;   r   r   right_multirK   5   ss    999>>>@@@;;;555	
 	
 LKK	 	 	 i???@@	Ar   c                  
    g dS )N)r3   r4   r5   r;   r;   r   r   on_cols_multirM   C   s    ....r   c                  
    g dS )N)r3   r4   r5   r6   rI   r;   r;   r   r   idx_cols_multirO   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rT   rU   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   rX   FTc                    g dd fd}t          t          t          t          j        t          d          t          d          dz                                 }t          t          j                            |d          dd	g
          }|	                    ddt          j        
                    ddt          |                                        d                     t          j                            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                            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)r@   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 )Nr@   )mapri   )tsiords    r   rj   zNTestMergeMulti.test_left_join_multi_index.<locals>.bind_cols.<locals>.<lambda>f   s    266$<<#c((2 r   rd   rf   g      Y@re   r   g     @)fillna)r'   frn   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   rW      4th5thF)check_names	mergesortkind)rT   rX   rU   )rY   r   isnaanyr[   assert_series_equalilocnamer\   sort_valuesr
   rZ   r   r#   )r   r(   rX   resr`   outrq   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   r@   zrs   )i     rd   rf   r8   re   r   i  floatrt   ru   T)inplace   r   %      +   )listrl   chrr   arangeri   r   r   choiceinsertrandintr   astypepermutationr~   copyr:   nanloc)	r]   rX   r   lcr   ir(   rq   r   s	          @@r   test_left_join_multi_indexz)TestMergeMulti.test_left_join_multi_index`   s-   %%%	Q 	Q 	Q
	, 	, 	, 	, 	, 	,( #c29SXXs3xx!|<<==>>))"i885%.QQQAubi//4TCCJJ7SSTTTI!!#d)),,	!!!##iooU!	%(((et,,,D%&&& "$B!#B!#BiooUI!!#d)),,	!SbS&!!	%(((et,,,D%&&&&&r   c                     ddg}|                     ||dd|          }|                     ||dd|          }||j                 }t          j        ||           d S )Nr   r   Tr   )left_onright_indexrU   rX   r(   )right_on
left_indexrU   rX   )r
   r%   r[   r\   )r]   r   r(   rX   r_   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+   rs   r   r   lev1lev2r$   Amount)r   AAABBB)rs   r   r   rs   r   r   r   )r   r   colrT   )r   r   r   r   )
r   ranger   from_productr   r   r
   rZ   r[   r\   )r]   sr'   r`   ra   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                 x   t          j        dd          }t          j        |d          }|d d d         }t	          ||t          j                            d          d          }t	          |d d d         |d d d         t          j                            d          d          }t          ||d	           d S )
N
   i'  r   r   i N  )r   r   value1)r   r   value2outerrU   )r[   rands_arrayr   tiler   r   r   r
   )r]   r   r   r'   df2s        r    test_compress_group_combinationsz/TestMergeMulti.test_compress_group_combinations   s    ~b%((wtQDDbDzdbiooe>T>TUUVV##A#YSSqS	RY__U=S=STT
 

 	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   rs   r      r   r         dtype)r   r   v)r   r   )rs   r   v2      r#   r   r   rs   rx   T)rz   r   )rT   rX   )r   r   k3r   ry   )r   r   arrayr   int64r   from_tuplesrY   r   r   r   r   r   r[   r\   r   float32int32)r]   r_   r   r#   r(   r`   ra   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,   r@   )Wr   r,   e)VQr*   h)r   RDr   )r   r   r   rA   )r   r   r*   rB   )r   r   r+   rp   )r   r   r,   g)r   r   r,   j)r   r   r+   d)colacolbcolctag)
r   r   r   rs   r   r      r   	   r   r%   r#   )r   r   r,   r   )r   r   r+   r   )r   r   r+   r   )r   r   r*   rs   )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valr8   )r   r   r   )r   r   r   r   rS   )r   r   r,   r@   r   )r   r   r,   r@   r   r   r   r,   r   )r   r   r*   r   r   )r   r   r   r   r   )r   r   r   r   r   r   r   rA   )r   r   r*   rB   rs   )r   r   r*   rB   r   )r   r   r+   rp   r   )r   r   r+   rp   r   )r   r   r,   r   r   )r   r   r,   r   r   )r   r   r+   r   r   )r   r   r   r   r   )r   r   r   r   rs   rs   r   r   r   r   r   r   r   r   TrW   rx   ry   )r   r:   rY   r   r   r[   r\   r   )r]   r   r(   r`   ra   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 )'NrB   r   rA   rs   r@   r   r   r   r   )r   r   rs   r   r   r   wxr   yr   rr   qr   charr8   r   rS   )rB   r   r   )rB   r   r   )rB   r   r   )rB   r   r   )r@   r   r   )r@   r   r   )r   r   r   )r   r   r   r   r   rs   rs   r   TrW   rx   ry   rU   rT   )r   r:   rY   r   r   r[   r\   r   r
   rZ   r   r   r#   )r]   r   r(   r`   ra   	expected2s         r    test_left_join_index_multi_matchz/TestMergeMulti.test_left_join_index_multi_matchF  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          t          d          t          j                            d          t          j                            d          t          d          t          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          }|                    d
gd          }|                    |          }t          j
        ||           d S )Nabcder   )idv1r   dummyv3r8   r@   rA   gX9v?gʡE@)r   sv3r   r   rS   rs   )axis)r   r   r   r   r   r   r
   rV   rY   r[   r\   )r]   r   r(   r`   rdfra   s         r   test_left_merge_na_bugletz(TestMergeMulti.test_left_merge_na_bugletx  s
   7mmiooa((iooa((giooa((  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   r8   r*   r  r  r  r   r   i)r   r   r   r
   ro   replacer[   r\   )r]   r   frame
other_dataotherr`   ra   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-01r@   r8   )i  i  i  r   )r@   key_1innerrS   )key_0a_xa_yr   pdto_datetimer#   r  r   r   r   r
   r[   r\   )r]   r  r'   	on_vector	exp_yearsra   r`   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    rJt          ddgd d gd|
          }|                    |dddg          }|                    |d          }nIt          d d g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
   rY   r[   r\   )r]   r  r   r(   expected_indexra   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"D\  %  H !JJu&fg=NJOOM99U977LL "D\ #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   rs   r   )ffffAPAi^ )household_idmalewealthr8   r%  r9   )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rs   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?r8        ?r6  )r%  asset_idr   sharer8   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   rs   rs   r   r   r   )r#  r$  r$      xAr?  r?  )r0  r1  r2  r2  r3  r4  )r6  r7  r8  r9  r8  r:  )rs   r   r   r   r   r   )r+  r,  r-  r-  r.  r/  )r&  r'  r   r<  r%  r;  r%  r;  )r&  r'  r   r<  r8   )r   r:   reindex)r]   ra   s     r   ra   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   rY   r[   r\   r]   r=  r(  ra   r`   s        r   test_join_multi_levelsz%TestMergeMulti.test_join_multi_levelsF  sP    NN$$	NN$$	 	w77
fh/////r   c                    |                                 }|                                 }t          |                                |                                dgd                              ddg          }t	          j        ||           d S )Nr%  r  rS   r;  )r   r
   rZ   r:   r[   r\   rB  s        r   (test_join_multi_levels_merge_equivalencez7TestMergeMulti.test_join_multi_levels_merge_equivalenceO  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<  r6  r   r%  r;  r   r   r   T)r   rX   r8   )r   rY   r	   r   r   r   r   r   r@  r%   r[   r\   rB  s        r   test_join_multi_levels_outerz+TestMergeMulti.test_join_multi_levels_outer\  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
ValueErrorrY   	set_names)r]   r=  r(  
portfolio2s       r   test_join_multi_levels_invalidz-TestMergeMulti.test_join_multi_levels_invalidr  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.  r/  r5  )r%  r;  r<  r8   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.  )rQ  rR  rS  rQ  rR  rS  rT  rU  )r8  r8  r8  r9  r9  r9  r8  r8  )rV  rW  rX  rV  rW  rX  rY  rZ  )r%  r;  r[  r<  r\  )r%  r;  r[  r<  r\  r  rS   )rs   r   r   r   r   r   r   r   r   r   r   r   )r+  r+  r-  r-  r-  r-  r-  r-  r.  r.  r/  N)NNrQ  rR  rS  rQ  rR  rS  rT  rU  NN)r6  r7  r8  r8  r8  r9  r9  r9  r8  r8  r:  r6  )NNrV  rW  rX  rV  rW  rX  rY  rZ  NNr   )	r   r   r   r:   r@  r
   rZ   r[   r\   )r]   r(  r\  ra   r`   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__rb   rJ  markparametrizer   r   r   r   r   r   r   r   r  r   asarrayr   r   r  r!  fixturer(  r=  ra   rC  rE  rG  rO  r]  r;   r   r   rQ   rQ   M   s       0 0 0$ [VeT]335' 5' 435'n [VeT]33C C 43C 0 0 0&$ $ $4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   rQ   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
   rZ   r:   
sort_indexrY   r[   r\   r]   r<   rK   r^   rM   rO   ra   r`   s           r   test_join_multi_multiz(TestJoinMultiMulti.test_join_multi_multi"  s    
 &&(('')) 	   Y~&&Z\\ 	 )<<GGII
fh/////r   c                    |                     |j                  }|                     |j                  }t          |                                |                                ||                              |                                          }|                    ||                                          }t          j        ||           d S )Nr8   r   r   )	rV   r%   r
   rZ   r:   rh  rY   r[   r\   ri  s           r   test_join_multi_empty_framesz/TestJoinMultiMulti.test_join_multi_empty_frames4  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]   rm  r'   r  r  ra   r`   s          r   r  z,TestJoinMultiMulti.test_merge_datetime_indexH  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)rp  X1)K1X2keyr   r   )A0A1A2)B0B1B2)r*   r+   r   ))rp  Y0)rs  Y1)K2Y2)r~  Y3r   )C0C1C2C3)D0D1D2D3)r,   r   r  rS   )ru  r   r   )	r   r   r   rY   r
   rZ   r:   r[   r\   )r]   
index_leftr   index_rightr(   r`   ra   s          r   test_single_common_levelz+TestJoinMultiMulti.test_single_common_level_  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 )Nrs   r   r   r   r@   rA   r   ))r   rs   )r   r   )r   rs   r   )r         (   )r#   r   r   )r   r   fingr  r   r   )r   r   )	r   r   r   r   rY   r   r   r[   r\   )r]   midx1midx3r   r(   r`   ra   s          r   test_join_multi_wrong_orderz.TestJoinMultiMulti.test_join_multi_wrong_orderx  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_  r`  rj  rl  rJ  ra  rb  r   rc  r   r   r  r  r  r;   r   r   rf  rf  !  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   rf  )numpyr   rJ  pandasr  r   r   r   r   r   r   pandas._testing_testingr[   pandas.core.reshape.concatr	   pandas.core.reshape.merger
   rd  r   r(   r<   rK   rM   rO   rQ   rf  r;   r   r   <module>r     s                                 - - - - - - + + + + + + A A A    
A 
A 
A 
A 
A 
A / / / G G GQ0 Q0 Q0 Q0 Q0 Q0 Q0 Q0hh0 h0 h0 h0 h0 h0 h0 h0 h0 h0r   