
    .iz                     p    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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_lowercaseNc                  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      )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     f/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/frame/methods/test_nlargest.py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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                  j	                  d      j                  d      t        t        d d       t        j                  j	                  d      j                  d      j                  d      d      }d|v r>d| d}t        j                  t        |      5   t        ||      ||       d d d        y |d	k(  } t        ||      ||      }t        j                  t        |j                              |_        |j                  ||
      j!                  |      }t#        j$                  ||       y # 1 sw Y   y xY w)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.   s1   * \\YY**1-99"=/#2./YY**1-99"=DDYO
 %<&&4%55FH  y	: 6+N+Au56 6 '+5I0WR0E:F88D$67FL~~ey~AFFqIH!!&(36 6s   6EEr   r   r   r   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 '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   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   r   r   )r8   r    setnlargest)rI   r(   rK   s      r'   test_nlargest_all_dtypesz.TestNLargestNSmallest.test_nlargest_all_dtypesl   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   )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     \\ 29KLMQc
3<<\2,
 	fh/a#s4<<\2,
 	fh/r&   c                 n   t        j                  dgdz  g dd      }|j                  dd      }t        j                  dgdz  g ddt        d            }t	        j
                  ||       |j                  dd      }t        j                  dgdz  g dd      }t	        j
                  ||       y )	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o>?Q$<<qcAgI >eAhO
fh/a%<<qcAgI >?
fh/r&      c                     t        j                  g dg dg ddg d      }|j                  ||      }|j                  |d      j	                  |      }t        j                  ||       |j                  ||      }|j                  |d	d
      j	                  |      }|dgk(  r|dv s|ddgk(  r5|dk(  r0|j                  t        j                  j                  dd	             t        j                  ||       y )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   s     \\!oN!
 a'>>%h>7<<Q?
fh/Q&>>%5x>HMMaPcUNqL0uc
7JPQUVPV!!G ! "  	fh/r&   c                 t   t        j                  g dg dd      }|j                  ddd      }t        j                  g dg d	dg d
      }t        j                  ||       |j                  ddd      }t        j                  g dg ddt        dd            }t        j                  ||       y )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    \\*1MN
 Q%0<<*. (
 	fh/a51<<$' 1+
 	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?)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     \\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   ra   Fr9   )	r   r   r;   nanr[   rE   rF   rG   rH   rb   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_   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<<$$$
 (
 &#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*   +   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 /	
02020$00r&   r*   )__doc__r   r   numpyr;   r?   pandasr   pandas._testing_testingrG   fixturer(   r*   r%   r&   r'   <module>r      s?   
 #      6F0 F0r&   