
    I j"                    0   S r SSKJr  SSKJrJr  SSKJrJrJ	r	J
r
Jr  SSKrSSKJr  SSKJrJrJrJrJrJr  SSKJr  SS	KJr  \(       a  SS
KJrJrJr  SSK J!r!J"r"J#r#  OSSKJ$r$  \$r\$r!\$r# " S S\\   5      r% " S S\%\#   5      r& " S S\%\!   5      r'g)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                  ~    \ rS rSr        S	S jrS
S jr\SS j5       r\SS j5       r\\	SS j5       5       r
Srg)SelectN9   c                ^    Xl         X l        X0l        U R                  S;  a  [        S5      eg )N)firstlastallz,keep must be either "first", "last" or "all")objnkeep
ValueError)selfr"   r#   r$   s       l/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pandas/core/methods/selectn.py__init__SelectN.__init__:   s1     	9944KLL 5    c                    [         eN)NotImplementedError)r&   methods     r'   computeSelectN.computeD   s    !!r*   c                $    U R                  S5      $ )Nnlargestr/   r&   s    r'   r2   SelectN.nlargestG   s    ||J''r*   c                $    U R                  S5      $ )N	nsmallestr3   r4   s    r'   r7   SelectN.nsmallestK   s    ||K((r*   c                X    [        U 5      (       a  [        U 5      (       + $ [        U 5      $ )zO
Helper function to determine if dtype is valid for
nsmallest/nlargest methods
)r   r   r   )dtypes    r'   is_valid_dtype_n_methodSelectN.is_valid_dtype_n_methodO   s(     E""'..."5))r*   )r$   r#   r"   N)r"   r   r#   intr$   Literal['first', 'last', 'all']returnNone)r.   strr?   r   )r?   r   )r:   r   r?   bool)__name__
__module____qualname____firstlineno__r(   r/   r
   r2   r7   staticmethodr;   __static_attributes__ r*   r'   r   r   9   su    MM #M+JM	M" ( ( ) ) *  *r*   r   c                  "    \ rS rSrSrSS jrSrg)SelectNSeries[   z
Implement n largest/smallest for Series

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

Returns
-------
nordered : Series
c                   SSK Jn  U R                  nU R                  R                  nU R                  U5      (       d  [        SU SU 35      eUS::  a  U R                  /    $ U R                  R                  nU R                  R                  SS9nU[        U5      :  aG  US:H  nUR                  " USS	9R                  U5      nUR                  UR                  5      Ul        U$ UR                  " 5       n	UR                  " U	R                  5      n
U	R                  nU	R                  n[!        UR                  5      (       a  UR#                  S
5      nOB[%        UR                  [&        5      (       a  UR(                  nO[*        R,                  " U5      nUR                  R.                  S:X  a  UR#                  [*        R0                  5      nUS:X  a/  U* n[3        U5      (       a  US-  nO[5        U5      (       a  SU* -
  nU R6                  S:X  a  US S S2   nUn[        U5      n[9        X>5      n[        U5      S:  a(  [:        R<                  " UR?                  SS9US-
  5      nO[*        R@                  n[*        RB                  " X:*  5      u  nUUU   RE                  SS9   nU R6                  S:w  a  US U nUnOQ[        U5      Us=:  a  [        U
5      [        U5      -   ::  a  O  O[        U
5      [        U5      -   nO[        U5      nU R6                  S:X  a  US-
  U-
  nU" U	RF                  U   U
/5      RF                  S U nUR                  UR                  5      Ul        U$ )Nr   )concatzCannot use method 'z' with dtype Tdropr7   stable	ascendingkindi8br2      r    C)order)rT   r!   )$pandas.core.reshape.concatrN   r#   r"   r:   r;   	TypeErrorindexreset_indexlensort_valuesheadtakedropnarP   _valuesr   view
isinstancer   _datanpasarrayrT   uint8r   r   r$   minlibalgoskth_smallestcopynannonzeroargsortiloc)r&   r.   rN   r#   r:   original_indexr   rS   resultdropped	nan_index	new_dtypearrnbasenarrkth_valnsindsfindexs                      r'   r/   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*   rI   N)r.   rA   r?   r   )rC   rD   rE   rF   __doc__r/   rH   rI   r*   r'   rK   rK   [   s    Tr*   rK   c                  N   ^  \ rS rSrSr          SU 4S jjrSS jrSrU =r$ )SelectNFrame   z
Implement n largest/smallest for DataFrame

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

Returns
-------
nordered : DataFrame
c                   > [         TU ]  XU5        [        U5      (       a  [        U[        5      (       a  U/n[        [        [           U5      n[        U5      nX@l	        g r,   )
superr(   r   rf   tupler	   r   r   listcolumns)r&   r"   r#   r$   r   	__class__s        r'   r(   SelectNFrame.__init__   sQ     	&G$$
7E(B(BiGx)73w-r*   c           
     p  ^ U R                   nU R                  nU R                  nU H>  nX5   R                  nU R	                  U5      (       a  M)  [        SU< SU ST< S35      e   SU4S jjnUR                  nUR                  SS9=pUn
[        S5      n[        U5       H  u  pX   n[        U5      S	-
  U:H  n[        UT5      " X(       a  U R                  OS
S9nU(       d  [        U5      U
::  a  U" XR                  5      n  O]XUR                  S      :H  nUU   nUU)    nU" UUR                  5      nU	R                  UR                     n	U[        U5      -
  n
M     UR                  U5      nUR                  U5      Ul        [        U5      S	:X  a  U$ TS:H  nUR                  UUSS9$ )NzColumn z has dtype z, cannot use method z with this dtypec                T   > TS:X  a  U R                  U5      $ UR                  U 5      $ )zW
Helper function to concat `current_indexer` and `other_indexer`
depending on `method`
r7   )append)current_indexerother_indexerr.   s     r'   get_indexer)SelectNFrame.compute.<locals>.get_indexer   s/    
 $&--m<<$++O<<r*   TrO   r   rW   r!   )r$   rX   r7   rQ   rR   )r   r   r   r   r?   r   )r#   r"   r   r:   r;   r\   r]   r^   r   	enumerater_   getattrr$   locrb   r`   )r&   r.   r#   framer   columnr:   r   rs   	cur_framecur_nindexeriseriesis_last_columnvaluesborder_valueunsafe_valuessafe_valuesrS   s    `                  r'   r/   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   )
r"   r   r#   r=   r$   r>   r   r   r?   r@   )r.   rA   r?   r   )	rC   rD   rE   rF   r   r(   r/   rH   __classcell__)r   s   @r'   r   r      sK      .	
  
LN LNr*   r   )(r   
__future__r   collections.abcr   r   typingr   r   r   r	   r
   numpyrh   pandas._libsr   rl   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   rK   r   rI   r*   r'   <module>r      s    #   *  6 1   !HIF*gh *DcGFO cLkN79% kNr*   