
    d*              
       N   d dl mZ d dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZ d dlm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d# Zd$ Zej                            d%ej         ej!        g          d&             Z"d' Z#dS )(    )productN)	hashtable)NADatetimeIndex
MultiIndexSeriesnamesfirstsecondc                 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   aaaaababaaaba)r   from_arraysuniquer	   tmassert_index_equallist)r	   miresexps       f/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/indexes/multi/test_duplicates.pytest_uniquer      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"""""    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-01r"   r"   r"   NaTr#   )r"   r"   
2015-01-02r$   r#   r"   z
Asia/Tokyo)tz)r"   r"   r#   r#   )r"   r$   r#   r"   )r   r   r   r   r   r   )idx1idx2resulteidx1eidx2r   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   r/   r      r
   r   r   )r   get_level_valuesr   r   r   r   )idxr,   r(   expectedr   s        r   test_unique_levelr5   ;   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   )r8   r8   Br:   r:   )r   r   r   r   r/   z4Level values must be unique: \[[AB', ]+\] on level 0)r8   r:   r8   r8   r:   )r   r   r/   r1   )pytestraises
ValueErrorr   ranger   
set_levels)msgr   s     r   test_duplicate_multiindex_codesrB   O   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   r/   r   T)r,   inplacer   r.   )r   from_productr	   rename)r	   r   s     r   test_duplicate_level_namesrH   ]   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   levelscodesNumUpper)r   	set_nameshas_duplicatesdrop_duplicatesr	   )r   r3   s     r   test_duplicate_meta_datarU   n   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   rJ   rK   rL   rM   r   rC   )r   r   r   r   )rW   r   r   r   r   )rW   rW   r   r   r   r   )rW   rW   r   r   r   r   )	is_uniquerS   r   )r3   idx_dupr   mi_nan
mi_nan_dups        r   test_has_duplicatesr\   ~   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zr1   yinr`      )r^   r_   r`      ra   rb   r`   w   )r^   r_   r`   	   ra   rb   r`      )r^   r_   r`      ra   rb   r`      )r^   r_   r`      ra   rb   r`      )r^   r_   r`      ra   rb   r`   z   )r^   r_   r`      ra   rb   r`      )r^   r_   r`      ra   rb   r`      )r^   r_   r`      ra   rb   r`      )r^   r_   r`      ra   rb   r`      )r^   r_   r`      ra   rb   r`      )r^   r_   r`      ra   rb   r`   o   )r^   r_   r`      ra   rb   r`   r   )r^   r_   r`      ra   rb   r`   y   )r^   r_   r`      ra   rb   r`   ~   )r^   r_   r`       ra   rb   r`      )r^   r_   r`   !   ra   rb   r`   {   )r^   r_   r`      ra   rb   r`      )r   from_tuplesrS   )tr   s     r   test_has_duplicates_from_tuplesr      s:    	 	 	A* 
		"	"B      r    nlevelsr0      
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   rW   c                 8    g | ]}                                 S  )copy).0irO   s     r   
<listcomp>z0test_has_duplicates_overflow.<locals>.<listcomp>   s!    666!666r    r   r   rM   c                 :    t          j        | d| d                   S )N  r   )npinsert)r   s    r   fz'test_has_duplicates_overflow.<locals>.f   s    9Qad+++r    )r   tilearanger?   arrayrepeatr   rS   r   mapvaluestolistr   )	r   r   r,   r   rN   r   r   r   rO   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)rY   r   r4   r(   s       r   test_duplicatedr      s3     T**F11111r    c                 \   d\  t          j                  t          j                  dt          j                  z   g}fd|D             }t	          ||          }|                    |           }t          j        |j        |           }t          j        ||           d S )N)   i  r   c                 V    g | ]%}t           j                            z            &S r   )r   randomchoice)r   levkns     r   r   z)test_duplicated_large.<locals>.<listcomp>   s/    :::CRYaQ'':::r    rM   r   )	r   r   r   makeStringIndexr   r   r   r   r   )r   rN   rO   r   r(   r4   r   r   s         @@r   test_duplicated_larger      s     DAqillB.q114")A,,3FGF:::::6:::E	6	/	/	/B]]]%%F#BID999H11111r    c            
      B   dD ]j} t          j        d| gdt          j        gg          }|j        rJ t          j        |                                t          j        dd                     kt          dd          D ]}t          dd	          D ]
}t          t          d
|          t          d
|                    }t          t          d          d |         t          d          d |         gt          j                            t          |                    j                  }t          |          |dz   |dz   z  k    sJ |j        rJ t          j        |                                t          j        t          |          d                     !d S )N)e   f   r   g      @r   booldtyper      r1   rW   abcdeWXYZrM   )r   r   r   nanrS   r   r   r   zerosr?   r   r   r   permutationTlen)r   r   r   mrO   s        r   test_duplicated2r      s     P P#c1XRV}$=>>$$$$
#BMMOORXav5N5N5NOOOO1a[[  q! 	 	AE"aLL%A,,77EWbqb)4<<+;<i++DKK88:  B r77q1uQ/////(((('#b''!@!@!@   	 r    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   r/   r   r   r/   )r   r   r   r   r   r   )FFFTFFr   )r   r   r/   r   r/   )r   r   r   r   r   )TFFFFFr   r   )r   r/   r   r   r/   )TFFTFFF)r   r/   r   r/   )r   r   r   r   )r   r   r   r   r   r   r   r   r   r   rT   )r3   r4   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   r4   r(   s      r   &test_duplicated_series_complex_numbersr   *  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   r/   r/   r   rC   r   )r   r   r/   )	r   r   r   r   r   r   r   r   r   )vals_avals_bmidxr(   
exp_vals_a
exp_vals_br4   s          r   test_midx_unique_ea_dtyper   I  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   r<   pandas._libsr   pandasr   r   r   r   pandas._testing_testingr   markparametrizer   r+   r5   rB   rH   rU   r\   r   r   r   r   arm_slowr   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  2E E E4 

 - - -0
, 
, 
, 
, 
,r    