+
    xȇi"                    L   R t ^ RIHt ^ RIHtHt ^ RIHtHtH	t	H
t
Ht ^ RIt^ RIHt ^ RIHtHtHtHtHtHt ^ RIHt ^ RIHt ]'       d   ^ R	IHtHtHt ^ R
I H!t!H"t"H#t# M^ RIH$t$ ]$t]$t!]$t# ! R R]],          4      t% ! R R]%]#,          4      t& ! R R]%]!,          4      t'R# )z+
Implementation of nlargest and nsmallest.
)annotations)HashableSequence)TYPE_CHECKINGGenericLiteralcastfinalN)algos)is_bool_dtypeis_complex_dtypeis_integer_dtypeis_list_likeis_numeric_dtypeneeds_i8_conversion)BaseMaskedDtype)default_index)DtypeObj
IndexLabelNDFrameT)	DataFrameIndexSeries)Tc                  z    ] tR t^9tR R ltR R lt]R R l4       t]R R l4       t]]	R	 R
 l4       4       t
RtR# )SelectNc               (    V ^8  d   QhRRRRRRRR/# )	   objr   nintkeepLiteral['first', 'last', 'all']returnNone )formats   "k/Users/max/.openclaw/workspace/postharvest/venv/lib/python3.14/site-packages/pandas/core/methods/selectn.py__annotate__SelectN.__annotate__:   s2     M MM #M+JM	M    c                	b    Wn         W n        W0n        V P                  R9  d   \        R4      hR# )firstz,keep must be either "first", "last" or "all"N)r,   lastall)r   r   r!   
ValueError)selfr   r   r!   s   &&&&r'   __init__SelectN.__init__:   s1     	9944KLL 5r*   c                    V ^8  d   QhRRRR/# )r   methodstrr#   r   r%   )r&   s   "r'   r(   r)   D   s     " "c "h "r*   c                	    \         hN)NotImplementedError)r0   r4   s   &&r'   computeSelectN.computeD   s    !!r*   c                   V ^8  d   QhRR/# r   r#   r   r%   )r&   s   "r'   r(   r)   H   s     ( (( (r*   c                	$    V P                  R 4      # )nlargestr9   r0   s   &r'   r>   SelectN.nlargestG   s    ||J''r*   c                   V ^8  d   QhRR/# r<   r%   )r&   s   "r'   r(   r)   L   s     ) )8 )r*   c                	$    V P                  R 4      # )	nsmallestr?   r@   s   &r'   rD   SelectN.nsmallestK   s    ||K((r*   c                    V ^8  d   QhRRRR/# )r   dtyper   r#   boolr%   )r&   s   "r'   r(   r)   Q   s     * *x *D *r*   c                Z    \        V 4      '       d   \        V 4      '       * # \        V 4      # )zO
Helper function to determine if dtype is valid for
nsmallest/nlargest methods
)r   r   r   )rG   s   &r'   is_valid_dtype_n_methodSelectN.is_valid_dtype_n_methodO   s(     E""'..."5))r*   )r!   r   r   N)__name__
__module____qualname____firstlineno__r1   r9   r	   r>   rD   staticmethodrJ   __static_attributes__r%   r*   r'   r   r   9   sQ    M" ( ( ) ) *  *r*   r   c                  &    ] tR t^[tRtR R ltRtR# )SelectNSeriesz
Implement n largest/smallest for Series

Parameters
----------
obj : Series
n : int
keep : {'first', 'last'}, default 'first'

Returns
-------
nordered : Series
c                    V ^8  d   QhRRRR/# )r   r4   r5   r#   r   r%   )r&   s   "r'   r(   SelectNSeries.__annotate__j   s     T Tc Tf Tr*   c                	   ^ RI Hp V P                  pV P                  P                  pV P                  V4      '       g   \        RV RV 24      hV^ 8:  d   V P                  . ,          # V P                  P                  pV P                  P                  RR7      pV\        V4      8  dK   VR8H  pVP                  ! VRR7      P                  V4      pVP                  VP                  4      Vn        V# VP                  ! 4       p	VP                  ! V	P                  4      p
V	P                  pV	P                  p\!        VP                  4      '       d   VP#                  R	4      pMC\%        VP                  \&        4      '       d   VP(                  pM\*        P,                  ! V4      pVP                  P.                  R
8X  d    VP#                  \*        P0                  4      pVR8X  d:   V) p\3        V4      '       d   V^,          pM\5        V4      '       d   ^V) ,
          pV P6                  R8X  d   VRRR1,          pTp\        V4      p\9        W>4      p\        V4      ^ 8  d0   \:        P<                  ! VP?                  RR7      V^,
          4      pM\*        P@                  p\*        PB                  ! W8*  4      w  pVVV,          PE                  RR7      ,          pV P6                  R8w  d	   VRV pTpM[\        V4      Tu;8  d!   \        V
4      \        V4      ,           8:  d    M M\        V
4      \        V4      ,           pM\        V4      pV P6                  R8X  d   V^,
          V,
          pV! V	PF                  V,          V
.4      PF                  RV pVP                  VP                  4      Vn        V# )    )concatzCannot use method 'z' with dtype TdroprD   stable	ascendingkindi8br>   r-   NC)order)r^   r.   )$pandas.core.reshape.concatrX   r   r   rG   rJ   	TypeErrorindexreset_indexlensort_valuesheadtakedropnarZ   _valuesr   view
isinstancer   _datanpasarrayr^   uint8r   r   r!   minlibalgoskth_smallestcopynannonzeroargsortiloc)r0   r4   rX   r   rG   original_indexr   r]   resultdropped	nan_index	new_dtypearrnbasenarrkth_valnsindsfindexs   &&                 r'   r9   SelectNSeries.computej   s   5FF++E221&ugNOO688B< !%,,$,7 M""+-I"..RWWF *..v||<FLM  &&(!&&w}}5	MM	 oosyy))((4.C		?33))C**S/C99>>S ((288$CZ$C	**qy))C4j99dd)C3xL
 s8a<++CHH3H,?QGGffG

3>*#b'//x/01998DFY<#i.3t9"<<^c$i/FYF99!8d?Dd+Y78==gvF%**6<<8r*   r%   N)rL   rM   rN   rO   __doc__r9   rQ   r%   r*   r'   rS   rS   [   s    T Tr*   rS   c                  >   a  ] tR t^tRtR V 3R lltR R ltRtV ;t# )SelectNFramez
Implement n largest/smallest for DataFrame

Parameters
----------
obj : DataFrame
n : int
keep : {'first', 'last'}, default 'first'
columns : list or str

Returns
-------
nordered : DataFrame
c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   r   r   r   r    r!   r"   columnsr   r#   r$   r%   )r&   s   "r'   r(   SelectNFrame.__annotate__   s<        .	
  
r*   c                	   < \         SV `  WV4       \        V4      '       d   \        V\        4      '       d   V.p\        \        \        ,          V4      p\        V4      pW@n	        R # r7   )
superr1   r   ro   tupler   r   r   listr   )r0   r   r   r!   r   	__class__s   &&&&&r'   r1   SelectNFrame.__init__   sQ     	&G$$
7E(B(BiGx)73w-r*   c                    V ^8  d   QhRRRR/# )r   r4   r5   r#   r   r%   )r&   s   "r'   r(   r      s"     LN LNc LNi LNr*   c           
     	  a V P                   pV P                  pV P                  pV FC  pW5,          P                  pV P	                  V4      '       d   K.  \        R V: RV RS: R24      h	  R V3R llpVP                  pVP                  RR7      ;rTp
\        ^ 4      p\        V4       F  w  rW,          p\        V4      ^,
          V8H  p\        VS4      ! Y'       d   V P                  MRR	7      pV'       g   \        V4      V
8:  d   V! WP                  4      p MuWVP                  R,          ,          8H  pVV,          pVV( ,          pV! VVP                  4      pV	P                  VP                  ,          p	V\        V4      ,
          p
K  	  VP                  V4      pVP                  V4      Vn        \        V4      ^8X  d   V# SR
8H  pVP                  VVRR7      # )zColumn z has dtype z, cannot use method z with this dtypec               $    V ^8  d   QhRRRRRR/# )r   current_indexerr   other_indexerr#   r%   )r&   s   "r'   r(   *SelectNFrame.compute.<locals>.__annotate__   s!     	= 	= 	=u 	= 	=r*   c                V   < SR8X  d   V P                  V4      # VP                  V 4      # )zW
Helper function to concat `current_indexer` and `other_indexer`
depending on `method`
rD   )append)r   r   r4   s   &&r'   get_indexer)SelectNFrame.compute.<locals>.get_indexer   s/    
 $&--m<<$++O<<r*   TrY   r.   )r!   rD   r[   r\   rc   )r   r   r   rG   rJ   re   rf   rg   r   	enumeraterh   getattrr!   locrk   ri   )r0   r4   r   framer   columnrG   r   r|   	cur_framecur_nindexeriseriesis_last_columnvaluesborder_valueunsafe_valuessafe_valuesr]   s   &f                  r'   r9   SelectNFrame.compute   s   FF,,FM''E//66fZ{5' :))/
2BD  	= 	= !--4-88	&q)"7+IA &F \A-2NVV,DIIUF V!5%g||<
 "FLL,<%==L #<0M !,/K!';+<+<=G "m&9&9:IG$EE ,H 

7# %))'2 w<1Lk)	  IH MMr*   )r   )	rL   rM   rN   rO   r   r1   r9   rQ   __classcell__)r   s   @r'   r   r      s      LN LNr*   r   )(r   
__future__r   collections.abcr   r   typingr   r   r   r   r	   numpyrq   pandas._libsr
   ru   pandas.core.dtypes.commonr   r   r   r   r   r   pandas.core.dtypes.dtypesr   pandas.core.indexes.apir   pandas._typingr   r   r   pandasr   r   r   r   r   rS   r   r%   r*   r'   <module>r      s    #   *  6 1   !HIF*gh *DcGFO cLkN79% kNr*   