
    Eg@                        d dl mZ d dlmZ d dlmZ d dlZd dlZd dlm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dlmc mZ d dlmZmZmZmZmZ ej        d             Z  G d	 d
          Z! G d d          Z"ej#        $                    d ej%        g dd          &                    ej'                   ej%        g dd          &                    ej'                   ej%        g dd          &                    ej'                  gdg ej%         ej(        dej'                  d           ej%         ej(        dej'                  d          gdgg          d             Z) G d d          Z*d Z+d Z,dS )    )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                  h   d\  } }}t          t          j                            d                              | ||df          t          d                    }|                    d          |d<   t          j                            d                              t          |                    }|j	        |         
                                }|j        d d	                                         d
gz   |_        t          j        t          |                    |_        |d
xx         d	z  cc<   ||fS )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         N/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/test_sorting.py
left_rightr3      s	   -LCq
	a  ))#taV<<d9oo  D 888##DL 		a  ,,SYY77AIaLEM#2#&--//7);EM)CJJ''EK	'NNNbNNN;    c                   B   e Zd Zej        j        d             Zd Zej                            dddg          d             Z	ej                            ddd	 e
 ed
d                     e
 ed
                    z    e
 edd                    z   gdd e
 ed
                     e
 edd                    z    e
 ed
d                    z   gdd	 e
 eddd                     e
 ed
                    z    e
 edd                    z   gdd e
 ed
                     e
 edd                    z    e
 eddd                    z   gg          d             Zej                            ddd	 e
 ed
d                     e
 ed
                    z    e
 edd                    z   gdd e
 ed
                     e
 edd                    z    e
 ed
d                    z   gdd	 e
 eddd                     e
 ed
                    z    e
 edd                    z   gdd e
 ed
                     e
 edd                    z    e
 eddd                    z   gg          d             ZdS )TestSortingc                    t          j        t          j        d          t          j        d          t          j        d          f          }t          j        d          }t          ||||||||t           j                            d                              d          d	          }|                    g d          }|                    g d          }|                                d         }|                                d         }|j	        
                                \  }}	t          j        |j	        |           |j	        
                    d	          \  }}	t          j        |j	        |           t          t          t          |g d         j                            }
t#          j        |
          }
|                    |
                                          d         }|                                D ]0\  }}||         ||d d d
                  k    sJ ||         |k    sJ 1t)          |          t)          |          k    sJ d S )N  i  i	  r   )	ABCDEFGHvalues)r9   r:   r;   r<   r=   r>   r?   r@   )r@   r?   r>   r=   r<   r;   r:   r9   rA   r   r   )r!   concatenater,   r   r"   r#   standard_normalgroupbyr&   r-   	sortleveltmassert_index_equalr%   maptuplerA   comasarray_tuplesafeitemsr(   )selfr:   r9   dflgrgr   r    	exp_index_tupsexpectedkvs                 r2   test_int64_overflowzTestSorting.test_int64_overflow/   s   NBIdOORYt__binnMNNIdOO)//22BB4HH
 

 
 ZZ@@@AAZZ@@@AAvvxx!"z++--	1
dj)444{,,Q//	1
ek9555Cr"J"J"JKRSSTT$T**::d##''))(3NN$$ 	  	 DAq7eAdddGn,,,,7a<<<<<4yyCJJ&&&&&&r4   c                     t          d          }t          j        ||||d          }|                    g d          }t	          |          t	          |          k    sJ d S )NiE  )abcd)ranger   	from_dictrD   r(   )rM   rA   datagroupeds       r2   'test_int64_overflow_groupby_large_rangez3TestSorting.test_int64_overflow_groupby_large_rangeW   se    u"f6PV#W#WXX,,333447||s6{{******r4   aggmeanmedianc           	         t           j                            d          }|                    ddd          }|                    t          |          t          |          dz            }t          j        |||         f          }|                    t          |                    }||         }t          |t          d                    }t          j
        dt          |          f          \  |d<   |d	<   |                    t          d                    }t          |j        j                  sJ t          j        d
 t          j        t          j        |d          dd          D             t          d                    }t          t          j
        t          |          df          dd	g|                                          }t)          j         t-          ||                      |           d S )Nr   i i   )i         abcder   jimjoec                 6    g | ]}|                                 S  )ravel).0ars     r2   
<listcomp>zMTestSorting.test_int64_overflow_groupby_large_df_shuffled.<locals>.<listcomp>p   s     TTTBRXXZZTTTr4   r   r   rf   r   )names)r   r-   )r!   r"   r#   r$   choicer(   vstackr'   r   r%   zerosrD   r   _groupershaper   from_arraysarray_splitunique
sort_indexrF   assert_frame_equalgetattr)	rM   rb   rsarrr1   rN   grmiress	            r2   -test_int64_overflow_groupby_large_df_shuffledz9TestSorting.test_int64_overflow_groupby_large_df_shuffled^   s   Y""1%%kk(G\::IIc#hhC1--ic!f&&NN3s88$$!fsDMM222!xCGG555	2e9ZZW&& *"+*;<<<<<#TT".3Q1G1G1GQR"S"S"STTTw--
 
 

 Hc"ggq\""UEN"
 
 

*,, 	 	.gb#..00#66666r4   zorder, na_position, expTlastrf   i   n   firstFh   rg   r   c                    t           j        gdz  t          t          d                    z   t           j        gdz  z   g}t	          |||          }t          j        |t          j        |t           j                             d S )Nrf   d   )ordersna_positiondtype)	r!   nanr%   r]   r   rF   assert_numpy_array_equalr
   intp)rM   orderr   expkeysresults         r2   test_lexsort_indexerz TestSorting.test_lexsort_indexerz   sr    4 1tE#JJ///26(Q,>? eMMM
#FBHS,H,H,HIIIIIr4   zascending, na_position, expc                 "   t          j        t           j        gdz  t          t	          d                    z   t           j        gdz  z   d          }t          |d||          }t          j        |t          j        |          d           d S )	Nrf   r   Or   	mergesort)kind	ascendingr   F)check_dtype)r!   r
   r   r%   r]   r   rF   r   )rM   r   r   r   rL   r   s         r2   test_nargsortzTestSorting.test_nargsort   s    6 "&AU3ZZ(8(88BF8a<GsSSS yk
 
 
 	#FBHSMMuMMMMMMr4   N)__name__
__module____qualname__pytestmarkslowrW   ra   parametrizer   r%   r]   r   r   rl   r4   r2   r6   r6   .   s       [%' %' %'N+ + + [UVX$6777 7 8776 [! UU1c]]##dd5588nn4ttEE#sOO7L7LL UU1XXeeCoo!6!66eeAsmm9L9LL UU32&&''$$uuQxx..844c3;P;PP UU1XXeeCoo!6!66eeCB>O>O9P9PP!	
 2J J3 2J
 [% UU1c]]##dd5588nn4ttEE#sOO7L7LL UU1XXeeCoo!6!66eeAsmm9L9LL UU32&&''$$uuQxx..844c3;P;PP UU1XXeeCoo!6!66eeCB>O>O9P9PP!	
 2N N3 2N N Nr4   r6   c                      e Zd Zd Zej        j        d             Zej        j        ej                            dg d          d                         Z	ej        j        d             Z
ej        j        ej                            dg d          ej                            ddd	g          d
                                     ZdS )	TestMergec                    t          t          j                            d                              d          t          d          dgz             }t          t          j                            d                              d          t          d          dgz             }t          ||d	          }t          |          d
k    sJ d S )Nr   )r8   r   ABCDEFG1r      G2outerhowi  )r   r!   r"   r#   rC   r%   r   r(   )rM   df1df2r   s       r2   test_int64_overflow_outer_mergez)TestMerge.test_int64_overflow_outer_merge   s    I!!!$$44Y??NNdV+
 
 
 I!!!$$44Y??NNdV+
 
 
 sCW---6{{d""""""r4   c                 Z   |\  }}t          ||d          }t          |          t          |          k    sJ t          j        |d         |d          d           |j        d d d df                             d	          }t          j        |d         |d           |j        J d S )
Nr   r   r   r    F)check_namesr   r   )r   r(   rF   assert_series_equalr)   r&   name)rM   r3   r   r    outr   s         r2   !test_int64_overflow_check_sum_colz+TestMerge.test_int64_overflow_check_sum_col   s     eD%W---3xx3t99$$$$
s6{S\MuMMMM!!!SbS&!%%1%--
s6{FFFFF{"""""r4   r   )r   r    r   innerc           	      (   |\  }}t          ||d          }|                    |j                                        d           t	          j        t          |                    |_        t          j	        |t          |||d                     d S )Nr   r   T)inplacer   sort)
r   sort_valuesr   r+   r!   r,   r(   r-   rF   r{   )rM   r3   r   r   r    r   s         r2   test_int64_overflow_how_mergez'TestMerge.test_int64_overflow_how_merge   s     !eD%W---**,,d;;;Ic#hh''	
c5u#D#I#I#IJJJJJr4   c                 $   |\  }}t          ||dd          }t          j        |||j                                                            t          ||dd          }t          j        |||j                                                            d S )Nr   Fr   )r   rF   r{   r   r+   )rM   r3   r   r    r   s        r2   $test_int64_overflow_sort_false_orderz.TestMerge.test_int64_overflow_sort_false_order   s     e D%V%888
dC(;(;(=(=$>???E4V%888
eS)=)=)?)?%@AAAAAr4   r   TFc                 l   d\  }}}t          t          j                            d                              |||df                              d          t          d                    }|                    t          j	                  j
        }t          |          sJ t          ||gd          }t          t          j                            d	                              |||dz  df                              d          t          d                    }t          j                            d
                              t          |          |          }	t          |||j        |	         gd          }t          j                            d                              t          |                    |d<   t          j                            d                              t          |                    |d<   t          j                            d                              t          |                    }	|j        |	                                         }t          j        t          |                    |_        t          j                            d                              t          |                    }	|j        |	                                         }t          j        t          |                    |_        t+          t                    t+          t                    }}
|                    t          d                                                    D ]&\  }}|
|                             |d                    '|                    t          d                                                    D ]&\  }}||                             |d                    'g }|
                                D ]V\  }|                    t          j        g          }t9          ||          D ]\  }}|                    ||fz               W|                                D ]*\  }|
vr!|                    fd|D                        +d }t          |t          d          ddgz             } ||          }|d                                         |d                                         |d                                         |d                                         z  t          j        t          |          d          d}||         } |||                                                   }|                                 |!                                z  s|dk    sJ tE          ||||          }|rWt          d          }tG          j$        ||                                         ||         %                    |d                     tG          j$        | ||                     d S )N)r   r   i   r   r   int64r   r   T)ignore_indexr   rg   r   r    rf      c              3   :   K   | ]}t           j        |fz   V  d S N)r!   r   )rn   rvrU   s     r2   	<genexpr>zGTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.<genexpr>/  sK               r4   c                     |                      | j                                                  } t          j        t          |                     | _        | S r   )r   r   r+   r!   r,   r(   r-   )rN   s    r2   alignzCTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.align8  s=    
 1 1 3 344ByR))BHIr4   boolr   )r   r    r   r   r   r   r   )r   )&r   r!   r"   r#   r$   astyper%   applyr	   nuniquerA   r   r   rr   r(   r)   rC   r'   r*   r,   r-   r   	set_indexiterrowsappendrL   getr   r   extendnotnaonesallanyr   rF   r{   r   )rM   r   r   r.   r/   r0   r   rv   r    r1   ldictrdictidxrowvalslvalrvallvr   r   r   jmaskmaskframer   kcolsrU   s                             @r2   *test_int64_overflow_one_to_many_none_matchz4TestMerge.test_int64_overflow_one_to_many_none_match   s   
 2T1I!!!$$--c4!Q@@GGPPOO
 
 
 

6>**1)%00000 tTl666I!!!$$--c4!q&!EELLWUUOO
 
 
 I!!!$$++CIIq99udil3$GGGy,,Q//??D		JJV..q11AA#e**MMg I!!!$$00T;;y|  ""Ys4yy))
I!!!$$00U<<
1""$$iE

++ #4((+d*;*;utI77@@BB 	+ 	+HC#Jc&k****Y88AACC 	, 	,HC#Jc'l++++{{}} 		 		GAt99Q))D!$--  B    {{}} 		 		GAt~~     #     	 	 	
 d9oo8I&IJJJeCjj K%%''\''))[&&((3w<+=+=+?+??WSXXV444	
 
 Szc$inn&&''xxzzDHHJJ&8#....D%St444 	OOE!E
!!3u:#9#9%k#9#R#R   	eUU3ZZ00000r4   N)r   r   r   r   r   r   r   r   r   r   r   r   rl   r4   r2   r   r      s       # # # [# # # [[U$G$G$GHHK K IH K [B B B [[U$G$G$GHH[VdE]33`1 `1 43 IH `1 `1 `1r4   r   zcodes_list, shape)r   r   r   r   r   r   r   r   r   )r   r   rg   r   r   r   r   r   )rf   r   r   r   r   r   rf   rg   )rg   rf   r   '  r   rf   )r   r   c                     t          | |dd          }t          ||          }t          | |          D ]\  }}t          j        ||           d S )NT)r   xnull)r   r   ziprF   r   )
codes_listrv   group_indexcodes_list2rY   rZ   s         r2   test_deconsr   W  sf    * "*e$dKKKK%k599KJ,, * *1
#Aq))))* *r4   c            
          e Zd Zej                            dg dg dg ej         ed          e	           ej         ed          e	          gg g gg          d             Z
ej                            dd	d
g          ej                            dg dg dgg g gg          d                         Zd Zd Zd Zd Zej                            dddedg ej        g d          dedg ej        g d          ddgedgg          d             Zej                            dg dg dgddej        d gdd dej        ggg          d!             Zej                            dd	d
g          d"             ZdS )#TestSafeSortzarg, expr   r   r   r   rg   r   r   r   r   rg   baaacbr   aaabbcc                     t          t          j        |                    }t          j        |          }t          j        ||           d S r   )r   r!   r
   rF   r   )rM   argr   r   rT   s        r2   test_basic_sortzTestSafeSort.test_basic_sortt  s?     28C==))8C==
#FH55555r4   verifyTFzcodes, exp_codes)r   r   r   r   r   r   r   rg   )r   r   r   r   r   r   r   rg   c                    t          j        g d          }t          j        g d          }t          ||d|          \  }}t          j        |t           j                  }t	          j        ||           t	          j        ||           d S )Nr   r   Tuse_na_sentinelr   r   r!   r
   r   r   rF   r   )	rM   r   codes	exp_codesrA   rT   r   result_codesexpected_codess	            r2   
test_codeszTestSafeSort.test_codes  s     ///**8OOO,,(E4 
  
  
 )27;;;
#FH555
#L.AAAAAr4   c                 (   t          j        g d          }t          j        g d          }g d}t          ||d          \  }}t          j        g dt           j                  }t	          j        ||           t	          j        ||           d S )Nr   r   )r   e   f   r   r   r   c   rg   T)r   )r   r   r   r   r   r   r   rg   r   r   )rM   rA   rT   r   r   r   r   s          r2   test_codes_out_of_boundz$TestSafeSort.test_codes_out_of_bound  s    ///**8OOO,, .--(MMM"="="=RWMMM
#FH555
#L.AAAAAr4   c                     t          j        g dt                    }t          |          }t          j        g dt                    }t	          j        ||           d S )N)rZ   r   r   rY   r   rZ   r   )r   r   r   rY   rZ   rZ   r!   r
   objectr   rF   r   )rM   rA   r   rT   s       r2   test_mixed_integerzTestSafeSort.test_mixed_integer  s^    222&AAA6""8444FCCC
#FH55555r4   c                 @   t          j        g dt                    }g d}t          ||          \  }}t          j        g dt                    }t          j        g dt           j                  }t          j        ||           t          j        ||           d S )N)rZ   r   r   rY   r   )r   r   r   r   r   r   r   )r   r   rY   rZ   )r   r   r   r   r   r   r   )r!   r
   r  r   r   rF   r   )rM   rA   r   r   r   rT   r   s          r2   test_mixed_integer_with_codesz*TestSafeSort.test_mixed_integer_with_codes  s    ***&999&&&(778,,,F;;;"8"8"8HHH
#FH555
#L.AAAAAr4   c                     t          j        ddt          j                    ddgt                    }d}t          j        t          |          5  t          |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   z,'[<>]' not supported between instances of .*match)	r!   r
   r   nowr  r   raises	TypeErrorr   )rM   r~   msgs      r2   test_unsortablezTestSafeSort.test_unsortable  s    h1hlnna36BBB<]9C000 	 	cNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A,,A03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                     t          j        ||          5  t          ||           d d d            d S # 1 swxY w Y   d S )Nr  )rA   r   )r   r  r   )rM   r   r   errr  s        r2   test_exceptionszTestSafeSort.test_exceptions  s     ]3c*** 	/ 	/S....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   6::r   r   r   r   r   r   r   r   c                     t          |d          }t          |          }t          |d          }t          j        ||           d S )NInt64r   )r
   r   rF   assert_extension_array_equal)rM   r   r   rY   r   rT   s         r2   test_extension_arrayz!TestSafeSort.test_extension_array  sL     #W%%%1G,,,
'99999r4   c                    t          g dd          }t          |g dd|          \  }}t          g dd          }t          j         g dt          j                  }t	          j        ||           t	          j        ||           d S )	Nr  r  r   )r   r   r   r   Tr   r  )r   r   r   r   )r
   r   r!   r   rF   r  r   )rM   r   rY   r   r   expected_valuesr   s          r2   test_extension_array_codesz'TestSafeSort.test_extension_array_codes  s    )))7+++!!]]]DQWXXX			999---rw???
'@@@
#E>:::::r4   )r   r   r   r   r   r   r!   r
   r%   r  r   r   r  r  r
  r  r  
ValueErrorr  r   r  r  rl   r4   r2   r   r   s  sq       [__ooo.hv666hv666 H	

 
6 6
 
6
 [Xe}55[&&&(A(A(ABH	
 	B 	B  65	B	B 	B 	B6 6 6B B B   [i!MNRXiii  !Y0PQRXlll##aVZ9RS	
 / / / [iii+q!RVQ.?!Q26AR-ST : : : [Xe}55; ; 65; ; ;r4   r   c                     t          j        d| ddgt                    }t          |          }t          j        ddd| gt                    }t	          j        ||           d S )NrZ   rY   r   r  )nulls_fixturerA   r   rT   s       r2   test_mixed_str_nullr"    sb    XsM34FCCCFvFxc36fEEEH11111r4   c                  *   t          ddt          t          gd          } g d}t          j        | |g          }t	          |          }t          j        t          ddt          t          gd          g dg          }t          j        ||           d S )Nr   r   r  r   )r   r   r   r   )r   r   r   r   )r	   r   r   rw   r   rF   rG   )arr1arr2midxr   rT   s        r2   test_safe_sort_multiindexr'    s    1aR.000D<<D!4,//Dt__F%	Ar2g	.	.	.= H &(+++++r4   )-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   fixturer3   r6   r   r   r   tiler   r   r,   r   r   r"  r'  rl   r4   r2   <module>r5     s+   # # # # # #                                         , , , , , ,                                   RN RN RN RN RN RN RN RNjQ1 Q1 Q1 Q1 Q1 Q1 Q1 Q1h  000#66==bhGG000#66==bhGG000#66==bhGG
 	
 		%rx888!<<		%rx888!<< 	
 (* *) (*a; a; a; a; a; a; a; a;H2 2 2	, 	, 	, 	, 	,r4   