
    Owg@                     $   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jF                  jI                  d ejJ                  g dd      jM                  ejN                         ejJ                  g dd      jM                  ejN                         ejJ                  g dd      jM                  ejN                        gdg ejJ                   ejP                  dejN                        d       ejJ                   ejP                  dejN                        d      gdgg      d        Z) G d d      Z*d Z+d Z,y)    )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                  j                  d      j	                  | ||df      t        d            }|j                  d      |d<   t        j                  j                  d      j                  t        |            }|j                  |   j                         }|j                  d d	 j                         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         P/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/test_sorting.py
left_rightr3      s    -LCq
		a ))#taV<d9oD 888#DL 			a ,,SY7AIIaLEMM#2&--/7);EM))CJ'EK	'NbN;    c                   "   e Zd Zej                  j
                  d        Zd Zej                  j                  dddg      d        Z	ej                  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                  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y)TestSortingc                 :   t        j                  t        j                  d      t        j                  d      t        j                  d      f      }t        j                  d      }t        ||||||||t         j                  j                  d      j                  d      d	      }|j                  g d      }|j                  g d      }|j                         d   }|j                         d   }|j                  j                         \  }}	t        j                  |j                  |       |j                  j                  d	      \  }}	t        j                  |j                  |       t        t        t        |g d   j                               }
t#        j$                  |
      }
|j                  |
      j                         d   }|j'                         D ]"  \  }}||   ||d d d
      k(  sJ ||   |k(  r"J  t)        |      t)        |      k(  sJ y )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   NNBIIdORYYt_biinMNIIdO))//2BB4H

 ZZ@AZZ@Avvx!"zz++-	1
djj)4{{,,Q/	1
ekk95Cr"JKRRST$$T*::d#'')(3NN$ 	 DAq7eAddGn,,,7a<<	  4yCJ&&&r4   c                     t        d      }t        j                  ||||d      }|j                  g d      }t	        |      t	        |      k(  sJ y )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   sJ    u""f6PV#WX,,347|s6{***r4   aggmeanmedianc                    t         j                  j                  d      }|j                  ddd      }|j	                  t        |      t        |      dz        }t        j                  |||   f      }|j                  t        |            }||   }t        |t        d            }t        j                  dt        |      f      \  |d<   |d	<   |j                  t        d            }t        |j                  j                        sJ t        j                   t        j"                  t        j$                  |d
      dd      D cg c]  }|j'                          c}t        d            }t        t        j                  t        |      df      dd	g|      j)                         }	t+        j,                   t/        ||             |	       y c c}w )Nr   i i   )i         abcder   jimjoer   r   rf   r   )names)r   r-   )r!   r"   r#   r$   choicer(   vstackr'   r   r%   zerosrD   r   _groupershaper   from_arraysarray_splituniqueravel
sort_indexrF   assert_frame_equalgetattr)
rM   rb   rsarrr1   rN   grarmiress
             r2   -test_int64_overflow_groupby_large_df_shuffledz9TestSorting.test_int64_overflow_groupby_large_df_shuffled^   so   YY""1%kk(G\:IIc#hC1-iic!f&NN3s8$!fsDM2!xxCG55	2e9ZZW& *"++*;*;<<<##"$..3Q1GQR"STBRXXZTw-

 HHc"gq\"UEN"

*, 	 	.gb#.0#6 Us   G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                               y )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   s`    4 1tE#J//266(Q,>? eM
##FBHHS,H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       y )	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   sl    6 "&&AU3Z(88BFF8a<GsS yk
 	##FBHHSMuMr4   N)__name__
__module____qualname__pytestmarkslowrW   ra   parametrizer~   r%   r]   r   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                      e Zd Zd Zej
                  j                  d        Zej
                  j                  ej
                  j                  dg d      d               Z	ej
                  j                  d        Z
ej
                  j                  ej
                  j                  dg d      ej
                  j                  ddd	g      d
                      Zy)	TestMergec                 X   t        t        j                  j                  d      j	                  d      t        d      dgz         }t        t        j                  j                  d      j	                  d      t        d      dgz         }t        ||d	      }t        |      d
k(  sJ y )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    II!!!$44Y?NdV+
 II!!!$44Y?NdV+
 sCW-6{d"""r4   c                 6   |\  }}t        ||d      }t        |      t        |      k(  sJ t        j                  |d   |d    d       |j                  d d d df   j                  d	      }t        j                  |d   |d       |j                  J y )
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-3x3t9$$$
s6{S\MuM!SbS&!%%1%-
s6{FF{{"""r4   r   )r   r    r   innerc           	         |\  }}t        ||d      }|j                  |j                  j                         d       t	        j
                  t        |            |_        t        j                  |t        |||d             y )Nr   r   T)inplacer   sort)
r   sort_valuesr   r+   r!   r,   r(   r-   rF   rv   )rM   r3   r   r   r    r   s         r2   test_int64_overflow_how_mergez'TestMerge.test_int64_overflow_how_merge   sg     !eD%W-**,d;IIc#h'	
c5u#D#IJr4   c                    |\  }}t        ||dd      }t        j                  |||j                  j	                                   t        ||dd      }t        j                  |||j                  j	                                   y )Nr   Fr   )r   rF   rv   r   r+   )rM   r3   r   r    r   s        r2   $test_int64_overflow_sort_false_orderz.TestMerge.test_int64_overflow_sort_false_order   sq     e D%V%8
dC(;(;(=$>?E4V%8
eS)=)=)?%@Ar4   r   TFc                 
   d\  }}}t        t        j                  j                  d      j	                  |||df      j                  d      t        d            }|j                  t        j                        j                  }t        |      sJ t        ||gd      }t        t        j                  j                  d	      j	                  |||dz  df      j                  d      t        d            }t        j                  j                  d
      j                  t        |      |      }	t        |||j                  |	   gd      }t        j                  j                  d      j!                  t        |            |d<   t        j                  j                  d      j!                  t        |            |d<   t        j                  j                  d      j#                  t        |            }	|j                  |	   j%                         }t        j&                  t        |            |_        t        j                  j                  d      j#                  t        |            }	|j                  |	   j%                         }t        j&                  t        |            |_        t+        t              t+        t              }}
|j-                  t        d            j/                         D ]  \  }}|
|   j1                  |d           |j-                  t        d            j/                         D ]  \  }}||   j1                  |d           g }|
j3                         D ]P  \  }|j5                  t        j6                  g      }t9        ||      D ]  \  }}|j1                  ||fz           R |j3                         D ]$  \  }|
vs|j;                  fd|D               & d }t        |t        d      ddgz         } ||      }|d   j=                         |d   j=                         |d   j=                         |d   j=                         z  t        j>                  t        |      d      d}||   } |||   j%                               }|jA                         |jC                         z  s|dk(  sJ tE        ||||      }|rFt        d      }tG        jH                  ||   j%                         ||   jK                  |d             tG        jH                  | ||             y )N)r   r   i   r   r   int64r   r   T)ignore_indexr   rg   r   r    rf      c              3   H   K   | ]  }t         j                  |fz     y wN)r!   r   ).0rvrU   s     r2   	<genexpr>zGTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.<genexpr>/  s/        s   "c                     | j                  | j                  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  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	   nuniquerA   r   r   rl   r(   r)   rC   r'   r*   r,   r-   r   	set_indexiterrowsappendrL   getr   r   extendnotnaonesallanyr   rF   rv   r   )rM   r   r   r.   r/   r0   r   rp   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   sh   
 2T1II!!!$--c4!Q@GGPO
 

6>>*11)%000 tTl6II!!!$--c4!q&!ELLWUO
 II!!!$++CIq9udii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@@B 	+HC#Jc&k*	+ Y8AAC 	,HC#Jc'l+	, {{} 		GAt99Q)D!$- B		 {{} 		GAt~  # 			
 d9o8I&IJCj K%%'\'')[&&(3w<+=+=+??WWSXV4	
 Szc$inn&'xxzDHHJ&#.88D%St4OE!!E
!3u:#9#9%k#9#R 	eU3Z0r4   N)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   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                  ||        y )NT)r   xnull)r   r   ziprF   r   )
codes_listrp   group_indexcodes_list2rY   rZ   s         r2   test_deconsr   W  sJ    * "*e$dKK%k59KJ, *1
##Aq)*r4   c            
          e Zd Zej                  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                  j                  dd	d
g      ej                  j                  dg dg dgg g gg      d               Zd Zd Zd Zd Zej                  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                  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                  j                  dd	d
g      d"        Zy)#TestSafeSortzarg, expr   r   r   r   rg   r   r   r   r   rg   baaacbr   aaabbcc                     t        t        j                  |            }t        j                  |      }t        j                  ||       y r   )r   r!   r
   rF   r   )rM   argr   r   rT   s        r2   test_basic_sortzTestSafeSort.test_basic_sortt  s3     288C=)88C=
##FH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
                  ||       y )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  sn     /*88O,(E4 
 )277;
##FH5
##L.Ar4   c                 0   t        j                  g d      }t        j                  g d      }g d}t        ||d      \  }}t        j                  g dt         j                        }t	        j
                  ||       t	        j
                  ||       y )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  sm    /*88O, .(M"=RWWM
##FH5
##L.Ar4   c                     t        j                  g dt              }t        |      }t        j                  g dt              }t	        j
                  ||       y )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&A6"884FC
##FH5r4   c                 D   t        j                  g dt              }g d}t        ||      \  }}t        j                  g dt              }t        j                  g dt         j                        }t        j                  ||       t        j                  ||       y )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  so    *&9&(788,F;"8H
##FH5
##L.Ar4   c                     t        j                  ddt        j                         ddgt              }d}t        j                  t        |      5  t        |       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r   z,'[<>]' not supported between instances of .*match)	r!   r
   r   nowr  r   raises	TypeErrorr   )rM   ry   msgs      r2   test_unsortablezTestSafeSort.test_unsortable  sR    hh1hllna36B<]]9C0 	cN	 	 	s   A%%A.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                 v    t        j                  ||      5  t        ||       d d d        y # 1 sw Y   y xY w)Nr
  )rA   r   )r   r  r   )rM   r   r   errr  s        r2   test_exceptionszTestSafeSort.test_exceptions  s1     ]]3c* 	/S.	/ 	/ 	/s   /8r   r   r   r   r   r   r   r   c                 z    t        |d      }t        |      }t        |d      }t        j                  ||       y )NInt64r   )r
   r   rF   assert_extension_array_equal)rM   r   r   rY   r   rT   s         r2   test_extension_arrayz!TestSafeSort.test_extension_array  s5     #W%1G,
''9r4   c                    t        g dd      }t        |g dd|      \  }}t        g dd      }t        j                   g dt        j                        }t	        j
                  ||       t	        j                  ||       y )	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  sc    )7+!!]DQWX	9-rww?
''@
##E>:r4   )r   r   r   r   r   r   r!   r
   r%   r  r   r   r  r  r  r  r  
ValueErrorr  r   r  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RXXi !Y0PQRXXl#aVZ9RS	
// [[i+q!RVVQ.?!Q266AR-ST:: [[Xe}5; 6;r4   r   c                     t        j                  d| ddgt              }t        |      }t        j                  ddd| gt              }t	        j
                  ||       y )NrZ   rY   r   r  )nulls_fixturerA   r   rT   s       r2   test_mixed_str_nullr     sN    XXsM34FCFvFxxc36fEH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                  ||       y )Nr   r   r  r   )r   r   r   r   )r   r   r   r   )r	   r   r   rq   r   rF   rG   )arr1arr2midxr   rT   s        r2   test_safe_sort_multiindexr%    sq    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_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%  r   r4   r2   <module>r3     su   #        ,        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   