ó
Û³Y]c           @@ sø   d  d l  m Z m Z d  d l Z d  d l Z d  d l j Z d  d l	 m
 Z
 m Z d  d l m Z m Z m Z d  d l m Z d d l m Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d e f d „  ƒ  YZ e d k rô e j ƒ  n  d S(   i    (   t   print_functiont   absolute_importN(   t   compile_isolatedt   Flags(   t   typest   typeoft   njit(   t   loweringi   (   t   TestCasec         C@ s   |  r d  } n d } | S(   Ng333333ó?(   t   None(   t   xt   ret(    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   return_double_or_none   s    	c         C@ s   |  r
 d  Sd Sd  S(   Ng333333ó?(   R	   (   R
   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   return_different_statement   s    c         C@ s=   | r t  } n d  } |  d k r% t S|  d k r5 | Sd  Sd  S(   Ni   i   (   t   FalseR	   t   True(   R
   t   yt   z(    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   return_bool_optional_or_none   s    	c         C@ sA   |  r d  } n |  } | d  k r) |  d S| d  k	 r= |  d Sd  S(   Ni   (   R	   (   R
   t   val_or_none(    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   is_this_a_none-   s    	c         C@ s
   |  | k S(   s¼   
    Note in nopython mode, this operation does not make much sense.
    Because we don't have objects anymore.
    `a is b` is always False if not operating on None and Optional type
    (    (   t   at   b(    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   a_is_b:   s    c         C@ s
   |  | k	 S(   s    
    This is `not (a is b)`
    (    (   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt
   a_is_not_bC   s    t   TestOptionalc           B@ sŒ   e  Z 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 RS(   c         C@ s[   t  } t | t j g ƒ } | j } x0 t t g D]" } |  j | | ƒ | | ƒ ƒ q1 Wd  S(   N(   R   R   R   t   booleant   entry_pointR   R   t   assertPreciseEqual(   t   selft   pyfunct   crest   cfunct   v(    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_return_double_or_noneN   s
    	c         C@ s[   t  } t | t j g ƒ } | j } x0 t t g D]" } |  j | | ƒ | | ƒ ƒ q1 Wd  S(   N(   R   R   R   R   R   R   R   R   (   R   R   R   R    R!   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_return_different_statementV   s
    	c         C@ ss   t  } t | t j t j g ƒ } | j } xB t j d d ƒ D]. \ } } |  j | | | ƒ | | | ƒ ƒ q= Wd  S(   Ni    i   i   (   i    i   i   (   i    i   (   R   R   R   t   int32R   t	   itertoolst   productR   (   R   R   R   R    R
   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt!   test_return_bool_optional_or_none^   s
    	c         C@ sa   t  } t | t j g ƒ } | j } x6 d d d d g D]" } |  j | | ƒ | | ƒ ƒ q7 Wd  S(   Niÿÿÿÿi    i   i   (   R   R   R   t   intpR   R   (   R   R   R   R    R!   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_is_this_a_nonef   s
    	c         C@ s   t  } t ƒ  } | j d ƒ t | t j g d | ƒ} | j } |  j | j ƒ x6 d d d d g D]" } |  j	 | | ƒ | | ƒ ƒ qc Wd  S(   Nt   force_pyobjectt   flagsiÿÿÿÿi    i   i   (
   R   R   t   setR   R   R(   R   t
   assertTruet
   objectmodeR   (   R   R   R+   R   R    R!   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_is_this_a_none_objmoden   s    		c         C@ sZ   t  } t | t j t j g ƒ } | j } |  j | d d ƒ ƒ |  j | d d ƒ ƒ d  S(   Ni   i   (   R   R   R   R(   R   R-   t   assertFalse(   R   R   R   R    (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_a_is_b_intpx   s
    	c         C@ sZ   t  } t | t j t j g ƒ } | j } |  j | d d ƒ ƒ |  j | d d ƒ ƒ d  S(   Ni   i   (   R   R   R   R(   R   R0   R-   (   R   R   R   R    (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_a_is_not_b_intp€   s
    	c         C@ sc   d „  } t  d ƒ | ƒ } |  j | d d ƒ | d d ƒ ƒ |  j | d d  ƒ | d d  ƒ ƒ d  S(   Nc         S@ s   | d  k r |  S|  | Sd  S(   N(   R	   (   R
   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyR   ‰   s    s   (float64, optional(float64))g      ð?gš™™™™™(@(   R   t   assertAlmostEqualR	   (   R   R   R    (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_optional_floatˆ   s    	"c         C@ s   d „  } t  d ƒ | ƒ } t j d g d t j ƒ} | j ƒ  } |  j | d | ƒ | d | ƒ ƒ t j j | | ƒ |  j | d d  ƒ | d d  ƒ ƒ d  S(   Nc         S@ s,   | d  k r |  S| d c |  7<| d Sd  S(   Ni    (   R	   (   R
   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyR   ”   s    s   (float32, optional(float32[:]))gš™™™™™(@t   dtypeg      ð?(	   R   t   npt   arrayt   float32t   copyR3   t   testingt   assert_almost_equalR	   (   R   R   R    t   cyt   py(    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_optional_array“   s    	"c         C@ s‘   d „  } t  d ƒ | ƒ } |  j t ƒ  } | d  ƒ Wd  QX|  j d t | j ƒ ƒ t j d g d t j	 ƒ} |  j
 | | ƒ | | ƒ ƒ d  S(   Nc         S@ s   |  d S(   Ni    (    (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyR   £   s    s   (optional(int32[:]),)s&   expected array(int32, 1d, A), got NoneiÍ«  R5   (   R   t   assertRaisest	   TypeErrorR	   t   assertInt   strt	   exceptionR6   R7   R$   t   assertEqual(   R   R   R    t   raisedR   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_optional_array_error¢   s    		c         C@ sJ   d „  } t  | ƒ } t j d ƒ } |  j | | t ƒ | | t ƒ ƒ d S(   sC   
        Check that we can access attribute of an optional
        c         S@ s    d  } | r |  } n  | j d S(   Ni    (   R	   t   shape(   t   arrt   do_itt   opt(    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyR   ³   s    	i   N(   R   R6   t   arangeRD   R   (   R   R   R    RH   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_optional_array_attribute¯   s    	c         @ sW   t  d „  ƒ ‰  t  ‡  f d †  ƒ } |  j | d t ƒ ƒ |  j | d t ƒ d ƒ d S(   sI   
        Check that we can assign to a variable of optional type
        c         S@ s   | r d  } n |  } | S(   N(   R	   (   t   valt   get_noneR   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   make_optionalÁ   s    	c         @ s+   ˆ  |  t  ƒ } | r' ˆ  |  t ƒ } n  | S(   N(   R   R   (   RM   t
   run_secondR   (   RO   (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   fooÉ   s    i{   iç   N(   R   t   assertIsNoneR   RD   R   (   R   RQ   (    (   RO   s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_assign_to_optional½   s    c         C@ sN   d d „ } t | ƒ } |  j | ƒ  | ƒ  ƒ |  j | d ƒ | d ƒ ƒ d S(   s   
        Issue 1868
        c         S@ s   |  d  k r d }  n  |  S(   Ni   (   R	   (   R
   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyR   Ø   s    	i   N(   R	   R   RD   (   R   R   R    (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_optional_thru_omitted_argÓ   s    c         C@ sˆ   d „  } t  j t  j g d ƒ } t  j | ƒ } | f } t | ƒ | ƒ } |  j | d ƒ | d ƒ ƒ |  j | d ƒ | d ƒ ƒ d S(   s   
        Issue 2171
        c         S@ s*   |  d  k r d  S|  \ } } | | f Sd  S(   N(   R	   (   R
   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyR   å   s    i   i   N(   i   i   (   i   i   (   R   t   TupleR(   t   OptionalR   RD   R	   (   R   R   t   tupt   opt_tupt   sigR    (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   test_optional_unpacká   s    		(   t   __name__t
   __module__R   t   _numba_parallel_test_R"   R#   R'   R)   R/   R1   R2   R4   R>   RF   RL   RS   RT   RZ   (    (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyR   J   s   					
								t   __main__(   t
   __future__R    R   R%   t   numpyR6   t   numba.unittest_supportt   unittest_supportt   unittestt   numba.compilerR   R   t   numbaR   R   R   R   t   supportR   R   R   R   R   R   R   R   R[   t   main(    (    (    s8   lib/python2.7/site-packages/numba/tests/test_optional.pyt   <module>   s    							ª