ó
\K]c           @` sî   d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l	 m
 Z
 d  d l m Z d d l m Z m Z m Z e ƒ  Z e j d ƒ d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d e e f d „  ƒ  YZ d S(   i    (   t   print_functiont   absolute_importt   divisionN(   t   jit(   t   Flagsi   (   t   TestCaset   CompilationCachet   MemoryLeakMixint   nrtc         C` s   t  j |  ƒ S(   N(   t   hqt   heapify(   t   x(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyR
      s    c         C` s   t  j |  ƒ S(   N(   R	   t   heappop(   t   heap(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyR      s    c         C` s   t  j |  | ƒ S(   N(   R	   t   heappush(   R   t   item(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyR      s    c         C` s   t  j |  | ƒ S(   N(   R	   t   heappushpop(   R   R   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyR      s    c         C` s   t  j |  | ƒ S(   N(   R	   t   heapreplace(   R   R   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyR       s    c         C` s   t  j |  | ƒ S(   N(   R	   t	   nsmallest(   t   nt   iterable(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyR   $   s    c         C` s   t  j |  | ƒ S(   N(   R	   t   nlargest(   R   R   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyR   (   s    t	   TestHeapqc           B` sò   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 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` s8   t  t |  ƒ j ƒ  t ƒ  |  _ t j j d ƒ |  _ d  S(   Ni*   (	   t   superR   t   setUpR   t   ccachet   npt   randomt   RandomStatet   rnd(   t   self(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyR   .   s    c      
   C` ss  t  } t d t ƒ | ƒ } d d d d d d d d	 d
 d g
 } | } | | ƒ | | ƒ |  j | | ƒ d d d t j t j t j g } xQ t j | d	 ƒ D]= } t	 | ƒ } | } | | ƒ | | ƒ |  j | | ƒ qŸ WxR t
 t | ƒ ƒ D]> } | | g } | } | | ƒ | | ƒ |  j | | ƒ qó Wd d d g } | } | | ƒ | | ƒ |  j | | ƒ d  S(   Nt   nopythoni   i   i   i   i	   i   i   i   i   i    g‰A`åÐ"	@g      $Àg      @i!   i   i   (   i   i!   (   i   i   (   i   i   (   R
   R   t   Truet   assertPreciseEqualR   t   nant   inft	   itertoolst   combinations_with_replacementt   listt   ranget   len(   R   t   pyfunct   cfunct   at   bt   element_poolR   t   i(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heapify_basic_sanity3   s2    $

"





c         C` sO   xH t  | ƒ D]: \ } } | r | d d ?} |  j | | | k ƒ q q Wd  S(   Ni   (   t	   enumeratet
   assertTrue(   R   R   t   posR   t	   parentpos(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   check_invariantZ   s    c         C` s  t  } t d t ƒ | ƒ } t } t d t ƒ | ƒ } d g } d g } |  j | ƒ xV t d ƒ D]H } |  j j d ƒ j d ƒ } | j	 | ƒ | | | ƒ |  j | ƒ qb Wg  }	 x0 | ræ | | ƒ } |  j | ƒ |	 j	 | ƒ q· W| }
 |
 j
 ƒ  |  j |
 |	 ƒ |  j |	 ƒ d  S(   NR   g      ð¿i   i   i    (   R   R   R    R   R4   R'   R   t   randnR   t   appendt   sortR!   (   R   t   pyfunc_heappusht   cfunc_heappusht   pyfunc_heappopt   cfunc_heappopR   t   dataR.   R   t   resultst   data_sorted(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_push_pop`   s*    			
c         C` su   t  } t d t ƒ | ƒ } xS t t d d ƒ ƒ d g D]5 } |  j j | ƒ j ƒ  } | | ƒ |  j | ƒ q8 Wd  S(   NR   i   i   i N  (	   R
   R   R    R&   R'   R   t   random_samplet   tolistR4   (   R   R)   R*   t   sizeR   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heapify{   s    #
c      	   C` s«   t  } t d t ƒ | ƒ } |  j ƒ  |  j ƒ   } | d
 ƒ Wd  QXd } |  j | t | j ƒ ƒ |  j ƒ   } | d d g ƒ Wd  QXd	 } |  j | t | j ƒ ƒ d  S(   NR   i   i   i   s   heap argument must be a listy              ð?i   y              @s>   '<' not supported between instances of 'complex' and 'complex'(   i   i   i   y      ð?      ð?y       @      À(   R
   R   R    t   disable_leak_checkt   assertTypingErrort   assertInt   strt	   exception(   R   R)   R*   t   et   msg(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heapify_exceptions†   s    
c   	      C` s¢   t  } t d t ƒ | ƒ } d „  } xw | ƒ  D]l } t | ƒ | } xR t t | ƒ ƒ D]> } | | ƒ } | | ƒ } |  j | | ƒ |  j | | ƒ qX Wq. Wd  S(   NR   c        
   s` sl   d d d d d d d d d	 d
 g
 Vd d d g Vt  j d d t  j ƒj ƒ  Vt  j d d d ƒ j ƒ  Vd  S(   Ni   i   i   i   i	   i   i   i   i   i    i!   io   i®  t
   fill_valueiöÿÿÿiûÿÿÿid   (   i   i!   (   i   io   (   i   i®  (   R   t   fullR"   RA   t   linspace(    (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   a_variationsž   s    #(   R   R   R    R
   R'   R(   R!   (	   R   R)   R*   RO   R+   R,   R.   t   val_pyt   val_c(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heappop_basic_sanityš   s    	
c         C` sg   t  } t d t ƒ | ƒ } |  j ƒ  |  j ƒ   } | d ƒ Wd  QXd } |  j | t | j ƒ ƒ d  S(   NR   i   i   i   s   heap argument must be a list(   i   i   i   (   R   R   R    RD   RE   RF   RG   RH   (   R   R)   R*   RI   RJ   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heappop_exceptions®   s    
c      
   c` sz   d d d d d d d d d	 d
 g
 Vt  j d d d ƒ } | j ƒ  V| d  d  d … j ƒ  V|  j j | ƒ | j ƒ  Vd  S(   Ni   i   i   i   i	   i   i   i   i   i    iöÿÿÿi   iÿÿÿÿ(   R   RN   RA   R   t   shuffle(   R   R+   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt	   iterables»   s    #c         C` sÈ   t  } t d t ƒ | ƒ } t } t d t ƒ | ƒ } x‹ |  j ƒ  D]} } t | ƒ } | j d ƒ g } x | D] } | | | ƒ qn Wg  t t | ƒ ƒ D] }	 | | ƒ ^ q˜ }
 |  j	 | |
 ƒ qC Wd  S(   NR   i    (
   R   R   R    R   RU   t   sortedt   popR'   R(   R!   (   R   t   pyfunc_pusht
   cfunc_pusht
   pyfunc_popt	   cfunc_popR   t   expectedR   t   valuet   _t   got(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heappush_basicÃ   s    +c      	   C` s´   t  } t d t ƒ | ƒ } |  j ƒ  |  j ƒ   } | d	 d ƒ Wd  QXd } |  j | t | j ƒ ƒ |  j ƒ   } | d d d g d ƒ Wd  QXd } |  j | t | j ƒ ƒ d  S(
   NR   i   i   i   i   s   heap argument must be a listg      @s'   heap type must be the same as item type(   i   i   i   (   R   R   R    RD   RE   RF   RG   RH   (   R   R)   R*   RI   RJ   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heappush_exceptionsÔ   s    
c         C` s1  t  } t d t ƒ | ƒ } xf |  j ƒ  D]X } xO t d t | ƒ d ƒ D]4 } | d | ƒ } | d | ƒ } |  j | | ƒ qH Wq( W| t d d d g ƒ } |  j | g  ƒ | t d d d g ƒ } |  j | d g ƒ | d d
 ƒ } |  j | d d g ƒ | d t j	 d ƒ ƒ } |  j | d	 d d g ƒ d  S(   NR   iûÿÿÿi   i   i   i   i   i   i    (   i   i   i   i   i   i   (
   R   R   R    RU   R'   R(   R!   t   FalseR   t   arange(   R   R)   R*   R   R   R\   R_   t   out(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_nsmallest_basicç   s     c         C` s1  t  } t d t ƒ | ƒ } xf |  j ƒ  D]X } xO t d t | ƒ d ƒ D]4 } | d | ƒ } | d | ƒ } |  j | | ƒ qH Wq( W| t d d d g ƒ } |  j | g  ƒ | t d d d g ƒ } |  j | d g ƒ | d d	 ƒ } |  j | d d g ƒ | d t j	 d ƒ ƒ } |  j | d d d g ƒ d  S(
   NR   iûÿÿÿi   i   i   i   i   i   (   i   i   i   i   i   i   (
   R   R   R    RU   R'   R(   R!   Rb   R   Rc   (   R   R)   R*   R   R   R\   R_   Rd   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_nlargest_basicÿ   s     c      	   C` s™   |  j  ƒ  |  j ƒ   } | d d d d g ƒ Wd  QXd } |  j | t | j ƒ ƒ |  j ƒ   } | d d ƒ Wd  QXd } |  j | t | j ƒ ƒ d  S(   Ngš™™™™™@i   i   i   s%   First argument 'n' must be an integerid   s+   Second argument 'iterable' must be iterable(   RD   RE   RF   RG   RH   (   R   R*   RI   RJ   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   _assert_typing_error  s    
c         C` s,   t  } t d t ƒ | ƒ } |  j | ƒ d  S(   NR   (   R   R   R    Rg   (   R   R)   R*   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_nsmallest_exceptions(  s    c         C` s,   t  } t d t ƒ | ƒ } |  j | ƒ d  S(   NR   (   R   R   R    Rg   (   R   R)   R*   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_nlargest_exceptions-  s    c      
   C` s2  t  } t d t ƒ | ƒ } d d d d d d d d	 d
 d g
 } t | ƒ | } xA d d d g D]0 } | | | ƒ | | | ƒ |  j | | ƒ q` Wt j d d d ƒ } t j | d <t j | d <| j	 ƒ  } t | ƒ | } xK d d t j t j g D]0 } | | | ƒ | | | ƒ |  j | | ƒ qú Wd  S(   NR   i   i   i   i   i	   i   i   i   i   i    iüÿÿÿi   iýÿÿÿi   i   iÿÿÿÿg      Àg‰A`åÐ"	@(
   R   R   R    R
   R!   R   RN   R"   R#   RA   (   R   R)   R*   R+   R,   R   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heapreplace_basic2  s&    $

 c      	   C` s´   t  } t d t ƒ | ƒ } |  j ƒ  |  j ƒ   } | d	 d ƒ Wd  QXd } |  j | t | j ƒ ƒ |  j ƒ   } | d d d g d ƒ Wd  QXd } |  j | t | j ƒ ƒ d  S(
   NR   i   i   i   iÿÿÿÿs   heap argument must be a listg      ð¿s'   heap type must be the same as item type(   i   i   i   (   R   R   R    RD   RE   RF   RG   RH   (   R   R)   R*   RI   RJ   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heapreplace_exceptionsM  s    
c         c` s.   y x t  | ƒ Vq WWn t k
 r) n Xd  S(   N(   R   t
   IndexError(   R   R   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   heapiter`  s
    c         C` sÁ   t  d t ƒ t ƒ } t  d t ƒ t ƒ } |  j j t d ƒ d ƒ j ƒ  } | d  } | | ƒ x2 | d D]& } | | d k rj | | | ƒ qj qj W|  j t	 |  j
 | ƒ ƒ t | ƒ d ƒ d  S(   NR   iÐ  iè  i
   i    iöÿÿÿ(   R   R    R
   R   R   t   choiceR'   RA   R!   R&   Rm   RV   (   R   t   cfunc_heapifyt   cfunc_heapreplaceR<   R   R   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt
   test_nbestg  s    !

c   
      C` s  t  d t ƒ t ƒ } t  d t ƒ t ƒ } t  d t ƒ t ƒ } x½ t d ƒ D]¯ } |  j j t d ƒ d ƒ j ƒ  } | d @r‘ | } | | ƒ n/ | d g } x | d D] } | | | ƒ q© Wg  t d ƒ D] } | | ƒ ^ qÍ }	 |  j	 |	 t
 | ƒ ƒ qL Wd  S(   NR   id   i   i
   i   i    (   R   R    R
   R   R   R'   R   Rn   RA   R!   RV   (
   R   Ro   R9   R;   t   trialR<   R   R   R^   t   heap_sorted(    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heapsortw  s    !
%c      	   C` sz   t  } t d t ƒ | ƒ } |  j j t d ƒ d ƒ j ƒ  } x7 d D]/ } |  j t | | | ƒ ƒ t	 | ƒ |  ƒ qC Wd  S(   NR   iÐ  iè  i    i   i   i
   id   i  iç  iL  (	   i    i   i   i
   id   i  iç  iè  iL  (
   R   R   R    R   Rn   R'   RA   R!   R&   RV   (   R   R)   R*   R<   R   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_nsmallestŠ  s
    !c      	   C` s€   t  } t d t ƒ | ƒ } |  j j t d ƒ d ƒ j ƒ  } x= d D]5 } |  j t | | | ƒ ƒ t	 | d t ƒ|  ƒ qC Wd  S(   NR   iÐ  iè  i    i   i   i
   id   i  iç  iL  t   reverse(	   i    i   i   i
   id   i  iç  iè  iL  (
   R   R   R    R   Rn   R'   RA   R!   R&   RV   (   R   R)   R*   R<   R   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_nlargest•  s    !c         C` sº   t  } t d t ƒ | ƒ } t } t d t ƒ | ƒ } |  j j t d ƒ d ƒ j ƒ  } | d  } | | ƒ x | d D] } | | | ƒ qv W|  j t	 |  j
 | ƒ ƒ t | ƒ d ƒ d  S(   NR   iÐ  iè  i
   iöÿÿÿ(   R   R   R    R
   R   Rn   R'   RA   R!   R&   Rm   RV   (   R   t   pyfunc_heappushpopt   cfunc_heappushpopt   pyfunc_heapifyRo   R<   R   R   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_nbest_with_pushpop¡  s    !

c         C` sô   t  } t d t ƒ | ƒ } d g } | | d ƒ } |  j | | f d g d f ƒ |  j t | d ƒ t ƒ |  j t | ƒ t ƒ d g } | | d ƒ } |  j | | f d g d f ƒ d g } | | d ƒ } |  j | | f d g d f ƒ d  S(   NR   g      ð?g      $@i    i
   i	   i   (   R   R   R    R!   t   typet   float(   R   R)   R*   t   hR   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heappushpop³  s    			c      	   C` s´   t  } t d t ƒ | ƒ } |  j ƒ  |  j ƒ   } | d d ƒ Wd  QXd } |  j | t | j ƒ ƒ |  j ƒ   } | d d d g t ƒ Wd  QXd } |  j | t | j ƒ ƒ d  S(	   NR   i   i   i   iÿÿÿÿs   heap argument must be a lists'   heap type must be the same as item type(   i   i   i   (	   R   R   R    RD   RE   RF   RG   RH   Rb   (   R   R)   R*   RI   RJ   (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   test_heappushpop_exceptionsÇ  s    
(   t   __name__t
   __module__R   R/   R4   R?   RC   RK   RR   RS   RU   R`   Ra   Re   Rf   Rg   Rh   Ri   Rj   Rk   Rm   Rq   Rt   Ru   Rw   R{   R   R€   (    (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyR   ,   s4   		'																							(   t
   __future__R    R   R   t   heapqR	   R$   t   numpyR   t   numbaR   t   numba.compilerR   t   supportR   R   R   t   no_pyobj_flagst   setR
   R   R   R   R   R   R   R   (    (    (    s5   lib/python2.7/site-packages/numba/tests/test_heapq.pyt   <module>   s    								