ó
\K]c           @  sH  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
 d  d l m Z m Z d d l m Z m Z e   Z e j d  e   Z e j d	  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 e f d     YZ  e! d k rDe j"   n  d S(   i˙˙˙˙(   t   print_functionN(   t   compile_isolatedt   Flags(   t	   PYVERSION(   t   typest   errorsi   (   t   TestCaset   CompilationCachet   enable_pyobjectt   force_pyobjectc         C  s   t  |   } } | | S(   N(   t   str(   t   at   bt   c(    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   assignments   s    c         C  s    t  |   } } } | | | S(   N(   R
   (   R   R   R   t   d(    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   assignments2   s    c         C  s    |  | k r |  n | d } | S(   Ni   (    (   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   var_propagate1!   s    c         C  s(   d |  | k r |  n | d d } | S(   Ni   i   g       @(    (   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   var_propagate2&   s    $c         C  s    d |  | k r |  p | } | S(   Ni   (    (   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   var_propagate3+   s    c         C  s0   d |  d o | d p) |  d o) | d } | S(   Ni   i   (    (   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   var_propagate40   s    ,c         C  s   d |  k  o d k  SS(   Ni   i   (    (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   chained_compare6   s    c         C  s@   d } d } | |  k r8 x t  d  D] } | } q% Wn  | | S(   Ni   i   i   (   t   range(   t   xt   iR   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   stack_effect_error;   s    c         C  s=   x0 t  |   D] } d }  | | k r Pq q W| }  | |  f S(   Ni    (   R   (   t   nR   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt	   for_breakD   s    c         C  sS   | |  }  } | | | } } } | | | |  f \ }  } } } |  | | | | S(   N(    (   R   R   R   R   t   e(    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   var_swappingN   s    c          C  s   d   }  |  S(   Nc           S  s   d  S(   N(    (    (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   fV   s    (    (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   unsupported_op_codeT   s    	t   TestDataFlowc           B  sż   e  Z d    Z d   Z e d  Z e d  Z d   Z d   Z d   Z	 d   Z
 d   Z e d	  Z d
   Z e d  Z d   Z e d  Z d   Z e d  Z d   Z e d  Z RS(   c         C  s9   t    |  _ t j   |  _ |  j j   t j d  d  S(   Nt   error(   R   t   cachet   warningst   catch_warningst   w_cmt	   __enter__t   simplefilter(   t   self(    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   setUp\   s    c         C  s   |  j  j d  d  d   d  S(   N(   R%   t   __exit__t   None(   R(   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   tearDownc   s    c         C  sd   t  } t | t j f d | } | j } x3 d d d g D]" } |  j | |  | |   q: Wd  S(   Nt   flagsi˙˙˙˙i    i   (   R   R   R   t   int32t   entry_pointt   assertPreciseEqual(   R(   R-   t   pyfunct   crt   cfuncR   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_assignmentsf   s
    	c         C  s}   t  } t | t j f d | } | j } x3 d d d g D]" } |  j | |  | |   q: W| t k ry | d  n  d  S(   NR-   i˙˙˙˙i    i   R   (   R   R   R   R.   R/   R0   t   force_pyobj_flags(   R(   R-   R1   R2   R3   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_assignments2m   s    	 c         C  sP   |  j  j | t j t j f d t } | j } |  j | |   | |    d  S(   NR-   (   R"   t   compileR   R.   t   no_pyobj_flagsR/   R0   (   R(   R1   t   argsR2   R3   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   run_propagate_funcz   s    		c         C  s$   |  j  t d  |  j  t d  d  S(   Ni   i   (   i   i   (   i   i   (   R:   R   (   R(   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_var_propagate1   s    c         C  s$   |  j  t d  |  j  t d  d  S(   Ni   i   (   i   i   (   i   i   (   R:   R   (   R(   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_var_propagate2   s    c         C  sd   |  j  t d  |  j  t d  |  j  t d  |  j  t d  |  j  t d	  |  j  t d
  d  S(   Ni   i   i    i˙˙˙˙(   i   i   (   i   i   (   i   i    (   i˙˙˙˙i    (   i    i   (   i    i˙˙˙˙(   R:   R   (   R(   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_var_propagate3   s    c         C  s   |  j  t d  |  j  t d  |  j  t d  |  j  t d  |  j  t d  |  j  t d	  |  j  t d
  |  j  t d  |  j  t d  d  S(   Ni   i    i˙˙˙˙(   i   i   (   i   i    (   i   i˙˙˙˙(   i    i   (   i    i    (   i    i˙˙˙˙(   i˙˙˙˙i   (   i˙˙˙˙i    (   i˙˙˙˙i˙˙˙˙(   R:   R   (   R(   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_var_propagate4   s    c         C  sj   t  } t | t j f d | } | j } x9 d d d d d g D]" } |  j | |  | |   q@ Wd  S(   NR-   i    i   i   i   i   (   R   R   R   R.   R/   R0   (   R(   R-   R1   R2   R3   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_chained_compare   s
    	c         C  s   |  j  t  d  S(   N(   R?   R8   (   R(   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_chained_compare_npm˘   s    c         C  s[   t  } t | t j f d | } | j } x* d D]" } |  j | |  | |   q1 Wd  S(   NR-   i    i   i   i   (   i    i   i   i   (   R   R   R   R.   R/   R0   (   R(   R-   R1   R2   R3   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_stack_effect_errorĽ   s
    	c         C  s   |  j  t  d  S(   N(   RA   R8   (   R(   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_stack_effect_error_npmŽ   s    c         C  sf   t  } t | t j f d d | } | j } t t d d d   } |  j | |   | |    d  S(   Ni   R-   i    i
   i   (   R   R   R   R.   R/   t   tupleR   R0   (   R(   R-   R1   R2   R3   R9   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_var_swappingą   s
    	c         C  s   |  j  t  d  S(   N(   RD   R8   (   R(   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_var_swapping_npm¸   s    c         C  ss   t  } t | t j t j f d | } | j } x< d d g D]. \ } } |  j | | |  | | |   q= Wd  S(   NR-   i   i   i   (   i   i   (   i   i   (   R   R   R   t   intpR/   R0   (   R(   R-   R1   R2   R3   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_for_breakť   s
    !	c         C  s   |  j  t  d  S(   N(   RG   R8   (   R(   (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_for_break_npmĂ   s    c      	   C  sY   t  } |  j t j   } t | d d | } Wd  QXd } |  j | t | j   d  S(   NR-   t   make_function(    (   R   t   assertRaisesR   t   UnsupportedErrorR   t   assertInR
   t	   exception(   R(   R-   R1   t   raisesR2   t   msg(    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   test_unsupported_op_codeĆ   s
    (   t   __name__t
   __module__R)   R,   R5   R4   R6   R:   R;   R<   R=   R>   R?   R@   RA   RB   RD   RE   RG   RH   RP   (    (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyR    Z   s$   												t   __main__(#   t
   __future__R    R#   t   numba.unittest_supportt   unittest_supportt   unittestt   numba.compilerR   R   t   numba.utilsR   t   numbaR   R   t   supportR   R   t   enable_pyobj_flagst   setR5   R8   R   R   R   R   R   R   R   R   R   R   R   R    RQ   t   main(    (    (    s8   lib/python2.7/site-packages/numba/tests/test_dataflow.pyt   <module>   s2   													
		s