ó
\K]c           @   sV  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 d d l m Z m Z e ƒ  Z e j d ƒ e ƒ  Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d e f d „  ƒ  YZ e d k rRe j ƒ  n  d S(   iÿÿÿÿN(   t   compile_isolatedt   Flags(   t   jitt   types(   t   unittest_supporti   (   t   TestCaset   tagt   force_pyobjectt   MyErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyR      s   t
   OtherErrorc           B   s   e  Z RS(    (   R	   R
   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyR      s   t   UDEArgsToSuperc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s#   t  t |  ƒ j | ƒ | |  _ d  S(   N(   t   superR   t   __init__t   value0(   t   selft   argR   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyR      s    c         C   sL   t  | |  j ƒ s t St } | |  j | j k O} | |  j | j k O} | S(   N(   t
   isinstancet	   __class__t   Falset   Truet   argsR   (   R   t   othert   same(    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   __eq__   s    c         C   s   t  t t ƒ j ƒ  |  j f ƒ S(   N(   t   hashR   R   t   __hash__R   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyR   #   s    (   R	   R
   R   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyR      s   		t   UDENoArgSuperc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s)   t  t |  ƒ j ƒ  | |  _ | |  _ d  S(   N(   R   R   R   t   deferargR   (   R   R   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyR   (   s    	c         C   sb   t  | |  j ƒ s t St } | |  j | j k O} | |  j | j k O} | |  j | j k O} | S(   N(   R   R   R   R   R   R   R   (   R   R   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyR   -   s    c         C   s%   t  t t ƒ j ƒ  |  j |  j f ƒ S(   N(   R   R   R   R   R   R   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyR   6   s    (   R	   R
   R   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyR   '   s   			c            s   ‡  f d †  } | S(   Nc            sI   |  d k r ˆ  ‚ n0 |  d k r* t  ‚ n |  d k rE t j j ‚ n  |  S(   Ni   i   i   (   t
   ValueErrort   npt   linalgt   LinAlgError(   t   i(   t   exc(    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   raiser<   s    		(    (   R#   R$   (    (   R#   s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   raise_class;   s    	c            s   ‡  ‡ f d †  } | S(   Nc            sd   |  d k r ˆ ˆ  d ƒ ‚ nB |  d k r< t  ˆ  d ƒ ‚ n$ |  d k r` t j j ˆ  d ƒ ‚ n  |  S(   Ni   i   i   (   R   R   R    R!   (   R"   (   R   R#   (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyR$   H   s    (    (   R#   R   R$   (    (   R   R#   s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   raise_instanceG   s    c           C   s   ‚  d  S(   N(    (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   reraiseR   s    c            s   ‡  f d †  } | S(   Nc            s(   |  d k r t  d d ƒ ‚ n  ˆ  |  ƒ S(   Ni   t   bar(   R   (   R"   (   t   inner(    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   outerV   s    (    (   R)   R*   (    (   R)   s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   outer_functionU   s    c         C   s   |  d k s t  d ƒ ‚ d  S(   Ni   R(   (   t   AssertionError(   R"   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   assert_usecase\   s    c           C   s   t  ƒ  ‚ d  S(   N(   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   ude_bug_usecase_   s    t   TestRaisingc           B   s"  e  Z d  „  Z d „  Z d „  Z e d ƒ d „  ƒ Z d „  Z d „  Z d „  Z	 e d ƒ d „  ƒ Z
 d	 „  Z d
 „  Z e d ƒ d „  ƒ Z d „  Z d „  Z e d ƒ 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¸   d „  } t  | t j t j d d ƒ t j f ƒ } | j } t j d d t j ƒ} |  j | | d ƒ | | d ƒ ƒ |  j t	 ƒ  } | | d ƒ Wd  QX|  j t
 | j ƒ d ƒ d  S(   Nc         S   s   |  j  | S(   N(   t   shape(   t   aR"   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   pyfuncf   s    i   t   Ai   t   dtypei    s   tuple index out of range(   R    R   t   Arrayt   int32t   entry_pointR   t   emptyt   assertEqualt   assertRaisest
   IndexErrort   strt	   exception(   R   R2   t   crest   cfuncR1   t   cm(    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_unituple_index_errore   s    		"c         G   su  | t  t f k s t ‚ |  j | ƒ  } | | Œ  Wd  QX|  j | ƒ  } | | Œ  Wd  QX|  j | j j | j j ƒ t | j t t	 f ƒ r¬ |  j
 | j | j k ƒ n  | t k rqy | | Œ  Wn2 t k
 rú } t j t j ƒ  Œ  }	 |	 d }
 n Xy | | Œ  Wn2 t k
 r=} t j t j ƒ  Œ  } | d } n Xx0 t |
 | ƒ D] \ } } |  j | | ƒ qNWn  d  S(   Niþÿÿÿ(   t   force_pyobj_flagst   no_pyobj_flagsR,   R:   R9   R=   R   R   R   R   t
   assertTruet   BaseExceptiont	   tracebackt   format_exceptiont   syst   exc_infot   zip(   R   t	   exec_modeR2   R?   t   expected_error_classR   t   pyerrt   jiterrt   et	   py_framest   expected_framest   c_framest
   got_framest   expft   gotf(    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   check_against_pythonu   s*    c         C   sž   t  t ƒ } t | t j f d | ƒ} | j } |  j | d ƒ d ƒ |  j | | | t d ƒ |  j | | | t d ƒ |  j | | | t	 j
 j
 j d ƒ d  S(   Nt   flagsi    i   i   i   (   R%   R   R    R   R6   R7   R9   RV   R   R   R    R!   (   R   RW   R2   R>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   check_raise_classœ   s    	t	   importantc         C   s   |  j  d t ƒ d  S(   NRW   (   RX   RC   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_raise_class_nopython¦   s    c         C   s   |  j  d t ƒ d  S(   NRW   (   RX   RB   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_raise_class_objmodeª   s    c         C   s»   x´ t  t t g D]£ } t | d ƒ } t | t j f d | ƒ} | j } |  j | d ƒ d ƒ |  j	 | | | | d ƒ |  j	 | | | t
 d ƒ |  j	 | | | t j j j d ƒ q Wd  S(   Ns   some messageRW   i    i   i   i   (   R   R   R   R&   R    R   R6   R7   R9   RV   R   R   R    R!   (   R   RW   t   clazzR2   R>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   check_raise_instance­   s    		c         C   s   |  j  d t ƒ d  S(   NRW   (   R]   RB   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_raise_instance_objmodeº   s    c         C   s   |  j  d t ƒ d  S(   NRW   (   R]   RC   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_raise_instance_nopython½   s    c         K   s®   x§ t  t t g D]– } t | d ƒ } t | ƒ } t |   | ƒ } t |   t | ƒ ƒ } |  j | | | | d ƒ |  j | | | t d ƒ |  j | | | t d ƒ q Wd S(   sD   
        Check exception propagation from nested functions.
        s   some messagei   i   i   N(	   R   R   R   R&   R+   R   RV   R   R   (   R   RW   t   jit_argsR\   t   inner_pyfuncR2   t   inner_cfuncR?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   check_raise_nestedÁ   s    	c         C   s   |  j  t d t ƒd  S(   Nt   forceobj(   Rc   RB   R   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_raise_nested_objmodeÐ   s    c         C   s   |  j  t d t ƒd  S(   Nt   nopython(   Rc   RC   R   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_raise_nested_nopythonÓ   s    c            s¾   d „  ‰ t  } t | d d | ƒ} | j } xŠ ‡ f d †  t f ‡ f d †  t f ‡ f d †  t f g D]L \ ‰ ‰  ‡  ‡ f d †  } | | ƒ } | | ƒ } |  j | | | ˆ  ƒ qj Wd  S(   Nc         S   s
   |  ‚ d  S(   N(    (   R#   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt	   raise_excØ   s    RW   c              s
   ˆ  t  ƒ S(   N(   t   ZeroDivisionError(    (   Rh   (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   <lambda>Ý   t    c              s   ˆ  t  d d ƒ ƒ S(   Nt   msgi   (   R   (    (   Rh   (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyRj   ß   Rk   c              s   ˆ  t  d d ƒ ƒ S(   NRl   i   (   R   (    (   Rh   (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyRj   á   Rk   c            s   ‡ ‡  ‡ f d †  } | S(   Nc             s,   y ˆ ƒ  Wn ˆ  k
 r' }  ˆ ƒ  n Xd  S(   N(    (   RO   (   t   errt   fnt   op(    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   implä   s    (    (   Rn   Rp   (   Rm   Ro   (   Rn   s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   gen_implã   s    (    (   R'   R    R7   Ri   R   R   RV   (   R   RW   R2   R>   R?   Rq   t   pybasedt   cbased(    (   Rm   Ro   Rh   s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   check_reraise×   s    		c         C   s   |  j  d t ƒ d  S(   NRW   (   Rt   RB   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_reraise_objmodeî   s    c         C   s   |  j  d t ƒ d  S(   NRW   (   Rt   RC   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_reraise_nopythonñ   s    c         C   so   t  | ƒ } t | t j f d | ƒ} | j } |  j t ƒ  } | d ƒ Wd  QX|  j t | j	 ƒ d ƒ d  S(   NRW   i   s)   exceptions must derive from BaseException(
   R%   R    R   R6   R7   R:   t	   TypeErrorR9   R<   R=   (   R   t   clsRW   R2   R>   R?   R@   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   check_raise_invalid_classõ   s    	c         C   s*   |  j  t d t ƒ|  j  d d t ƒd  S(   NRW   i   (   Ry   t   intRB   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt    test_raise_invalid_class_objmodeþ   s    c      	   C   sP   |  j  ƒ   |  j t d t ƒWd  QX|  j  ƒ   |  j d d t ƒWd  QXd  S(   NRW   i   (   t   assertTypingErrorRy   Rz   RC   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt!   test_raise_invalid_class_nopython  s    c         C   sQ   t  } t | t j f d | ƒ} | j } | d ƒ |  j | | | t d ƒ d  S(   NRW   i   i   (   R-   R    R   R6   R7   RV   R,   (   R   RW   R2   R>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   check_assert_statement  s
    	
c         C   s   |  j  d t ƒ d  S(   NRW   (   R~   RB   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_assert_statement_objmode  s    c         C   s   |  j  d t ƒ d  S(   NRW   (   R~   RC   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_assert_statement_nopython  s    c   
      B   s    d } d } x | e  f | e f | e f g D]j \ } } i  } | i | d 6| U| d } e | e j f d | ƒ} | j }	 |  j | | |	 | d ƒ q. Wd  S(   Ns    def f(a):
  raise exc('msg', 10)s   def f(a):
  assert a != 1R#   t   fRW   i   (   R,   R   R   R    R   R6   R7   RV   (
   R   RW   t   simple_raiset   assert_raiset   f_textR#   t   locR2   R>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   check_raise_from_exec_string  s    	
	c         C   s   |  j  d t ƒ d  S(   NRW   (   R†   RB   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt$   test_assert_from_exec_string_objmode#  s    c         C   s   |  j  d t ƒ d  S(   NRW   (   R†   RC   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt%   test_assert_from_exec_string_nopython&  s    c         C   s>   t  } t | d d | ƒ} | j } |  j | | | t ƒ d  S(   NRW   (    (   R.   R    R7   RV   Rw   (   R   RW   R2   R>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   check_user_code_error_traceback)  s    	c         C   s   |  j  d t ƒ d  S(   NRW   (   R‰   RB   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   test_user_code_error_traceback2  s    c         C   s   |  j  d t ƒ d  S(   NRW   (   R‰   RC   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyRŠ   5  s    (   R	   R
   RA   RV   RX   R   RZ   R[   R]   R^   R_   Rc   Re   Rg   Rt   Ru   Rv   Ry   R{   R}   R~   R   R€   R†   R‡   Rˆ   R‰   RŠ   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyR/   c   s4   		'	
																				t   __main__(    t   numpyR   RH   RF   t   numba.compilerR    R   t   numbaR   R   R   t   unittestt   supportR   R   RB   t   setRC   t	   ExceptionR   R   R   R   R%   R&   R'   R+   R-   R.   R/   R	   t   main(    (    (    s:   lib/python2.7/site-packages/numba/tests/test_exceptions.pyt   <module>   s,   								Õ