
    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 ej                  d        Zej                  d        Zej                  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.
    )ascii_lowercaseN)Versionc                  H    t        j                  g dg dg ddg d      S )N)            r	   )r   r   r   r   r   )r   r   r      r	   abc)r   r   r   r   r   index)pd	DataFrame     _/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/frame/methods/test_nlargest.pydf_duplicatesr      s     <<O/J r   c                  "   t        j                  t        j                  j	                  d      j                  d      t        t        d d       t        j                  j	                  d      j                  d      j                  d      d      S )Nr   
   float64r   )	r   r   nprandomdefault_rngpermutationlistr   astyper   r   r   
df_stringsr       sl    <<&&q)55b9ocr*+&&q)55b9@@K	
 r   c                  B   t        j                  g dg dg dt        d      t        j                  t        d            j	                  d      g dt        j
                  dd	      t        j
                  ddd
      t        j                  ddd      d	g d      S )N)r   r   r   r   r   r   )g      @g      @g      @abccategory)      	   20130101r   )periodsz
US/Eastern)r)   tzz1 ss)r)   freq)	groupintfloatstringcategory_stringcategory_intdatetime
datetimetz	timedeltacolumns)r   r   r   Seriesr   
date_rangetimedelta_ranger   r   r   df_main_dtypesr;   "   s{    <<$5k!yye5<<ZH%j!<--
A,O++E13G
	


 r   c                   
   e Zd Zej                  j                  ddgdgddgddgddgddgg dg dg dg dg d	g d
g      ej                  j                  d edd            d               Zej                  j                  dddgddgg      d        Zd Z	d Z
d Zej                  j                  dg dg ddgdgddgddgg      ej                  j                  d edd            d               Zd Zd Zd Zd Zy)TestNLargestNSmallestorderr   r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   nr      c                 D   |}d|v r>d| d}t        j                  t        |      5   t        ||      ||       d d d        y |dk(  } t        ||      ||      }|j	                  ||      j                  |      }	t        j                  ||	       y # 1 sw Y   y xY w)Nr   z9Column 'b' has dtype (object|string), cannot use method '' with this dtypematch	nsmallest	ascending)pytestraises	TypeErrorgetattrsort_valuesheadtmassert_frame_equal)
selfr    nselect_methodr?   r>   df	error_msgrG   resultexpecteds
             r   test_nlargest_nz%TestNLargestNSmallest.test_nlargest_nA   s    * %<&&4%55FH  y	: 6+N+Au56 6 '+5I0WR0E:F~~ey~AFFqIH!!&(36 6s   BBr7   r-   r1   r0   c                 N   |}|d   }d| d||   j                    d| d}|j                  dd      j                  dd	      j                  d
d      j                  dd      }t        j                  t        |      5   t        ||      d|       d d d        y # 1 sw Y   y xY w)Nr   zColumn 'z' has dtype z, cannot use method 'rB   (z\()z\)[z\[]z\]rC   r   )dtypereplacerH   rI   rJ   rK   )rP   r;   rQ   r7   rR   colrS   s          r   test_nlargest_errorz)TestNLargestNSmallest.test_nlargest_errord   s     ajse<3 7""0!11BD 	 c5)WS% WS% WS% 	 	 ]]9I6 	4'GB'73	4 	4 	4s   >BB$c                     |}|j                  dt        t        |      ddhz
               |j                  dt        t        |      ddhz
               y )Nr   r1   r0   )rE   r   setnlargest)rP   r;   rR   s      r   test_nlargest_all_dtypesz.TestNLargestNSmallest.test_nlargest_all_dtypesx   sK    
QSW(98'DDEF
AtCG'8(&CCDEr   c                 h   t        j                  g dg dd      }|j                  dddg      }t        j                  g dg d	dg d
      }t        j                  ||       |j                  dddg      }t        j                  g dg ddg d      }t        j                  ||       y )N)r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r	   r   r   r6   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r
   r	   r   r   r   r   rb   rN   rO   rE   rP   rR   rT   rU   s       r   +test_nlargest_duplicates_on_starter_columnszATestNLargestNSmallest.test_nlargest_duplicates_on_starter_columns}   s     \\ 29KLMQc
3<<\2,
 	fh/a#s4<<\2,
 	fh/r   c                 `   t        j                  dgdz  g dd      }|j                  dd      }t        j                  dgdz  g ddg d	      }t        j                  ||       |j                  dd      }t        j                  dgdz  g dd      }t        j                  ||       y )
Nr   r
   r   r   r   r	   r
   re   r   r   r"   )r   r   r   r   rf   rg   s       r    test_nlargest_n_identical_valuesz6TestNLargestNSmallest.test_nlargest_n_identical_values   s    \\ao>?Q$<<qcAgI >iP
fh/a%<<qcAgI >?
fh/r      c                    |}|j                  ||      }|j                  |      j                  |      }t        j                  ||       |j                  ||      }|j                  |d      j                  |      }t        t        j                        t        d      k\  rF|dgk(  r|dv s|ddgk(  r5|dk(  r0|j                  t        j                  j                  dd	             t        j                  ||       y )
NFrF   z1.25r   )r   r   r   r	   r   r
   zYpandas default unstable sorting of duplicatesissue with numpy>=1.25 with AVX instructions)reasonstrict)rE   rL   rM   rN   rO   rb   r   r   __version__applymarkerrH   markxfail)rP   r   r?   r>   requestrR   rT   rU   s           r   test_nlargest_n_duplicate_indexz5TestNLargestNSmallest.test_nlargest_n_duplicate_index   s     a'>>%(--a0
fh/Q&>>%5>9>>qA2>>"gfo5se^\ 1uc
7JPQUVPV!!G ! "  	fh/r   c                 |   t        j                  g dg dd      }|j                  ddd      }t        j                  dddd	d	d	d	d
dddddddd
d      }t        j                  ||       |j                  ddd      }t        j                  dd	d	d	d	dddddddd      }t        j                  ||       y )N)r
   r	   r	   r   r   r   r   r   )r   r'   r&   r%   r
   2   r      re   r	   r   all)keepr
   r   )r   r   r   r	   r
   rl   r%   r   r'   r&   rw   rx   r   )r   r	   r
   rl   r%   r%   rf   rg   s       r   %test_nlargest_duplicate_keep_all_tiesz;TestNLargestNSmallest.test_nlargest_duplicate_keep_all_ties   s    \\*1MN
 Q%0<<qQ1qQ?aA"C
 	fh/a51<<qQ13qRB26
 	fh/r   c                 r   t        j                  t         j                  j                  dgddgg      ddgddgddgd	d
gg      }|j	                  dd      }|j
                  g d   }t        j                  ||       |j                  dd      }|j
                  g d   }t        j                  ||       y )Nxr   r   gQ?gp=
ף?gQ?g      ?gffffff?g333333?gQ?)r7   datar   )r}   r   )r   r   r   )r}   r   )r   r   r   )	r   r   
MultiIndexfrom_productrE   ilocrN   rO   rb   rg   s       r   &test_nlargest_multiindex_column_lookupz<TestNLargestNSmallest.test_nlargest_multiindex_column_lookup   s     \\MM..Sz/BC,ttTlT4LI
 a,779%
fh/ Q
+779%
fh/r   c                    t        j                  t        j                  t        j                  ddddg      }|j	                  dd      }|j                  dd      j                  d      }t        j                  ||       y )Nr   r   r   r   r
   FrF   )	r   r   r   nanrb   rL   rM   rN   rO   rg   s       r   test_nlargest_nanz'TestNLargestNSmallest.test_nlargest_nan   sb    \\2662661aA67Q">>!u>5::1=
fh/r   c                 $   t        j                  g dg dg ddt        d            }|j                  ddd	g
      }t        j                  g dg dg ddt        d            j	                  ddi      }t        j                  ||       y )N)r   r   r   r	   r
   Nr%   )r%   rl   r
   r	   r   r   r   )r   r   r   r   r   r   r   r   r%   r   r
   r   r   r6   rj   )r%   rl   r
   r	   r   )r   r   r   r   r   r/   )r   r   rangerE   r   rN   rO   rg   s       r   "test_nsmallest_nan_after_n_elementz8TestNLargestNSmallest.test_nsmallest_nan_after_n_element   s    \\-**
 (
 a#s4<<$$$
 (
 &#w
  	 	fh/r   N)__name__
__module____qualname__rH   rr   parametrizer   rV   r_   rc   rh   rk   ru   r{   r   r   r   r   r   r   r=   r=   >   sE    [[EE#J#J#J#J	
$ [[S%2,/4 0%&4  [[W/07H2EF44"F
0"
0 [[	/C53%#sc3ZP [[S%1+.0 /	
000.0$00r   r=   )__doc__r0   r   numpyr   rH   pandasr   pandas._testing_testingrN   pandas.util.versionr   fixturer   r    r;   r=   r   r   r   <module>r      sr    #     '      6|0 |0r   