
    wg&                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZmZ d dlmZmZ d dlmZmZ d dlmZ d dlmZmZmZ d Zd	 Z ee      Z ee      Z ee      Z ee      Z e       Z  e       Z!d
 Z"d Z#d4dZ$d Z%d Z&d Z'd Z(d4dZ)d Z*d Z+ G d de,      Z- G d de-      Z. G d de.e      Z/ G d de.e      Z0 G d de,      Z1 G d de1e.e      Z2 G d  d!e-      Z3 G d" d#e3e      Z4 G d$ d%e3e      Z5 G d& d'e-e      Z6 G d( d)e      Z7 G d* d+e      Z8 G d, d-e      Z9d. Z: G d/ d0ee      Z; G d1 d2ee      Z<e=d3k(  r ej|                          yy)5    N)jitnjit)utilserrors)TestCaseMemoryLeakMixin)make_py_quicksortmake_jit_quicksort)make_jit_mergesort)make_py_timsortmake_jit_timsortMergeRunc                     | d   g|z  S Nr    keysns     Z/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/numba/tests/test_sort.pymake_temp_listr      s    G9q=    c                 B    t        j                  || j                        S N)npemptydtyper   s     r   make_temp_arrayr      s    88Atzz""r   c                 $    | j                          y r   sortvals    r   sort_usecaser#   '   s    HHJr   c                 "    | j                         S r   argsortr!   s    r   argsort_usecaser'   *   s    ;;=r   c                 N    |r| j                  d      S | j                  d      S N	mergesortkind	quicksortr%   r"   	is_stables     r   argsort_kind_usecaser0   -   s'    {{{,,{{{,,r   c                     t        |       S r   sortedr!   s    r   sorted_usecaser4   3   s    #;r   c                     t        | |      S )Nreverser2   )r"   bs     r   sorted_reverse_usecaser9   6   s    #q!!r   c                 ,    t        j                  |       S r   )r   r    r!   s    r   np_sort_usecaser;   9   s    773<r   c                 ,    t        j                  |       S r   r   r&   r!   s    r   np_argsort_usecaser>   <   s    ::c?r   c                 b    |rt        j                  | d      S t        j                  | d      S r)   r=   r.   s     r   np_argsort_kind_usecaser@   ?   s'    zz#K00zz#K00r   c                     t         j                  j                  d       g }t        |       D ]/  }|j	                  t         j                  j                                1 |d d  }|j                          ||fS N*   r   randomseedrangeappendr    )r   lills       r   list_sort_usecaserL   E   s^    IINN2
A1X %	!!#$%	
1BGGIb5Lr   c                     t         j                  j                  d       g }t        |       D ]/  }|j	                  t         j                  j                                1 |d d  }|j                  |       ||fS )NrC   r6   rD   )r   r8   rI   rJ   rK   s        r   list_sort_reverse_usecaserN   N   sc    IINN2
A1X %	!!#$%	
1BGGAGb5Lr   c                   Z    e Zd ZddZddZddZddZddZddZd Z	d	 Z
d
 Zd Zd Zy)BaseSortingTestc                     t        j                  d       t        t        |||z               }t        j                  |       |S rB   )rE   rF   listrG   shuffle)selfr   offsetrI   s       r   random_listzBaseSortingTest.random_listZ   s3    Bvvz*+qr   c                 2    t        t        |||z               S r   rR   rG   rT   r   rU   s      r   sorted_listzBaseSortingTest.sorted_list`   s    E&&1*-..r   c                 >    t        t        |||z               d d d   S )NrX   rY   s      r   revsorted_listzBaseSortingTest.revsorted_listc   s!    E&&1*-.tt44r   Nc                 v    ||dz  }| j                  ||      }|| j                  ||z
  |d   |z         z  }|S )N   r\   rU   )rZ   rV   )rT   r   mrU   rI   s        r   initially_sorted_listz%BaseSortingTest.initially_sorted_listf   sM    9QAQ'	Ta!eAbEFN;;r   c                    t        j                  d       |t        t        j                  |            }t        t        ||||z  z   dz               |dz   z  d | }t        |      |k(  sJ t        j                  |       |S )NrC      )	rE   rF   intmathsqrtrR   rG   lenrS   rT   r   factorrU   rI   s        r   duprandom_listzBaseSortingTest.duprandom_listm   st    B>1&F%!v+ 6 :;<
KRaP1v{{qr   c                     |t        t        j                  |            }t        t	        ||||z  z   dz               |dz   z  d | }t        |      |k(  sJ t        |      |f       |j                          |S Nrd   )re   rf   rg   rR   rG   rh   r    ri   s        r   dupsorted_listzBaseSortingTest.dupsorted_listv   ss    >1&F%!v+ 6 :;<
KRaP1v{'SVQK'{	r   c                     | j                  t        |      t        |             | j                  t        |      t        |             y r   )assertEqualrh   rR   r3   rT   origresults      r   assertSortedzBaseSortingTest.assertSorted~   s2    Vc$i0fvd|4r   c                    | j                  t        |      t        |             | j                  t        |      t        |             t        t	        ||      d       }t        t	        ||            }| j                  ||       t        t        |      dz
        D ]L  }||   ||dz      c\  }}	\  }
}||
k(  s| j                  |j                  |	      |j                  |             N y )Nc                     | d   S r   r   xs    r   <lambda>z4BaseSortingTest.assertSortedValues.<locals>.<lambda>   s
    !A$ r   keyrd   )rp   rh   rR   r3   ziprG   
assertLessindex)rT   rr   orig_valuesrs   result_values
zip_sorted
zip_resultrJ   k1v1k2v2s               r   assertSortedValuesz"BaseSortingTest.assertSortedValues   s    Vc$i0fvd|4Ck2G
#fm45
Z0s:*+ 	NA!+A
1q50AHRhr2Rx 1 1" 5{7H7H7LM		Nr   c              #   ,   K   d}d}	 | |||z   }}wrm   r   )rT   ar8   s      r   fibozBaseSortingTest.fibo   s*     Ga!eqA s   c                     g }dD ]D  }|j                  | j                  ||             |j                  | j                  ||             F |S N)   x   )rH   rZ   rn   rT   r   listsrU   s       r   make_sample_sorted_listsz(BaseSortingTest.make_sample_sorted_lists   sO     	9FLL))!V45LL,,Q78	9 r   c                     g }dD ]  }|j                  | j                  ||             |j                  | j                  ||             |j                  | j                  ||             |j                  | j	                  ||              |S r   )rH   rZ   rn   r]   rk   r   s       r   make_sample_listsz!BaseSortingTest.make_sample_lists   s     	9FLL))!V45LL,,Q78LL,,Q78LL,,Q78		9
 r   )
   )Nr   )__name__
__module____qualname__rV   rZ   r]   rb   rk   rn   rt   r   r   r   r   r   r   r   rP   rP   X   s:    /55
Nr   rP   c                   `    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zy)BaseTimsortTestc                 >    | j                   j                  } ||      S r   )timsort
merge_init)rT   r   fs      r   r   zBaseTimsortTest.merge_init   s    LL##wr   c                     d}d fd	} j                   j                   j                  |      } |||        ||||dz          j                  |      } |||        j	                  ||dz        } |||        ||||dz          j                  |      } |||        j                  |      } |||        j                  |      } |||       y )Nr   c                 d    j                  |       } ||d||       j                  | |       y r   )array_factoryrt   )rI   r   startresr   rT   s       r   checkz.BaseTimsortTest.test_binarysort.<locals>.check   s3    $$Q'Cc31e$a%r   r_   r   )r   
binarysortrZ   r]   rb   rV   rk   rT   r   r   rI   r   s   `   @r   test_binarysortzBaseTimsortTest.test_binarysort   s    	&
 LL##QaaAqD"a&&q!Q$/aaAqD"aQa"ar   c                     d}t        t        dd|z               d fd	} j                  j                   j	                  |      } |||        ||||dz          j                  |      } |||        j                  ||dz        } |||        ||||dz          j                  |      } |||        j                  |      } |||        j                  |      } |||       y )Nr   d   c                     j                  |       }j                        } ||d||       j                  | ||       y r   )r   r   )rI   r   r   r   res_vr   rT   vs        r   r   z:BaseTimsortTest.test_binarysort_with_values.<locals>.check   sG    $$Q'C&&q)Ec5!Q&##Aq#u5r   r_   r   )	rR   rG   r   r   rZ   r]   rb   rV   rk   )rT   r   r   rI   r   r   s   `   @@r   test_binarysort_with_valuesz+BaseTimsortTest.test_binarysort_with_values   s    sCE"#	6 LL##QaaAqD"a&&q!Q$/aaAqD"aQa"ar   c                     d} j                   j                   fd} j                  |d      } ||d|        ||d|dz
          ||dd        j                  |d      } ||d|        ||d|dz
          ||dd        j	                  |d      }t        t        |      dz
        D ]  } ||||         j                  |d      }t        t        |      dz
        D ]  } ||||        y )N   c                     	j                  |       ||      \  }}|rat        |||z   dz
        D ]!  }| |   | |dz      }}	j                  ||       # ||z   |k  r"	j                  | ||z   dz
     | ||z             y y t        |||z   dz
        D ]!  }| |   | |dz      }}	j                  ||       # ||z   |k  r#	j                  | ||z   dz
     | ||z      |        y y rm   )r   rG   assertGreaterassertLessEqual)
rI   lohir   desckr   r8   r   rT   s
           r   r   z-BaseTimsortTest.test_count_run.<locals>.check   s   **1-r26GAtr26A:. -AQ41q5qA&&q!,- 6B;((26A:"q&	B  r26A:. /AQ41q5qA((A./ 6B;&&qa!}aQiC r   r   r`   r   rd   r_   )r   	count_runrZ   r]   rV   rG   rh   rk   )rT   r   r   rI   rJ   r   s   `    @r   test_count_runz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!QN	#.s1vz" 	A!QN	r   c                      d j                   j                   fdfd fd} j                  d      } ||        j                  d      } ||       y )Nr   c                      || |||      }j                  ||       j                  ||       ||kD  rj                  | |dz
     |       ||k  rj                  | |   |       y y rm   )assertGreaterEqualr   r}   rI   r{   r   stophintr   r   rT   s         r   r   z/BaseTimsortTest.test_gallop_left.<locals>.check  sr    #q%t,A##Au-  D)5y!a%#.4x''!c2 r   c                 @    t        ||      D ]  } | ||||        y r   rG   rI   r{   r   r   r   r   s        r   check_all_hintsz9BaseTimsortTest.test_gallop_left.<locals>.check_all_hints  )    eT* 1aeT401r   c                     j                  |       } | d   | d   | d   d| d   dfD ])  } | |d        | |ddz
          | |ddz
         + y 	N      r   ir\     rd      r   rI   r{   r   r   rT   s     r   check_sorted_listz;BaseTimsortTest.test_gallop_left.<locals>.check_sorted_list  q    ""1%A!aeQqT5!B%> 231-31q5131q512r   r   r`   )r   gallop_leftrZ   rn   rT   r   rI   r   r   r   r   s   `  @@@@r   test_gallop_leftz BaseTimsortTest.test_gallop_left  sb    LL$$	3	1	2 Qs+!#.!r   c                      d j                   j                   fdfd fd} j                  d      } ||        j                  d      } ||       y )Nr   c                      || |||      }j                  ||       j                  ||       ||kD  rj                  | |dz
     |       ||k  rj                  | |   |       y y rm   )r   r   r   r   s         r   r   z0BaseTimsortTest.test_gallop_right.<locals>.check%  st    #q%t,A##Au-  D)5y$$Qq1uXs34x""1Q4- r   c                 @    t        ||      D ]  } | ||||        y r   r   r   s        r   r   z:BaseTimsortTest.test_gallop_right.<locals>.check_all_hints/  r   r   c                     j                  |       } | d   | d   | d   d| d   dfD ])  } | |d        | |ddz
          | |ddz
         + y r   r   r   s     r   r   z<BaseTimsortTest.test_gallop_right.<locals>.check_sorted_list3  r   r   r   r`   )r   gallop_rightrZ   rn   r   s   `  @@@@r   test_gallop_rightz!BaseTimsortTest.test_gallop_right!  sb    LL%%	.	1	2 Qs+!#.!r   c                 V   | j                   j                  }t        dd      D ]  }| j                   ||      |        t        dd      D ]5  }d|z  t        j
                  kD  r n| j                   |d|z        d       7 | j                         D ]  }|dk  r	|t        j
                  k\  r y  ||      }| j                  |d       | j                  |d       |dkD  sP||z  }dt        j                  |      z  }| j                  ||       | j                  |d|z          y )	Nr   @      ?   r_         ?)r   merge_compute_minrunrG   rp   sysmaxsizer   r   r   r   
bit_lengthr}   )rT   r   rJ   r   quotps         r   test_merge_compute_minrunz)BaseTimsortTest.test_merge_compute_minrun?  s   LL--q" 	&AQqT1%	&q" 	*A!tckk!Qq!tWb)	*  	7A2vCKK!A##Ar*  B'3wAv))$//a(''cAg6	7r   c           	         t        |      }t        |      }dg|z   |z   dgz   }| j                  |      }| j                  |      }d}	|	|z   }
 |||||	||
|      }| j                  |d   |d          | j                  |d   |d          | j	                  |dd |dd        | j                  t        |j                        t        |j                               | j                  t        |j                        t        |j                               | j                  |j                  |j                         | j                  |j                  d       y NrC   rd   r   r\   )rh   r   r   rp   rt   r   r   valuesassertIspending
min_gallop)rT   funcr   r8   nanb	orig_keysr   msssassbnew_mss               r   check_merge_lo_hiz!BaseTimsortTest.check_merge_lo_hiW  s*   VV D1HqLC5(	!!),__T"Bh b$c2sB7a)A,/b9R=1)Ab/4":6FKK 0#bgg,?FMM 2C		NCfnnbjj1 1 115r   c                 4   | j                   j                  }| j                   j                  }dD ]g  \  }}t        j                  | j                  |      | j                  |            D ]+  \  }}| j                  |||       | j                  |||       - i y )N)   r   (   r   r   n   )r   iL  )r   merge_lomerge_hi	itertoolsproductr   r   )rT   f_lof_hir   r   r   r8   s          r   test_merge_lo_hiz BaseTimsortTest.test_merge_lo_him  s    ||$$||$$ G 	3HR!))$*G*G*K*.*G*G*KM 31&&tQ2&&tQ23	3r   c                 j   	
  j                   j                  	t        |      
t        |      dg|z   |z   dgz   d
z   }t        dd      	
 fd} j	                        } j                  |      } j                   j                  |      }|j                  } j                   j                  |t        
            } j                   j                  |t        |            } ||||      } j                  |j                  |dz           j	                        } j                  |      } j                   j                  |      }|j                  } j                   j                  |t        
            } j                   j                  |t        |            }t        |z   d      } j                   j                  ||      } ||||      } j                  |j                  |dz           j                  |j                  |j                  dz
     |       y )NrC   r   rd   c                     | |||      }j                  |d   d          j                  |d   d          j                  dd |dd        j                  |j                  | j                         j                  | j                  |   	z   f       j                  | j                  d   
       |S )Nr   r\   rd   )rp   rt   r   r   )r   r   rJ   r   r   r   r   r   rT   r   stack_sentinels       r   run_merge_atz4BaseTimsortTest.check_merge_at.<locals>.run_merge_at  s    r4q)FT!Wil3T"Xy}5i"otAbz:MM&.."**5RZZ]S"r'N;RZZ]N;Mr   r_   )
r   merge_atrh   r   r   r   merge_appendr   rp   r   )rT   r   r8   r   r  r   r   rJ   last_runr   r   r   r   r   r  s   `        @@@@@@r   check_merge_atzBaseTimsortTest.check_merge_atx  s   LL!!VVD1HqLC5(	Bh!#s+		 		 !!),__T"\\&&r>:DD\\&&r8C+<=\\&&r8C+<="dA&q1u% !!),__T"\\&&r>:DD\\&&r8C+<=\\&&r8C+<=C"Ha(\\&&r84"dA&q1u%BDD1H-x8r   c                     dD ]e  \  }}t        j                  | j                  |      | j                  |            D ])  \  }}| j                  ||       | j                  ||       + g y )N)r   r   r   )r   i  )r   r   r   r
  )rT   r   r   r   r8   s        r   test_merge_atzBaseTimsortTest.test_merge_at  so    D 	*HR!))$*G*G*K*.*G*G*KM *1##Aq)##Aq)*	*r   c                      j                   j                  }dg}|j                  |d   d d d          |D ]A  }t        j                   fd|D         D ]  }t        |g       } j                  |      } j                  |      }d}|D ]?  }	 j                   j                  |t        |t        |	                  }|t        |	      z  }A  j                  t        |j                  |j                  dz
           t        |              ||||      } j                  |j                  d        j                  |j                  d   t        dt        |                    j                  ||       " D y )N)r   r   r   r   r   r\   c              3   @   K   | ]  }j                  |        y wr   )r   ).0r   rT   s     r   	<genexpr>z<BaseTimsortTest.test_merge_force_collapse.<locals>.<genexpr>  s$      .>23 /3.K.KA.N .>s   rd   )r   merge_force_collapserH   r   r   sumr   r   r  r   rh   rp   r   r   rt   )
rT   r   
sizes_listsizeschunksr   r   r   poscs
   `         r   test_merge_force_collapsez)BaseTimsortTest.test_merge_force_collapse  s[   LL-- &&
*Q-"-. 	3E#++ .>7<.> ? 3  O	)))4__T* "A222xSV7LMB3q6MC"   RZZq%9!:CIFr4&  q)  ACI0FG!!)T2%3	3r   c                 *   | j                   j                  }dD ]s  }d}|D cg c]  }| j                  ||z         }}t        j                  | D ]9  }t        |g       }| j                  |      } ||       | j                  ||       ; u y c c}w )N)rd   r   )r      r   )r   run_timsortr   r   r   r  r   rt   	rT   r   size_factorr  r   	all_listsr  r   r   s	            r   test_run_timsortz BaseTimsortTest.test_run_timsort  s    LL$$" 
	3K EJOPQ//K@PIP#++Y7 3O	)))4$!!)T23
	3 Q   Bc           
      ~   | j                   j                  }dD ]  }d|z  }| j                  |      }| j                  |      }| j	                  |      }||z   |z   }t        t        ddt        |      z               }| j                  |      }	| j                  |      }
 ||	|
       | j                  |||	|
        y )Nrd   r   P   r   )
r   run_timsort_with_valuesrn   rk   r]   rR   rG   rh   r   r   )rT   r   r  
chunk_sizer   r8   r  r   r   r   r   s              r   test_run_timsort_with_valuesz,BaseTimsortTest.test_run_timsort_with_values  s    LL00! 	JKk)J##J/A##J/A##J/AA	IuT4#i.+@ABK%%i0D''4FdFO##I{D&I	Jr   N)r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r&  r   r   r   r   r      sK    .4"H<<706,	3/9b*383Jr   r   c                       e Zd ZeZeZy)TestTimsortPurePythonN)r   r   r   py_list_timsortr   rR   r   r   r   r   r(  r(    s    G Mr   r(  c                       e Zd ZeZd Zy)TestTimsortArraysPurePythonc                 L    t        j                  |t         j                        S Nr   r   arrayint32rT   lsts     r   r   z)TestTimsortArraysPurePython.array_factory      xx288,,r   N)r   r   r   py_array_timsortr   r   r   r   r   r+  r+    s    G-r   r+  c                   "    e Zd ZeZdZdZi fdZy)JITTimsortMixinNc                 p    |f}||v r||   S |j                   |j                  fd       }|||<   |S )z
        Wrap *func* into another compiled function inserting a runtime-created
        mergestate as the first function argument.
        c                 .     |       } || |g| }|S r   r   )r   r   argsr   r   r   r   s        r   wrapperz5JITTimsortMixin.wrap_with_mergestate.<locals>.wrapper  s%    D!Br4/$/CJr   )r   compile)rT   r   r   _cacher{   r;  r   s     `   @r   wrap_with_mergestatez$JITTimsortMixin.wrap_with_mergestate  sP    
 tm&=#;''
		 
	
 sr   )r   r   r   jit_array_timsortr   r  r  r>  r   r   r   r7  r7    s    GM $9; r   r7  c                       e Zd Zd Zd Zy)TestTimsortArraysc                 L    t        j                  |t         j                        S r-  r/  r2  s     r   r   zTestTimsortArrays.array_factory  r4  r   c                 \   t        |      }t        |      }| j                  | j                  |      }dg|z   |z   dgz   }| j                  |      }d}||z   }	 ||||||	|      }
| j	                  |d   |d          | j	                  |d   |d          | j                  |dd |dd        y r   )rh   r>  r   r   rp   rt   )rT   r   r   r8   r   r   r   r   r   r   r   s              r   r   z#TestTimsortArrays.check_merge_lo_hi   s    VV((t< D1HqLC5(	!!),BhdD#r33a)A,/b9R=1)Ab/4":6r   N)r   r   r   r   r   r   r   r   rA  rA    s    -7r   rA  c                   *    e Zd Zd Zd Zd Zd Zd Zy)BaseQuicksortTestc                     d} fd} j                   j                   j                  |      } |||        j                  |      } |||        j	                  ||dz        } |||        j                  |      } |||        j                  |      } |||        j                  |      } |||       y )Nr   c                     j                  dg| z   dgz         } ||d|       j                  |d   d       j                  |d   d       j                  | |dd        y Ni'  ird   r   r\   )r   rp   rt   )rI   r   r   r   rT   s      r   r   z4BaseQuicksortTest.test_insertion_sort.<locals>.check9  sl    $$dVaZ5'%9:Cc31SVT*SWe,aQr+r   r_   )r-   insertion_sortrZ   r]   rb   rV   rk   r   s   `   @r   test_insertion_sortz%BaseQuicksortTest.test_insertion_sort7  s    	, NN))Qa"a&&q!Q$/a"aQa"ar   c                     d} fd} j                   j                   j                  |      } |||        j                  |      } |||        j	                  ||dz        } |||        j                  |      } |||        j                  |      } |||        j                  |      } |||       y )Nr   c                 J   j                  dg| z   dgz         } ||d|      }j                  |d   d       j                  |d   d       ||   }t        d|      D ]  }j                  ||   |        t        |dz   |      D ]  }j	                  ||   |        y rH  )r   rp   rG   r   r   )rI   r   r   r~   pivotrJ   r   rT   s         r   r   z/BaseQuicksortTest.test_partition.<locals>.checkP  s    $$dVaZ5'%9:Cc31%ESVT*SWe,JE1e_ 4$$SVU34519a( 7''A67r   r_   )r-   	partitionrZ   r]   rb   rV   rk   r   s   `   @r   test_partitionz BaseQuicksortTest.test_partitionN  s    		7 NN$$Qa"a&&q!Q$/a"aQa"ar   c                     d} fd} j                   j                   j                  |      } |||        j                  |      } |||        j	                  ||dz        } |||        j                  |      } |||        j                  |      } |||        j                  |      } |||       y )Nr   c                    j                  dg| z   dgz         } |d|      \  }}j                  |d   d       j                  |d   d       ||   }t        d|      D ]  }j                  ||   |        t        ||dz         D ]  }j                  ||   |        t        |dz   |      D ]  }j	                  ||   |        y rH  )r   rp   rG   r   r   )	rI   r   r   ltgtrM  rJ   r   rT   s	          r   r   z0BaseQuicksortTest.test_partition3.<locals>.checkl  s    $$dVaZ5'%9:CsAq\FBSVT*SWe,GE1b\ 4$$SVU342rAv& 0  Q/0261% 2""3q6512r   r_   )r-   
partition3rZ   r]   rb   rV   rk   r   s   `   @r   test_partition3z!BaseQuicksortTest.test_partition3i  s    	2 NN%%Qa"a&&q!Q$/a"aQa"ar   c                 *   | j                   j                  }dD ]s  }d}|D cg c]  }| j                  ||z         }}t        j                  | D ]9  }t        |g       }| j                  |      } ||       | j                  ||       ; u y c c}w )Nr"  r   r   )r-   run_quicksortr   r   r   r  r   rt   r  s	            r   test_run_quicksortz$BaseQuicksortTest.test_run_quicksort  s    NN((! 
	3KEJOPQ//K@PIP#++Y7 3O	)))4$!!)T23
	3 Qr   c           	      ,   d }| j                  |      j                  }dD ]y  }d}|D cg c]  }| j                  ||z         }}t        j                  | D ]?  }t        |g       }| j                  |      }	 ||	       | j                  ||	d d d          A { d }
| j                  |
      j                  }t        j                  j                  d       dD ]  }t        j                  j                  |	      d
z  }t        d      |t        j                  j                  |	      dk  <   t        |      }| j                  |      }	 ||	       |t        j                  |          }| j                  ||	d t        |               y c c}w )Nc                     | |kD  S r   r   r   r8   s     r   rR  z3BaseQuicksortTest.test_run_quicksort_lt.<locals>.lt      q5Lr   )rR  r"  rW  r\   c                 :    t        j                  |      xs | |k  S r   rf   isnanr\  s     r   	lt_floatsz:BaseQuicksortTest.test_run_quicksort_lt.<locals>.lt_floats      ::a=)AE)r   rC   r   r   2   r   sizer   nan皙?)make_quicksortrX  r   r   r   r  r   rt   r   rE   rF   floatrR   r`  rh   )rT   rR  r   r  r  r   r  r  r   r   ra  rf  rr   non_nanss                 r   test_run_quicksort_ltz'BaseQuicksortTest.test_run_quicksort_lt  s   	 2&44! 
	9KEJOPQ//K@PIP#++Y7 9O	)))4$!!)T$B$Z89
	9	* 9-;;
		r$ 	>D99###.4D6;ElD!!t!,s23T
I%%i0DdGRXXd^O,Hh^c(m(<=	>! Qs   FN)r   r   r   rJ  rO  rU  rY  rl  r   r   r   rE  rE  3  s    .6<3">r   rE  c                   $    e Zd ZeZ ee      ZeZ	y)TestQuicksortPurePythonN)
r   r   r   py_quicksortr-   staticmethodr	   ri  rR   r   r   r   r   rn  rn    s    I!"34N Mr   rn  c                   &    e Zd ZeZ ee      Zd Zy)TestQuicksortArraysc                 L    t        j                  |t         j                        S r-  )r   r0  float64r2  s     r   r   z!TestQuicksortArrays.array_factory  s    xx2::..r   N)	r   r   r   jit_quicksortr-   rp  r
   ri  r   r   r   r   rr  rr    s    I!"45N/r   rr  c                   N    e Zd Z ed      Z ee      Zd Zd	dZd Z	d Z
d Zy)
#TestQuicksortMultidimensionalArraysT)is_np_arrayc                 t    | j                  |j                  |j                         | j                  ||       y r   )rp   shapeassertPreciseEqualrq   s      r   rt   z0TestQuicksortMultidimensionalArrays.assertSorted  s*    V\\2f-r   Nc                     t        j                  |t         j                        }||j                  d|j                  d         S |j                  |      S )Nr.  r\   r   )r   r0  rt  reshaperz  )rT   r3  rz  r0  s       r   r   z1TestQuicksortMultidimensionalArrays.array_factory  sC    BJJ/===U[[^44==''r   c                 l   g }|dk(  r|S t        dt        t        j                  |            dz         D ]|  }||z  dk(  s|j	                  ||z  |f       |j	                  |||z  f       | j                  ||z        }|D ],  }|j	                  |f|z          |j	                  ||fz          . ~ |S )Nrd   r_   r   )rG   re   rf   rg   rH   
get_shapes)rT   r   shapesrJ   _shapes_shapes         r   r  z.TestQuicksortMultidimensionalArrays.get_shapes  s    6Mq#diil+a/0 	1A1uzqAvqk*q!q&k*//!q&1% 1FMM1$-0MM&A4-01	1 r   c                    | j                   j                  }dD ]  }d}|D cg c]  }| j                  ||z         }}t        j                  | D ]  }t        |g       }| j                  t        |            }|j                  d        |D ]R  }	| j                  ||	      }
| j                  ||	      } ||
       |j                          | j                  ||
       T   y c c}w )Nr"  rW  rz  )r-   rX  r   r   r   r  r  rh   rH   r   r    rt   )rT   r   r  r  r   r  r  r   
shape_listrz  r   	keys_copys               r   rY  z6TestQuicksortMultidimensionalArrays.test_run_quicksort  s    NN((! 	7KEJOPQ//K@PIP#++Y7 
7O	!__S^<
!!$'' 7E--iu-ED $ 2 29E 2 JIdGNN$%%i67	
7	7 Qs   C'c                 >   d }| j                  |d      j                  }dD ]  }d}|D cg c]  }| j                  ||z         }}t        j                  | D ]  }t        |g       }| j                  t        |            }	|	j                  d        |	D ]V  }
| j                  ||
      }| j                  ||
       } ||       |j                          | }| j                  ||       X   d }| j                  |d      j                  }t        j                  j                  d       d	D ]  }t        j                  j                  |
      dz  }t        d      |t        j                  j                  |
      dk  <   t!        |      }| j                  t        |            }	|	j                  d        |	D ]R  }
| j                  ||
      }| j                  ||
      } ||       |j                          | j                  ||       T  y c c}w )Nc                     | |kD  S r   r   r\  s     r   rR  zETestQuicksortMultidimensionalArrays.test_run_quicksort_lt.<locals>.lt  r]  r   T)rR  rx  r"  rW  r  c                 :    t        j                  |      xs | |k  S r   r_  r\  s     r   ra  zLTestQuicksortMultidimensionalArrays.test_run_quicksort_lt.<locals>.lt_floats  rb  r   rC   rc  re  r   rg  rh  )ri  rX  r   r   r   r  r  rh   rH   r   r    rt   r   rE   rF   rj  rR   )rT   rR  r   r  r  r   r  r  r   r  rz  r   r  ra  rf  rr   s                   r   rl  z9TestQuicksortMultidimensionalArrays.test_run_quicksort_lt   s   	 248FF! 	7KEJOPQ//K@PIP#++Y7 7O	!__S^<
!!$'' 7E--iu-ED!%!3!3IU!3!K KIdGNN$!*
I%%i67	7	7(	* 9$?MM
		r$ 	3D99###.4D6;ElD!!t!,s23T
IY8Jd## 3)))5)A ..y.F	$ !!)T23	3- Qs   Hr   )r   r   r   r
   r-   rp  ri  rt   r   r  rY  rl  r   r   r   rw  rw    s0    "t4I!"45N.( 7(,3r   rw  c                       e Zd Zd Zd Zd Zd Zd Zd Zi fdZ	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestNumpySortc                 B    t         j                  j                  d       y rB   r   rE   rF   rT   s    r   setUpzTestNumpySort.setUp0  s    
		rr   c              #   `   K   dD ]%  }t         j                  j                  d|       ' y w)Nrc  c   re  )r   rE   randint)rT   rf  s     r   
int_arrayszTestNumpySort.int_arrays3  s/     $ 	3D))##BT#22	3s   ,.c              #     K   dD ]'  }t         j                  j                  |      dz   ) dD ]X  }t         j                  j                  |      dz  }t        d      |t         j                  j                  |      dk  <   | Z dD ]X  }t         j                  j                  |      dz  }t        d      |t         j                  j                  |      dk  <   | Z y w)Nrc  re  r   rg  rh  )rd  r   r   )r   rE   rj  )rT   rf  rr   s      r   float_arrayszTestNumpySort.float_arrays7  s     $ 	4D))"""-33	4 % 	D99###.4D6;ElD!!t!,s23J	
  	D99###.4D6;ElD!!t!,s23J	s   C(C*c                     t        j                  t        j                  |            dkD  ryt        j                  |      j                  |j                  k  ryy)zM
        Whether the array has duplicates.  Takes NaNs into account.
        rd   TF)r   count_nonzeror`  uniquerf  )rT   arrs     r   has_duplicateszTestNumpySort.has_duplicatesE  sB     BHHSM*Q.99S>)r   c                     t        j                   |      }t        j                   |      } ||        ||       | j                  ||       y r   copyr{  )rT   pyfunccfuncr"   expectedgots         r   check_sort_inplacez TestNumpySort.check_sort_inplaceO  s;    99S>iinxc
X.r   c                     t        j                   |      } ||      } ||      }| j                  ||       | j                  ||       y r   r  )rT   r  r  r"   rr   r  r  s          r   check_sort_copyzTestNumpySort.check_sort_copyV  sA    yy~#;CjX.T*r   c                    t        j                   |      } ||fi |} ||fi |}| j                  ||   t        j                  |      d       | j	                  |      s| j                  ||       | j                  ||       y )Nzthe array wasn't argsorted)msg)r  r{  r   r    r  )rT   r  r  r"   kwargsrr   r  r  s           r   check_argsortzTestNumpySort.check_argsort^  s    yy~#((C"6"S	2774=$@ 	  	B ""4(##C2T*r   c                     t         } t        d      |      }| j                         D ]  }| j                  |||        y NTnopython)r#   r   r  r  rT   r  r  rr   s       r   test_array_sort_intz!TestNumpySort.test_array_sort_intk  s@    "T"6*OO% 	9D##FE48	9r   c                     t         } t        d      |      }| j                         D ]  }| j                  |||        y r  )r#   r   r  r  r  s       r   test_array_sort_floatz#TestNumpySort.test_array_sort_floatr  sB    "T"6*%%' 	9D##FE48	9r   c           	      <   t         } t        d      |      }| j                         D ]l  }|d d  }t        j                  j                  |       t        j                  t        ||      D cg c]
  }t        |  c}      }| j                  |||       n y c c}w r  )
r#   r   r  r   rE   rS   r0  r|   complexr  )rT   r  r  realimagrx   rr   s          r   test_array_sort_complexz%TestNumpySort.test_array_sort_complexy  s    "T"6*%%' 	9D8DIId#88#dD/BQWa[BCD##FE48		9 Cs   -B
c                     t         } t        d      |      }| j                         D ]  }| j                  |||        y r  )r;   r   r  r  r  s       r   test_np_sort_intzTestNumpySort.test_np_sort_int  s@     "T"6*OO% 	6D  5	6r   c                    t         } t        d      |      }dD ]g  }t        j                  j                  |      dz  }t	        d      |t        j                  j                  |      dk  <   | j                  |||       i y NTr  rc  re  r   rg  rh  )r;   r   r   rE   rj  r  )rT   r  r  rf  rr   s        r   test_np_sort_floatz TestNumpySort.test_np_sort_float  sz     "T"6*$ 	6D99###.4D6;ElD!!t!,s23  5	6r   c           	          t         } t        d      |      }dD ]  }t        j                  j                  |      dz  }t        j                  j                  |      dz  }t	        d      |t        j                  j                  |      dk  <   t	        d      |t        j                  j                  |      dk  <   t        j
                  t        ||      D cg c]
  }t        |  c}      }| j                  |||        y c c}w r  )	r;   r   r   rE   rj  r0  r|   r  r  )rT   r  r  rf  r  r  rx   rr   s           r   test_np_sort_complexz"TestNumpySort.test_np_sort_complex  s     "T"6*$ 	6D99###.4D99###.4D6;ElD!!t!,s236;ElD!!t!,s2388#dD/BQWa[BCD  5	6
 Cs   D
c                 @      fd} |t                 |t               y )Nc                 z     t        d      |       }j                         D ]  }j                  | ||        y r  )r   r  r  r  r  rr   rT   s      r   r   z-TestNumpySort.test_argsort_int.<locals>.check  s<    &C&v.E) 8""65$78r   r'   r>   rT   r   s   ` r   test_argsort_intzTestNumpySort.test_argsort_int      	8
 	o !r   c                       fd} |t         d        |t        d        |t         d        |t        d       y )Nc           	           t        d      |       }j                         D ]   }j                  | ||t        |             " y NTr  r/   )r   r  r  dictr  r/   r  rr   rT   s       r   r   z2TestNumpySort.test_argsort_kind_int.<locals>.check  sF    &C&v.E) >""65$#')#<>>r   Tr  Fr0   r@   r  s   ` r   test_argsort_kind_intz#TestNumpySort.test_argsort_kind_int  6    	> 	"d3%6"e4%7r   c                 @      fd} |t                 |t               y )Nc                 z     t        d      |       }j                         D ]  }j                  | ||        y r  )r   r  r  r  s      r   r   z/TestNumpySort.test_argsort_float.<locals>.check  s>    &C&v.E))+ 8""65$78r   r  r  s   ` r   test_argsort_floatz TestNumpySort.test_argsort_float  r  r   c                       fd} |t         d        |t        d        |t         d        |t        d       y )Nc           	           t        d      |       }j                         D ]   }j                  | ||t        |             " y r  )r   r  r  r  r  s       r   r   z<TestNumpySort.test_argsort_float_supplemental.<locals>.check  sH    &C&v.E))+ >""65$#')#<>>r   Tr  Fr  r  s   ` r   test_argsort_float_supplementalz-TestNumpySort.test_argsort_float_supplemental  r  r   c                 @      fd} |t                 |t               y )Nc           	      2    t        d      |       }j                         D ]l  }|d d  }t        j                  j	                  |       t        j
                  t        ||      D cg c]
  }t        |  c}      }j                  | ||       n y c c}w r  )	r   r  r   rE   rS   r0  r|   r  r  )r  r  r  r  rx   rr   rT   s         r   r   z1TestNumpySort.test_argsort_complex.<locals>.check  s    &C&v.E))+ 8Bx		!!$'xxc$o F! FG""65$7	8 !Gs   (B
r  r  s   ` r   test_argsort_complexz"TestNumpySort.test_argsort_complex  s    	8 	o !r   c                       fd} |t         d        |t        d        |t         d        |t        d       y )Nc           	      H    t        d      |       }j                         D ]w  }|d d  }t        j                  j	                  |       t        j
                  t        ||      D cg c]
  }t        |  c}      }j                  | ||t        |             y y c c}w r  )
r   r  r   rE   rS   r0  r|   r  r  r  )r  r/   r  r  r  rx   rr   rT   s          r   r   z>TestNumpySort.test_argsort_complex_supplemental.<locals>.check  s    &C&v.E))+ >Bx		!!$'xxc$o F! FG""65$#')#<>	> !Gs   (B
Tr  Fr  r  s   ` r   !test_argsort_complex_supplementalz/TestNumpySort.test_argsort_complex_supplemental  s6    	> 	"d3%6"e4%7r   c                      t        d      t              }d}| j                  t        j                  |      5 } |d        d d d        y # 1 sw Y   y xY w)NTr  z#.*Argument "a" must be array-like.*)r   r;   assertRaisesRegexr   TypingError)rT   r  r  raisess       r   test_bad_arrayzTestNumpySort.test_bad_array  sL    "T"?33##F$6$6< 	$K	 	 	s   	AAN)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  .  sk    3/+ 8: +99966
6"
8"
8
"8r   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestPythonSortc                     t         } t        d      |      }dD ]:  } ||      \  }}| j                  t        |      |       | j	                  ||       < y )NTr  r   rd  r   )rL   r   rp   r3   assertNotEqual)rT   r  r  rf  rr   rets         r   test_list_sortzTestPythonSort.test_list_sort  sX    ""T"6*! 	+DdID#VD\3/c*	+r   c                     t         } t        d      |      }dD ]D  }dD ]=  } |||      \  }}| j                  t        ||      |       | j	                  ||       ? F y )NTr  r  FTr6   )rN   r   rp   r3   r  )rT   r  r  rf  r8   rr   r  s          r   test_list_sort_reversez%TestPythonSort.test_list_sort_reverse  sl    *"T"6*! 	/D" /!$N	c  a!8#>##D#./	/r   c                    t         } t        d      |      }dD ]e  }t        j                  j                  |      dz  }t	        |      } ||      }| j                  ||       | j                  t        |      |       g y )NTr  r  re  r   )r4   r   r   rE   r3   r{  r  rR   )rT   r  r  rf  rr   r  r  s          r   test_sortedzTestPythonSort.test_sorted   sy    "T"6*! 	1D99###.4Dd|H+C##C2T
C0	1r   c                    t         } t        d      |      }d}t        j                  j                  |      dz  }dD ]E  }t	        ||      } |||      }| j                  ||       | j                  t        |      |       G y )NTr  r   re  r   r  r6   )r9   r   r   rE   r3   r{  r  rR   )rT   r  r  rf  rr   r8   r  r  s           r   test_sorted_reversez"TestPythonSort.test_sorted_reverse  s    '"T"6*yyT*S0 	1AdA.Ha.C##C2T
C0		1r   N)r   r   r   r  r  r  r  r   r   r   r  r    s    +/	1
1r   r  c                       e Zd Zd Zd Zd Zy)TestMergeSortc                 B    t         j                  j                  d       y )NiA  r  r  s    r   r  zTestMergeSort.setUp  s    
		sr   c                     t         j                  j                  |||      }t        j                  |d      } ||      }t         j                  j                  ||       y )Nr*   r+   )r   rE   r  r&   testingassert_equal)rT   sorterlowhighcountdataexpectr  s           r   check_argsort_stablez"TestMergeSort.check_argsort_stable  sG    yy  dE2D{3Tl


,r   c                     g d}t        d      }|j                  t        fd      }|D ]  } | j                  |g|   y )N))r_   r   )r   r   )r   r   e   )r   r   i  T)
is_argsortc                      |       S r   r   )r  toplevels    r   ry   z3TestMergeSort.test_argsort_stable.<locals>.<lambda>,  s    (3- r   )r   run_mergesortr   r  )rT   arglistimpr  r:  r  s        @r   test_argsort_stablez!TestMergeSort.test_argsort_stable#  sP    
 !D1$$/0 	5D%D%%f4t4	5r   N)r   r   r   r  r  r  r   r   r   r  r    s    -5r   r  c                     | S r   r   rw   s    r   ry   ry   1  s     r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestSortSlashSortedWithKeyc                     g d}t         d        }t         dd       }| j                   ||d d        |j                  |d d               | j                   ||d d  |      |j                  |d d  |             y )N   rd      rd   r   	   c                     d| z  S Ng      ?r   zs    r   external_keyz8TestSortSlashSortedWithKey.test_01.<locals>.external_key:      6Mr   c                 T    | d d  }|j                  |       t        | d d  |      |fS Nrz   r    r3   rx   r{   new_xs      r   fooz/TestSortSlashSortedWithKey.test_01.<locals>.foo>  /    aDEJJ3J!A$C(%//r   r   r   r{  py_funcrT   r   r  r  s       r   test_01z"TestSortSlashSortedWithKey.test_016  s    		 
	 
	0 
	0
 	AaD	3;;qt+<=AaD, 7 #AaD, ?	Ar   c                 ~    g d}t         d        }| j                   ||d d        |j                  |d d               y )Nr  c                 Z    d }| d d  }|j                  |       t        | d d  |      |fS )Nc                     d| z  S r  r   r  s    r   closure_keyzDTestSortSlashSortedWithKey.test_02.<locals>.foo.<locals>.closure_keyN  s    Avr   rz   r  )rx   r   r  s      r   r  z/TestSortSlashSortedWithKey.test_02.<locals>.fooL  s4    aDEJJ;J'!A$K0%77r   r  )rT   r   r  s      r   test_02z"TestSortSlashSortedWithKey.test_02H  s@    		8 
	8 	AaD	3;;qt+<=r   c                     g d}d }| j                    |t              |d d          |t              |d d               y )Nr  c                 ,    | d        | fd       }|S )Nc                 T    | d d  }|j                  |       t        | d d  |      |fS r  r  )rx   r   r  s      r   barz<TestSortSlashSortedWithKey.test_03.<locals>.gen.<locals>.bar\  s/    !

t
$ad-u44r   c                     d } | |      S )Nc                     d| z  S r  r   r  s    r   closure_escapee_keyzYTestSortSlashSortedWithKey.test_03.<locals>.gen.<locals>.foo.<locals>.closure_escapee_keyd      6Mr   r   )rx   r(  r%  s     r   r  z<TestSortSlashSortedWithKey.test_03.<locals>.gen.<locals>.foob  s    "1122r   r   )compilerr  r%  s     @r   genz/TestSortSlashSortedWithKey.test_03.<locals>.genZ  s0    5 5
 3 3
 Jr   )r{  r   nop_compiler)rT   r   r+  s      r   test_03z"TestSortSlashSortedWithKey.test_03V  s=    	  		D	!A$1B\1B1Q41HIr   c                     g d}t         d        }t         dd       }| j                   ||d d        |j                  |d d               | j                   ||d d  |      |j                  |d d  |             y )Nr   r8   Br8   CAc                 "    | j                         S r   upperr  s    r   r  z8TestSortSlashSortedWithKey.test_04.<locals>.external_keyp      779r   c                 T    | d d  }|j                  |       t        | d d  |      |fS r  r  r  s      r   r  z/TestSortSlashSortedWithKey.test_04.<locals>.foot  r  r   r   r  r  s       r   test_04z"TestSortSlashSortedWithKey.test_04l  s    %		 
	 
	0 
	0
 	AaD	3;;qt+<=AaD, 7 #AaD, ?	Ar   c           	          g d}t         d        }t         dd       }t        j                  d |fd      D ]6  \  }}| j                   ||d d  ||      |j	                  |d d  ||             8 y )Nr/  c                 "    | j                         S r   r4  r  s    r   r  z8TestSortSlashSortedWithKey.test_05.<locals>.external_key  r6  r   c                 X    | d d  }|j                  ||       t        | d d  ||      |fS Nr{   r7   r  rx   r{   r7   r  s       r   r  z/TestSortSlashSortedWithKey.test_05.<locals>.foo  s3    aDEJJ3J01Q4S':EBBr   )TFrd   ir   NF)r   r   r   r{  r  )rT   r   r  r  r{   revs         r   test_05z"TestSortSlashSortedWithKey.test_05~  s    %		 
	 
	C 
	C
 "))4*>*BD 	AHC##C!c3$7$'KK!c3$?A	Ar   c                     g d}t         d        }| j                  t        j                        5 }d} ||d d  |       d d d        d}| j	                  |t        j                               y # 1 sw Y   1xY w)Nr  c                 d    |rd }nd }| d d  }|j                  |       t        | d d  |      |fS )Nc                     d| z  S r  r   r  s    r   r   zQTestSortSlashSortedWithKey.test_optional_on_key.<locals>.foo.<locals>.closure_key  r)  r   rz   r  )rx   	predicater   r  s       r   r  z<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   r  assertInstr	exception)rT   r   r  r  TFr  s         r   test_optional_on_keyz/TestSortSlashSortedWithKey.test_optional_on_key  sy    	
	: 

	: v112 	fB!bM	 Mc3v//01	 	s   A//A8c                     t         dd       }t         dd       }t         d        }g d}||fD ]  }| j                  t        j                        5 } ||d       d d d        d}| j	                  |t        j                               | j                  t        j                        5 } |||d	       d d d        d
}| j	                  |t        |j                                y # 1 sw Y   xY w# 1 sw Y   ?xY w)Nc                 $    t        | d d  ||      S r<  r2   )rx   r{   r7   s      r   
foo_sortedzETestSortSlashSortedWithKey.test_exceptions_sorted.<locals>.foo_sorted  s    !A$C99r   c                 6    | d d  }|j                  ||       |S r<  r   r>  s       r   foo_sortzCTestSortSlashSortedWithKey.test_exceptions_sorted.<locals>.foo_sort  s     aDEJJ3J0Lr   c                     d| z  S r  r   r  s    r   r  zGTestSortSlashSortedWithKey.test_exceptions_sorted.<locals>.external_key  r  r   r  illegalrz   z1Key must be None or a Numba JIT compiled functionzgo backwardsr=  z$an integer is required for 'reverse'r?  rF  )rT   rO  rQ  r  r   implr  r  s           r   test_exceptions_sortedz1TestSortSlashSortedWithKey.test_exceptions_sorted  s   		: 
	: 
	 
	
 
	 
	 z* 	9D ""6#5#56 '&QI&' IFMM&#f&6&6"78 ""6#5#56 B&QL.AB <FMM&#f&6&6"78	9' 'B Bs   C(*C4(C1	4C=	N)
r   r   r   r  r!  r-  r8  rA  rL  rU  r   r   r   r  r  4  s)    A$>J,A$A&2. 9r   r  c                       e Zd ZdZd Zy)TestArrayArgsortzTests specific to array.argsortc                    t         d        }| j                  t        j                        5 } |d       d d d        d}| j	                  |t        j                               t         d        }| j                  t        j                        5 } |        d d d        d}| j	                  |t        |j                               y # 1 sw Y   xY w# 1 sw Y   =xY w)Nc                 N    t        j                  d      j                  |        y )Nr   r+   r   aranger&   r+   s    r   nonliteral_kindz9TestArrayArgsort.test_exceptions.<locals>.nonliteral_kind  s    IIaL  d +r   r-   z"kind" must be a string literalc                  N    t        j                  d      j                  d       y )Nr    )r  rZ  r   r   r   unsupported_kwargz;TestArrayArgsort.test_exceptions.<locals>.unsupported_kwarg  s    IIaL  R (r   zUnsupported keywords: ['foo']rF  )rT   r\  r  r  r_  s        r   test_exceptionsz TestArrayArgsort.test_exceptions  s    		, 
	, v112 	)fK(	) 3fc&"2"234		) 
	) v112 	 f	  1fc&"2"234	) 	)	  	 s   	CCCCN)r   r   r   __doc__r`  r   r   r   rW  rW    s
    )5r   rW  __main__)F)?r  r   rf   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   r)  r5  jit_list_timsortr?  ro  ru  r#   r'   r0   r4   r9   r;   r>   r@   rL   rN   objectrP   r   r(  r+  r7  rA  rE  rn  rr  rw  r  r  r  r,  r  rW  r   mainr   r   r   <module>rn     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HMMO r   