
    PiQ@                        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                     d\  } }}t          t          j                            d                              | ||df          t          d                    }|                    d          |d<   |                    dt          j                            d          d	
          }g |j        d d         	                                d|_        |dxx         dz  cc<   ||fS )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        m/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/test_sorting.py
left_rightr0      s    -LCq
	a  ))#taV<<d9oo  D 888##DLKKRY22155D   E <emCRC(//11;7;EM	'NNNbNNN;    c                   f   e Zd Zej        j        d             Zd Zej        j        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)r6   r7   r8   r9   r:   r;   r<   r=   )r=   r<   r;   r:   r9   r8   r7   r6   r>   r   r"   )r$   concatenatearanger   r%   r&   standard_normalgroupbyr)   index	sortleveltmassert_index_equalr(   maptupler>   comasarray_tuplesafeitemslen)selfr7   r6   dflgrgr   r#   	exp_index_tupsexpectedkvs                 r/   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&&&&&&r1   c                     t          d          }t          j        ||||d          }|                    g d          }t	          |          t	          |          k    sJ d S )NiE  )abcd)ranger   	from_dictrB   rL   )rM   r>   datagroupeds       r/   'test_int64_overflow_groupby_large_rangez3TestSorting.test_int64_overflow_groupby_large_rangeU   se    u"f6PV#W#WXX,,333447||s6{{******r1   aggmeanmedianc           	      0   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          t          d
 |j        j        D                                 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              3   $   K   | ]}|j         V  d S N)ngroups).0pings     r/   	<genexpr>zLTestSorting.test_int64_overflow_groupby_large_df_shuffled.<locals>.<genexpr>m   s$      AA4$,AAAAAAr1   c                 6    g | ]}|                                 S  )ravel)rn   ars     r/   
<listcomp>zMTestSorting.test_int64_overflow_groupby_large_df_shuffled.<locals>.<listcomp>q   s     TTTBRXXZZTTTr1   r   r   rf   r   )names)r   rC   )r$   r%   r&   r'   choicerL   vstackpermutationr   r(   zerosrB   r   rH   _grouper	groupingsr   from_arraysarray_splitunique
sort_indexrE   assert_frame_equalgetattr)	rM   rb   rsarrirN   grmiress	            r/   -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&& *AA2;+@AAAAA
 
 	
 	
 
 #TT".3Q1G1G1GQR"S"S"STTTw--
 
 

 Hc"ggq\""UEN"
 
 

*,, 	 	.gb#..00#66666r1   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   rE   assert_numpy_array_equalr
   intp)rM   orderr   expkeysresults         r/   test_lexsort_indexerz TestSorting.test_lexsort_indexer{   sr    4 1tE#JJ///26(Q,>? eMMM
#FBHS,H,H,HIIIIIr1   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   rE   r   )rM   r   r   r   rK   r   s         r/   test_nargsortzTestSorting.test_nargsort   s    6 "&AU3ZZ(8(88BF8a<GsSSS yk
 
 
 	#FBHSMMuMMMMMMr1   N)__name__
__module____qualname__pytestmarkslowrW   ra   parametrizer   r(   r]   r   r   rr   r1   r/   r3   r3   ,   s       [%' %' %'N+ + + [[UVX$6777 7 87 7: [! 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r1   r3   c                       e Zd Zd Zej        j        d             Zej        j        d             Zej        j        d             Z	ej        j        d             Z
dS )	TestMergec                    t          t          j                            d                              d          g t          d          d          }t          t          j                            d                              d          g t          d          d          }t          ||d	          }t          |          d
k    sJ d S )Nr   )r5   r   ABCDEFG1r      G2outerhowi  )r   r$   r%   r&   rA   r(   r   rL   )rM   df1df2r   s       r/   test_int64_overflow_outer_mergez)TestMerge.test_int64_overflow_outer_merge   s    I!!!$$44Y??+d8nn+d+
 
 
 I!!!$$44Y??+d8nn+d+
 
 
 sCW---6{{d""""""r1   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   rL   rE   assert_series_equalilocr)   name)rM   r0   r   r#   outr   s         r/   !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{"""""r1   c           	          |\  }}t          ||d          }|                    |j                                        d           t	          j        |t          |||d                     d S )Nr   r   T)inplacer   sort)r   sort_valuesr   r+   rE   r   )rM   r0   	join_typer   r#   r   s         r/   test_int64_overflow_how_mergez'TestMerge.test_int64_overflow_how_merge   sm     eD%W---**,,d;;;
c5u)$#O#O#OPPPPPr1   c                 $   |\  }}t          ||dd          }t          j        |||j                                                            t          ||dd          }t          j        |||j                                                            d S )Nr   Fr   )r   rE   r   r   r+   )rM   r0   r   r#   r   s        r/   $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Ar1   c                    |}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<   |                    ddt          j                            d                    }|	                    ddt          j                            d                    }	t%          t                    t%          t                    }}|                    t          d                                                    D ]&\  }}||                             |d                    '|	                    t          d                                                    D ]&\  }}||                             |d                    'g }|                                D ]X\  }|                    t          j        g          }t3          ||          D ]!\  }}|                    g ||R            "Y|                                D ]*\  }|vr!|                    fd|D                        +t          |g t          d          dd          }|                    |j                                        d          }|d                                         |d                                         |d                                         |d                                         z  t          j        t          |          d          d}||         }||                             |j                                        d          }|                                 |!                                z  s|dk    sJ tE          ||	||          }|rEt          d          }tG          j$        ||         ||                             |d                     tG          j$        ||                    |j                                        d                     d S )N)r   r   i   r   r   int64r   r   T)r!   r   rg   r   r#   r   rf   )r   r!   r       c              3   >   K   | ]}g t           j        |R V  d S rl   )r$   r   )rn   rvrU   s     r/   rp   zGTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.<genexpr>&  s8      <<,a,,,,<<<<<<r1   boolr   )r   r#   innerr   r   r   r   )r   )%r   r$   r%   r&   r'   astyper(   applyr	   nuniquer>   r   r   rw   rL   r   rA   r*   r   	set_indexiterrowsappendrK   getr   r   extendr   r   to_listnotnaonesallanyr   rE   r   )rM   r   r   r   r,   r-   r.   r   shaper#   r   ldictrdictidxrowvalslvalrvallvr   r   jmaskmaskframer   kcolsrU   s                             @r/   *test_int64_overflow_one_to_many_none_matchz4TestMerge.test_int64_overflow_one_to_many_none_match   sP    1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 {{BI4I4I!4L4L  
 
 BI4I4I!4L4L  
 

 #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LaLLRLL))))* {{}} 	= 	=GAt~~<<<<t<<<<<<&IY&I&I&IJJJoock1133$oGG K%%''\''))[&&((3w<+=+=+?+??WSXXV444	
 
 SzD	%%ck&9&9&;&;$%OOxxzzDHHJJ&8#...8D%St444 	OOE!E
CJ225{2KK   	3??3;#6#6#8#8t?LL	
 	
 	
 	
 	
r1   N)r   r   r   r   r   r   r   r   r   r   r   rr   r1   r/   r   r      s        # # # [# # # [Q Q Q [B B B [P
 P
 P
 P
 P
r1   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          D ]\  }}t          j        ||           d S )NT)r   xnull)strict)r   r   ziprE   r   )
codes_listr   group_indexcodes_list2rY   rZ   s         r/   test_deconsr   D  sk    * "*e$dKKKK%k599KJD999 * *1
#Aq))))* *r1   c            
       J   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ej                            dddgddgddgg          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dgddd#e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 rl   )r   r$   r
   rE   r   )rM   argr   r   rT   s        r/   test_basic_sortzTestSafeSort.test_basic_sorta  s?     28C==))8C==
#FH55555r1   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   rE   r   )	rM   r   codes	exp_codesr>   rT   r   result_codesexpected_codess	            r/   
test_codeszTestSafeSort.test_codesq  s     ///**8OOO,,(E4 
  
  
 )27;;;
#FH555
#L.AAAAAr1   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   r>   rT   r  r   r  r  s          r/   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Ar1   r  r"   r   c                     t          j        g           }t          j        |t           j                   }t	          ||          \  }}t          j        ||           d S )Nr   )r$   r
   	ones_liker   r   rE   r   )rM   r  empty_valuesr  rR   r  s         r/   #test_codes_empty_array_out_of_boundz0TestSafeSort.test_codes_empty_array_out_of_bound  sT    x||,uBG<<<<#L%88<
#L.AAAAAr1   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   rE   r   )rM   r>   r   rT   s       r/   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5r1   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   rE   r   )rM   r>   r  r   r  rT   r  s          r/   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Ar1   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      r/   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  )r>   r  )r   r  r   )rM   r   r  errr  s        r/   test_exceptionszTestSafeSort.test_exceptions  s     ]3c*** 	/ 	/S....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   6::r   r   r   r   r   r   r   c                     t          |d          }t          |          }t          |d          }t          j        ||           d S )NInt64r   )r
   r   rE   assert_extension_array_equal)rM   r   r   rY   r   rT   s         r/   test_extension_arrayz!TestSafeSort.test_extension_array  sL     #W%%%1G,,,
'99999r1   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   rE   r%  r   )rM   r   rY   r   r  expected_valuesr  s          r/   test_extension_array_codesz'TestSafeSort.test_extension_array_codes  s    )))7+++!!]]]DQWXXX			999---rw???
'@@@
#E>:::::r1   )r   r   r   r   r   r   r$   r
   r(   r  r   r  r  r  r  r  r  r  
ValueErrorr   r   r&  r)  rr   r1   r/   r   r   `  s       [__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 [WBx!R1a&&ABBB B CBB6 6 6B B B   [i!MNRXiii  !Y0PQRXlll##aVZ9RS	
 / / / [iii+q!RmaAr]-KL : : : [Xe}55; ; 65; ; ;r1   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_fixturer>   r   rT   s       r/   test_mixed_str_nullr-    sb    XsM34FCCCFvFxc36fEEEH11111r1   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   r}   r   rE   rF   )arr1arr2midxr   rT   s        r/   test_safe_sort_multiindexr2    s    1aR.000D<<D!4,//Dt__F%	Ar2g	.	.	.= H &(+++++r1   )-collectionsr   r   	itertoolsr   numpyr$   r   pandasr   r   r   r	   r
   r   r   pandas._testing_testingrE   pandas.core.algorithmsr   pandas.core.commoncorecommonrI   pandas.core.sortingr   r   r   r   r   fixturer0   r3   r   r   r   tiler   r   r@   r   r   r-  r2  rr   r1   r/   <module>r@     s+   # # # # # #                                         , , , , , ,                                  UN UN UN UN UN UN UN UNp}
 }
 }
 }
 }
 }
 }
 }
@  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!<< 	
 (* *) (*h; h; h; h; h; h; h; h;V2 2 2	, 	, 	, 	, 	,r1   