
    sh&                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
  S SKJrJr  S SKJrJr  S SKJrJr  S SKJr  S SKJrJrJr  S rS	 r\" \5      r\" \5      r\" \5      r\" \5      r\" 5       r \" 5       r!S
 r"S r#S4S jr$S r%S r&S r'S r(S4S jr)S r*S r+ " S S\,5      r- " S S\-5      r. " S S\.\5      r/ " S S\.\5      r0 " S S\,5      r1 " S S\1\.\5      r2 " S  S!\-5      r3 " S" S#\3\5      r4 " S$ S%\3\5      r5 " S& S'\-\5      r6 " S( S)\5      r7 " S* S+\5      r8 " S, S-\5      r9S. r: " S/ S0\\5      r; " S1 S2\\5      r<\=S3:X  a  \R|                  " 5         gg)5    N)jitnjit)utilserrors)TestCaseMemoryLeakMixin)make_py_quicksortmake_jit_quicksort)make_jit_mergesort)make_py_timsortmake_jit_timsortMergeRunc                     U S   /U-  $ Nr    keysns     i/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_sort.pymake_temp_listr      s    G9q=    c                 B    [         R                  " XR                  5      $ N)npemptydtyper   s     r   make_temp_arrayr      s    88Azz""r   c                 $    U R                  5         g r   sortvals    r   sort_usecaser#   '   s    HHJr   c                 "    U R                  5       $ r   argsortr!   s    r   argsort_usecaser'   *   s    ;;=r   c                 L    U(       a  U R                  SS9$ U R                  SS9$ N	mergesortkind	quicksortr%   r"   	is_stables     r   argsort_kind_usecaser0   -   s'    {{{,,{{{,,r   c                     [        U 5      $ r   sortedr!   s    r   sorted_usecaser4   3   s    #;r   c                     [        XS9$ )Nreverser2   )r"   bs     r   sorted_reverse_usecaser9   6   s    #!!r   c                 .    [         R                  " U 5      $ r   )r   r    r!   s    r   np_sort_usecaser;   9   s    773<r   c                 .    [         R                  " U 5      $ r   r   r&   r!   s    r   np_argsort_usecaser>   <   s    ::c?r   c                 d    U(       a  [         R                  " U SS9$ [         R                  " U SS9$ r)   r=   r.   s     r   np_argsort_kind_usecaser@   ?   s'    zz#K00zz#K00r   c                     [         R                  R                  S5        / n[        U 5       H0  nUR	                  [         R                  R                  5       5        M2     US S  nUR                  5         X4$ N*   r   randomseedrangeappendr    )r   lills       r   list_sort_usecaserL   E   sW    IINN2
A1X	!!#$ 	
1BGGI5Lr   c                     [         R                  R                  S5        / n[        U 5       H0  nUR	                  [         R                  R                  5       5        M2     US S  nUR                  US9  X$4$ )NrC   r6   rD   )r   r8   rI   rJ   rK   s        r   list_sort_reverse_usecaserN   N   s\    IINN2
A1X	!!#$ 	
1BGGAG5Lr   c                   n    \ rS rSrSS jrSS jrSS jrSS jrSS jrSS jr	S	 r
S
 rS rS rS rSrg)BaseSortingTestX   c                     [         R                  " S5        [        [        X"U-   5      5      n[         R                  " U5        U$ rB   )rE   rF   listrG   shuffle)selfr   offsetrI   s       r   random_listBaseSortingTest.random_listZ   s1    Bvz*+qr   c                 0    [        [        X"U-   5      5      $ r   rS   rG   rU   r   rV   s      r   sorted_listBaseSortingTest.sorted_list`   s    E&1*-..r   c                 <    [        [        X"U-   5      5      S S S2   $ )NrZ   r[   s      r   revsorted_listBaseSortingTest.revsorted_listc   s    E&1*-.tt44r   Nc                 l    Uc  US-  nU R                  X#5      nX@R                  X-
  US   U-   S9-  nU$ )N   r_   rV   )r\   rW   )rU   r   mrV   rI   s        r   initially_sorted_list%BaseSortingTest.initially_sorted_listf   sG    9QAQ'	aeAbEFN;;r   c                    [         R                  " S5        Uc  [        [        R                  " U5      5      n[        [        X3X-  -   S-   5      5      US-   -  S U n[        U5      U:X  d   e[         R                  " U5        U$ )NrC      )	rE   rF   intmathsqrtrS   rG   lenrT   rU   r   factorrV   rI   s        r   duprandom_listBaseSortingTest.duprandom_listm   sp    B>1&F%!+ 6 :;<
KRaP1v{{qr   c                     Uc  [        [        R                  " U5      5      n[        [	        X3X-  -   S-   5      5      US-   -  S U n[        U5      U:X  d   [        U5      U45       eUR                  5         U$ Nri   )rj   rk   rl   rS   rG   rm   r    rn   s        r   dupsorted_listBaseSortingTest.dupsorted_listv   so    >1&F%!+ 6 :;<
KRaP1v{'SVQK'{	r   c                     U R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        g r   )assertEqualrm   rS   r3   rU   origresults      r   assertSortedBaseSortingTest.assertSorted~   s2    Vc$i0fvd|4r   c                    U R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        [        [	        X5      S S9n[        [	        X45      5      nU R                  XV5        [        [        U5      S-
  5       HJ  nXg   XgS-      su  pu  pX:X  d  M  U R                  UR                  U	5      UR                  U5      5        ML     g )Nc                     U S   $ r   r   xs    r   <lambda>4BaseSortingTest.assertSortedValues.<locals>.<lambda>   s    !A$r   keyri   )rw   rm   rS   r3   ziprG   
assertLessindex)rU   ry   orig_valuesrz   result_values
zip_sorted
zip_resultrJ   k1v1k2v2s               r   assertSortedValues"BaseSortingTest.assertSortedValues   s    Vc$i0fvd|4C2G
#f45
0s:*+A!+
q50AHRhrx 1 1" 5{7H7H7LM	 ,r   c              #   *   #    SnSn Uv   X!U-   p!M  7frs   r   )rU   ar8   s      r   fiboBaseSortingTest.fibo   s%     G!eq s   c                     / nS HC  nUR                  U R                  X5      5        UR                  U R                  X5      5        ME     U$ N)   x   )rH   r\   rt   rU   r   listsrV   s       r   make_sample_sorted_lists(BaseSortingTest.make_sample_sorted_lists   sF    FLL))!45LL,,Q78   r   c                    / nS H  nUR                  U R                  X5      5        UR                  U R                  X5      5        UR                  U R                  X5      5        UR                  U R	                  X5      5        M     U$ r   )rH   r\   rt   r`   rp   r   s       r   make_sample_lists!BaseSortingTest.make_sample_lists   st    FLL))!45LL,,Q78LL,,Q78LL,,Q78	  
 r   r   )
   )Nr   )__name__
__module____qualname____firstlineno__rW   r\   r`   rf   rp   rt   r{   r   r   r   r   __static_attributes__r   r   r   rP   rP   X   s:    /55
Nr   rP   c                   h    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)BaseTimsortTest   c                 >    U R                   R                  nU" U5      $ r   )timsort
merge_init)rU   r   fs      r   r   BaseTimsortTest.merge_init   s    LL##wr   c                   ^ ^ SnSUU 4S jjnT R                   R                  mT R                  U5      nU" X15        U" X1US-  5        T R                  U5      nU" X15        T R	                  XS-  5      nU" X15        U" X1US-  5        T R                  U5      nU" X15        T R                  U5      nU" X15        T R                  U5      nU" X15        g )Nr   c                 ^   > TR                  U 5      nT" X3SX5        TR                  X5        g r   )array_factoryr{   )rI   r   startresr   rU   s       r   check.BaseTimsortTest.test_binarysort.<locals>.check   s-    $$Q'Cc1$a%r   rc   r   )r   
binarysortr\   r`   rf   rW   rp   rU   r   r   rI   r   s   `   @r   test_binarysortBaseTimsortTest.test_binarysort   s    	& 	&
 LL##QaaAqD"a&&qQ$/aaAqD"aQa"ar   c                   ^ ^^ Sn[        [        SSU-   5      5      mSUU U4S jjnT R                  R                  mT R	                  U5      nU" X15        U" X1US-  5        T R                  U5      nU" X15        T R                  XS-  5      nU" X15        U" X1US-  5        T R                  U5      nU" X15        T R                  U5      nU" X15        T R                  U5      nU" X15        g )Nr   d   c                    > TR                  U 5      nTR                  T5      nT" X4SX5        TR                  U TX45        g r   )r   r   )rI   r   r   r   res_vr   rU   vs        r   r   :BaseTimsortTest.test_binarysort_with_values.<locals>.check   sA    $$Q'C&&q)Ec!Q&##Aq#5r   rc   r   )	rS   rG   r   r   r\   r`   rf   rW   rp   )rU   r   r   rI   r   r   s   `   @@r   test_binarysort_with_values+BaseTimsortTest.test_binarysort_with_values   s    sCE"#	6 	6 LL##QaaAqD"a&&qQ$/aaAqD"aQa"ar   c                   ^ ^ SnT R                   R                  mUU 4S jnT R                  USS9nU" USU5        U" USUS-
  5        U" USS5        T R                  USS9nU" USU5        U" USUS-
  5        U" USS5        T R	                  USS9n[        [        U5      S-
  5       H  nU" X4U5        M     T R                  USS9n[        [        U5      S-
  5       H  nU" X4U5        M     g )N   c                   > T" T	R                  U 5      X5      u  p4U(       a\  [        XU-   S-
  5       H  nX   XS-      pvT	R                  Xg5        M      X-   U:  a   T	R                  XU-   S-
     XU-      5        g g [        XU-   S-
  5       H  nX   XS-      pvT	R                  Xg5        M      X-   U:  a!  T	R                  XU-   S-
     XU-      U 5        g g rs   )r   rG   assertGreaterassertLessEqual)
rI   lohir   desckr   r8   r   rU   s
           r   r   -BaseTimsortTest.test_count_run.<locals>.check   s    **1-r6GAr6A:.A4q5q&&q, / 6B;((6A:q&	B  r6A:.A4q5q((. / 6B;&&qa!}aQiC r   r   rd   r   ri   rc   )r   	count_runr\   r`   rW   rG   rm   rp   )rU   r   r   rI   rJ   r   s   `    @r   test_count_runBaseTimsortTest.test_count_run   s    LL""	D" Qs+aAaAEaA#.aAaAEaAQs+s1vz"A!N ##.s1vz"A!N #r   c                    ^ ^^^^ SmT R                   R                  mUU 4S jmU4S jmUUU 4S jnT R                  TSS9nU" U5        T R                  TSS9nU" U5        g )Nr   c                    > T" XX#U5      nTR                  XR5        TR                  XS5        XR:  a  TR                  XS-
     U5        XS:  a  TR                  X   U5        g g rs   )assertGreaterEqualr   r   rI   r   r   stophintr   r   rU   s         r   r   /BaseTimsortTest.test_gallop_left.<locals>.check  sb    #%t,A##A-  )ya%#.x''c2 r   c                 >   > [        X#5       H  nT" XX#U5        M     g r   rG   rI   r   r   r   r   r   s        r   check_all_hints9BaseTimsortTest.test_gallop_left.<locals>.check_all_hints      e*ae40 +r   c                    > TR                  U 5      n U S   U S   U S   SU S   S4 H'  nT" XST5        T" XSTS-
  5        T" XSTS-
  5        M)     g 	N      r   ir_     ri      r   rI   r   r   r   rU   s     r   check_sorted_list;BaseTimsortTest.test_gallop_left.<locals>.check_sorted_list  f    ""1%A!aeQqT5!B%>1-1q511q51 ?r   r   rd   )r   gallop_leftr\   rt   rU   r   rI   r   r   r   r   s   `  @@@@r   test_gallop_left BaseTimsortTest.test_gallop_left  sb    LL$$	3	1	2 Qs+!#.!r   c                    ^ ^^^^ SmT R                   R                  mUU 4S jmU4S jmUUU 4S jnT R                  TSS9nU" U5        T R                  TSS9nU" U5        g )Nr   c                    > T" XX#U5      nTR                  XR5        TR                  XS5        XR:  a  TR                  XS-
     U5        XS:  a  TR                  X   U5        g g rs   )r   r   r   r   s         r   r   0BaseTimsortTest.test_gallop_right.<locals>.check%  sd    #%t,A##A-  )y$$Q1uXs3x""14- r   c                 >   > [        X#5       H  nT" XX#U5        M     g r   r   r   s        r   r   :BaseTimsortTest.test_gallop_right.<locals>.check_all_hints/  r   r   c                    > TR                  U 5      n U S   U S   U S   SU S   S4 H'  nT" XST5        T" XSTS-
  5        T" XSTS-
  5        M)     g r   r   r   s     r   r   <BaseTimsortTest.test_gallop_right.<locals>.check_sorted_list3  r   r   r   rd   )r   gallop_rightr\   rt   r   s   `  @@@@r   test_gallop_right!BaseTimsortTest.test_gallop_right!  sb    LL%%	.	1	2 Qs+!#.!r   c                 l   U R                   R                  n[        SS5       H  nU R                  U" U5      U5        M     [        SS5       H7  nSU-  [        R
                  :  a    OU R                  U" SU-  5      S5        M9     U R                  5        H  nUS:  a  M  U[        R
                  :  a    g U" U5      nU R                  US5        U R                  US5        US:  d  MU  X#-  nS[        R                  " U5      -  nU R                  XE5        U R                  USU-  5        M     g )	Nr   @      ?   rc         ?)r   merge_compute_minrunrG   rw   sysmaxsizer   r   r   r   
bit_lengthr   )rU   r   rJ   r   quotps         r   test_merge_compute_minrun)BaseTimsortTest.test_merge_compute_minrun?  s   LL--q"AQqT1% q"A!tckk!Qq!tWb)  A2vCKK!A##Ar*  B'3wv))$//(''cAg6 r   c           	         [        U5      n[        U5      nS/U-   U-   S/-   nU R                  U5      nU R                  U5      nSn	X-   n
U" XXyXJU5      nU R                  US   US   5        U R                  US   US   5        U R	                  USS USS 5        U R                  [        UR                  5      [        UR                  5      5        U R                  [        UR                  5      [        UR                  5      5        U R                  UR                  UR                  5        U R                  UR                  S5        g NrC   ri   r   r_   )rm   r   r   rw   r{   r   r   valuesassertIspending
min_gallop)rU   funcr   r8   nanb	orig_keysr   msssassbnew_mss               r   check_merge_lo_hi!BaseTimsortTest.check_merge_lo_hiW  s"   VV D1HqLC5(	!!),__T"h b2B7a)A,/b9R=1)Ab/4":6FKK 0#bgg,?FMM 2C		NCfnnbjj1 1 115r   c                 6   U R                   R                  nU R                   R                  nS Hg  u  p4[        R                  " U R                  U5      U R                  U5      5       H)  u  pVU R                  XU5        U R                  X&U5        M+     Mi     g )N)   r   (   r  r   n   )r   iL  )r   merge_lomerge_hi	itertoolsproductr   r  )rU   f_lof_hir  r  r   r8   s          r   test_merge_lo_hi BaseTimsortTest.test_merge_lo_him  s    ||$$||$$ GHR!))$*G*G*K*.*G*G*KM&&t2&&t2M Gr   c                 f  ^ ^	^
^^^^ T R                   R                  m	[        U5      m
[        U5      mS/U-   U-   S/-   mSmTT
-   n[        SS5      mU	U
UUU UU4S jnT R	                  T5      nT R                  U5      nT R                   R                  UT5      nUR                  nT R                   R                  U[        TT
5      5      nT R                   R                  U[        UT5      5      nU" XeU5      nT R                  UR                  US-   5        T R	                  T5      nT R                  U5      nT R                   R                  UT5      nUR                  nT R                   R                  U[        TT
5      5      nT R                   R                  U[        UT5      5      n[        UT-   S5      nT R                   R                  Xh5      nU" XeU5      nT R                  UR                  US-   5        T R                  UR                  UR                  S-
     U5        g )NrC   r  ri   c                 |  > T" XX5      nTR                  US   TS   5        TR                  US   TS   5        TR                  TSS USS 5        TR                  UR                  U R                  5        TR                  U R                  U   T	TT-   45        TR                  U R                  S   T
5        U$ )Nr   r_   ri   )rw   r{   r	  r
  )r  r   rJ   r  r   r  r  r  rU   r  stack_sentinels       r   run_merge_at4BaseTimsortTest.check_merge_at.<locals>.run_merge_at  s    r)FT!Wil3T"Xy}5i"otAbz:MM&.."**5RZZ]S"r'N;RZZ]N;Mr   rc   )
r   merge_atrm   r   r   r   merge_appendr   rw   r
  )rU   r   r8   r  r(  r   r  rJ   last_runr   r  r  r  r  r'  s   `        @@@@@@r   check_merge_atBaseTimsortTest.check_merge_atx  s   LL!!VVD1HqLC5(	Bh!#s+		 		 !!),__T"\\&&r>:DD\\&&r8C+<=\\&&r8C+<="A&q1u% !!),__T"\\&&r>:DD\\&&r8C+<=\\&&r8C+<=C"Ha(\\&&r4"A&q1u%BDD1H-x8r   c                     S He  u  p[         R                  " U R                  U5      U R                  U5      5       H'  u  p4U R                  X45        U R                  XC5        M)     Mg     g )N)r  r  r  )r   i  )r  r   r   r-  )rU   r  r  r   r8   s        r   test_merge_atBaseTimsortTest.test_merge_at  s_    DHR!))$*G*G*K*.*G*G*KM##A)##A)M Er   c                   ^  T R                   R                  nS/nUR                  US   S S S2   5        U GHF  n[        R                  " U 4S jU 5       6  GH   n[        U/ 5      nT R                  U5      nT R                  U5      nSnU H@  n	T R                   R                  U[        U[        U	5      5      5      nU[        U	5      -  nMB     T R                  [        UR                  UR                  S-
     5      [        U5      5        U" XvU5      nT R                  UR                  S5        T R                  UR                  S   [        S[        U5      5      5        T R                  XV5        GM#     GMI     g )N)r   r   r   r   r   r_   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr   )r   ).0r   rU   s     r   	<genexpr><BaseTimsortTest.test_merge_force_collapse.<locals>.<genexpr>  s&      .>7<! /3.K.KA.N.N7<s   !ri   )r   merge_force_collapserH   r  r   sumr   r   r+  r   rm   rw   r
  r   r{   )
rU   r   
sizes_listsizeschunksr  r   r  poscs
   `         r   test_merge_force_collapse)BaseTimsortTest.test_merge_force_collapse  sH   LL-- &&
*Q-"-.E#++ .>7<.> ?  O	)))4__T*A222xSV7LMB3q6MC     RZZq%9!:CIFr&  q)  ACI0FG!!)2%?  r   c                 4   U R                   R                  nS Hw  nSnU Vs/ s H  o@R                  XB-  5      PM     nn[        R                  " U6  H9  n[        U/ 5      nU R                  U5      nU" U5        U R                  Xx5        M;     My     g s  snf )N)ri   r   )r      r   )r   run_timsortr   r  r   r8  r   r{   	rU   r   size_factorr:  r   	all_listsr;  r  r   s	            r   test_run_timsort BaseTimsortTest.test_run_timsort  s    LL$$"K EJOP%Q//@%IP#++Y7O	)))4$!!)2 8 # Q   Bc           
      z   U R                   R                  nS H  nSU-  nU R                  U5      nU R                  U5      nU R	                  U5      nXE-   U-   n[        [        SS[        U5      -   5      5      nU R                  U5      n	U R                  U5      n
U" X5        U R                  XxX5        M     g )Nri   r   P   r   )
r   run_timsort_with_valuesrt   rp   r`   rS   rG   rm   r   r   )rU   r   rD  
chunk_sizer   r8   r=  r  r   r   r  s              r   test_run_timsort_with_values,BaseTimsortTest.test_run_timsort_with_values  s    LL00!Kk)J##J/A##J/A##J/A	IuT4#i.+@ABK%%i0D''4FdO##IDI "r   r   N)r   r   r   r   r   r   r   r   r   r   r  r  r#  r-  r0  r>  rF  rN  r   r   r   r   r   r      sK    .4"H<<706,	3/9b*383Jr   r   c                       \ rS rSr\r\rSrg)TestTimsortPurePythoni  r   N)	r   r   r   r   py_list_timsortr   rS   r   r   r   r   r   rQ  rQ    s    G Mr   rQ  c                       \ rS rSr\rS rSrg)TestTimsortArraysPurePythoni  c                 H    [         R                  " U[         R                  S9$ Nr   r   arrayint32rU   lsts     r   r   )TestTimsortArraysPurePython.array_factory      xx288,,r   r   N)r   r   r   r   py_array_timsortr   r   r   r   r   r   rT  rT    s    G-r   rT  c                   ,    \ rS rSr\rSrSr0 4S jrSr	g)JITTimsortMixini  Nc                 p   ^^ UT4nXC;   a  X4   $ UR                   mUR                  UU4S j5       nXSU'   U$ )zs
Wrap *func* into another compiled function inserting a runtime-created
mergestate as the first function argument.
c                 ,   > T" U 5      nT" X0U/UQ76 nU$ r   r   )r   r  argsr  r   r  r   s        r   wrapper5JITTimsortMixin.wrap_with_mergestate.<locals>.wrapper  s#    D!Br/$/CJr   )r   compile)rU   r   r  _cacher   re  r   s     `   @r   wrap_with_mergestate$JITTimsortMixin.wrap_with_mergestate  sJ    
 tm=;''
		 
	
 sr   r   )
r   r   r   r   jit_array_timsortr   r0  r>  ri  r   r   r   r   ra  ra    s    GM $9; r   ra  c                        \ rS rSrS rS rSrg)TestTimsortArraysi  c                 H    [         R                  " U[         R                  S9$ rV  rX  r[  s     r   r   TestTimsortArrays.array_factory  r^  r   c                 T   [        U5      n[        U5      nU R                  U R                  U5      nS/U-   U-   S/-   nU R                  U5      nSnX-   n	U" XwXX5      n
U R	                  US   US   5        U R	                  US   US   5        U R                  USS USS 5        g r  )rm   ri  r   r   rw   r{   )rU   r  r   r8   r  r  r  r   r  r  r  s              r   r  #TestTimsortArrays.check_merge_lo_hi   s    VV((t< D1HqLC5(	!!),hd#33a)A,/b9R=1)Ab/4":6r   r   N)r   r   r   r   r   r  r   r   r   r   rm  rm    s    -7r   rm  c                   2    \ rS rSrS rS rS rS rS rSr	g)	BaseQuicksortTesti3  c                 x  ^ ^ SnUU 4S jnT R                   R                  mT R                  U5      nU" X15        T R                  U5      nU" X15        T R	                  XS-  5      nU" X15        T R                  U5      nU" X15        T R                  U5      nU" X15        T R                  U5      nU" X15        g )Nr   c                    > TR                  S/U -   S/-   5      nT" X"SU5        TR                  US   S5        TR                  US   S5        TR                  XSS 5        g Ni'  iri   r   r_   )r   rw   r{   )rI   r   r   r   rU   s      r   r   4BaseQuicksortTest.test_insertion_sort.<locals>.check9  sh    $$dVaZ5'%9:Cc1SVT*SWe,aQr+r   rc   )r-   insertion_sortr\   r`   rf   rW   rp   r   s   `   @r   test_insertion_sort%BaseQuicksortTest.test_insertion_sort7  s    	, NN))Qa"a&&qQ$/a"aQa"ar   c                 x  ^ ^ SnUU 4S jnT R                   R                  mT R                  U5      nU" X15        T R                  U5      nU" X15        T R	                  XS-  5      nU" X15        T R                  U5      nU" X15        T R                  U5      nU" X15        T R                  U5      nU" X15        g )Nr   c                 J  > TR                  S/U -   S/-   5      nT" X"SU5      nTR                  US   S5        TR                  US   S5        X#   n[        SU5       H  nTR                  X%   U5        M     [        US-   U5       H  nTR	                  X%   U5        M     g rv  )r   rw   rG   r   r   )rI   r   r   r   pivotrJ   r   rU   s         r   r   /BaseQuicksortTest.test_partition.<locals>.checkP  s    $$dVaZ5'%9:Cc1%ESVT*SWe,JE1e_$$SVU3 %519a(''6 )r   rc   )r-   	partitionr\   r`   rf   rW   rp   r   s   `   @r   test_partition BaseQuicksortTest.test_partitionN  s    		7 NN$$Qa"a&&qQ$/a"aQa"ar   c                 x  ^ ^ SnUU 4S jnT R                   R                  mT R                  U5      nU" X15        T R                  U5      nU" X15        T R	                  XS-  5      nU" X15        T R                  U5      nU" X15        T R                  U5      nU" X15        T R                  U5      nU" X15        g )Nr   c                   > TR                  S/U -   S/-   5      nT" USU5      u  p4TR                  US   S5        TR                  US   S5        X#   n[        SU5       H  nTR                  X&   U5        M     [        X4S-   5       H  nTR                  X&   U5        M     [        US-   U5       H  nTR	                  X&   U5        M     g rv  )r   rw   rG   r   r   )	rI   r   r   ltgtr}  rJ   r   rU   s	          r   r   0BaseQuicksortTest.test_partition3.<locals>.checkl  s    $$dVaZ5'%9:CsAq\FBSVT*SWe,GE1b\$$SVU3 "2Av&  / '261%""3651 &r   rc   )r-   
partition3r\   r`   rf   rW   rp   r   s   `   @r   test_partition3!BaseQuicksortTest.test_partition3i  s    	2 NN%%Qa"a&&qQ$/a"aQa"ar   c                 4   U R                   R                  nS Hw  nSnU Vs/ s H  o@R                  XB-  5      PM     nn[        R                  " U6  H9  n[        U/ 5      nU R                  U5      nU" U5        U R                  Xx5        M;     My     g s  snf )NrJ  r   r   )r-   run_quicksortr   r  r   r8  r   r{   rC  s	            r   test_run_quicksort$BaseQuicksortTest.test_run_quicksort  s    NN((!KEJOP%Q//@%IP#++Y7O	)))4$!!)2 8 " QrH  c           	      "   S nU R                  US9R                  nS H}  nSnU Vs/ s H  oPR                  XS-  5      PM     nn[        R                  " U6  H?  n[        U/ 5      nU R                  U5      n	U" U	5        U R                  XS S S2   5        MA     M     S n
U R                  U
S9R                  n[        R                  R                  S5        S H  n[        R                  R                  US	9S
-  n[        S5      U[        R                  R                  US	9S:  '   [        U5      nU R                  U5      n	U" U	5        U[        R                  " U5      )    nU R                  XS [        U5       5        M     g s  snf )Nc                 
    X:  $ r   r   r   r8   s     r   r  3BaseQuicksortTest.test_run_quicksort_lt.<locals>.lt  	    5Lr   )r  rJ  r  r_   c                 D    [         R                  " U5      =(       d    X:  $ r   rk   isnanr  s     r   	lt_floats:BaseQuicksortTest.test_run_quicksort_lt.<locals>.lt_floats      ::a=)AE)r   rC   r   r   2   r   sizer   nan皙?)make_quicksortr  r   r  r   r8  r   r{   r   rE   rF   floatrS   r  rm   )rU   r  r   rD  r:  r   rE  r;  r  r   r  r  ry   non_nanss                 r   test_run_quicksort_lt'BaseQuicksortTest.test_run_quicksort_lt  sk   	 2&44!KEJOP%Q//@%IP#++Y7O	)))4$!!)$B$Z8 8 "	* 9-;;
		r$D99###.4D6;ElD!!t!,s23T
I%%i0DdGRXXd^O,Hh^c(m(<= %! Qs   Fr   N)
r   r   r   r   ry  r  r  r  r  r   r   r   r   rs  rs  3  s    .6<3">r   rs  c                   ,    \ rS rSr\r\" \5      r\	r
Srg)TestQuicksortPurePythoni  r   N)r   r   r   r   py_quicksortr-   staticmethodr	   r  rS   r   r   r   r   r   r  r    s    I!"34N Mr   r  c                   .    \ rS rSr\r\" \5      rS r	Sr
g)TestQuicksortArraysi  c                 H    [         R                  " U[         R                  S9$ rV  )r   rY  float64r[  s     r   r   !TestQuicksortArrays.array_factory  s    xx2::..r   r   N)r   r   r   r   jit_quicksortr-   r  r
   r  r   r   r   r   r   r  r    s    I!"45N/r   r  c                   R    \ rS rSr\" SS9r\" \5      rS rSS jr	S r
S rS	 rS
rg)#TestQuicksortMultidimensionalArraysi  T)is_np_arrayc                 r    U R                  UR                  UR                  5        U R                  X5        g r   )rw   shapeassertPreciseEqualrx   s      r   r{   0TestQuicksortMultidimensionalArrays.assertSorted  s(    V\\2-r   Nc                     [         R                  " U[         R                  S9nUc  UR                  SUR                  S   5      $ UR                  U5      $ )NrW  r_   r   )r   rY  r  reshaper  )rU   r\  r  rY  s       r   r   1TestQuicksortMultidimensionalArrays.array_factory  sC    BJJ/===U[[^44==''r   c                 r   / nUS:X  a  U$ [        S[        [        R                  " U5      5      S-   5       H|  nX-  S:X  d  M  UR	                  X-  U45        UR	                  X1U-  45        U R                  X-  5      nU H,  nUR	                  U4U-   5        UR	                  XS4-   5        M.     M~     U$ )Nri   rc   r   )rG   rj   rk   rl   rH   
get_shapes)rU   r   shapesrJ   _shapes_shapes         r   r  .TestQuicksortMultidimensionalArrays.get_shapes  s    6Mq#diil+a/0Auzqvqk*qq&k*//!&1%FMM1$-0MM&4-0 & 1 r   c                    U R                   R                  nS H  nSnU Vs/ s H  o@R                  XB-  5      PM     nn[        R                  " U6  H  n[        U/ 5      nU R                  [        U5      5      nUR                  S 5        U HJ  n	U R                  XyS9n
U R                  XyS9nU" U
5        UR                  5         U R                  X5        ML     M     M     g s  snf )NrJ  r  r  )r-   r  r   r  r   r8  r  rm   rH   r   r    r{   )rU   r   rD  r:  r   rE  r;  r  
shape_listr  r   	keys_copys               r   r  6TestQuicksortMultidimensionalArrays.test_run_quicksort  s    NN((!KEJOP%Q//@%IP#++Y7O	!__S^<
!!$''E--i-ED $ 2 29 2 JIdGNN$%%i6 (	 8 " Qs   C&c                    S nU R                  USS9R                  nS H  nSnU Vs/ s H  oPR                  XS-  5      PM     nn[        R                  " U6  H  n[        U/ 5      nU R                  [        U5      5      n	U	R                  S 5        U	 HN  n
U R                  XS9nU R                  XS9* nU" U5        UR                  5         U* nU R                  X5        MP     M     M     S nU R                  USS9R                  n[        R                  R                  S5        S	 H  n[        R                  R                  US
9S-  n[        S5      U[        R                  R                  US
9S:  '   [!        U5      nU R                  [        U5      5      n	U	R                  S 5        U	 HJ  n
U R                  XS9nU R                  XS9nU" U5        UR                  5         U R                  X5        ML     M     g s  snf )Nc                 
    X:  $ r   r   r  s     r   r  ETestQuicksortMultidimensionalArrays.test_run_quicksort_lt.<locals>.lt  r  r   T)r  r  rJ  r  r  c                 D    [         R                  " U5      =(       d    X:  $ r   r  r  s     r   r  LTestQuicksortMultidimensionalArrays.test_run_quicksort_lt.<locals>.lt_floats  r  r   rC   r  r  r   r  r  )r  r  r   r  r   r8  r  rm   rH   r   r    r{   r   rE   rF   r  rS   )rU   r  r   rD  r:  r   rE  r;  r  r  r  r   r  r  r  ry   s                   r   r  9TestQuicksortMultidimensionalArrays.test_run_quicksort_lt   s   	 248FF!KEJOP%Q//@%IP#++Y7O	!__S^<
!!$''E--i-ED!%!3!3I!3!K KIdGNN$!*
I%%i6 (	 8 "(	* 9$?MM
		r$D99###.4D6;ElD!!t!,s23T
IY8Jd##))))A ..y.F	$ !!)2 $ %- Qs   Hr   r   )r   r   r   r   r
   r-   r  r  r{   r   r  r  r  r   r   r   r   r  r    s0    "t4I!"45N.( 7(,3r   r  c                       \ rS rSrS rS rS rS rS rS r	0 4S jr
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrg)TestNumpySorti.  c                 B    [         R                  R                  S5        g rB   r   rE   rF   rU   s    r   setUpTestNumpySort.setUp0  s    
		rr   c              #   ^   #    S H#  n[         R                  R                  SUS9v   M%     g 7f)Nr  c   r  )r   rE   randint)rU   r  s     r   
int_arraysTestNumpySort.int_arrays3  s)     $D))##BT#22 %s   +-c              #     #    S H%  n[         R                  R                  US9S-  v   M'     S HS  n[         R                  R                  US9S-  n[        S5      U[         R                  R                  US9S:  '   Uv   MU     S HS  n[         R                  R                  US9S-  n[        S5      U[         R                  R                  US9S:  '   Uv   MU     g 7f)Nr  r  r   r  r  )r  r   r   )r   rE   r  )rU   r  ry   s      r   float_arraysTestNumpySort.float_arrays7  s     $D))"""-33 % %D99###.4D6;ElD!!t!,s23J %
 D99###.4D6;ElD!!t!,s23J s   CC!c                     [         R                  " [         R                  " U5      5      S:  a  g[         R                  " U5      R                  UR                  :  a  gg)z=
Whether the array has duplicates.  Takes NaNs into account.
ri   TF)r   count_nonzeror  uniquer  )rU   arrs     r   has_duplicatesTestNumpySort.has_duplicatesE  sB     BHHSM*Q.99S>)r   c                     [         R                   " U5      n[         R                   " U5      nU" U5        U" U5        U R                  XT5        g r   copyr  )rU   pyfunccfuncr"   expectedgots         r   check_sort_inplace TestNumpySort.check_sort_inplaceO  s9    99S>iinxc
.r   c                     [         R                   " U5      nU" U5      nU" U5      nU R                  Xe5        U R                  X45        g r   r  )rU   r  r  r"   ry   r  r  s          r   check_sort_copyTestNumpySort.check_sort_copyV  s=    yy~#;Cj.*r   c                    [         R                   " U5      nU" U40 UD6nU" U40 UD6nU R                  XW   [        R                  " U5      SS9  U R	                  U5      (       d  U R                  Xv5        U R                  X55        g )Nzthe array wasn't argsorted)msg)r  r  r   r    r  )rU   r  r  r"   kwargsry   r  r  s           r   check_argsortTestNumpySort.check_argsort^  s    yy~#((C"6"	2774=$@ 	  	B ""4((##C2*r   c                     [         n[        SS9" U5      nU R                  5        H  nU R                  XU5        M     g NTnopython)r#   r   r  r  rU   r  r  ry   s       r   test_array_sort_int!TestNumpySort.test_array_sort_intk  s7    T"6*OO%D##F48 &r   c                     [         n[        SS9" U5      nU R                  5        H  nU R                  XU5        M     g r  )r#   r   r  r  r  s       r   test_array_sort_float#TestNumpySort.test_array_sort_floatr  s9    T"6*%%'D##F48 (r   c           	      >   [         n[        SS9" U5      nU R                  5        Ho  nUS S  n[        R                  R                  U5        [        R                  " [        X45       Vs/ s H  n[        U6 PM     sn5      nU R                  XU5        Mq     g s  snf r  )
r#   r   r  r   rE   rT   rY  r   complexr  )rU   r  r  realimagr   ry   s          r   test_array_sort_complex%TestNumpySort.test_array_sort_complexy  s    T"6*%%'D8DIId#88#d/B/QWa[/BCD##F48	 ( Cs   *B
c                     [         n[        SS9" U5      nU R                  5        H  nU R                  XU5        M     g r  )r;   r   r  r  r  s       r   test_np_sort_intTestNumpySort.test_np_sort_int  s7     T"6*OO%D  5 &r   c                     [         n[        SS9" U5      nS Ha  n[        R                  R                  US9S-  n[	        S5      U[        R                  R                  US9S:  '   U R                  XU5        Mc     g NTr  r  r  r   r  r  )r;   r   r   rE   r  r  )rU   r  r  r  ry   s        r   test_np_sort_float TestNumpySort.test_np_sort_float  sq     T"6*$D99###.4D6;ElD!!t!,s23  5 %r   c           	      
   [         n[        SS9" U5      nS H  n[        R                  R                  US9S-  n[        R                  R                  US9S-  n[	        S5      U[        R                  R                  US9S:  '   [	        S5      U[        R                  R                  US9S:  '   [        R
                  " [        XE5       Vs/ s H  n[        U6 PM     sn5      nU R                  XU5        M     g s  snf r  )	r;   r   r   rE   r  rY  r   r  r  )rU   r  r  r  r  r  r   ry   s           r   test_np_sort_complex"TestNumpySort.test_np_sort_complex  s     T"6*$D99###.4D99###.4D6;ElD!!t!,s236;ElD!!t!,s2388#d/B/QWa[/BCD  5 %
 Cs   D 
c                 B   ^  U 4S jnU" [         5        U" [        5        g )Nc                 v   > [        SS9" U 5      nTR                  5        H  nTR                  XU5        M     g r  )r   r  r  r  r  ry   rU   s      r   r   -TestNumpySort.test_argsort_int.<locals>.check  s3    &v.E)""6$7 *r   r'   r>   rU   r   s   ` r   test_argsort_intTestNumpySort.test_argsort_int      	8
 	o !r   c                 j   ^  U 4S jnU" [         SS9  U" [        SS9  U" [         SS9  U" [        SS9  g )Nc           
         > [        SS9" U 5      nTR                  5        H  nTR                  XU[        US95        M     g NTr  r/   )r   r  r  dictr  r/   r  ry   rU   s       r   r   2TestNumpySort.test_argsort_kind_int.<locals>.check  s=    &v.E)""6$#')#<> *r   Tr  Fr0   r@   r  s   ` r   test_argsort_kind_int#TestNumpySort.test_argsort_kind_int  6    	> 	"d3%6"e4%7r   c                 B   ^  U 4S jnU" [         5        U" [        5        g )Nc                 v   > [        SS9" U 5      nTR                  5        H  nTR                  XU5        M     g r  )r   r  r  r  s      r   r   /TestNumpySort.test_argsort_float.<locals>.check  s5    &v.E))+""6$7 ,r   r  r  s   ` r   test_argsort_float TestNumpySort.test_argsort_float  r  r   c                 j   ^  U 4S jnU" [         SS9  U" [        SS9  U" [         SS9  U" [        SS9  g )Nc           
         > [        SS9" U 5      nTR                  5        H  nTR                  XU[        US95        M     g r  )r   r  r  r  r  s       r   r   <TestNumpySort.test_argsort_float_supplemental.<locals>.check  s?    &v.E))+""6$#')#<> ,r   Tr  Fr  r  s   ` r   test_argsort_float_supplemental-TestNumpySort.test_argsort_float_supplemental  r  r   c                 B   ^  U 4S jnU" [         5        U" [        5        g )Nc           	      4  > [        SS9" U 5      nTR                  5        Ho  nUS S  n[        R                  R	                  U5        [        R
                  " [        X#5       Vs/ s H  n[        U6 PM     sn5      nTR                  XU5        Mq     g s  snf r  )	r   r  r   rE   rT   rY  r   r  r  )r  r  r  r  r   ry   rU   s         r   r   1TestNumpySort.test_argsort_complex.<locals>.check  s{    &v.E))+Bx		!!$'xxc$o Fo!o FG""6$7	 , !Gs   %B
r  r  s   ` r   test_argsort_complex"TestNumpySort.test_argsort_complex  s    	8 	o !r   c                 j   ^  U 4S jnU" [         SS9  U" [        SS9  U" [         SS9  U" [        SS9  g )Nc           
      D  > [        SS9" U 5      nTR                  5        Hw  nUS S  n[        R                  R	                  U5        [        R
                  " [        X45       Vs/ s H  n[        U6 PM     sn5      nTR                  XU[        US95        My     g s  snf r  )
r   r  r   rE   rT   rY  r   r  r  r  )r  r/   r  r  r  r   ry   rU   s          r   r   >TestNumpySort.test_argsort_complex_supplemental.<locals>.check  s    &v.E))+Bx		!!$'xxc$o Fo!o FG""6$#')#<>	 , !Gs   %B
Tr  Fr  r  s   ` r   !test_argsort_complex_supplemental/TestNumpySort.test_argsort_complex_supplemental  s6    	> 	"d3%6"e4%7r   c                     [        SS9" [        5      nSnU R                  [        R                  U5       nU" S 5        S S S 5        g ! , (       d  f       g = f)NTr  z#.*Argument "a" must be array-like.*)r   r;   assertRaisesRegexr   TypingError)rU   r  r  raisess       r   test_bad_arrayTestNumpySort.test_bad_array  sA    T"?33##F$6$6<$K =<<s   	A
Ar   N)r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r&  r+  r0  r6  r   r   r   r   r  r  .  sk    3/+ 8: +99966
6"
8"
8
"8r   r  c                   ,    \ rS rSrS rS rS rS rSrg)TestPythonSort  c                     [         n[        SS9" U5      nS H9  nU" U5      u  pEU R                  [        U5      U5        U R	                  XE5        M;     g )NTr  r   r  r   )rL   r   rw   r3   assertNotEqual)rU   r  r  r  ry   rets         r   test_list_sortTestPythonSort.test_list_sort  sM    "T"6*!DdIDVD\3/* "r   c           	          [         n[        SS9" U5      nS H@  nS H7  nU" X45      u  pVU R                  [        XTS9U5        U R	                  XV5        M9     MB     g )NTr  r<  FTr6   )rN   r   rw   r3   r=  )rU   r  r  r  r8   ry   r>  s          r   test_list_sort_reverse%TestPythonSort.test_list_sort_reverse  sX    *T"6*!D"!$N	  !8#>##D. # "r   c                     [         n[        SS9" U5      nS Hb  n[        R                  R                  US9S-  n[	        U5      nU" U5      nU R                  Xe5        U R                  [        U5      U5        Md     g )NTr  r<  r  r   )r4   r   r   rE   r3   r  r=  rS   )rU   r  r  r  ry   r  r  s          r   test_sortedTestPythonSort.test_sorted   sp    T"6*!D99###.4Dd|H+C##C2T
C0 "r   c                     [         n[        SS9" U5      nSn[        R                  R                  US9S-  nS H@  n[	        XES9nU" XE5      nU R                  Xv5        U R                  [        U5      U5        MB     g )NTr  r   r  r   rB  r6   )r9   r   r   rE   r3   r  r=  rS   )rU   r  r  r  ry   r8   r  r  s           r   test_sorted_reverse"TestPythonSort.test_sorted_reverse  sv    'T"6*yyT*S0Ad.H.C##C2T
C0	 r   r   N)	r   r   r   r   r?  rC  rF  rI  r   r   r   r   r9  r9    s    +/	1
1r   r9  c                   &    \ rS rSrS rS rS rSrg)TestMergeSorti  c                 B    [         R                  R                  S5        g )NiA  r  r  s    r   r  TestMergeSort.setUp  s    
		sr   c                     [         R                  R                  X#U5      n[         R                  " USS9nU" U5      n[         R                  R                  Xg5        g )Nr*   r+   )r   rE   r  r&   testingassert_equal)rU   sorterlowhighcountdataexpectr  s           r   check_argsort_stable"TestMergeSort.check_argsort_stable  sC    yy  E2D{3Tl


,r   c                    ^ / SQn[        SS9nUR                  m[        U4S j5      nU H  nU R                  " U/UQ76   M     g )N))rc   r   )r   r   )r   r   e   )r   r   r:  T)
is_argsortc                    > T" U 5      $ r   r   )r  toplevels    r   r   3TestMergeSort.test_argsort_stable.<locals>.<lambda>,  s	    (3-r   )r   run_mergesortr   rX  )rU   arglistimprR  rd  r`  s        @r   test_argsort_stable!TestMergeSort.test_argsort_stable#  sI    
 !D1$$/0D%%f4t4 r   r   N)r   r   r   r   r  rX  re  r   r   r   r   rL  rL    s    -5r   rL  c                     U $ r   r   r   s    r   r   r   1  s    r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestSortSlashSortedWithKeyi4  c                     / SQn[         S 5       n[         SS j5       nU R                  U" US S  5      UR                  US S  5      5        U R                  U" US S  U5      UR                  US S  U5      5        g )N   ri      ri   r   	   c                     SU -  $ Ng      ?r   zs    r   external_key8TestSortSlashSortedWithKey.test_01.<locals>.external_key:      6Mr   c                 H    U S S  nUR                  US9  [        U S S  US9U4$ Nr   r    r3   r   r   new_xs      r   foo/TestSortSlashSortedWithKey.test_01.<locals>.foo>  /    aDEJJ3J!A$C(%//r   r   r   r  py_funcrU   r   rs  r{  s       r   test_01"TestSortSlashSortedWithKey.test_016  s    		 
	 
	0 
	0
 	AaD	3;;qt+<=AaD, 7 #AaD, ?	Ar   c                 ~    / SQn[         S 5       nU R                  U" US S  5      UR                  US S  5      5        g )Nrk  c                 N    S nU S S  nUR                  US9  [        U S S  US9U4$ )Nc                     SU -  $ rp  r   rq  s    r   closure_keyDTestSortSlashSortedWithKey.test_02.<locals>.foo.<locals>.closure_keyN  s    Avr   r   rx  )r   r  rz  s      r   r{  /TestSortSlashSortedWithKey.test_02.<locals>.fooL  s4    aDEJJ;J'!A$K0%77r   r~  )rU   r   r{  s      r   test_02"TestSortSlashSortedWithKey.test_02H  s@    		8 
	8 	AaD	3;;qt+<=r   c                     / SQnS nU R                  U" [        5      " US S  5      U" [        5      " US S  5      5        g )Nrk  c                 .   ^ U S 5       mU U4S j5       nU$ )Nc                 H    U S S  nUR                  US9  [        U S S  US9U4$ rw  rx  )r   r  rz  s      r   bar<TestSortSlashSortedWithKey.test_03.<locals>.gen.<locals>.bar\  s/    !

t
$ad-u44r   c                    > S nT" X5      $ )Nc                     SU -  $ rp  r   rq  s    r   closure_escapee_keyYTestSortSlashSortedWithKey.test_03.<locals>.gen.<locals>.foo.<locals>.closure_escapee_keyd      6Mr   r   )r   r  r  s     r   r{  <TestSortSlashSortedWithKey.test_03.<locals>.gen.<locals>.foob  s    "122r   r   )compilerr{  r  s     @r   gen/TestSortSlashSortedWithKey.test_03.<locals>.genZ  s0    5 5
 3 3
 Jr   )r  r   nop_compiler)rU   r   r  s      r   test_03"TestSortSlashSortedWithKey.test_03V  s8    	  	D	!A$\1B1Q41HIr   c                     / SQn[         S 5       n[         SS j5       nU R                  U" US S  5      UR                  US S  5      5        U R                  U" US S  U5      UR                  US S  U5      5        g )Nr   r8   Br8   CAc                 "    U R                  5       $ r   upperrq  s    r   rs  8TestSortSlashSortedWithKey.test_04.<locals>.external_keyp      779r   c                 H    U S S  nUR                  US9  [        U S S  US9U4$ rw  rx  ry  s      r   r{  /TestSortSlashSortedWithKey.test_04.<locals>.foot  r}  r   r   r~  r  s       r   test_04"TestSortSlashSortedWithKey.test_04l  s    %		 
	 
	0 
	0
 	AaD	3;;qt+<=AaD, 7 #AaD, ?	Ar   c           	          / SQn[         S 5       n[         SS j5       n[        R                  " S U4S5       H4  u  pEU R                  U" US S  XE5      UR	                  US S  XE5      5        M6     g )Nr  c                 "    U R                  5       $ r   r  rq  s    r   rs  8TestSortSlashSortedWithKey.test_05.<locals>.external_key  r  r   c                 H    U S S  nUR                  XS9  [        U S S  XS9U4$ Nr   r7   rx  r   r   r7   rz  s       r   r{  /TestSortSlashSortedWithKey.test_05.<locals>.foo  s/    aDEJJ3J01Q4S:EBBr   )TFri   ir   NF)r   r  r   r  r  )rU   r   rs  r{  r   revs         r   test_05"TestSortSlashSortedWithKey.test_05~  s    %		 
	 
	C 
	C
 "))4*>*BDHC##C!c$7$'KK!c$?ADr   c                     / SQn[         S 5       nU R                  [        R                  5       nSnU" US S  U5        S S S 5        SnU R	                  U[        WR                  5      5        g ! , (       d  f       N6= f)Nrk  c                 b    U(       a  S nOS nU S S  nUR                  US9  [        U S S  US9U4$ )Nc                     SU -  $ rp  r   rq  s    r   r  QTestSortSlashSortedWithKey.test_optional_on_key.<locals>.foo.<locals>.closure_key  r  r   r   rx  )r   	predicater  rz  s       r   r{  <TestSortSlashSortedWithKey.test_optional_on_key.<locals>.foo  s>    " #aDEJJ;J'1Q4[1599r   Tz<Key must concretely be None or a Numba JIT compiled functionr   assertRaisesr   r4  assertInstr	exception)rU   r   r{  r5  TFr  s         r   test_optional_on_key/TestSortSlashSortedWithKey.test_optional_on_key  sr    	
	: 

	: v112fB!bM 3 Mc3v//01 32s   A//
A=c                    [         SS j5       n[         SS j5       n[         S 5       n/ SQnX!4 H  nU R                  [        R                  5       nU" USS9  S S S 5        SnU R	                  U[        WR                  5      5        U R                  [        R                  5       nU" XCSS	9  S S S 5        S
nU R	                  U[        UR                  5      5        M     g ! , (       d  f       N= f! , (       d  f       NK= f)Nc                     [        U S S  XS9$ r  r2   )r   r   r7   s      r   
foo_sortedETestSortSlashSortedWithKey.test_exceptions_sorted.<locals>.foo_sorted  s    !A$C99r   c                 .    U S S  nUR                  XS9  U$ r  r   r  s       r   foo_sortCTestSortSlashSortedWithKey.test_exceptions_sorted.<locals>.foo_sort  s    aDEJJ3J0Lr   c                     SU -  $ rp  r   rq  s    r   rs  GTestSortSlashSortedWithKey.test_exceptions_sorted.<locals>.external_key  ru  r   rk  illegalr   z1Key must be None or a Numba JIT compiled functionzgo backwardsr  z$an integer is required for 'reverse'r  r  )rU   r  r  rs  r   implr5  rW  s           r   test_exceptions_sorted1TestSortSlashSortedWithKey.test_exceptions_sorted  s    		: 
	: 
	 
	
 
	 
	 *D ""6#5#56&QI& 7 IFMM&#f&6&6"78 ""6#5#56&Q.A 7 <FMM&#f&6&6"78 + 76 76s   C$(C5$
C2	5
D	r   N)r   r   r   r   r  r  r  r  r  r  r  r   r   r   r   ri  ri  4  s)    A$>J,A$A&2. 9r   ri  c                       \ rS rSrSrS rSrg)TestArrayArgsorti  zTests specific to array.argsortc                    [         S 5       nU R                  [        R                  5       nU" S5        S S S 5        SnU R	                  U[        WR                  5      5        [         S 5       nU R                  [        R                  5       nU" 5         S S S 5        SnU R	                  U[        UR                  5      5        g ! , (       d  f       N= f! , (       d  f       NG= f)Nc                 J    [         R                  " S5      R                  U S9  g )Nr   r+   r   aranger&   r+   s    r   nonliteral_kind9TestArrayArgsort.test_exceptions.<locals>.nonliteral_kind  s    IIaL  d +r   r-   z"kind" must be a string literalc                  J    [         R                  " S5      R                  SS9  g )Nr    )r{  r  r   r   r   unsupported_kwarg;TestArrayArgsort.test_exceptions.<locals>.unsupported_kwarg  s    IIaL  R (r   zUnsupported keywords: ['foo']r  )rU   r  r5  rW  r  s        r   test_exceptions TestArrayArgsort.test_exceptions  s    		, 
	, v112fK( 3 3fc&"2"234		) 
	) v112f 3 1fc&"2"234 32 32s   	CC
C
C&r   N)r   r   r   r   __doc__r  r   r   r   r   r  r    s
    )5r   r  __main__)F)?r  r  rk   rE   r   unittestnumpyr   numbar   r   
numba.corer   r   numba.tests.supportr   r   numba.misc.quicksortr	   r
   numba.misc.mergesortr   numba.misc.timsortr   r   r   r   r   rR  r_  jit_list_timsortrk  r  r  r#   r'   r0   r4   r9   r;   r>   r@   rL   rN   objectrP   r   rQ  rT  ra  rm  rs  r  r  r  r  r9  rL  r  ri  r  r   mainr   r   r   <module>r     s       
    $ 9 F 3 J J# ".1"?3 #N3 $_5  ""$-"1Mf M`DJo DJN
OX -/8 -f 87( 70E> E>P/ /+X /`3/8 `3DzH zz*1X *1Z5H 52 T9( T9n5 58 zMMO r   