
    .iT                     R    d Z ddlZddlZddlZddlmZ ddlm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.
    N)Seriesc                     t        | |      } t        ||      d      }|dk(  rt        d      nt        ddd      }|j                  |   }t	        j
                  ||       y )Ndtype   	nsmallestr   )r   getattrrangeloctmassert_series_equal)valsr   methodserresultexpected_idxrexpecteds          g/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/series/methods/test_nlargest.pyassert_check_nselect_boundaryr      sY    
U
#C!WS&!!$F &+ 5E!H5Ar?Mww}%H68,    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      ej                  j                  d	d
dg      ej                  j                  dg d      d                      Zej                  j                  d e	j                  g d       e	j                  g dd       e	j                  g d       ej                  g dd       ej                  g dd       ej                  g dd       ej                  g dd       ej                  g dd       ej                  g dd       ej                  g dd       ej                  g dd       ej                  g dd       ej                  g dd      g      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d0 Zd1 Zy2)3TestSeriesNLargestNSmallestr)      @      r   5objectr   )r   r   r   r      
complex128abcdecategoryr   nlargestr   arg)r   r    r   r	   c                     |j                   }d| }t        j                  t        |      5   t	        ||      |       d d d        y # 1 sw Y   y xY w)Nz3Cannot use method 'n(largest|smallest)' with dtype match)r   pytestraises	TypeErrorr
   )selfr   r   r%   dtmsgs         r   test_nlargest_errorz/TestSeriesNLargestNSmallest.test_nlargest_error   sM     WWCB4H]]9C0 	$GAvs#	$ 	$ 	$s   A		Adata)200320022001r2   2005T)utc)3D2D1Dr7   5D)r   r   r   r   r    int8int16int32int64uint8uint16uint32uint64float32float64c                 $   t        |      }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   r	   )   r   r   r   r   )r   r   r   r   ilocr$   lensort_values)r,   r0   r   emptys       r   test_nsmallest_nlargestz3TestSeriesNLargestNSmallest.test_nsmallest_nlargest,   sk   * Tl
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    )rH   r   r   r   r   )r   r   r   rH   r   z#keep must be either "first", "last"r'   invalidrF   )r   r   r   rH   r    indexr   )r   r   r   )r    rH   r   rE   )r   npnanr$   rI   r   r   r   r)   r*   
ValueError)r,   r   r   r   r.   expected_firstexpected_lasts          r   test_nlargest_miscz.TestSeriesNLargestNSmallest.test_nlargest_miscQ   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   rH   r   r   )r   r   r   r   rP   F)	ascending)r   r$   rK   headr   r   r   )r,   rX   r   r   r   s        r   test_nlargest_nz+TestSeriesNLargestNSmallest.test_nlargest_nq   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   rR   iinfominmaxr   )r,   nselect_methodany_int_numpy_dtype
dtype_infomin_valmax_valr   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   )rR   finfora   rb   	nextafterr   )	r,   rc   float_numpy_dtypere   rf   rg   min_2ndmax_2ndr   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   r_   )r,   rc   r   re   rf   rg   r   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)
   	         rv   rv   rv      rH   allrF   )rs   rt   ru   rv   rv   rv   rv   r   )rw   rv   rv   rv   rv   )rv   r   rH   r    rw   rP   )r   r$   r   r   r   )r,   r   r   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,expectedF)TFTTc                 ~    t        |      }|j                  d      }t        |      }t        j                  ||       y r^   )r   r$   r   r   )r,   r0   r   r   r   s        r   test_nlargest_booleanz1TestSeriesNLargestNSmallest.test_nlargest_boolean   s4    
 Tla(#
vx0r   c                 j   |}|j                  d      r1t        j                  j                  d      j	                  ddd      }n.t        j                  j                  d      j                  d      }|j                  |j                         d      }t        ||d      }t        j                  |d<   |j                  d	      }t        t        j                  |d      |j                  j                  d      
      j                  d	      j                  |      }t        j                  ||       y )NUIntr   r   rs   F)copyT)r   r~   r    rP   )
startswithrR   randomdefault_rngintegersstandard_normalastypelowerr   pdNAr$   deleterQ   r   r   )r,   any_numeric_ea_dtyper   arrr   r   r   s          r   test_nlargest_nullablez2TestSeriesNLargestNSmallest.test_nlargest_nullable   s    $F#))''*33Ar2>C))''*::2>CjjUj3SD1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   rx   rF   )g      ?g       @r   r   r   )r   r   NNN)r   r   r   r   )r,   sr   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__r)   markparametrizer   listr/   r   to_datetimeto_timedeltarR   arrayrM   rW   r   r\   rh   ro   rq   ry   r{   r   r    r   r   r   r      sZ   [[&h7$H5 $L94=!4=
3	
 [[X
K'@A[[UM2$ 3 B$ [[BNNCDBNNCNBOO:;BHH_F3BHH_G4BHH_G4BHH_G4BHH_G4BHH_H5BHH_H5BHH_H5BHH_I6BHH_I6	
$V%$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__numpyrR   r)   pandasr   r   pandas._testing_testingr   r   r   r   r   r   <module>r      s,   
     -s1 s1r   