
    Piz                     t    d Z ddlmZ ddlZddlZddlZddlm	Z
 ej        d             Z G d d          ZdS )z
Note: for naming purposes, most tests are title with as e.g. "test_nlargest_foo"
but are implicitly also testing nsmallest_foo.
    )ascii_lowercaseNc                  P   t          j        g dg dg dt          d          t          j        t          d                                        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      )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)pd	DataFramelistSeriesastype
date_rangetimedelta_range     |/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/frame/methods/test_nlargest.pydf_main_dtypesr(      s    <YY99$__5kk!ye55<<ZHH%IIj!<<<-
A,OOO+E13GGG
	
 
	


 

 

   r&   c                   ,   e Zd Ze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                            d edd                    d                         Zej                            dddgddgg          d             Zd Z	d Z
d Zej                            dg dg ddgdgddgddgg          ej                            d edd                    d                         Zd Zd Zd Zd ZdS )TestNLargestNSmallestorderacbr,   r.   r-   )r-   r,   r.   )r-   r.   r,   )r.   r-   r,   )r.   r,   r-   )r.   r-   r-   nr      c                    t          j        t          j                            d                              d          t          t          d d                   t          j                            d                              d                              d          d          }d|v rVd| d}t          j
        t          |          5   t          ||          ||           d d d            d S # 1 swxY w Y   d S |d	k    } t          ||          ||          }t          j        t          |j                            |_        |                    ||
                              |          }t#          j        ||           d S )Nr   
   float64r/   r.   z6Column 'b' has dtype (object|str), cannot use method '' with this dtypematch	nsmallest	ascending)r   r   nprandomdefault_rngpermutationr    r   r"   pytestraises	TypeErrorgetattrIndexindexsort_valuesheadtmassert_frame_equal)	selfnselect_methodr0   r+   df	error_msgr:   resultexpecteds	            r'   test_nlargest_nz%TestNLargestNSmallest.test_nlargest_n.   s   * \Y**1--99"==/#2#.//Y**1--99"==DDYOO 
 
 %<<H&4H H H  y	::: 6 6+N++Au5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 '+5I0WR00E::F8D$6$677FL~~ey~AAFFqIIH!&(33333s   C33C7:C7r   r   r   r   c                    |}|d         }d| d||         j          d| d}|                    dd                              dd	                              d
d                              dd          }t          j        t          |          5   t          ||          d|           d d d            d S # 1 swxY w Y   d S )Nr   zColumn 'z' has dtype z, cannot use method 'r5   (z\()z\)[z\[]z\]r6   r   )dtypereplacer?   r@   rA   rB   )rI   r(   rJ   r   rK   colrL   s          r'   test_nlargest_errorz)TestNLargestNSmallest.test_nlargest_errorX   s2    ajDs D D3 D D"0D D D 	 c5))WS%  WS%  WS%  	 	 ]9I666 	4 	4'GB''7333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   B77B;>B;c                     |}|                     dt          t          |          ddhz
                       |                    dt          t          |          ddhz
                       d S )Nr   r   r   )r8   r    setnlargest)rI   r(   rK   s      r'   test_nlargest_all_dtypesz.TestNLargestNSmallest.test_nlargest_all_dtypesl   sg    
QSWW(98'DDEEFFF
AtCGG'8(&CCDDEEEEEr&   c                 p   t          j        g dg dd          }|                    dddg          }t          j        g dg d	dg d
          }t          j        ||           |                    dddg          }t          j        g dg ddg d          }t          j        ||           d S )N)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   r   r   rD   )r   r   r   r   )r   r   r   r   )   r_   r   r   )r   r   r[   rG   rH   r8   rI   rK   rM   rN   s       r'   +test_nlargest_duplicates_on_starter_columnszATestNLargestNSmallest.test_nlargest_duplicates_on_starter_columnsq   s     \ 2 2 29K9K9KLLMMQc
33<,,\\\22,,,
 
 
 	fh///a#s44<,,\\\22,,,
 
 
 	fh/////r&   c                 ~   t          j        dgdz  g dd          }|                    dd          }t          j        dgdz  g ddt          d                    }t	          j        ||           |                    dd          }t          j        dgdz  g dd          }t	          j        ||           d S )	Nr   ra   r   r   r   r_   ra   r^   r   r,   r   r`   )r   r   r[   rangerG   rH   r8   rb   s       r'    test_nlargest_n_identical_valuesz6TestNLargestNSmallest.test_nlargest_n_identical_values   s    \aooo>>??Q$$<qcAgIII > >eAhhOOO
fh///a%%<qcAgIII > >??
fh/////r&      c                 :   t          j        g dg dg ddg d          }|                    ||          }|                    |d                              |          }t          j        ||           |                    ||          }|                    |d	d
                              |          }|dgk    r|dv s|ddgk    r:|dk    r4|                    t          j
                            dd	                     t          j        ||           d S )N)r   r   r   r_   r_   )r   r   r   r   r   )r   r   r   ra   r_   r/   )r   r   r   r   r   r`   stable)kindF)r:   rk   r,   )r   r   r   r_   r.   ra   zYpandas default unstable sorting of duplicatesissue with numpy>=1.25 with AVX instructions)reasonstrict)r   r   r8   rE   rF   rG   rH   r[   applymarkerr?   markxfail)rI   r0   r+   requestrK   rM   rN   s          r'   test_nlargest_n_duplicate_indexz5TestNLargestNSmallest.test_nlargest_n_duplicate_index   sD    \!//oooNN!//
 
 
 a''>>%h>77<<Q??
fh///Q&&>>%5x>HHMMaPPcUNNqL00uc
7J7JPQUVPVPV!!G ! "     	fh/////r&   c                    t          j        g dg dd          }|                    ddd          }t          j        g dg d	dg d
          }t          j        ||           |                    ddd          }t          j        g dg ddt          dd                    }t          j        ||           d S )N)ra   r_   r_   r   r   r   r   r   )r3   r   r   r   ra   2   r3      r^   r_   r,   all)keep)ra   r_   r_   r   r   r   r   )r3   r   r   ra   rt   r3   ru   )r   r   r   r_   ra   rh   r   r`   r   )r   r   r   r   r   )r   ra   rt   r3   ru   r   r   )r   r   r[   rG   rH   r8   rf   rb   s       r'   %test_nlargest_duplicate_keep_all_tiesz;TestNLargestNSmallest.test_nlargest_duplicate_keep_all_ties   s   \***1M1M1MNN
 
 Q%00<***...  (''
 
 
 	fh///a511<$__'''  1++
 
 
 	fh/////r&   c                 v   t          j        t           j                            dgddgg          ddgddgddgd	d
gg          }|                    dd          }|j        g d         }t          j        ||           |                    dd          }|j        g d         }t          j        ||           d S )Nxr,   r.   gQ?gp=
ף?gQ?g      ?gffffff?g333333?gQ?)r   datar   )rz   r,   )r   r   r   )rz   r.   )r   r   r   )	r   r   
MultiIndexfrom_productr8   ilocrG   rH   r[   rb   s       r'   &test_nlargest_multiindex_column_lookupz<TestNLargestNSmallest.test_nlargest_multiindex_column_lookup   s     \M..Sz/BCC,ttTlT4LI
 
 
 a,,7999%
fh/// Q
++7999%
fh/////r&   c                    t          j        t          j        t          j        ddddg          }|                    dd          }|                    dd                              d          }t          j        ||           d S )Nr   r   r   r   ra   Fr9   )	r   r   r;   nanr[   rE   rF   rG   rH   rb   s       r'   test_nlargest_nanz'TestNLargestNSmallest.test_nlargest_nan   sq    \26261aA677Q"">>!u>55::1==
fh/////r&   c                 @   t          j        g dg dg ddt          d                    }|                    ddd	g
          }t          j        g dg dg ddt          d                                        ddi          }t          j        ||           d S )N)r   r   r   r_   ra   Nr   )r   rh   ra   r_   r   r   r   )r   r   r   r   r   r   r   r/   r   r`   ra   r,   r.   r   re   )r   rh   ra   r_   r   )r   r   r   r   r   r   )r   r   rf   r8   r"   rG   rH   rb   s       r'   "test_nsmallest_nan_after_n_elementz8TestNLargestNSmallest.test_nsmallest_nan_after_n_element   s    \---****** 
 ((
 
 
 a#s44<$__$__$__ 
 ((
 
 
 &#w
 
  	 	fh/////r&   N)__name__
__module____qualname__r?   ro   parametrizerf   rO   rX   r\   rc   rg   rr   rx   r   r   r   r%   r&   r'   r*   r*   +   s        [EE#J#J#J#JOOOOOOOOOOOO	
 $ [S%%2,,//4 4 0/% &4. [W/07H2EF 4 4 4"F F F
0 0 0"
0 
0 
0 [	///C53%#sc3ZP  [S%%1++..0 0 /.	 
020 0 020 0 0$0 0 00 0 0 0 0r&   r*   )__doc__r   r   numpyr;   r?   pandasr   pandas._testing_testingrG   fixturer(   r*   r%   r&   r'   <module>r      s    
 # " " " " "                  6F0 F0 F0 F0 F0 F0 F0 F0 F0 F0r&   