
    Owg                          d Z ddlmZ ddlZddlZddlZddlmZ ddl	m
Z g dZej                  d        Z ej                  e      d        Zd	 Z G d
 d      Zy)z
Note: for naming purposes, most tests are title with as e.g. "test_nlargest_foo"
but are implicitly also testing nsmallest_foo.
    )productN)Series)datetime
datetimetz	timedeltaint8int16int32int64float32float64uint8uint16uint32uint64c                     t        j                  t        j                  g d      t        j                  g d      j                  d      t        j                  g d      d      } dD ]  }t        g d|      | |<    | S )z
    A DataFrame with many dtypes

    * datetime
    * datetimetz
    * timedelta
    * [u]int{8,16,32,64}
    * float{32,64}

    The columns are the name of the dtype.
    )200320022001r   2005z
US/Eastern)3d2d1dr   5d)r   r   r   )
r   r	   r
   r   r   r   r   r   r   r   )         r      dtype)pd	DataFrameto_datetimetz_localizeto_timedeltar   )dfr    s     `/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/series/methods/test_nlargest.pys_main_dtypesr(      st     
'OP..8k,')GH	

B 9 ?%85	9 I    )paramsc                      || j                      S )zEach series in s_main_dtypes.)param)requestr(   s     r'   s_main_dtypes_splitr.   G   s     ''r)   c                     t        | |      } t        ||      d      }|dk(  rg dng d}|j                  |   }t        j                  ||       y )Nr   r   	nsmallest)r   r   r   )r   r   r   )r   getattrloctmassert_series_equal)valsr    methodserresultexpected_idxrexpecteds          r'   assert_check_nselect_boundaryr;   M   sM    
U
#C!WS&!!$F!';!6IIMww}%H68,r)   c                      e Zd Zej                  j                  d eg dd       eg dd       eg dd       e ed             e ed      d      g      d	        Zd
 Z	d Z
ej                  j                  d edd            d        Zd Zd Zej                  j                  dddg      d        Zd Zej                  j                  dddgdgfg ddgfg      d        Zd Zd Zy)TestSeriesNLargestNSmallestr)      @r   r   r   5objectr   )r?   r   r   r   r   
complex128abcdecategoryc                    |j                   }d| }dt        |      ddf}|j                  |j                  f}t	        ||      D ]1  \  }}t        j                  t        |      5   ||       d d d        3 y # 1 sw Y   >xY w)Nz3Cannot use method 'n(largest|smallest)' with dtype r   r   match)r    lennlargestr0   r   pytestraises	TypeError)selfr>   dtmsgargsmethodsr6   args           r'   test_nlargest_errorz/TestSeriesNLargestNSmallest.test_nlargest_errorW   s     WWCB4H#a&!R**akk)"7D1 	KFCy4 s 	 s   &	A::B	c                    |}t        j                  |j                  d      |j                  ddg          t        j                  |j                  dd      |j                  ddg          |j                  dd }t        j                  |j                  d      |       t        j                  |j                  d      |       t        j                  |j	                  d      |       t        j                  |j	                  d      |       t        j                  |j                  t        |            |j                                t        j                  |j                  t        |      dz         |j                                t        j                  |j	                  t        |            |j                  g d          t        j                  |j	                  t        |      dz         |j                  g d          y )	Nr   r   lastkeepr   r   rF   )   r   r   r   r   )r3   r4   r0   ilocrJ   rI   sort_values)rN   r.   r7   emptys       r'   test_nsmallest_nlargestz3TestSeriesNLargestNSmallest.test_nsmallest_nlargestl   sg    "
s}}Q/1a&1AB
s}}QV}<chh1v>NO1
s}}Q/7
s}}R0%8
s||A6
s||B/7
s}}SX68IJ
s}}SX\:COO<MN
s||CH5sxx7PQ
s||CHqL9388O;TUr)   c                    t        dt        j                  dddg      }|j                         }|j                  g d   }t        j                  ||       |j                         }|j                  g d   }t        j                  ||       d}t        j                  t        |      5  |j                  d	
       d d d        t        j                  t        |      5  |j                  d	
       d d d        t        dgdz  g d      }t        dgdz  g d      }t        dgdz  g d      }|j                  d      }t        j                  ||       |j                  dd
      }t        j                  ||       |j                  d      }t        j                  ||       |j                  dd
      }t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   xY w)Nr?   r   r   r   )rY   r   r   r   r   )r   r   r   rY   r   z#keep must be either "first", "last"rG   invalidrW   )r   r   r   rY   r   indexr   )r   r   r   )r   rY   r   rV   )r   npnanrJ   rZ   r3   r4   r0   rK   rL   
ValueError)rN   r7   r8   r:   rP   expected_firstexpected_lasts          r'   test_nlargest_miscz.TestSeriesNLargestNSmallest.test_nlargest_misc   s   c2661a+,88O,
vx088O,
vx03]]:S1 	*MMyM)	*]]:S1 	)LLiL(	) aS1WO4ay9sQwi8q!
v~6qv.
v}5a
v~6af-
v}5)	* 	*	) 	)s   *G G"G"G+nr   r   c                 B   t        g dg d      }|j                  |      }|j                  d      j                  |      }t	        j
                  ||       |j                  |      }|j                         j                  |      }t	        j
                  ||       y )N)r   rY   r   r   )r   r   r   r   r`   F)	ascending)r   rJ   r[   headr3   r4   r0   )rN   rh   r7   r8   r:   s        r'   test_nlargest_nz+TestSeriesNLargestNSmallest.test_nlargest_n   s}     \6a??U?388;
vx0q!??$))!,
vx0r)   c                     t        j                  |      }|j                  |j                  }}||dz   |dz
  |g}t	        |||       y Nr   rb   iinfominmaxr;   )rN   nselect_methodany_int_numpy_dtype
dtype_infomin_valmax_valr5   s          r'   test_nlargest_boundary_integerz:TestSeriesNLargestNSmallest.test_nlargest_boundary_integer   sE    XX12
%>>:>>1gk7;%d,?Pr)   c                     t        j                  |      }|j                  |j                  }}t        j                  ||gd|      \  }}||||g}t        |||       y )Nr   r   )rb   finforq   rr   	nextafterr;   )	rN   rs   float_numpy_dtyperu   rv   rw   min_2ndmax_2ndr5   s	            r'   test_nlargest_boundary_floatz8TestSeriesNLargestNSmallest.test_nlargest_boundary_float   sZ    XX/0
%>>:>><<'(:AEVW'73%d,=~Nr)   r    zdatetime64[ns]ztimedelta64[ns]c                     t        j                  d      }|j                  |j                  }}|dz   |dz   |dz
  ||g}t	        |||       y )Nr   r   r   ro   )rN   rs   r    ru   rv   rw   r5   s          r'   #test_nlargest_boundary_datetimelikez?TestSeriesNLargestNSmallest.test_nlargest_boundary_datetimelike   sK    
 XXg&
%>>:>>!Wq['A+wH%dE>Br)   c                     t        g d      }|j                  dd      }t        g d      }t        j                  ||       |j	                  dd      }t        g dg d	      }t        j                  ||       y )
N)
   	         r   r   r      rY   allrW   )r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   rY   r   r   r`   )r   rJ   r3   r4   r0   )rN   r7   r8   r:   s       r'   %test_nlargest_duplicate_keep_all_tieszATestSeriesNLargestNSmallest.test_nlargest_duplicate_keep_all_ties   sh    ./ae,01
vx0qu-/A
vx0r)   zdata,expectedTF)TFTTc                 ~    t        |      }|j                  d      }t        |      }t        j                  ||       y rn   )r   rJ   r3   r4   )rN   datar:   r7   r8   s        r'   test_nlargest_booleanz1TestSeriesNLargestNSmallest.test_nlargest_boolean   s4    
 Tla(#
vx0r)   c                    |}|j                  d      r1t        j                  j                  d      j	                  ddd      }n.t        j                  j                  d      j                  d      }|j                  |j                         d      }t        |j                         |      }t        j                  |d<   |j                  d      }t        t        j                  |d      |j                  j                  d      	      j                  d      j                  |      }t        j                   ||       y )
NUIntr   r   r   F)copyr   r   r`   )
startswithrb   randomdefault_rngintegersstandard_normalastypelowerr   r   r!   NArJ   deletera   r3   r4   )rN   any_numeric_ea_dtyper    arrr7   r8   r:   s          r'   test_nlargest_nullablez2TestSeriesNLargestNSmallest.test_nlargest_nullable   s    $F#))''*33Ar2>C))''*::2>CjjUj3SXXZu-Aa 299S!$CII,<,<Q,?@Xa[VE] 	
 	vx0r)   c                    t        g d      }|j                  dd      }t        g d      }t        j                  ||       t        g d      }|j                  dd      }t        g d      }t        j                  ||       y )N)r   r   r   r   r   Nr   r   rW   )g      ?g       @r?   r?   r?   )r   r   NNN)r   r0   r3   r4   )rN   sr8   r:   s       r'   #test_nsmallest_nan_when_keep_is_allz?TestSeriesNLargestNSmallest.test_nsmallest_nan_when_keep_is_all   sr    ()QU+34
vx0+,QU+23
vx0r)   N)__name__
__module____qualname__rK   markparametrizer   listrT   r]   rg   rangerl   rx   r   r   r   r   r   r    r)   r'   r=   r=   V   s*   [[&h7$H5 $L94=!4=
3	
V&6@ [[S%1+.	1 /	1QO [[W'79J&KLC MC	1 [[D%=4&14MPTv3VW111*
1r)   r=   )__doc__	itertoolsr   numpyrb   rK   pandasr!   r   pandas._testing_testingr3   main_dtypesfixturer(   r.   r;   r=   r   r)   r'   <module>r      sn         " $ $N {#( $(
-b1 b1r)   