
    iQ@                     $   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<   |j                  dt        j                  j                  d      d	
      }g |j                  d d j                         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        V/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/tests/test_sorting.py
left_rightr0      s    -LCq
		a ))#taV<d9oD 888#DLKKRYY2215D  E <emmCR(//1;7;EM	'NbN;    c                   T   e Zd Zej                  j
                  d        Zd Zej                  j
                  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)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   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&&&r1   c                     t        d      }t        j                  ||||d      }|j                  g d      }t	        |      t	        |      k(  sJ y )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   sJ    u""f6PV#WX,,347|s6{***r1   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        t        d
 |j                  j                  D                    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.                   t1        ||             |	       y c c}w )Nr   i i   )i         abcder   jimjoec              3   4   K   | ]  }|j                     y wN)ngroups).0pings     r/   	<genexpr>zLTestSorting.test_int64_overflow_groupby_large_df_shuffled.<locals>.<genexpr>m   s     A4$,,As   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ravel
sort_indexrE   assert_frame_equalgetattr)
rM   rb   rsarrirN   grarmiress
             r/   -test_int64_overflow_groupby_large_df_shuffledz9TestSorting.test_int64_overflow_groupby_large_df_shuffled\   s    YY""1%kk(G\:IIc#hC1-iic!f&NN3s8$!fsDM2!xxCG55	2e9ZZW& *A2;;+@+@AA
 	
 
 ##"$..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   rE   assert_numpy_array_equalr
   intp)rM   orderr   expkeysresults         r/   test_lexsort_indexerz TestSorting.test_lexsort_indexer{   s`    4 1tE#J//266(Q,>? eM
##FBHHS,H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       y )	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   sl    6 "&&AU3Z(88BFF8a<GsS yk
 	##FBHHSMuMr1   N)__name__
__module____qualname__pytestmarkslowrW   ra   parametrizer   r(   r]   r   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                       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
y)	TestMergec                 X   t        t        j                  j                  d      j	                  d      g t        d      d      }t        t        j                  j                  d      j	                  d      g t        d      d      }t        ||d	      }t        |      d
k(  sJ y )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    II!!!$44Y?+d8n+d+
 II!!!$44Y?+d8n+d+
 sCW-6{d"""r1   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   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-3x3t9$$$
s6{S\MuM!SbS&!%%1%-
s6{FF{{"""r1   c           	          |\  }}t        ||d      }|j                  |j                  j                         d       t	        j
                  |t        |||d             y )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   sQ     eD%W-**,d;
c5u)$#OPr1   c                    |\  }}t        ||dd      }t        j                  |||j                  j	                                   t        ||dd      }t        j                  |||j                  j	                                   y )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   sq     e D%V%8
dC(;(;(=$>?E4V%8
eS)=)=)?%@Ar1   c                 
   |}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<   |j#                  ddt        j                  j                  d            }|	j#                  ddt        j                  j                  d            }	t%        t              t%        t              }}|j'                  t        d            j)                         D ]  \  }}||   j+                  |d           |	j'                  t        d            j)                         D ]  \  }}||   j+                  |d           g }|j-                         D ]R  \  }|j/                  t        j0                  g      }t3        ||      D ]  \  }}|j+                  g ||        T |j-                         D ]$  \  }|vs|j5                  fd|D               & t        |g t        d      dd      }|j7                  |j8                  j;                         d      }|d   j=                         |d   j=                         |d   j=                         |d   j=                         z  t        j>                  t        |      d      d}||   }||   j7                  |j8                  j;                         d      }|jA                         |jC                         z  s|dk(  sJ tE        ||	||      }|r8t        d      }tG        jH                  ||   ||   j7                  |d             tG        jH                  ||j7                  |j8                  j;                         d             y )N)r   r   i   r   r   int64r   r   T)r!   r   rg   r   r#   r   rf   )r   r!   r       c              3   L   K   | ]  }g t         j                  |  y wrl   )r$   r   )rn   rvrU   s     r/   rp   zGTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.<genexpr>&  s%     <,a,,,<s   !$boolr   )r   r#   innerr   r   r   r   )r   )%r   r$   r%   r&   r'   astyper(   applyr	   nuniquer>   r   r   rr   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   sQ    1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 {{BII4I4I!4L  
 BII4I4I!4L  

 #4(+d*;utI7@@B 	+HC#Jc&k*	+ Y8AAC 	,HC#Jc'l+	, {{} 	*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D%St4OE!!E
CJ225{2K 	3??3;;#6#6#8t?L	
r1   N)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   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                  ||        y )NT)r   xnull)strict)r   r   ziprE   r   )
codes_listr   group_indexcodes_list2rY   rZ   s         r/   test_deconsr   D  sL    * "*e$dKK%k59KJD9 *1
##Aq)*r1   c            
       0   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ej                  j                  dddgddgddgg      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dgddd#e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 rl   )r   r$   r
   rE   r   )rM   argr   r   rT   s        r/   test_basic_sortzTestSafeSort.test_basic_sorta  s3     288C=)88C=
##FH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
                  ||       y )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  sn     /*88O,(E4 
 )277;
##FH5
##L.Ar1   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   r>   rT   r   r   r  r  s          r/   test_codes_out_of_boundz$TestSafeSort.test_codes_out_of_bound  sm    /*88O, .(M"=RWWM
##FH5
##L.Ar1   r   r"   r   c                     t        j                  g       }t        j                  |t         j                         }t	        ||      \  }}t        j                  ||       y )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  sF    xx|,,uBGG<<#L%8<
##L.Ar1   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   rE   r   )rM   r>   r   rT   s       r/   test_mixed_integerzTestSafeSort.test_mixed_integer  s>    2&A6"884FC
##FH5r1   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   rE   r   )rM   r>   r   r   r  rT   r  s          r/   test_mixed_integer_with_codesz*TestSafeSort.test_mixed_integer_with_codes  so    *&9&(788,F;"8H
##FH5
##L.Ar1   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   r   msgs      r/   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  )r>   r   )r   r  r   )rM   r   r   errr  s        r/   test_exceptionszTestSafeSort.test_exceptions  s1     ]]3c* 	/S.	/ 	/ 	/s   /8r   r   r   r   r   r   r   c                 z    t        |d      }t        |      }t        |d      }t        j                  ||       y )NInt64r   )r
   r   rE   assert_extension_array_equal)rM   r   r   rY   r   rT   s         r/   test_extension_arrayz!TestSafeSort.test_extension_array  s5     #W%1G,
''9r1   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   rE   r#  r   )rM   r   rY   r   r   expected_valuesr  s          r/   test_extension_array_codesz'TestSafeSort.test_extension_array_codes  sc    )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  
ValueErrorr  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RXXi !Y0PQRXXl#aVZ9RS	
// [[i+q!RmaAr]-KL:: [[Xe}5; 6;r1   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_fixturer>   r   rT   s       r/   test_mixed_str_nullr+    sN    XXsM34FCFvFxxc36fEH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                  ||       y )Nr   r   r"  r   )r   r   r   r   )r   r   r   r   )r	   r   r   rx   r   rE   rF   )arr1arr2midxr   rT   s        r/   test_safe_sort_multiindexr0    sq    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_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+  r0  r   r1   r/   <module>r>     su   #        ,       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   