ó
\K]c           @  sù   d  Z  d d l m Z d d l Z d d l j Z d d l m	 Z	 m
 Z
 d d l m Z m Z d d l m Z d „  Z d	 „  Z d
 „  Z e
 ƒ  Z e j d ƒ d „  Z d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d k rõ e j ƒ  n  d S(   s!   
Testing object mode specifics.

iÿÿÿÿ(   t   print_functionN(   t   compile_isolatedt   Flags(   t   utilst   jiti   (   t   TestCasec         C  s   |  d } | d S(   Ni   y              @(    (   t   nt   tmp(    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   complex_constant   s    
c         C  s   |  d S(   Nl         4LEh›*r-P´3OF (    (   R   (    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   long_constant   s    c         C  s   |  2d  S(   N(    (   t   x(    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   delitem_usecase   s    t   force_pyobjectc         C  sa   d } xT t  |  ƒ D]F } x= t  | ƒ D]/ } x& t  |  | ƒ D] } | | | 7} q= Wq& Wq W| S(   Ni    (   t   range(   R
   t   yR   t   it   jt   k(    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   loop_nest_3   s    c         C  s   |  S(   N(    (   R
   (    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   array_of_object(   s    t   TestObjectModec           B  s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  sD   t  } t | d d t ƒ} | j } |  j | d ƒ | d ƒ ƒ d  S(   Nt   flagsi   (    (   R   R   t   forceobjt   entry_pointt   assertPreciseEqual(   t   selft   pyfunct   crest   cfunc(    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   test_complex_constant.   s    	c         C  sD   t  } t | d d t ƒ} | j } |  j | d ƒ | d ƒ ƒ d  S(   NR   i   (    (   R	   R   R   R   R   (   R   R   R   R   (    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   test_long_constant4   s    	c           sŽ   t  ‰ t ˆ d d t ƒ} | j ‰  |  j ˆ d d ƒ ˆ  d d ƒ ƒ ‡ f d †  } ‡  f d †  } t t j | ƒ ƒ t t j | ƒ ƒ d S(   sm   
        Test bug that decref the iterator early.
        If the bug occurs, a segfault should occur
        R   i   c             s   ˆ  d d ƒ d  S(   Ni   (    (    (   R   (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt	   bm_pyfuncD   s    c             s   ˆ  d d ƒ d  S(   Ni   (    (    (   R   (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   bm_cfuncG   s    N(    (   R   R   R   R   t   assertEqualt   printR   t	   benchmark(   R   R   R   R    (    (   R   R   s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   test_loop_nest:   s    	"c         C  s?   t  t ƒ } t j t ƒ  g d ƒ } |  j | | ƒ | ƒ d  S(   Ni
   (   R   R   t   npt   arrayt   objectt   assertIs(   R   R   t   objarr(    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   test_array_of_objectM   s    c         C  s®   t  d t ƒ d „  ƒ } |  j | d d d g ƒ ƒ |  j | d d d g ƒ ƒ |  j | d d d g ƒ ƒ |  j t ƒ  } | d d ƒ Wd QX|  j d t | j	 ƒ ƒ d S(   s6   
        Test handling of the `in` comparison
        R   c         S  s
   |  | k S(   N(    (   R
   R   (    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   fooV   s    i   i    i   Ns   is not iterable(
   R   t   Truet
   assertTruet   assertFalset   assertRaisest	   TypeErrort   Nonet   assertInt   strt	   exception(   R   R+   t   raises(    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   test_sequence_containsR   s    c         C  sq   t  } t | d d t ƒ} | j } d d d g } | | ƒ |  j | g  ƒ |  j t ƒ  | d ƒ Wd  QXd  S(   NR   i   i   i   i*   (    (   R   R   R   R   R   R/   R0   (   R   R   R   R   t   l(    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   test_delitemc   s    	
(   t   __name__t
   __module__R   R   R$   R*   R6   R8   (    (    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyR   ,   s   					t   TestObjectModeInvalidRewritec           B  s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   sM   
    Tests to ensure that rewrite passes didn't affect objmode lowering.
    c         C  s$   |  j  | j ƒ |  j | j ƒ | S(   N(   R-   t
   signaturesR.   t   nopython_signatures(   R   t   disp(    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   _ensure_objmodet   s    c           sQ   d „  ‰  ‡  f d †  } t  | ƒ } |  j | d ƒ | d ƒ ƒ |  j | ƒ d S(   so   
        Test code based on user submitted issue at
        https://github.com/numba/numba/issues/2159
        c         S  s   |  S(   N(    (   R   (    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   test0~   s    c           s"   |  d k r t  ƒ  ‚ n  ˆ  |  ƒ S(   Ni    (   t
   ValueError(   R   (   R@   (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   test1   s    i
   N(   R   R!   R?   (   R   RB   t   compiled(    (   R@   s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt%   test_static_raise_in_objmode_fallbacky   s
    	c           su   d „  ‰  ‡  f d †  } t  | ƒ } t j d g ƒ t j d g ƒ f } |  j | | Œ  | | Œ  ƒ |  j | ƒ d S(   so   
        Test code based on user submitted issue at
        https://github.com/numba/numba/issues/2169
        c         S  s   |  S(   N(    (   R   (    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyR@   ’   s    c           s3   t  j |  ƒ }  d | d <ˆ  |  j ƒ  | j ƒ  ƒ S(   Ni   i    (   R%   t   asarrayt   sum(   t   a1t   a2(   R@   (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   test•   s    
i   i   N(   R   R%   R&   R!   R?   (   R   RI   RC   t   args(    (   R@   s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt'   test_static_setitem_in_objmode_fallbackŒ   s    	$c         B  sW   d } | d 7} i  } i e  d 6} | | | U| d } e d e ƒ | ƒ } | ƒ  d S(   sG   
        Test issue https://github.com/numba/numba/issues/3355
        s   def func():
s       np.array([1,2,3])
R%   t   funcR   N(   R%   R   R,   (   R   t	   func_textt   loc_varst   custom_globalsRL   t   jitted(    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   test_dynamic_func_objmode¡   s    


(   R9   R:   t   __doc__R?   RD   RK   RQ   (    (    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyR;   o   s
   			t   __main__(   RR   t
   __future__R    t   numpyR%   t   numba.unittest_supportt   unittest_supportt   unittestt   numba.compilerR   R   t   numbaR   R   t   supportR   R   R	   R   R   t   setR   R   R   R;   R9   t   main(    (    (    s;   lib/python2.7/site-packages/numba/tests/test_object_mode.pyt   <module>   s"   					
	C@