
    bMh                          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 g dZej        d             Z ej        e          d             Z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.
    )productN)Series)datetime
datetimetz	timedeltaint8int16int32int64float32float64uint8uint16uint32uint64c                  
   t          j        t          j        g d          t          j        g d                              d          t          j        g d          d          } dD ]}t          g d|          | |<   | S )z
    A DataFrame with many dtypes

    * datetime
    * datetimetz
    * timedelta
    * [u]int{8,16,32,64}
    * float{32,64}

    The columns are the name of the dtype.
    )200320022001r   2005z
US/Eastern)3d2d1dr   5d)r   r   r   )
r   r	   r
   r   r   r   r   r   r   r   )         r      dtype)pd	DataFrameto_datetimetz_localizeto_timedeltar   )dfr    s     i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/series/methods/test_nlargest.pys_main_dtypesr(      s     
'O'O'OPP.888 k,'')G)G)GHH	
 	

 
B 9 9 ???%8885		I    )paramsc                     || j                  S )zEach series in s_main_dtypes.)param)requestr(   s     r'   s_main_dtypes_splitr.   G   s     ''r)   c                     t          | |          } t          ||          d          }|dk    rg dng d}|j        |         }t          j        ||           d S )Nr   r   	nsmallest)r   r   r   )r   r   r   )r   getattrloctmassert_series_equal)valsr    methodserresultexpected_idxrexpecteds          r'   assert_check_nselect_boundaryr;   M   sm    
U
#
#
#C!WS&!!!$$F!';!6!6IIIIIIIMw}%H68,,,,,r)   c                   ,   e Zd Zej                            d eg dd           eg dd           eg dd           e ed                     e ed          d          g          d	             Zd
 Z	d Z
ej                            d edd                    d             Zd Zd Zej                            dddg          d             Zd Zej                            dddgdgfg ddgfg          d             Zd Zd ZdS )TestSeriesNLargestNSmallestr)      @r   r   r   5objectr   )r?   r   r   r   r   
complex128abcdecategoryc                    |j         }d| }dt          |          ddf}|j        |j        f}t	          ||          D ]C\  }}t          j        t          |          5   ||           d d d            n# 1 swxY w Y   Dd S )Nz3Cannot use method 'n(largest|smallest)' with dtype r   r   match)r    lennlargestr0   r   pytestraises	TypeError)selfr>   dtmsgargsmethodsr6   args           r'   test_nlargest_errorz/TestSeriesNLargestNSmallest.test_nlargest_errorW   s     WHBHH#a&&!R*ak)"7D11 	 	KFCy444  s              	 	s   A66A:	=A:	c                 p   |}t          j        |                    d          |j        ddg                    t          j        |                    dd          |j        ddg                    |j        dd         }t          j        |                    d          |           t          j        |                    d          |           t          j        |                    d          |           t          j        |                    d          |           t          j        |                    t          |                    |                                           t          j        |                    t          |          dz             |                                           t          j        |                    t          |                    |j        g d                    t          j        |                    t          |          dz             |j        g d                    d S )	Nr   r   lastkeepr   r   rF   )   r   r   r   r   )r3   r4   r0   ilocrJ   rI   sort_values)rN   r.   r7   emptys       r'   test_nsmallest_nlargestz3TestSeriesNLargestNSmallest.test_nsmallest_nlargestl   s    "
s}}Q//1a&1ABBB
s}}QV}<<ch1v>NOOO1
s}}Q//777
s}}R00%888
s||A666
s||B//777
s}}SXX668I8IJJJ
s}}SXX\::COO<M<MNNN
s||CHH55sx7PQQQ
s||CHHqL9938OOO;TUUUUUr)   c                 ,   t          dt          j        dddg          }|                                }|j        g d         }t          j        ||           |                                }|j        g d         }t          j        ||           d}t          j	        t          |          5  |                    d	
           d d d            n# 1 swxY w Y   t          j	        t          |          5  |                    d	
           d d d            n# 1 swxY w Y   t          dgdz  g d          }t          dgdz  g d          }t          dgdz  g d          }|                    d          }t          j        ||           |                    dd
          }t          j        ||           |                    d          }t          j        ||           |                    dd
          }t          j        ||           d S )Nr?   r   r   r   )rY   r   r   r   r   )r   r   r   rY   r   z#keep must be either "first", "last"rG   invalidrW   )r   r   r   rY   r   indexr   )r   r   r   )r   rY   r   rV   )r   npnanrJ   rZ   r3   r4   r0   rK   rL   
ValueError)rN   r7   r8   r:   rP   expected_firstexpected_lasts          r'   test_nlargest_miscz.TestSeriesNLargestNSmallest.test_nlargest_misc   so   c261a+,,8OOO,
vx0008OOO,
vx0003]:S111 	* 	*MMyM)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*]:S111 	) 	)LLiL(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) aS1WOOO444ayyy999sQwiii888q!!
v~666qv..
v}555a
v~666af--
v}55555s$   ,CCC5DDDnr   r   c                 x   t          g dg d          }|                    |          }|                    d                              |          }t	          j        ||           |                    |          }|                                                    |          }t	          j        ||           d S )N)r   rY   r   r   )r   r   r   r   r`   F)	ascending)r   rJ   r[   headr3   r4   r0   )rN   rh   r7   r8   r:   s        r'   test_nlargest_nz+TestSeriesNLargestNSmallest.test_nlargest_n   s     \\\666a??U?3388;;
vx000q!!??$$))!,,
vx00000r)   c                     t          j        |          }|j        |j        }}||dz   |dz
  |g}t	          |||           d S Nr   rb   iinfominmaxr;   )rN   nselect_methodany_int_numpy_dtype
dtype_infomin_valmax_valr5   s          r'   test_nlargest_boundary_integerz:TestSeriesNLargestNSmallest.test_nlargest_boundary_integer   sN    X122
%>:>1gk7;%d,?PPPPPr)   c                     t          j        |          }|j        |j        }}t          j        ||gd|          \  }}||||g}t          |||           d S )Nr   r   )rb   finforq   rr   	nextafterr;   )	rN   rs   float_numpy_dtyperu   rv   rw   min_2ndmax_2ndr5   s	            r'   test_nlargest_boundary_floatz8TestSeriesNLargestNSmallest.test_nlargest_boundary_float   sg    X/00
%>:><'(:AEVWWW'73%d,=~NNNNNr)   r    zdatetime64[ns]ztimedelta64[ns]c                     t          j        d          }|j        |j        }}|dz   |dz   |dz
  ||g}t	          |||           d S )Nr   r   r   ro   )rN   rs   r    ru   rv   rw   r5   s          r'   #test_nlargest_boundary_datetimelikez?TestSeriesNLargestNSmallest.test_nlargest_boundary_datetimelike   sT    
 Xg&&
%>:>!Wq['A+wH%dE>BBBBBr)   c                 $   t          g d          }|                    dd          }t          g d          }t          j        ||           |                    dd          }t          g dg d	          }t          j        ||           d S )
N)
   	         r   r   r      rY   allrW   )r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   rY   r   r   r`   )r   rJ   r3   r4   r0   )rN   r7   r8   r:   s       r'   %test_nlargest_duplicate_keep_all_tieszATestSeriesNLargestNSmallest.test_nlargest_duplicate_keep_all_ties   s    ...//ae,,00011
vx000qu--///AAA
vx00000r)   zdata,expectedTF)TFTTc                     t          |          }|                    d          }t          |          }t          j        ||           d S rn   )r   rJ   r3   r4   )rN   datar:   r7   r8   s        r'   test_nlargest_booleanz1TestSeriesNLargestNSmallest.test_nlargest_boolean   sD    
 Tlla(##
vx00000r)   c                    |}|                     d          r5t          j                            d                              ddd          }n2t          j                            d                              d          }|                    |                                d          }t          |	                                |          }t          j        |d<   |                    d          }t          t          j        |d          |j                            d          	                              d                              |          }t          j        ||           d S )
NUIntr   r   r   F)copyr   r   r`   )
startswithrb   randomdefault_rngintegersstandard_normalastypelowerr   r   r!   NArJ   deletera   r3   r4   )rN   any_numeric_ea_dtyper    arrr7   r8   r:   s          r'   test_nlargest_nullablez2TestSeriesNLargestNSmallest.test_nlargest_nullable   s   $F## 	?)''**33Ar2>>CC)''**::2>>CjjUj33SXXZZu---Aa 29S!$$CI,<,<Q,?,?@@@Xa[[VE]] 	
 	vx00000r)   c                 >   t          g d          }|                    dd          }t          g d          }t          j        ||           t          g d          }|                    dd          }t          g d          }t          j        ||           d S )N)r   r   r   r   r   Nr   r   rW   )g      ?g       @r?   r?   r?   )r   r   NNN)r   r0   r3   r4   )rN   sr8   r:   s       r'   #test_nsmallest_nan_when_keep_is_allz?TestSeriesNLargestNSmallest.test_nsmallest_nan_when_keep_is_all   s    ((())QU++33344
vx000+++,,QU++22233
vx00000r)   N)__name__
__module____qualname__rK   markparametrizer   listrT   r]   rg   rangerl   rx   r   r   r   r   r   r    r)   r'   r=   r=   V   s       [F&&&h777F$$$H555 F$$$L999F44==!!F44==
333	
   V V V&6 6 6@ [S%%1++..	1 	1 /.	1Q Q QO O O [W'79J&KLLC C MLC	1 	1 	1 [D%=4&14M4M4MPTv3VW 1 1 11 1 1*
1 
1 
1 
1 
1r)   r=   )__doc__	itertoolsr   numpyrb   rK   pandasr!   r   pandas._testing_testingr3   main_dtypesfixturer(   r.   r;   r=   r   r)   r'   <module>r      s                                " $ $ $N {###( ( $#(
- - -b1 b1 b1 b1 b1 b1 b1 b1 b1 b1r)   