
    bMh'-              
       n   d dl mZ d dlZd dlZd dlmZmZ d dl	m
Z
mZmZmZmZ d dlmZ ej        d             Zej                            ddddgg          d	             Zd
 Zej                            dg d          d             Zd Zej                            dg dg dg dg          d             Zd Zd Zd Zej                            dddg          ej                            dddg          d                         Zej                            dd ej        g d          fd ej        g d           fd ej        g d!          fg          d"             Z ej        j!        d#             Z"ej                            d$d%d&g          d'             Z#ej                            d( e$d)d*                    ej                            d+ e$d)d,                    d-                         Z%d. Z&ej                            d/ej'        ej(        g          d0             Z)d1 Z*dS )2    )productN)	hashtableindex)NADatetimeIndexIndex
MultiIndexSeriesc                      t          g d          } t          ddg          }t          j        g d          }t          j        g d          }ddg}t          | |g||g|d	          }|S )
N)foobarbazquxonetwo)r   r      r   r   r   )r   r   r   r   r   r   firstsecondF)levelscodesnamesverify_integrity)r   nparrayr	   )
major_axis
minor_axismajor_codesminor_codesindex_namesmis         j/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/indexes/multi/test_duplicates.pyidx_dupr"      s     33344Ju~&&J(---..K(---..KH%K	J'K(	
 
 
B I    r   r   r   c                 l   t          j        g dg dg|           }|                                }t          j        g dg dg|j                  }t	          j        ||           t          j        t          d          t          d          g|           }|                                }t          j        t          d          t          d	          g|j                  }t	          j        ||           t          j        t          d          t          d          g|           }|                                }t          j        d
gd
gg|j                  }t	          j        ||           t          j        g g g|           }|                                }t	          j        ||           d S )N)r      r   r%   )r   r   r   r%   r   )r   r%   r%   r   r   r%   aaaaababaaaba)r	   from_arraysuniquer   tmassert_index_equallist)r   r    resexps       r!   test_uniquer4   '   s|   		||| <E	J	J	JB
))++C

 )))YYY!7rx
H
H
HC#s###		ftF|| <E	J	J	JB
))++C

 $t**d4jj!9
J
J
JC#s###		ftF|| <E	J	J	JB
))++C

 3%#rx
@
@
@C#s### 
	R	6	6	6B
))++C"c"""""r#   c                  <   t          g d          } t          g dd          }t          j        | |g                                          }t          g d          }t          g dd          }t          j        ||g          }t	          j        ||           d S )N)
2015-01-01r6   r6   r6   NaTr7   )r6   r6   
2015-01-02r8   r7   r6   z
Asia/Tokyo)tz)r6   r6   r7   r7   )r6   r8   r7   r6   )r   r	   r-   r.   r/   r0   )idx1idx2resulteidx1eidx2r3   s         r!   test_unique_datetimeliker?   ?   s    NNN D UUU  D #T4L1188::FDDDEEE999l  E 
 %
0
0C&#&&&&&r#   level)r   r   r   r   c                    |                      |          }|                     |                                           }t          j        ||           t	          j        g dg dgddg          }|                     |          }|                    |          }t          j        ||           t	          j        g g gddg          }|                     |          }|                    |          }t          j        ||           d S )Nr@   )r      r%      )r   rC   r%      r   r   r&   )r.   get_level_valuesr/   r0   r	   r-   )idxr@   r<   expectedr    s        r!   test_unique_levelrI   Q   s
    ZZeZ$$F##E**1133H&(+++ 
	||| <WhDW	X	X	XBYYUY##F""5))H&(+++ 
	R(0C	D	D	DBYYUY##F""5))H&(+++++r#   c                     d} t          j        t          |           5  t          dgdz  t	          d          gdgdz  t	          d          g          }d d d            n# 1 swxY w Y   t          j        g dg dg          }d} t          j        t          |           5  |                    g d	g d
g           d d d            d S # 1 swxY w Y   d S )Nz3Level values must be unique: \[[A', ]+\] on level 0)matchA
   r   )rL   rL   BrN   rN   )r   r%   r   r%   rC   z4Level values must be unique: \[[AB', ]+\] on level 0)rL   rN   rL   rL   rN   )r%   r   rC   rE   )pytestraises
ValueErrorr	   ranger-   
set_levels)msgr    s     r!   test_duplicate_multiindex_codesrV   e   s    AC	z	-	-	- H H#U2YY/1#(E"II1FGGH H H H H H H H H H H H H H H 
	!:!:!:OOO L	M	MB
AC	z	-	-	- E E
0002B2B2BCDDDE E E E E E E E E E E E E E E E E Es#   7A!!A%(A%#CCC)r,   br,   r'   )r   r,   r   c                 t   t          j        ddggdz  |           }|j        | k    sJ t          j        ddggdz            }|                    |           }|j        | k    sJ |                    | d         dd           |                    | d         | d         gddg          }|j        | k    sJ d S )	Nr   r   rC   r&   T)r@   inplacer%   rB   )r	   from_productr   rename)r   r    s     r!   test_duplicate_level_namesr\   s   s     
	 1a&AU	;	;	;B8u 
	 1a&A	.	.B	5		B8u IIeAhaI...	E!HeAh'1v	6	6B8ur#   c                  *   t          ddgg dgg dg dg          } | |                     d d g          |                     d dg          |                     ddg          fD ]/}|j        sJ |                                j        |j        k    sJ 0d S )	Nr   r   r   r   r%   r   r   r   r   r   r   r   r   r   r%   r   r   r   r%   r   r   NumUpper)r	   	set_nameshas_duplicatesdrop_duplicatesr   )r    rG   s     r!   test_duplicate_meta_datarg      s    	A			"+@+@+@BWBWBW*X
 
 
B
 	
dD\""
dE]##
gu%&&	 8 8 !!!!""$$*ci777778 8r#   c                    | j         du sJ | j        du sJ |j         du sJ |j        du sJ t          ddgg dgg dg dg          }|j         du sJ |j        du sJ t          d	d
gddggg dg dg          }|j         du sJ |j        du sJ t          d	d
gddggg dg dg          }|j         du sJ |j        du sJ d S )NTFr   r   r^   r_   r`   ra   r,   rW   )r   r   r   r   )ri   r   r   r   r   )ri   ri   r   r   r   r   )ri   ri   r   r   r   r   )	is_uniquere   r	   )rG   r"   r    mi_nan
mi_nan_dups        r!   test_has_duplicatesrm      s   =D    &&&&%%%%!T))))	A			"+@+@+@BWBWBW*X
 
 
B <5    $$$$ c
QF#,<,<,<>N>N>N+O  F t#### E)))) c
QF#,@,@,@BVBVBV+W  J 5(((($,,,,,,r#   c                  H    g d} t          j        |           }|j        rJ d S )N))xoutzrE   yinrq      )ro   rp   rq      rr   rs   rq   w   )ro   rp   rq   	   rr   rs   rq      )ro   rp   rq      rr   rs   rq      )ro   rp   rq      rr   rs   rq      )ro   rp   rq      rr   rs   rq   z   )ro   rp   rq      rr   rs   rq      )ro   rp   rq      rr   rs   rq      )ro   rp   rq      rr   rs   rq      )ro   rp   rq      rr   rs   rq      )ro   rp   rq      rr   rs   rq      )ro   rp   rq      rr   rs   rq   o   )ro   rp   rq      rr   rs   rq   r   )ro   rp   rq      rr   rs   rq   y   )ro   rp   rq      rr   rs   rq   ~   )ro   rp   rq       rr   rs   rq      )ro   rp   rq   !   rr   rs   rq   {   )ro   rp   rq      rr   rs   rq      )r	   from_tuplesre   )tr    s     r!   test_has_duplicates_from_tuplesr      s:    	 	 	A* 
		"	"B      r#   nlevelsrD      
with_nullsTFc                    t          j        t          j        d          d          t          j        d          }|rtdd<   fdt          |           D             t          |           D ]}d|         d|z   | dz  z
  <   t          j        ddg                              d          gz  n/g| z  t          j        d                              d          gz   |g| z  ddggz   }t          |          }|j        rJ |r2d }t          t          |                    t          |          }n7|j
                                        }t          j        ||d         gz             }|j        sJ d S )	Ni  r%   ri   c                 8    g | ]}                                 S  )copy).0ir   s     r!   
<listcomp>z0test_has_duplicates_overflow.<locals>.<listcomp>   s!    666!666r#   r   r   ra   c                 :    t          j        | d| d                   S )N  r   )r   insert)r,   s    r!   fz'test_has_duplicates_overflow.<locals>.f   s    9Qad+++r#   )r   tilearangerS   r   repeatr	   re   r1   mapvaluestolistr   )	r   r   r@   r   r   r    r   r   r   s	           @r!   test_has_duplicates_overflowr      s    GBIcNNA&&EIcNNE ?c
6666uW~~666w 	2 	2A/1E!HS1Ww!|+,,"(B7##**3//00'!RYq\\%8%8%=%=$>>Ww1a&)F 
6	/	/	/B      	:	, 	, 	, SE]]##vU333!!###FfQi[$899r#   zkeep, expected)FFFTTFlast)FTTFFF)FTTTTFc                 \    |                      |          }t          j        ||           d S )Nkeep)
duplicatedr/   assert_numpy_array_equal)r"   r   rH   r<   s       r!   test_duplicatedr      s3     T**F11111r#   c                   	 d\  	t          j        	          d t          	          D             dt          j        	          z   g}	fd|D             }|                                5 }|                    t
          dd           t          ||          }|                    |           }t          j        |j	        |           }d d d            n# 1 swxY w Y   t          j        ||           d S )	N)   rM   c                 ,    g | ]}t          |          S r   )str)r   r   s     r!   r   z2test_duplicated_hashtable_impl.<locals>.<listcomp>  s    666SVV666r#   r   c                 |    g | ]8}t           j                            d                               z            9S )r%   )r   randomdefault_rngchoice)r   _kns     r!   r   z2test_duplicated_hashtable_impl.<locals>.<listcomp>  s=    GGG1RY""1%%,,QA66GGGr#   _SIZE_CUTOFF2   ra   r   )r   r   rS   contextsetattrlibindexr	   r   r   r   r/   r   )
r   monkeypatchr   r   mr    r<   rH   r   r   s
           @@r!   test_duplicated_hashtable_implr      s2    DAqill66U1XX666ry||8KLFGGGGGGGGE					 >!			(NB///vU333D))'	===> > > > > > > > > > > > > > > 11111s   .ACC Cvale   f   c                     t          j        d| gdt          j        gg          }|j        rJ t          j        |                                t          j        dd                     d S )Nr   g      @r%   booldtype)	r	   r-   r   nanre   r/   r   r   zeros)r   r    s     r!   test_duplicated_with_nanr     sb     
	#sc26] ;	<	<B    !61J1J1JKKKKKr#   r   r   r   r   rE   c                 :   t          t          d|           t          d|                    }t          t          d          d |          t          d          d |         gt          j                            d                              t          |                    j                  }t          |          | dz   |dz   z  k    sJ |j
        rJ t          j        |                                t	          j        t          |          d                     d S )	Nri   abcdeWXYZr%   ra   r   r   r   )r   rS   r	   r1   r   r   r   permutationTlenre   r/   r   r   r   )r   r   r   r    s       r!   $test_duplicated_with_nan_multi_shaper     s    
 E"aLL%A,,//E	Wbqb!4<<#34i##A&&224;;??A
 
 
B r77q1uQ'''''    #b''1P1P1PQQQQQr#   c                     t          j        g dg df          } t          j        g dt                    }|                                 }t          j        ||           |j        t          k    sJ t          j        g dg df          }t          j	        | 
                                |           t          j        g d          }|                     d	          }t          j        ||           |j        t          k    sJ t          j        g d
g df          }t          j	        | 
                    d	          |           t          j        g d          }|                     d	          }t          j        ||           |j        t          k    sJ t          j        g dg df          }t          j	        | 
                    d	          |           d S )N)r   r%   rC   r   r%   rC   )r   r   r   r   r%   r%   )FFFTFFr   )r   r%   rC   r%   rC   )r   r   r   r%   r%   )TFFFFFr   r   )r%   rC   r   r%   rC   )TFFTFFF)r%   rC   r%   rC   )r   r   r%   r%   )r	   r-   r   r   r   r   r/   r   r   r0   rf   )rG   rH   r   s      r!   test_duplicated_drop_duplicatesr   (  s   

 "4"4"46H6H6H!I
J
JCxAAANNNH!!J
H555t####%&HIIH#--//:::xAAABBHV,,J
H555t####%&HIIH#--6-::HEEEx@@@AAHU++J
H555t####%|||\\\&BCCH#--5-998DDDDDr#   r   c                 6   t          g dt                    }t          t          j        t          j        dz  z   dddddddt          j        t          j        t          j        dz  z   g
|                                           }t          j        ||           d S )N)
FFFTFFFTFTr   y              ?r   r   y      ?      ?y      ?       @)r
   r   r   r   r   r/   assert_series_equal)r   rH   r<   s      r!   &test_duplicated_series_complex_numbersr   B  s     KKK  H FRVb[ FFRVb[ 	
    jll  68,,,,,r#   c                     t          ddt          t          gd          } t          j        g d          }t	          j        | |gddg          }|                                }t          ddt          gd          }t          j        g d	          }t	          j        ||gddg          }t          j        ||           d S )
Nr   r%   Int64r   )r   r%   rC   rC   r,   rW   r&   )r   r%   rC   )	r
   r   r   r   r	   r-   r.   r/   r0   )vals_avals_bmidxr<   
exp_vals_a
exp_vals_brH   s          r!   test_midx_unique_ea_dtyper   a  s    Q2rN'222FXlll##F!66"23*EEED[[]]FAr
'222J)))$$J%z:&>sCjQQQH&(+++++r#   )+	itertoolsr   numpyr   rP   pandas._libsr   r   r   pandasr   r   r   r	   r
   pandas._testing_testingr/   fixturer"   markparametrizer4   r?   rI   rV   r\   rg   rm   r   r   r   r   arm_slowr   r   rS   r   r   	complex64
complex128r   r   r   r#   r!   <module>r      s                    
                      " 4'8)<"=>># # ?>#.' ' '$ ";";";<<, , =<,&E E E ???III{{{"KLL  ML 8 8 8 - - -8! ! !6 QF++e}55# # 65 ,+#L 	("(CCCDDE	BBBCCD	???@@A 2 2 2
 2 2 2 c
++L L ,+L eeAqkk**eeAqkk**R R +* +*RE E E4 

 - - -0
, 
, 
, 
, 
,r#   