ó
\K]c           @` sï   d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z m	 Z	 d  d l m
 Z d d l m Z m Z d d l Td d	 Z d d
 Z e d ƒ Z e d ƒ Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d k rë e j ƒ  n  d S(   i    (   t   print_functiont   absolute_importt   divisionN(   t   jitt   utils(   t   unittest_supporti   (   t   TestCaset   forbid_codegen(   t   *i   iÌÿÿÿiéÿÿÿt   inft   nant   TestAssertPreciseEqualc           B` s%  e  Z d  Z e g Z e j d k  r4 e j e ƒ n  e	 j
 e	 j g Z e g e Z e	 j e	 j g Z e g e Z e e	 j g 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(   s2   
    Tests for TestCase.assertPreciseEqual().
    i   c         ` sU   ‡  ‡ f d †  } | | | ƒ | | | f | | f ƒ | | | g | | g ƒ d  S(   Nc         ` s*   ˆ j  |  | ˆ   ˆ j  | |  ˆ   d  S(   N(   t   assertPreciseEqual(   t   leftt   right(   t   kwargst   self(    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   assert_succeed"   s    (    (   R   R   R   R   R   (    (   R   R   s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   eq!   s    c         ` s”   ‡  ‡ f d †  } | | | ƒ | | | ƒ | | | f | | f ƒ | | | f | | f ƒ | | | g | | g ƒ | | | g | | g ƒ d  S(   Nc         ` sF   y ˆ j  |  | ˆ   Wn t k
 r* n Xˆ j d |  | f ƒ d  S(   Ns'   %s and %s unexpectedly considered equal(   R   t   AssertionErrort   fail(   R   R   (   R   R   (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   assert_fail*   s
    (    (   R   R   R   R   R   (    (   R   R   s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   ne)   s    c         C` sô  xƒ t  j |  j |  j |  j ƒ D]c \ } } } |  j | d ƒ | d ƒ ƒ |  j | d ƒ | d ƒ ƒ |  j | d ƒ | d ƒ ƒ q WxB t  j |  j |  j ƒ D]( \ } } |  j | d ƒ | d ƒ ƒ qŸ WxB t  j |  j |  j ƒ D]( \ } } |  j | d ƒ | d ƒ ƒ qä Wxm t  j |  j |  j ƒ D]S \ } } | | k r`|  j | d ƒ | d ƒ ƒ q)|  j | d ƒ | d ƒ ƒ q)Wxm t  j |  j	 |  j	 ƒ D]S \ } } | | k rÐ|  j | d ƒ | d ƒ ƒ q™|  j | d ƒ | d ƒ ƒ q™Wd  S(   Ni   (
   t	   itertoolst   productt	   int_typest   float_typest   complex_typesR   R   t
   bool_typest   np_float_typest   np_complex_types(   R   t   it   ft   ct   ut   v(    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt
   test_types8   s"     % % % %c         C` s¾   x· |  j  D]¬ } x£ d d d g D]’ } |  j | d ƒ | d ƒ d | ƒ|  j | d ƒ | d ƒ d | ƒ|  j | d ƒ | d ƒ d | ƒ|  j | d
 ƒ | d d ƒ d | ƒq  Wq
 Wd  S(   Nt   exactt   singlet   doublei    t   preci   iÿÿÿÿi   iP   l               l               (   R   R   R   (   R   t   tpR(   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_int_valuesS   s    """c         C` s   xz t  j |  j |  j ƒ D]` \ } } |  j | t ƒ | t ƒ ƒ |  j | t ƒ | t ƒ ƒ |  j | t ƒ | t ƒ ƒ q Wd  S(   N(   R   R   R   R   t   Truet   FalseR   (   R   t   tpat   tpb(    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_bool_values[   s    %c         C` s†   |  j  t ƒ - |  j t j d ƒ t j d ƒ d d ƒWd  QX|  j  t ƒ 3 |  j t j d ƒ t j d ƒ d t d ƒ ƒWd  QXd  S(   Ng—ÔFFõg<t   abs_tolt   invalidi   i   i   (   t   assertRaisest
   ValueErrorR   t   npt   float64t   int(   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_abs_tol_parsea   s    .c      	   C` sö  xï|  j  D]ä} xÛd d d g D]Ê} |  j | d ƒ | d ƒ d | ƒ|  j | d ƒ | d ƒ d | ƒ|  j | d ƒ | d ƒ d | ƒ|  j | d ƒ | d ƒ d | ƒ|  j | d ƒ | d ƒ d | d t ƒ|  j | t ƒ | t ƒ d | ƒ|  j | t ƒ | d	 ƒ d | ƒ|  j | t ƒ | t ƒ d | ƒ|  j | t ƒ | t ƒ d | ƒ|  j | t ƒ | t ƒ d | ƒ|  j | t ƒ | d
 ƒ d | ƒ|  j | t ƒ | t ƒ d | ƒ|  j | t ƒ | t ƒ d | ƒq  Wq
 Wd  S(   NR%   R&   R'   g      ø?R(   g        g       €t   ignore_sign_on_zerog±¡*ÓÎÒGi    (   R   R   R   R+   t   INFt   NAN(   R   R)   R(   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_float_valuesh   s    """"(""$#"""c         C` s>   x7 t  t j g D]& } |  j | d t ƒ | d ƒ ƒ q Wd  S(   Ng      ð?(   t   floatR4   R5   R   t   DBL_EPSILON(   R   R)   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_float64_values|   s    c         C` s-   t  j } |  j | d t ƒ | d ƒ ƒ d  S(   Ng      ð?(   R4   t   float32R   t   FLT_EPSILON(   R   R)   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_float32_values€   s    	c      	   C` sa  xZt  t j g D]I} x d d d d g D]Œ} | d } | d t } | d t d } | d t d } |  j | | ƒ | | ƒ ƒ |  j | | ƒ | | ƒ d d ƒ|  j | | ƒ | | ƒ d d	 ƒ|  j | | ƒ | | ƒ d d	 d
 d ƒ|  j | | ƒ | | ƒ d d	 ƒ|  j | | ƒ | | ƒ d d	 d
 d ƒ|  j | | ƒ | | ƒ d d	 d
 d ƒ|  j | | ƒ | | ƒ d d	 d
 d ƒ|  j | | ƒ | | ƒ d d	 d
 d ƒq) W|  j | d ƒ | d ƒ d d	 d d ƒ|  j | d ƒ | d ƒ d d	 d d ƒ|  j | d ƒ | d ƒ d d	 d d ƒ|  j | d ƒ | d ƒ d d	 d d ƒq Wd  S(   Ng      ð?i   i   iüÿÿÿiìÿÿÿi   R(   R%   R'   t   ulpsi   g¼‰Ø—²Òœ<gMgâñžµ<R0   t   epsg¼‰Ø—²Ò¼<g—ÔFFõg<g¬CÒÑ]r2<gqµô7K<i   iøÿÿÿg      °?g      °>g      °¾(   R<   R4   R5   R=   R   R   (   R   R)   t   scalet   at   bR!   t   d(    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_float64_values_inexact„   s&    
""("(((,(((c         C` sJ  t  j } xšd d d d g D]†} | d } | d t } | d t d } | d t d } |  j | | ƒ | | ƒ ƒ |  j | | ƒ | | ƒ d d ƒ|  j | | ƒ | | ƒ d d	 ƒ|  j | | ƒ | | ƒ d d
 ƒ|  j | | ƒ | | ƒ d d
 ƒ|  j | | ƒ | | ƒ d d
 d d ƒ|  j | | ƒ | | ƒ d d
 d d ƒ|  j | | ƒ | | ƒ d d
 d d ƒ|  j | | ƒ | | ƒ d d
 d d ƒq W|  j | d ƒ | d ƒ d d
 d d ƒ|  j | d ƒ | d ƒ d d
 d d ƒ|  j | d ƒ | d ƒ d d
 d d ƒ|  j | d ƒ | d ƒ d d
 d d ƒd  S(   Ng      ð?i   i   iüÿÿÿiìÿÿÿi   R(   R%   R'   R&   RB   gH¯¼šò×z>gH¯¼šò×Š>R0   RC   gvƒôõ!”>g:Œ0âŽyE>i   iøÿÿÿg      °?g      °>g      °¾(   R4   R?   R@   R   R   (   R   R)   RD   RE   RF   R!   RG   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_float32_values_inexact›   s&    	
""""(((,(((c         C` sþ  t  d d ƒ t  d d ƒ t  d d ƒ t  d d ƒ g \ } } } } xµ|  j D]ª} xmd d d g D]\} |  j | d ƒ | d ƒ d | ƒ|  j | d ƒ | d ƒ d | ƒ|  j | d ƒ | d ƒ d | ƒ|  j | | ƒ | | ƒ d | ƒ|  j | | ƒ | | ƒ d | ƒ|  j | | ƒ | | ƒ d | ƒ|  j | | ƒ | | ƒ d | ƒ|  j | | ƒ | | ƒ d | ƒ|  j | t  t t ƒ ƒ | t  t t ƒ ƒ d | ƒ|  j | t  t t ƒ ƒ | t  t t ƒ ƒ d | ƒ|  j | t  t t ƒ ƒ | t  t t ƒ ƒ d | ƒ|  j | t  t t ƒ ƒ | t  t t ƒ ƒ d | ƒ|  j | t  t t ƒ ƒ | t  t t ƒ ƒ d | ƒ|  j | t  t d ƒ ƒ | t  t d ƒ ƒ d | ƒ|  j | t  t d ƒ ƒ | t  t d ƒ ƒ d | ƒ|  j | t  d t ƒ ƒ | t  d t ƒ ƒ d | ƒ|  j | t  t t ƒ ƒ | t  t t ƒ ƒ d | ƒ|  j | t  t t ƒ ƒ | t  t t ƒ ƒ d | ƒ|  j | t  t t ƒ ƒ | t  t t ƒ ƒ d | ƒqb W|  j | t  t d ƒ ƒ | t  t d ƒ ƒ d d ƒqL Wd  S(   Ng        g       €R%   R&   R'   i   y               @R(   y              ð?i   i    y      ð?       @y      ð?       @y      ð?      ð?y      ð?       @y       @       @y      ð?       @(   t   complexR   R   R   R9   R:   (   R   t   c_ppt   c_pnt   c_npt   c_nnR)   R(   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_complex_values´   s0    *""""""""4685544444:c      	   C` s.  x't  t j g D]} xd d d d g D]ù} | d } | d t } | d t d } | t  | | ƒ ƒ } | t  | | ƒ ƒ } | t  | | ƒ ƒ } |  j | | ƒ | | ƒ ƒ |  j | | ƒ | | ƒ d d ƒ|  j | | ƒ | | ƒ d d ƒ|  j | | ƒ | | ƒ d d ƒ| t  | | ƒ ƒ }	 | t  | | ƒ ƒ }
 |  j | | ƒ | |	 ƒ d d ƒ|  j | |	 ƒ | |
 ƒ d d ƒ|  j | | ƒ | |	 ƒ d d d d ƒ|  j | |	 ƒ | |
 ƒ d d d d ƒ|  j | | ƒ | |
 ƒ d d d d ƒ|  j | | ƒ | |
 ƒ d d	 ƒq) Wq Wd  S(   Ng      ð?i   i   iüÿÿÿiìÿÿÿR(   R'   RB   R&   i   iøÿÿÿg      °?g      °>g      °¾(   RJ   R4   t
   complex128R=   R   R   (   R   R)   RD   RE   RF   R!   t   aat   abt   bbt   act   cc(    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_complex128_values_inexactÚ   s(    
"""""(((c         C` s  t  j } xd d d d g D]ù} | d } | d t } | d t d } | t | | ƒ ƒ } | t | | ƒ ƒ } | t | | ƒ ƒ } |  j | | ƒ | | ƒ ƒ |  j | | ƒ | | ƒ d d ƒ|  j | | ƒ | | ƒ d d ƒ|  j | | ƒ | | ƒ d d ƒ|  j | | ƒ | | ƒ d d ƒ| t | | ƒ ƒ }	 | t | | ƒ ƒ }
 |  j | | ƒ | |	 ƒ d d ƒ|  j | |	 ƒ | |
 ƒ d d ƒ|  j | | ƒ | |	 ƒ d d d	 d ƒ|  j | |	 ƒ | |
 ƒ d d d	 d ƒ|  j | | ƒ | |
 ƒ d d d	 d ƒq Wd  S(   Ng      ð?i   i   iüÿÿÿiìÿÿÿR(   R'   R&   RB   i   iøÿÿÿg      °?g      °>g      °¾(   R4   t	   complex64R@   RJ   R   R   (   R   R)   RD   RE   RF   R!   RQ   RR   RS   RT   RU   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_complex64_values_inexactð   s(    	
""""""((c         C` s¡   t  j t  j t  j t j t j t j t	 j
 t	 j g } x1 | D]) } |  j | | ƒ |  j | | j ƒ q= Wx0 t j | d ƒ D] \ } } |  j | | ƒ q} Wd  S(   Ni   (   t   Colort   redt   greent   bluet   Shaket   mintt   Shapet   circlet   squaret   Planett   EARTHt   MERCURYR   R   t   valueR   t   combinations(   R   t   valuest   valRE   RF   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt
   test_enums  s    c         C` s`  t  j d d d t  j ƒj d
 ƒ } | j ƒ  } |  j | | ƒ |  j | | d ƒ |  j | | d  ƒ |  j | | j ƒ |  j | | j t  j	 ƒ ƒ |  j | | j j ƒ  j ƒ |  j | | j
 ƒ  ƒ t | j _ |  j | | ƒ t  j d d d t  j ƒ} | d t } | d t d } |  j | | ƒ |  j | | d d	 ƒ|  j | | d d	 ƒd  S(   Ni   i   t   dtypei   i   iÿÿÿÿg      ð?R(   R'   (   i   i   (   R4   t   aranget   int16t   reshapet   copyR   R   t   Tt   astypet   int32t   flattenR,   t   flagst	   writeableR5   R=   (   R   RE   RF   R!   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_arrays  s"    $c         C` s|   t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } |  j | | ƒ |  j | | ƒ |  j | | ƒ d  S(   Nt   1900t   Ys
   1900-01-01t   Dt   1901(   R4   t
   datetime64R   R   (   R   RE   RF   R!   RG   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_npdatetime(  s    c         C` s|   t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } |  j | | ƒ |  j | | ƒ |  j | | ƒ d  S(   Ni   t   hi<   t   mi   (   R4   t   timedelta64R   R   (   R   RE   RF   R!   RG   (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_nptimedelta3  s    (   i   ()   t   __name__t
   __module__t   __doc__R6   R   R   t	   PYVERSIONt   appendt   longR4   R?   R5   R   R<   R   RW   RP   R   RJ   R   t   boolt   bool_R   R   R   R$   R*   R/   R7   R;   R>   RA   RH   RI   RO   RV   RX   Ri   Ru   R{   R   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyR      s6   													&						t   TestMiscc           B` s   e  Z d  „  Z d „  Z RS(   c         C` s†   d } d } g  } |  j  | | ƒ  Wd  QX|  j t ƒ - } |  j  | | ƒ  | j | ƒ Wd  QXWd  QX|  j d t | j ƒ ƒ d  S(   Ng     €K@g     €P@t   66(   t   assertRefCountR2   R   R„   t   assertInt   strt	   exception(   R   t   xt   yt   lt   cm(    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_assertRefCountA  s    c         C` sj   d „  } t  ƒ  9 |  j t ƒ # } t d t ƒ | ƒ } | ƒ  Wd QXWd QX|  j d t | j ƒ ƒ d S(   sg   
        Test that forbid_codegen() prevents code generation using the @jit
        decorator.
        c           S` s   d S(   Ni   (    (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyR    S  s    t   nopythonNs   codegen forbidden by test case(   R   R2   t   RuntimeErrorR   R+   R‹   RŒ   R   (   R   R    t   raisest   cfunc(    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   test_forbid_codegenN  s    	
(   R€   R   R’   R—   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyRˆ   ?  s   	t   __main__(   t
   __future__R    R   R   R   t   numpyR4   t   numbaR   R   R   t   unittestt   supportR   R   t   enum_usecasesR=   R@   R<   R9   R:   R   Rˆ   R€   t   main(    (    (    s7   lib/python2.7/site-packages/numba/tests/test_support.pyt   <module>   s   


ÿ -