
    I jQ@                        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'   UR                  S[        R                  R                  S5      S	S
9n/ UR                  S S R                  5       QSPUl        US==   S-  ss'   X44$ )N)    i         ABCDEFGcolumns   axisleftT)fracrandom_stateignore_indexright)
r   nprandomdefault_rngintegerslistsumsampler   tolist)lowhighnr   r#   s        j/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pandas/tests/test_sorting.py
left_rightr0      s    -LCq
		a ))#aV<d9oD 888#DLKKRYY2215D  E <emmCR(//1;7;EM	'NbN;    c                   \   \ rS rSr\R
                  R                  S 5       rS r\R
                  R                  \R
                  R                  SSS/5      S 5       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)r7   r8   r9   r:   r;   r<   r=   r>   )r>   r=   r<   r;   r:   r9   r8   r7   r?   r   r"   )r$   concatenatearanger   r%   r&   standard_normalgroupbyr)   index	sortleveltmassert_index_equalr(   maptupler?   comasarray_tuplesafeitemslen)selfr8   r7   dflgrgr   r#   	exp_index_tupsexpectedkvs                 r/   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&&&r1   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_dictrC   rM   )rN   r?   datagroupeds       r/   'test_int64_overflow_groupby_large_range3TestSorting.test_int64_overflow_groupby_large_rangeU   sE    u""6#WX,,347|s6{***r1   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[        [        S
 UR                  R                   5       5      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.                  " [1        Xa5      " 5       U	5        g s  snf )Nr   i i   )i         abcder   jimjoec              3   8   #    U  H  oR                   v   M     g 7fN)ngroups).0pings     r/   	<genexpr>LTestSorting.test_int64_overflow_groupby_large_df_shuffled.<locals>.<genexpr>m   s     A+@4,,+@s   r   r   ri   r   )names)r   rD   )r$   r%   r&   r'   choicerM   vstackpermutationr   r(   zerosrC   r   rI   _grouper	groupingsr   from_arraysarray_splituniqueravel
sort_indexrF   assert_frame_equalgetattr)
rN   re   rsarrirO   grarmiress
             r/   -test_int64_overflow_groupby_large_df_shuffled9TestSorting.test_int64_overflow_groupby_large_df_shuffled\   s    YY""1%kk(G\:IIc#hC1-ii!f&NN3s8$fsDM2!xxCG55	2e9ZZW& *A2;;+@+@AA
 
 	
 
 ##"$..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   rF   assert_numpy_array_equalr
   intp)rN   orderr   expkeysresults         r/   test_lexsort_indexer TestSorting.test_lexsort_indexer{   s^    4 1tE#J//266(Q,>? M
##FBHHS,HIr1   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   rF   r   )rN   r   r   r   rL   r   s         r/   test_nargsortTestSorting.test_nargsort   sj    6 "&&AU3Z(88BFF8a<GsS y
 	##FBHHSMuMr1    N)__name__
__module____qualname____firstlineno__pytestmarkslowrX   rc   parametrizer   r(   r_   r   r   __static_attributes__r   r1   r/   r3   r3   ,   s   [[%' %'N+ [[[[UVX$677 8 7: [[! 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r1   r3   c                       \ rS rSrS r\R                  R                  S 5       r\R                  R                  S 5       r	\R                  R                  S 5       r
\R                  R                  S 5       rSrg)		TestMerge   c                 F   [        [        R                  R                  S5      R	                  S5      / [        S5      QSPS9n[        [        R                  R                  S5      R	                  S5      / [        S5      QSPS9n[        XSS	9n[        U5      S
:X  d   eg )Nr   )r6   r   ABCDEFG1r      G2outerhowi  )r   r$   r%   r&   rB   r(   r   rM   )rN   df1df2r   s       r/   test_int64_overflow_outer_merge)TestMerge.test_int64_overflow_outer_merge   s    II!!!$44Y?+d8n+d+
 II!!!$44Y?+d8n+d+
 sW-6{d"""r1   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   rM   rF   assert_series_equalilocr)   name)rN   r0   r   r#   outr   s         r/   !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{{"""r1   c           
          Uu  p4[        X4SS9nUR                  UR                  R                  5       SS9  [        R
                  " U[        X4USS95        g )Nr   r   T)inplacer   sort)r   sort_valuesr   r+   rF   r   )rN   r0   	join_typer   r#   r   s         r/   test_int64_overflow_how_merge'TestMerge.test_int64_overflow_how_merge   sK     DW-**,d;
c5)$#OPr1   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   rF   r   r   r+   )rN   r0   r   r#   r   s        r/   $test_int64_overflow_sort_false_order.TestMerge.test_int64_overflow_sort_false_order   sg      DV%8
d(;(;(=$>?EV%8
e)=)=)?%@Ar1   c                 	  ^ UnSu  pEn[        [        R                  R                  S5      R	                  XEUS45      R                  S5      [        S5      S9nUR                  [        R                  5      R                  n[        U5      (       d   e[        Xw/SS9n[        [        R                  R                  S	5      R	                  XEU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'   UR#                  SS[        R                  R                  S5      S9nU	R#                  SS[        R                  R                  S5      S9n	[%        [        5      [%        [        5      pUR'                  [        S5      5      R)                  5        H  u  pX   R+                  US   5        M     U	R'                  [        S5      5      R)                  5        H  u  pX   R+                  US   5        M     / nUR-                  5        HU  u  mnUR/                  T[        R0                  /5      n[3        UU5       H  u  nnUR+                  / TQUPUP75        M      MW     UR-                  5        H)  u  mnTU;  d  M  UR5                  U4S jU 5       5        M+     [        U/ [        S5      QSPSPS9nUR7                  UR8                  R;                  5       SS9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   R7                  UR8                  R;                  5       SS9nURA                  5       URC                  5       -  (       d  US:X  d   e[E        XyX2S9nU(       a6  [        S5      n[F        RH                  " UU   UU   R7                  USS95        [F        RH                  " UUR7                  UR8                  R;                  5       SS95        g )N)r   r   i   r   r   int64r   r   T)r!   r   rj   r   r#   r   ri   )r   r!   r       c              3   R   >#    U  H  n/ TQ[         R                  PUP7v   M     g 7fro   )r$   r   )rq   rvrV   s     r/   rs   GTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.<genexpr>&  s%     <t,a,,,ts   $'boolr   )r   r#   innerr   r   r   r   )r   )%r   r$   r%   r&   r'   astyper(   applyr	   nuniquer?   r   r   rv   rM   r   rB   r*   r   	set_indexiterrowsappendrL   getr   r   extendr   r   to_listnotnaonesallanyr   rF   r   )rN   r   r   r   r,   r-   r.   r   shaper#   r   ldictrdictidxrowvalslvalrvallvr   r   jmaskmaskframer   kcolsrV   s                             @r/   *test_int64_overflow_one_to_many_none_match4TestMerge.test_int64_overflow_one_to_many_none_match   s%    1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 {{BII4I4I!4L  
 BII4I4I!4L  

 #4(+d*;utI7@@BHCJc&k* C Y8AACHCJc'l+ D {{}GAt99Q)D!$-BLaLLRL) . %
 {{}GAt~<t<< % &IY&I&I&IJoockk113$oG K%%'\'')[&&(3w<+=+=+??WWSXV4	
 SzD	%%ckk&9&9&;$%OxxzDHHJ&#.88DS4OE!!E
CJ225{2K 	3??3;;#6#6#8t?L	
r1   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r/   r   r      s    # [[# # [[Q Q [[B B [[P
 P
r1   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SS9 H  u  pE[        R                  " XE5        M     g )NT)r   xnull)strict)r   r   ziprF   r   )
codes_listr   group_indexcodes_list2r[   r\   s         r/   test_deconsr  D  s=    * "*$dKK%k9KJD9
##A) :r1   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\R
                  R                  SSS/SS/SS//5      S 5       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$\S/SSS$\///5      S% 5       r\R
                  R                  S	S
S/5      S& 5       rS'rg)(TestSafeSorti`  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 ro   )r   r$   r
   rF   r   )rN   argr   r   rU   s        r/   test_basic_sortTestSafeSort.test_basic_sorta  s1     288C=)88C=
##F5r1   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   rF   r   )	rN   r  codes	exp_codesr?   rU   r   result_codesexpected_codess	            r/   
test_codesTestSafeSort.test_codesq  sf     /*88O,(4 
 )277;
##F5
##LAr1   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   r?   rU   r  r   r  r  s          r/   test_codes_out_of_bound$TestSafeSort.test_codes_out_of_bound  se    /*88O, .(M"=RWWM
##F5
##LAr1   r  r"   r   c                     [         R                  " / 5      n[         R                  " U[         R                  S9* n[	        X!5      u  pE[
        R                  " XS5        g )Nr   )r$   r
   	ones_liker   r   rF   r   )rN   r  empty_valuesr  rS   r  s         r/   #test_codes_empty_array_out_of_bound0TestSafeSort.test_codes_empty_array_out_of_bound  s@    xx|,,uBGG<<#L8
##LAr1   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   rF   r   )rN   r?   r   rU   s       r/   test_mixed_integerTestSafeSort.test_mixed_integer  s<    2&A6"884FC
##F5r1   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   rF   r   )rN   r?   r  r   r  rU   r  s          r/   test_mixed_integer_with_codes*TestSafeSort.test_mixed_integer_with_codes  sg    *&9&(788,F;"8H
##F5
##LAr1   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      r/   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+  )r?   r  )r   r.  r   )rN   r	  r  errr0  s        r/   test_exceptionsTestSafeSort.test_exceptions  s$     ]]3*S. +**s   
(
6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   rF   assert_extension_array_equal)rN   r	  r   r[   r   rU   s         r/   test_extension_array!TestSafeSort.test_extension_array  s3     #W%1G,
''9r1   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 )	Nr7  r:  r   )r   r   r"   r   Tr  r8  )r   r   r"   r   )r
   r   r$   r   rF   r;  r   )rN   r  r[   r   r  expected_valuesr  s          r/   test_extension_array_codes'TestSafeSort.test_extension_array_codes  s]    )7+!!]DQWX	9-rww?
''@
##E:r1   r   )r   r   r   r   r   r   r   r$   r
   r(   r$  r
  r  r  r   r%  r(  r1  r/  
ValueErrorr5  r   r<  r@  r   r   r1   r/   r  r  `  s   [[o.hv6hv6 H	

6
6
 [[Xe}5[[&(ABH	
	B 6	B	B [[WBx!R1a&&ABB CB6B [[i!MNXXi !Y0PQXXl#aVZ9RS	
// [[i+q!RmaAr]-KL:: [[Xe}5; 6;r1   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_fixturer?   r   rU   s       r/   test_mixed_str_nullrE    sL    XXsM34FCFvFxxc36fEH1r1   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   r|   r   rF   rG   )arr1arr2midxr   rU   s        r/   test_safe_sort_multiindexrJ    sm    1aR.0DD!!4,/Dt_F%%	Ar2g	.=H &+r1   )-collectionsr   r   	itertoolsr   numpyr$   r   pandasr   r   r   r	   r
   r   r   pandas._testing_testingrF   pandas.core.algorithmsr   pandas.core.commoncorecommonrJ   pandas.core.sortingr   r   r   r   r   fixturer0   r3   r   r   r   tiler   r   rA   r  r  rE  rJ  r   r1   r/   <module>rX     sg   #        ,       UN UNp}
 }
@  0#6==bhhG0#6==bhhG0#6==bhhG
 	
 		%rxx8!<		%rxx8!< 	
(*)(*h; h;V2	,r1   