
    Mh@                        S SK Jr  S SKJr  S SKJr  S SKrS SKrS SKJ	r	J
r
JrJrJrJrJr  S SKJr  S SKJr  S SKJs  Jr  S SKJrJrJrJrJr  \R>                  S 5       r  " S	 S
5      r! " S S5      r"\RF                  RI                  S\RJ                  " / SQS5      RM                  \RN                  5      \RJ                  " / SQS5      RM                  \RN                  5      \RJ                  " / SQS5      RM                  \RN                  5      /S/\RJ                  " \RP                  " S\RN                  S9S5      \RJ                  " \RP                  " S\RN                  S9S5      /S//5      S 5       r) " S S5      r*S r+S r,g)    )defaultdict)datetime)productN)NA	DataFrame
MultiIndexSeriesarrayconcatmerge)	safe_sort)_decons_group_indexget_group_indexis_int64_overflow_possiblelexsort_indexernargsortc                     Su  pn[        [        R                  R                  S5      R	                  XUS45      [        S5      S9nUR                  SS9US'   [        R                  R                  S5      R                  [        U5      5      nUR                  U   R                  5       nUR                  S S	 R                  5       S
/-   Ul        [        R                  " [        U5      5      Ul        US
==   S	-  ss'   X54$ )N)    i         ABCDEFGcolumns   axisleftright)r   nprandomdefault_rngintegerslistsumpermutationleniloccopyr   tolistarangeindex)lowhighnr   ir    s         K/var/www/html/env/lib/python3.13/site-packages/pandas/tests/test_sorting.py
left_rightr3      s    -LCq
		a ))#aV<d9oD 888#DL 			a ,,SY7AIIaLEMM#2&--/7);EM))CJ'EK	'NbN;    c                   *   \ rS rSr\R
                  R                  S 5       rS r\R
                  R                  SSS/5      S 5       r
\R
                  R                  SS	S
\" \" SS5      5      \" \" S5      5      -   \" \" SS5      5      -   /S	S\" \" S5      5      \" \" SS5      5      -   \" \" SS5      5      -   /SS
\" \" SSS5      5      \" \" S5      5      -   \" \" SS5      5      -   /SS\" \" S5      5      \" \" SS5      5      -   \" \" SSS5      5      -   //5      S 5       r\R
                  R                  SS	S
\" \" SS5      5      \" \" S5      5      -   \" \" SS5      5      -   /S	S\" \" S5      5      \" \" SS5      5      -   \" \" SS5      5      -   /SS
\" \" SSS5      5      \" \" S5      5      -   \" \" SS5      5      -   /SS\" \" S5      5      \" \" SS5      5      -   \" \" SSS5      5      -   //5      S 5       rSrg)TestSorting.   c                 H   [         R                  " [         R                  " S5      [         R                  " S5      [         R                  " S5      45      n[         R                  " S5      n[        UUUUUUUU[         R                  R                  S5      R                  S5      S.	5      nUR                  / SQ5      nUR                  / SQ5      nUR                  5       S   nUR                  5       S   nUR                  R                  5       u  p[        R                  " UR                  U5        UR                  R                  S	5      u  p[        R                  " UR                  U5        [        [        [        U/ SQ   R                   5      5      n
["        R$                  " U
5      n
UR                  U
5      R                  5       S   nUR'                  5        H!  u  pXl   X|S S S
2      :X  d   eXl   U:X  a  M!   e   [)        U5      [)        U5      :X  d   eg )N  i  i	  r   )	ABCDEFGHvalues)r:   r;   r<   r=   r>   r?   r@   rA   )rA   r@   r?   r>   r=   r<   r;   r:   rB   r   r   )r!   concatenater,   r   r"   r#   standard_normalgroupbyr&   r-   	sortleveltmassert_index_equalr%   maptuplerB   comasarray_tuplesafeitemsr(   )selfr;   r:   dflgrgr   r    	exp_index_tupsexpectedkvs                 r2   test_int64_overflowTestSorting.test_int64_overflow/   s   NNBIIdORYYt_biinMNIIdO))//2BB4H

 ZZ@AZZ@Avvx!"zz++-	
djj)4{{,,Q/	
ekk95Cr"JKRRST$$T*::d#'')(3NN$DA7eddGn,,,7a<< % 4yCJ&&&r4   c                     [        S5      n[        R                  " XXS.5      nUR                  / SQ5      n[	        U5      [	        U5      :X  d   eg )NiE  )abcd)ranger   	from_dictrE   r(   )rN   rB   datagroupeds       r2   'test_int64_overflow_groupby_large_range3TestSorting.test_int64_overflow_groupby_large_rangeW   sE    u""6#WX,,347|s6{***r4   aggmeanmedianc           	         [         R                  R                  S5      nUR                  SSS5      nUR	                  [        U5      [        U5      S-  5      n[         R                  " X3U   45      nUR                  [        U5      5      nX4   n[        U[        S5      S9n[         R                  " S[        U5      45      u  US'   US	'   UR                  [        S5      5      n[        UR                  R                  5      (       d   e[        R                   " [         R"                  " [         R$                  " US
S9SSS9 Vs/ s H  owR'                  5       PM     sn[        S5      S9n[        [         R                  " [        U5      S45      SS	/US9R)                  5       n	[*        R,                  " [/        Xa5      " 5       U	5        g s  snf )Nr   i i   )i         abcder   jimjoer   r   ri   r   )names)r   r-   )r!   r"   r#   r$   choicer(   vstackr'   r   r%   zerosrE   r   _groupershaper   from_arraysarray_splituniqueravel
sort_indexrG   assert_frame_equalgetattr)
rN   re   rsarrr1   rO   grarmiress
             r2   -test_int64_overflow_groupby_large_df_shuffled9TestSorting.test_int64_overflow_groupby_large_df_shuffled^   sm   YY""1%kk(G\:IIc#hC1-ii!f&NN3s8$fsDM2!xxCG55	2e9ZZW& *"++*;*;<<<<##"$..3Q1GQR"ST"SBXXZ"STw-

 HHc"gq\"UEN"

*, 	 	gb.0#6 Us   
Gzorder, na_position, expTlastri   i   n   firstFh   rj   r   c                    [         R                  /S-  [        [        S5      5      -   [         R                  /S-  -   /n[	        XAUS9n[
        R                  " U[         R                  " U[         R                  S95        g )Nri   d   )ordersna_positiondtype)	r!   nanr%   r_   r   rG   assert_numpy_array_equalr
   intp)rN   orderr   expkeysresults         r2   test_lexsort_indexer TestSorting.test_lexsort_indexerz   s^    4 1tE#J//266(Q,>? M
##FBHHS,HIr4   zascending, na_position, expc                    [         R                  " [         R                  /S-  [        [	        S5      5      -   [         R                  /S-  -   SS9n[        USXS9n[        R                  " U[         R                  " U5      SS9  g )	Nri   r   Or   	mergesort)kind	ascendingr   F)check_dtype)r!   r
   r   r%   r_   r   rG   r   )rN   r   r   r   rM   r   s         r2   test_nargsortTestSorting.test_nargsort   sj    6 "&&AU3Z(88BFF8a<GsS y
 	##FBHHSMuMr4    N)__name__
__module____qualname____firstlineno__pytestmarkslowrX   rc   parametrizer   r%   r_   r   r   __static_attributes__r   r4   r2   r6   r6   .   st   [[%' %'N+ [[UVX$677 876 [[! U1c]#d58n4tE#sO7LL U1XeCo!66eAsm9LL U32&'$uQx.84c3;PP U1XeCo!66eCB>O9PP!	
2J32J
 [[% U1c]#d58n4tE#sO7LL U1XeCo!66eAsm9LL U32&'$uQx.84c3;PP U1XeCo!66eCB>O9PP!	
2N32Nr4   r6   c                      \ rS rSrS r\R                  R                  S 5       r\R                  R                  \R                  R                  S/ SQ5      S 5       5       r
\R                  R                  S 5       r\R                  R                  \R                  R                  S/ SQ5      \R                  R                  SS	S
/5      S 5       5       5       rSrg)	TestMerge   c                 F   [        [        R                  R                  S5      R	                  S5      [        S5      S/-   S9n[        [        R                  R                  S5      R	                  S5      [        S5      S/-   S9n[        XSS	9n[        U5      S
:X  d   eg )Nr   )r9   r   ABCDEFG1r      G2outerhowi  )r   r!   r"   r#   rD   r%   r   r(   )rN   df1df2r   s       r2   test_int64_overflow_outer_merge)TestMerge.test_int64_overflow_outer_merge   s    II!!!$44Y?NdV+
 II!!!$44Y?NdV+
 sW-6{d"""r4   c                 "   Uu  p#[        X#SS9n[        U5      [        U5      :X  d   e[        R                  " US   US   * SS9  UR                  S S 2S S24   R                  SS	9n[        R                  " US   USS9  UR                  b   eg )
Nr   r   r   r    F)check_namesr   r   )r   r(   rG   assert_series_equalr)   r&   name)rN   r3   r   r    outr   s         r2   !test_int64_overflow_check_sum_col+TestMerge.test_int64_overflow_check_sum_col   s     DW-3x3t9$$$
s6{S\MuM!SbS&!%%1%-
s6{FF{{"""r4   r   )r   r    r   innerc           
          Uu  p4[        X4SS9nUR                  UR                  R                  5       SS9  [        R
                  " [        U5      5      Ul        [        R                  " U[        X4USS95        g )Nr   r   T)inplacer   sort)
r   sort_valuesr   r+   r!   r,   r(   r-   rG   ry   )rN   r3   r   r   r    r   s         r2   test_int64_overflow_how_merge'TestMerge.test_int64_overflow_how_merge   sa     !DW-**,d;IIc#h'	
c5#D#IJr4   c                     Uu  p#[        X#SSS9n[        R                  " X$UR                  R	                  5          5        [        X2SSS9n[        R                  " X4UR                  R	                  5          5        g )Nr   Fr   )r   rG   ry   r   r+   )rN   r3   r   r    r   s        r2   $test_int64_overflow_sort_false_order.TestMerge.test_int64_overflow_sort_false_order   sg      DV%8
d(;(;(=$>?EV%8
e)=)=)?%@Ar4   r   TFc                 
  ^ Su  p4n[        [        R                  R                  S5      R	                  X4US45      R                  S5      [        S5      S9nUR                  [        R                  5      R                  n[        U5      (       d   e[        Xf/SS9n[        [        R                  R                  S	5      R	                  X4US-  S45      R                  S5      [        S5      S9n[        R                  R                  S
5      R                  [        U5      U5      n	[        XUR                  U	   /SS9n[        R                  R                  S5      R!                  [        U5      5      US'   [        R                  R                  S5      R!                  [        U5      5      US'   [        R                  R                  S5      R#                  [        U5      5      n	UR                  U	   R%                  5       n[        R&                  " [        U5      5      Ul        [        R                  R                  S5      R#                  [        U5      5      n	UR                  U	   R%                  5       n[        R&                  " [        U5      5      Ul        [+        [        5      [+        [        5      pUR-                  [        S5      5      R/                  5        H  u  pX   R1                  US   5        M     UR-                  [        S5      5      R/                  5        H  u  pX   R1                  US   5        M     / nU
R3                  5        HS  u  mnUR5                  T[        R6                  /5      n[9        UU5       H  u  nnUR1                  TUU4-   5        M     MU     UR3                  5        H)  u  mnTU
;  d  M  UR;                  U4S jU 5       5        M+     S n[        U[        S5      SS/-   S9nU" U5      nUS   R=                  5       US   R=                  5       US   R=                  5       US   R=                  5       -  [        R>                  " [        U5      SS9S.nUU   nU" UU   R%                  5       5      nURA                  5       URC                  5       -  (       d  US:X  d   e[E        XhXS9nU(       aD  [        S5      n[F        RH                  " UU   R%                  5       UU   RK                  USS95        [F        RH                  " UU" U5      5        g )N)r   r   i   r   r   int64r   r   T)ignore_indexr   rj   r   r    ri      c              3   N   >#    U  H  nT[         R                  U4-   v   M     g 7fN)r!   r   ).0rvrV   s     r2   	<genexpr>GTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.<genexpr>/  s0       # 
 #s   "%c                     U R                  U R                  R                  5       5      n [        R                  " [        U 5      5      U l        U $ r   )r   r   r+   r!   r,   r(   r-   )rO   s    r2   alignCTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.align8  s6    

 1 1 34ByyR)BHIr4   boolr   )r   r    r   r   r   r   r   )r   )&r   r!   r"   r#   r$   astyper%   applyr	   nuniquerB   r   r   ro   r(   r)   rD   r'   r*   r,   r-   r   	set_indexiterrowsappendrM   getr   r   extendnotnaonesallanyr   rG   ry   r   )rN   r   r   r.   r/   r0   r   rs   r    r1   ldictrdictidxrowvalslvalrvallvr   r   r   jmaskmaskframer   kcolsrV   s                             @r2   *test_int64_overflow_one_to_many_none_match4TestMerge.test_int64_overflow_one_to_many_none_match   s<   
 21II!!!$--c!Q@GGPO
 

6>>*11)%0000 tl6II!!!$--c!q&!ELLWUO
 II!!!$++CIq9diil3$Gyy,,Q/??D	JV..q1AA#e*Mg II!!!$00T;yy|  "YYs4y)
II!!!$00U<

1""$iiE
+ #4(+d*;utI7@@BHCJc&k* C Y8AACHCJc'l+ D {{}GAt99Q)D!$-B . % {{}GAt~  #  %	
 d9o8I&IJCj K%%'\'')[&&(3w<+=+=+??WWSXV4	
 Szc$inn&'xxzDHHJ&#.88DS4OE!!E
!3u:#9#9%k#9#R 	eU3Z0r4   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r2   r   r      s    # [[# # [[[[U$GHK I K [[B B [[[[U$GH[[VdE]3`1 4 I `1r4   r   zcodes_list, shape)r   r   r   r   r   r   r   r   r   )r   r   rj   r   r   r   r   r   )ri   r   r   r   r   r   ri   rj   )rj   ri   r   '  r   ri   )r   r   c                     [        XSSS9n[        X!5      n[        X5       H  u  pE[        R                  " XE5        M     g )NT)r   xnull)r   r   ziprG   r   )
codes_listrs   group_indexcodes_list2r[   r\   s         r2   test_deconsr   W  s;    * "*$dKK%k9KJ,
##A) -r4   c            
          \ rS rSr\R
                  R                  S/ SQ/ SQ/\R                  " \	" S5      \
S9\R                  " \	" S5      \
S9// / //5      S 5       r\R
                  R                  S	S
S/5      \R
                  R                  S/ SQ/ SQ// / //5      S 5       5       rS rS rS rS r\R
                  R                  SSS\S/\R                  " / SQ5      S\S/\R                  " / SQ5      SS/\S//5      S 5       r\R
                  R                  S/ SQ/ SQ/SS \R(                  S!/SS!S \R(                  ///5      S" 5       r\R
                  R                  S	S
S/5      S# 5       rS$rg)%TestSafeSortis  zarg, expr   r   r   r   rj   r   r   r   r   rj   baaacbr   aaabbcc                     [        [        R                  " U5      5      n[        R                  " U5      n[        R                  " X45        g r   )r   r!   r
   rG   r   )rN   argr   r   rU   s        r2   test_basic_sortTestSafeSort.test_basic_sortt  s1     288C=)88C=
##F5r4   verifyTFzcodes, exp_codes)r   r   r   r   r   r   r   rj   )r   r   r   r   r   r   r   rj   c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[        XBSUS9u  pg[         R                  " U[         R                  S9n[        R
                  " Xe5        [        R
                  " Xx5        g )Nr   r   Tuse_na_sentinelr  r   r!   r
   r   r   rG   r   )	rN   r  codes	exp_codesrB   rU   r   result_codesexpected_codess	            r2   
test_codesTestSafeSort.test_codes  sf     /*88O,(4 
 )277;
##F5
##LAr4   c                 &   [         R                  " / SQ5      n[         R                  " / SQ5      n/ SQn[        XSS9u  pE[         R                  " / SQ[         R                  S9n[        R
                  " XB5        [        R
                  " XV5        g )Nr   r   )r   e   f   r   r   r   c   rj   T)r  )r   r   r   r   r   r   r   rj   r   r	  )rN   rB   rU   r
  r   r  r  s          r2   test_codes_out_of_bound$TestSafeSort.test_codes_out_of_bound  se    /*88O, .(M"=RWWM
##F5
##LAr4   c                     [         R                  " / SQ[        S9n[        U5      n[         R                  " / SQ[        S9n[        R
                  " X#5        g )N)r\   r   r   r[   r   r\   r   )r   r   r   r[   r\   r\   r!   r
   objectr   rG   r   )rN   rB   r   rU   s       r2   test_mixed_integerTestSafeSort.test_mixed_integer  s<    2&A6"884FC
##F5r4   c                 4   [         R                  " / SQ[        S9n/ SQn[        X5      u  p4[         R                  " / SQ[        S9n[         R                  " / SQ[         R                  S9n[
        R                  " X55        [
        R                  " XF5        g )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   rG   r   )rN   rB   r
  r   r  rU   r  s          r2   test_mixed_integer_with_codes*TestSafeSort.test_mixed_integer_with_codes  sg    *&9&(788,F;"8H
##F5
##LAr4   c                     [         R                  " SS[        R                  " 5       SS/[        S9nSn[
        R                  " [        US9   [        U5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   r   z,'[<>]' not supported between instances of .*match)	r!   r
   r   nowr  r   raises	TypeErrorr   )rN   r|   msgs      r2   test_unsortableTestSafeSort.test_unsortable  sI    hh1hllna36B<]]9C0cN 100s   A""
A0zarg, codes, err, msgr   Nz*Only np.ndarray, ExtensionArray, and Index)r   r   r   zOnly list-like objects or None)r   r   r   r   r   zvalues should be uniquec                 r    [         R                  " X4S9   [        XS9  S S S 5        g ! , (       d  f       g = f)Nr  )rB   r
  )r   r"  r   )rN   r  r
  errr$  s        r2   test_exceptionsTestSafeSort.test_exceptions  s$     ]]3*S. +**s   
(
6r   r   r   r   r   r   r   r   c                 n    [        USS9n[        U5      n[        USS9n[        R                  " XE5        g )NInt64r   )r
   r   rG   assert_extension_array_equal)rN   r  r   r[   r   rU   s         r2   test_extension_array!TestSafeSort.test_extension_array  s3     #W%1G,
''9r4   c                     [        / SQSS9n[        U/ SQSUS9u  p4[        / SQSS9n[        R                   " / SQ[        R                  S9n[        R
                  " X55        [        R                  " XF5        g )	Nr+  r.  r   )r   r   r   r   Tr  r,  )r   r   r   r   )r
   r   r!   r   rG   r/  r   )rN   r  r[   r   r
  expected_valuesr  s          r2   test_extension_array_codes'TestSafeSort.test_extension_array_codes  s]    )7+!!]DQWX	9-rww?
''@
##E:r4   r   )r   r   r   r   r   r   r   r!   r
   r%   r  r  r  r  r  r  r%  r#  
ValueErrorr)  r   r0  r4  r   r   r4   r2   r   r   s  s   [[o.hv6hv6 H	

6
6
 [[Xe}5[[&(ABH	
	B 6	B	B6B [[i!MNXXi !Y0PQXXl#aVZ9RS	
// [[i+q!RVVQ.?!Q266AR-ST:: [[Xe}5; 6;r4   r   c                     [         R                  " SU SS/[        S9n[        U5      n[         R                  " SSSU /[        S9n[        R
                  " X#5        g )Nr\   r[   r   r  )nulls_fixturerB   r   rU   s       r2   test_mixed_str_nullr9    sL    XXsM34FCFvFxxc36fEH1r4   c                     [        SS[        [        /SS9n / SQn[        R                  " X/5      n[	        U5      n[        R                  " [        SS[        [        /SS9/ SQ/5      n[
        R                  " X45        g )Nr   r   r.  r   )r   r   r   r   )r   r   r   r   )r	   r   r   rt   r   rG   rH   )arr1arr2midxr   rU   s        r2   test_safe_sort_multiindexr>    sm    1aR.0DD!!4,/Dt_F%%	Ar2g	.=H &+r4   )-collectionsr   r   	itertoolsr   numpyr!   r   pandasr   r   r   r	   r
   r   r   pandas._testing_testingrG   pandas.core.algorithmsr   pandas.core.commoncorecommonrK   pandas.core.sortingr   r   r   r   r   fixturer3   r6   r   r   r   tiler   r   r,   r   r   r9  r>  r   r4   r2   <module>rL     sg   #        ,        RN RNjQ1 Q1h  0#6==bhhG0#6==bhhG0#6==bhhG
 	
 		%rxx8!<		%rxx8!< 	
(*)(*a; a;H2	,r4   