
    Owg'-              
       j   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(                  j+                  ddddgg      d	        Zd
 Zej(                  j+                  dg d      d        Zd Zej(                  j+                  dg dg dg dg      d        Zd Zd Zd Zej(                  j+                  dddg      ej(                  j+                  dddg      d               Zej(                  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(                  jB                  d#        Z"ej(                  j+                  d$d%d&g      d'        Z#ej(                  j+                  d( e$d)d*            ej(                  j+                  d+ e$d)d,            d-               Z%d. Z&ej(                  j+                  d/ejN                  ejP                  g      d0        Z)d1 Z*y)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         a/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/indexes/multi/test_duplicates.pyidx_dupr"      sl     34Ju~&J((-.K((-.KH%K	J'K(	
B I    r   r   r   c                 N   t        j                  g dg dg|       }|j                         }t        j                  g dg dg|j                        }t	        j
                  ||       t        j                  t        d      t        d      g|       }|j                         }t        j                  t        d      t        d	      g|j                        }t	        j
                  ||       t        j                  t        d      t        d      g|       }|j                         }t        j                  d
gd
gg|j                        }t	        j
                  ||       t        j                  g g g|       }|j                         }t	        j
                  ||       y )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   '   s7   			| <E	JB
))+C

 
 )Y!7rxx
HC#s#			ftF| <E	JB
))+C

 
 $t*d4j!9
JC#s#			ftF| <E	JB
))+C

 
 3%#rxx
@C#s# 
		R	6B
))+C"c"r#   c                     t        g d      } t        g dd      }t        j                  | |g      j                         }t        g d      }t        g dd      }t        j                  ||g      }t	        j
                  ||       y )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D UD ##T4L188:FDEE9lE 
 
 %
0C&#&r#   level)r   r   r   r   c                    | j                  |      }| j                  |      j                         }t        j                  ||       t	        j
                  g dg dgddg      }|j                  |      }|j                  |      }t        j                  ||       t	        j
                  g g gddg      }|j                  |      }|j                  |      }t        j                  ||       y )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3H&(+ 
		| <WhDW	XBYYUY#F""5)H&(+ 
		R(0C	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        t        j
                  g dg dg      }d} t        j                  t        |       5  |j                  g d	g d
g       d d d        y # 1 sw Y   bxY w# 1 sw Y   y xY w)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#U2Y/1#(E"I1FGH 
		!:O L	MB
AC	z	- E
02BCDE EH HE Es   +B*	B6*B36B?)r,   br,   r'   )r   r,   r   c                 d   t        j                  ddggdz  |       }|j                  | k(  sJ t        j                  ddggdz        }|j                  |       }|j                  | k(  sJ |j                  | d   dd       |j                  | d   | d   gddg      }|j                  | k(  sJ y )	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88u 
	 	 1a&A	.B	5	B88u IIeAhaI.	E!HeAh'1v	6B88ur#   c                      t        ddgg dgg dg dg      } | | j                  d d g      | j                  d dg      | j                  ddg      fD ]9  }|j                  sJ |j                         j                  |j                  k(  r9J  y )	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	"+@BW*X
B
 	
dD\"
dE]#
gu%&	 8 !!!!""$**cii777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 y )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      s5   ==D   &&&%%%!!T)))	A	"+@BW*X
B <<5   $$$ c
QF#,<>N+OF t###  E))) c
QF#,@BV+WJ 5((($$,,,r#   c                  R    g d} t        j                  |       }|j                  rJ y )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      }|rwd|d<   t        |       D cg c]  }|j	                          }}t        |       D ]  }d||   d|z   | dz  z
  <    |t        j
                  ddg      j                  d      gz  }n,|g| z  t        j                  d      j                  d      gz   }|g| z  ddggz   }t        ||      }|j                  rJ |r&d }t        t        ||            }t        ||      }n6|j                  j                         }t        j                  ||d   gz         }|j                  sJ y c c}w )Ni  r%   ri   r   r   ra   c                 6    t        j                  | d| d         S )N  r   )r   insert)r,   s    r!   fz'test_has_duplicates_overflow.<locals>.f   s    99Qad++r#   )r   tilearangerS   copyr   repeatr	   re   r1   mapvaluestolistr   )	r   r   r   r@   ir   r    r   r   s	            r!   test_has_duplicates_overflowr      sk    GGBIIcNA&EIIcNEc
',W~6!66w 	2A/1E!HS1Ww!|+,	2 	"((B7#**3/00'!RYYq\%8%8%=$>>Ww1a&)F 
6	/B     	, SE]#vU3!!###FfQi[$895 7s   E8zkeep, expected)FFFTTFlast)FTTFFF)FTTTTFc                 T    | j                  |      }t        j                  ||       y )Nkeep)
duplicatedr/   assert_numpy_array_equal)r"   r   rH   r<   s       r!   test_duplicatedr      s'     T*F1r#   c                 `   d\  }}t        j                  |      t        |      D cg c]  }t        |       c}dt        j                  |      z   g}|D cg c]4  }t         j                  j                  d      j                  |||z        6 }}|j                         5 }|j                  t        dd       t        ||      }	|	j                  |       }
t        j                  |	j                  |       }d d d        t        j                  
       y c c}w c c}w # 1 sw Y   *xY w)N)   rM   r   r%   _SIZE_CUTOFF2   ra   r   )r   r   rS   strrandomdefault_rngchoicecontextsetattrlibindexr	   r   r   r   r/   r   )r   monkeypatchnkr   r   _r   mr    r<   rH   s               r!   test_duplicated_hashtable_implr      s     DAqiilU1X6SV6ryy|8KLF@FG1RYY""1%,,QA6GEG				 >!			(NB/vU3D)''		=> 1 7G> >s   D9D#AD$$D-vale   f   c                     t        j                  d| gdt        j                  gg      }|j                  rJ t        j                  |j                         t        j                  dd             y )Nr   g      @r%   booldtype)	r	   r-   r   nanre   r/   r   r   zeros)r   r    s     r!   test_duplicated_with_nanr     sU     
		#sc266] ;	<B    !61JKr#   r   r   r   r   rE   c                    t        t        d|       t        d|            }t        t        d      d |  t        d      d | gt        j
                  j                  d      j                  t        |            j                        }t        |      | dz   |dz   z  k(  sJ |j                  rJ t        j                  |j                         t	        j                  t        |      d             y )	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"aL%A,/E	Wbq!4<#34ii##A&224;?AA
B r7q1uQ''''    #b'1PQr#   c                     t        j                  g dg df      } t        j                  g dt              }| j                         }t        j                  ||       |j                  t        k(  sJ t        j                  g dg df      }t        j                  | j                         |       t        j                  g d      }| j                  d	      }t        j                  ||       |j                  t        k(  sJ t        j                  g d
g df      }t        j                  | j                  d	      |       t        j                  g d      }| j                  d	      }t        j                  ||       |j                  t        k(  sJ t        j                  g dg df      }t        j                  | j                  d	      |       y )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   (  st   

 
 "46H!I
JCxxANH!J
H5t###%%&HIH#--/:xxABHV,J
H5t###%%&HIH#--6-:HExx@AHU+J
H5t###%%|\&BCH#--5-98Dr#   r   c                 D   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
|       j	                         }t        j                  ||       y )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H FFRVVb[ FFFFRVVb[ 	
  jl  68,r#   c                  r   t        ddt        t        gd      } t        j                  g d      }t	        j
                  | |gddg      }|j                         }t        ddt        gd      }t        j                  g d	      }t	        j
                  ||gddg      }t        j                  ||       y )
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'2FXXl#F!!66"23*ED[[]FAr
'2J)$J%%z:&>sCj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!   <module>r      s]     
    " 4'8)<"=># ?#.'$ ";<, =,&E ?I{"KL M 8 -8!6 QF+e}5# 6 ,#L 	("((CDE	BCD	?@A22
 2 2 c
+L ,L eAqk*eAqk*R + +RE4 

--0
,r#   