
    Mh               	       B   S SK rS SKrS SKJrJrJrJrJrJ	r	  S SK
Jr  \R                  R                  S\" / SQ5      \" S/5      \" SS/5      /5      S 5       rS rS	 rS
 rS rS rS rS rS rS r\R                  R                  SS S/5      S 5       rS rS rg)    N)	DataFrameIndexInterval
MultiIndexSeriesStringDtypeotherthreeonetwor   r   c                    UR                  XSSS9u  p4nUR                  U R                  S   US9nUR                  S   R                  U R                  S   5      (       d   eUR                  S   R                  U5      (       d   e[        R                  " U  Vs/ s H
  owS   U;   PM     sn[
        S9nU R                  U   n	[        R                  " UR                  U	5        US;   az  U R                  XSSS9u  pnUR                  U
5      (       d   e[        R                  " XL5        [        R                  " X[5        [        R                  " U
R                  U	5        g g s  snf )	NsecondT)howlevelreturn_indexers   r   r   dtype)outerinner)	joinlevelsequalsnparrayboolvaluestmassert_numpy_array_equal)idxr	   	join_type
join_indexlidxridx	exp_levelxmask
exp_valuesjoin_index2ridx2lidx2s                V/var/www/html/env/lib/python3.13/site-packages/pandas/tests/indexes/multi/test_join.pytest_join_levelr/      sT    #ZZ(D ( Jd 

3::a=i
8IQ&&szz!}5555Q&&y1111 8841qTY&4DADD!J
 1 1:>&&$'HH$ %- %
!E   ----
##D0
##D0
##K$6$6
C '	 5s   E)c                     [        / SQ5      nUR                  U SS9n[        U[        5      (       d   e[        R
                  " [        SS9   U R                  U SS9  S S S 5        g ! , (       d  f       g = f)Nr
   r   )r   zJoin.*MultiIndex.*ambiguous)matchr   )r   r   
isinstancer   pytestraises	TypeError)r"   indexresults      r.   test_join_level_corner_caser8   +   s^    )*EZZ8Z,Ffj))))	y(E	FA 
G	F	Fs   A((
A6c                 ~    U R                  XS9nU nUS:X  a  UR                  5       n[        R                  " X#5        g )Nr   r   )r   sort_valuesr    assert_index_equal)r"   r#   r7   expecteds       r.   test_join_selfr=   5   s;    XXcX)FHG'')&+    c                  F   [         R                  " [        R                  " S5      [        R                  " S5      /SS/S9n [	        / SQSS9nU R                  USSS	9u  p#n[         R                  " [        R                  " S5      S
S//SS/S9n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9n[        R                  " X%5        [        R                  " X65        [        R                  " XG5        UR                  U SSS	9u  p$n[        R                  " X%5        [        R                  " X65        [        R                  " XG5        U R                  USSS	9u  p#n[        R                  " / SQ[        R                  S9n[        R                  " X 5        Ub   e[        R                  " XG5        UR                  U SSS	9u  p$n[        R                  " X 5        Ub   e[        R                  " XG5        g )N   abnames)r         )namer   T)r   r   r   rE   )r   rE   rF      	   
         r   )r   r   r   r   r   r   r   r   left)r   r   rN   rN   r   r   rN   rN   r   r   rN   rN   r   r   rN   right)r   from_productr   aranger   r   r   intpr    r;   r!   )midxr"   jidxr%   r&   exp_idxexp_lidxexp_ridxs           r.   test_join_multirX   =   s   ""BIIaL"))A,#?SzRD
	
$C yy'4yHD%%ryy|aV&<S#JOGxx3277CHxx0@H$(//xx'4xHD$(// yy&$yGDxx@H $%<</xx'4xHD$%<</r>   c                  J   [         R                  " SS/SS//SS/S9n [         R                  " SS/SS//SS/S9nU R                  USS	9u  p#n[        R                  " / S
Q[        R
                  S9n[        R                  " X5        Ub   e[        R                  " XE5        g )Nr   rE      r@   rA   rB   rC   Tr   )rN   rN   rN   rN   r   )	r   rP   r   r   r   rR   r    r;   r!   )midx1midx2join_idxr%   r&   rW   s         r.   test_join_multi_wrong_orderr_   _   s     ##aVaV$4S#JGE##aVaV$4S#JGE ::eT:BHDxx(8H%*<</r>   c                      [         R                  " SS/SS/SS/// SQS9n [         R                  " SS/SS//S	S
/S9nU R                  USS9n[        R                  " X 5        g )Nr   rE   rZ   r@   rF   rH   rA   rB   crC   rA   rB   Fr[   )r   rP   r   r    r;   )r\   r]   r7   s      r.   test_join_multi_return_indexersrc   o   sl     ##aVaVaV$<OTE##aVaV$4S#JGEZZuZ5F&(r>   c                     [         R                  " S[        SS5      4S[        SS5      4S[        SS5      4S[        SS5      4S[        SS5      4S[        SS5      4/SS	/S
9n [         R                  " S[        SS5      4S[        SS5      4S[        SS5      4S[        SS5      4S[        SS5      4S[        SS5      4/SS	/S
9n[         R                  " S[        SS5      4S[        SS5      4S[        SS5      4S[        SS5      4S[        SS5      4S[        SS5      4/SS	/S
9nU R                  USS9n[        R
                  " X25        g )Nr   g              ?       @g      @rE   g      @numintervalrC   r   r   )r   from_tuplesr   r   r    r;   )idx_1idx_2r<   r7   s       r.   $test_join_overlapping_interval_levelrl   y   s   ""c"#c"#c"#c"#c"#c"#	
 j!
E ""c"#c"#c"#c"#c"#c"#	
 j!
E %%c"#c"#c"#c"#c"#c"#	
 j!
H ZZ7Z+F&+r>   c            	      p   [         R                  " [        / SQSS9[        / SQSS9/SS/S9n [         R                  " [        S/SS9[        S	/SS9/SS
/S9nU R                  USS9n[         R                  " [        SS/SS9[        SS/SS9[        S	S	/SS9// SQS9n[        R
                  " X#5        g )N)r   r   rZ   Int64r   )r   rE   rZ   rA   rB   rC   r   rZ   rb   r   r   rE   ra   )r   from_arraysr   r   r    r;   rS   r]   r7   r<   s       r.   test_join_midx_earq      s    !!			)6)7+KLCjD ""	7	#VQCw%?@c
E YYu'Y*F%%Aq6)Aq6)Aq6)	

 H &+r>   c            	         [         R                  " [        / SQ[        5       S9[        / SQ[        5       S9/SS/S9n [         R                  " [        S/[        5       S9[        S/[        5       S9/SS/S9nU R	                  USS	9n[         R                  " [        SS/[        5       S9[        SS/[        5       S9[        SS/[        5       S9// SQS9n[
        R                  " X#5        g )
N)rA   rA   rb   r   ra   rA   rB   rC   rb   r   r   )r   ro   r   r   r   r    r;   rp   s       r.   test_join_midx_stringrs      s    !!?+-8?+-8	
 CjD ""	[]	+VSE-OPCjE YYu'Y*F%%C:[]3C:[]3C:[]3	

 H &+r>   c                     [        SSS/0[        R                  " S/SS//SS/S	9S
9n [        SSS/0[        R                  " S/[        R                  S//SS/S	9S
9nU R                  U5      n[        SS/[        R                  S/S.[        R                  " S/SS//SS/S	9S
9n[        R                  " X#5        g )Ncol1g?g333333?Are   rf   id1id2rC   )datar6   col2g @g@)ru   rz   )r   r   rP   r   nanr   r    assert_frame_equal)df1df2r7   r<   s       r.   test_join_multi_with_nanr      s    
sCj!%%usCj&9%PC sCj!%%urvvsm&<UENSC XXc]FCj2663-8%%usCj&9%PH &+r>   valrF   c                 F   [         R                  " [        SS/U S9SS//5      n[         R                  " [        SX/U S9/ SQ/5      nUR                  USS9n[         R                  " [        XSS/U S9/ S	Q/5      R	                  5       n[
        R                  " XE5        g )
Nr   rE   r   rZ   r@   )rZ   r@   r@   r   r   )r@   r@   rZ   r@   )r   ro   r   r   r:   r    r;   )any_numeric_ea_dtyper   rS   r]   r7   r<   s         r.   test_join_dtypesr      s     !!61a&8L#MPQSTv"VWD""	C%9	:IFE YYu'Y*F%%	1a (<	=|Lkm  &+r>   c                 *   [         R                  " [        SS/U S9[        R                  [        R                  //5      n[         R                  " [        / SQU S9[        R                  [        R                  [        R                  //5      nUR                  USS9n[         R                  " [        / SQU S9[        R                  [        R                  [        R                  [        R                  //5      n[        R                  " X45        g )Nr   rE   r   )r   r   r   r   r   )r   r   r   rE   )r   ro   r   r   r{   r   r    r;   )r   rS   r]   r7   r<   s        r.   test_join_dtypes_all_nanr      s    !!	A2	3bffbff5EFD ""		!5	68PQE YYu'Y*F%%<';<VVRVVRVVRVV,	
H &+r>   c                  @   [         R                  " SS/5      n [         R                  " S/5      nU R                  USS9n[         R                  " / SQ5      n[        R                  " UR
                  S   UR
                  S   5        [        R                  " X#5        g )NrA   z
2019-02-01rA   z
2019-01-31r   r   )r   r   r   r   )r   ri   r   r    r;   r   rp   s       r.   test_join_index_levelsr     s    ((*=?R)ST4""$7#89EYYu'Y*F%%GH &--*HOOA,>?&+r>   )numpyr   r3   pandasr   r   r   r   r   r   pandas._testing_testingr    markparametrizer/   r8   r=   rX   r_   rc   rl   rq   rs   r   r   r   r    r>   r.   <module>r      s        e+,eUGneUGDT>UVDD2,0D0 )',T,*,2,$ A'
, (
,,$	,r>   