
\K]c           @` s5  d  d l  m Z m Z m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z 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 m Z m Z m Z d d l m Z m Z m Z m Z e j   Z d	 e  f d
     YZ! e! d d  d   Z" d e  f d     YZ# d e  f d     YZ$ d e$ f d     YZ% d e% f d     YZ& d e& f d     YZ' d e% f d     YZ( d e& f d     YZ) d e& f d     YZ* d e& f d     YZ+ d e& f d     YZ, d  e& f d!     YZ- d" e& f d#     YZ. d$ e& f d%     YZ/ d& e' f d'     YZ0 d( e' f d)     YZ1 d* e' f d+     YZ2 d, e' f d-     YZ3 d. e' f d/     YZ4 d0 e& f d1     YZ5 d2 e& f d3     YZ6 d4 e% f d5     YZ7 d6 e& f d7     YZ8 d8 e$ f d9     YZ9 d: e$ f d;     YZ: d< e$ f d=     YZ; d> e$ f d?     YZ< d@ e$ f dA     YZ= dB e  f dC     YZ> dD e  f dE     YZ? dF e  f dG     YZ@ dH e  f dI     YZA dJ e  f dK     YZB dL e  f dM     YZC dN e  f dO     YZD eD   ZE d S(P   i    (   t   print_functiont   divisiont   absolute_import(   t   defaultdictN(   t   FunctionTypet   BuiltinFunctionType(   t   configt   errorsi   (   t   BINOPS_TO_OPERATORSt   INPLACE_BINOPS_TO_OPERATORSt   UNARY_BUITINS_TO_OPERATORSt   OPERATORS_TO_BUILTINS(   t   NotDefinedErrort   RedefinedErrort   VerificationErrort   ConstantInferenceErrort   Locc           B` s   e  Z d  Z e j d  Z d e d  Z e	 d    Z
 d   Z d   Z d   Z d   Z d   Z d	   Z d
 d  Z d d  Z RS(   s   Source location

    s   def\s+(\w+)\(.*c         C` s1   | |  _  | |  _ | |  _ d |  _ | |  _ d S(   s    Arguments:
        filename - name of the file
        line - line in file
        col - column
        maybe_decorator - Set to True if location is likely a jit decorator
        N(   t   filenamet   linet   colt   Nonet   linest   maybe_decorator(   t   selfR   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   __init__   s
    				c         C` s   |  | j  | j d t S(   NR   (   R   t   firstlinenot   True(   t   clst   func_id(    (    s'   lib/python2.7/site-packages/numba/ir.pyt   from_function_id+   s    c         C` s   d |  j  |  j |  j f S(   Ns!   Loc(filename=%s, line=%s, col=%s)(   R   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   __repr__/   s    	c         C` sA   |  j  d  k	 r) d |  j |  j |  j  f Sd |  j |  j f Sd  S(   Ns
   %s (%s:%s)s   %s (%s)(   R   R   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   __str__3   s    c         C` sW   d  } |  j   } x> t | |  j d   D]% } | j   j d  r* | } Pq* q* W| S(   Ni   s   def (   R   t	   get_linest   reversedR   t   stript
   startswith(   R   t   fn_nameR   t   x(    (    s'   lib/python2.7/site-packages/numba/ir.pyt   _find_definition9   s    c         C` s:   |  j    } | r2 |  j j | j    j   d Sd  Sd  S(   Ni    (   R&   t   _defmatchert   matchR"   t   groupsR   (   R   t   defn(    (    s'   lib/python2.7/site-packages/numba/ir.pyt   _raw_function_nameF   s     c         C` s1   |  j  d  k r* t j |  j    |  _  n  |  j  S(   N(   R   R   t	   linecachet   getlinest	   _get_path(   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR    N   s    c         C` sL   d  } y t j j |  j  } Wn& t k
 rG t j j |  j  } n X| S(   N(   R   t   ost   patht   relpathR   t
   ValueErrort   abspath(   R   R0   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR.   U   s    i   c         C` sL  |  j    } |  j } |  j r d g | } | r | r d | | k r t d |  } | d } | | | !} d } x0 t |  D]" \ }	 }
 d |
 k r |	 } Pq q W| | } q n  g  } | r| rd   } | t d | |  | !} t } x# | D] }
 d |
 k r t } q q W| sd  } x2 t | | d   D] }
 d |
 k r8|
 } Pq8q8W| r| j	 |  | |
  } | j	 d d | d	  qn  | r| j
 | d
   | j	 t j | d
   | | d
  } | j	 d | t j d   qn  | s
d } n  t j d  d } | |  j   | t j d j |   f } | S(   Nt    s   def i    i
   c         S` s:   d } x- t  j t j t |    D] } | d 7} q" W| S(   Ni    i   (   t	   itertoolst	   takewhilet   strt   isspace(   t   stringt   spacesR%   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   count_spaces   s    "i   t    i   s   <source elided>
it   ^s#   <source missing, REPL/exec in use?>s   
File "%s", line %d:s   
%s(   R    R   R   t   maxt	   enumeratet   FalseR   R   R!   t   appendt   extendt
   _termcolort	   highlightt   indicateR   R.   t   codet   join(   R   t	   nlines_upR   t   use_linet   tmplinest   min_linet   max_linet   selectedt   indext   idxR%   t   retR;   t	   def_foundR$   R:   t   errt   tmp(    (    s'   lib/python2.7/site-packages/numba/ir.pyt	   strformatc   sT    		
	
$	+c         C` s   t  |   |  j | |  S(   s9   
        Return a new Loc with this line number.
        (   t   typeR   (   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   with_lineno   s    N(   t   __name__t
   __module__t   __doc__t   ret   compileR'   R   R@   R   t   classmethodR   R   R   R&   R+   R    R.   RT   RV   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR      s   						Os   unknown locationt   VarMapc           B` sP   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C` s   i  |  _  d  S(   N(   t   _con(   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR      s    c         C` s/   | |  j  k r t |   n | |  j  | <d  S(   N(   R^   R   (   R   t   namet   var(    (    s'   lib/python2.7/site-packages/numba/ir.pyt   define   s    c         C` s3   y |  j  | SWn t k
 r. t |   n Xd  S(   N(   R^   t   KeyErrorR   (   R   R_   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   get   s    c         C` s   | |  j  k S(   N(   R^   (   R   R_   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   __contains__   s    c         C` s   t  |  j  S(   N(   t   lenR^   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   __len__   s    c         C` s   t  j |  j  S(   N(   t   pprintt   pformatR^   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR      s    c         C` s   t  |  j  S(   N(   t   hashR_   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   __hash__   s    c         C` s   |  j  j   S(   N(   R^   t   iterkeys(   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   __iter__   s    (
   RW   RX   R   Ra   Rc   Rd   Rf   R   Rj   Rl   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR]      s   							t   AbstractRHSc           B` s   e  Z d  Z RS(   s{   Abstract base class for anything that can be the RHS of an assignment.
    This class **does not** define any methods.
    (   RW   RX   RY   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyRm      s   t   Instc           B` s    e  Z d  Z d   Z d   Z RS(   s-   
    Base class for all IR instructions.
    c         C` s
   t   d S(   sO   
        List the variables used (read or written) by the instruction.
        N(   t   NotImplementedError(   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt	   list_vars   s    c         C` s   t  | t  r | g St  | t  r/ | j   St  | t t f  ru g  } x$ | D] } | j |  j |   qQ W| St  | t  r g  } x* | j	   D] } | j |  j |   q W| Sg  Sd S(   sQ   
        A recursive helper used to implement list_vars() in subclasses.
        N(
   t
   isinstancet   VarRn   Rp   t   listt   tupleRB   t   _rec_list_varst   dictt   values(   R   t   valt   lstt   v(    (    s'   lib/python2.7/site-packages/numba/ir.pyRu      s    
(   RW   RX   RY   Rp   Ru   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyRn      s   	t   Stmtc           B` s#   e  Z d  Z e Z e Z d   Z RS(   sc   
    Base class for IR statements (instructions which can appear on their
    own in a Block).
    c         C` s   |  j  |  j  S(   N(   Ru   t   __dict__(   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyRp     s    (   RW   RX   RY   R@   t   is_terminatort   is_exitRp   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR{     s   t
   Terminatorc           B` s   e  Z d  Z e Z d   Z RS(   s   
    IR statements that are terminators: the last statement in a block.
    A terminator must either:
    - exit the function
    - jump to a block

    All subclass of Terminator must override `.get_targets()` to return a list
    of jump targets.
    c         C` s   t  t |     d  S(   N(   Ro   RU   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   get_targets  s    (   RW   RX   RY   R   R}   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   	t   Exprc           B` sU  e  Z d  Z d   Z d   Z d   Z e d    Z e d    Z e d    Z	 e d d   Z e d    Z e d	    Z e d
    Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z d   Z d   Z d   Z RS(   s]   
    An IR expression (an instruction which can only be part of a larger
    statement).
    c         K` sI   t  | t  s t  t  | t  s* t  | |  _ | |  _ | |  _ d  S(   N(   Rq   R7   t   AssertionErrorR   t   opt   loct   _kws(   R   R   R   t   kws(    (    s'   lib/python2.7/site-packages/numba/ir.pyR   )  s
    		c         C` s*   | j  d  r t j |  |  S|  j | S(   Nt   _(   R#   Rn   t   __getattr__R   (   R   R_   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   0  s    c         C` s-   | d k r | |  j  | <n | |  j | <d  S(   NR   R   R   (   R   R   R   (   R|   R   (   R   R_   t   value(    (    s'   lib/python2.7/site-packages/numba/ir.pyt   __setattr__5  s    c         C` s   t  | t  s t  t  | t  s* t  t  | t  s? t  t  | t  sT t  d } |  d | d | d | d | d | d t d t  S(	   Nt   binopR   R   t   fnt   lhst   rhst
   static_lhst
   static_rhs(   Rq   R   R   Rr   R   t	   UNDEFINED(   R   R   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   ;  s    $c         C` s   t  | t  s t  t  | t  s* t  t  | t  s? t  t  | t  sT t  t  | t  si t  d } |  d | d | d | d | d | d | d t d	 t  S(
   Nt   inplace_binopR   R   R   t   immutable_fnR   R   R   R   (   Rq   R   R   Rr   R   R   (   R   R   R   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   E  s    c      	   C` sj   t  | t t t f  s t  t  | t  s3 t  d } t j | |  } |  d | d | d | d |  S(   Nt   unaryR   R   R   R   (   Rq   R7   Rr   R   R   R   R
   Rc   (   R   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   Q  s
    c         C` sa   t  | t t f  s t  t  | t  s0 t  d } |  d | d | d | d | d | d |  S(   Nt   callR   R   t   funct   argsR   t   vararg(   Rq   Rr   t	   IntrinsicR   R   (   R   R   R   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   Y  s
    $c         C` s4   t  | t  s t  d } |  d | d | d |  S(   Nt   build_tupleR   R   t   items(   Rq   R   R   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   a  s    c         C` s4   t  | t  s t  d } |  d | d | d |  S(   Nt
   build_listR   R   R   (   Rq   R   R   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   g  s    c         C` s4   t  | t  s t  d } |  d | d | d |  S(   Nt	   build_setR   R   R   (   Rq   R   R   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   m  s    c      	   C` s:   t  | t  s t  d } |  d | d | d | d |  S(   Nt	   build_mapR   R   R   t   size(   Rq   R   R   (   R   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   s  s    c         C` s4   t  | t  s t  d } |  d | d | d |  S(   Nt
   pair_firstR   R   R   (   Rq   Rr   R   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   y  s    c         C` sI   t  | t  s t  t  | t  s* t  d } |  d | d | d |  S(   Nt   pair_secondR   R   R   (   Rq   Rr   R   R   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` sI   t  | t  s t  t  | t  s* t  d } |  d | d | d |  S(   Nt   getiterR   R   R   (   Rq   Rr   R   R   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` sI   t  | t  s t  t  | t  s* t  d } |  d | d | d |  S(   Nt   iternextR   R   R   (   Rq   Rr   R   R   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c      	   C` sd   t  | t  s t  t  | t  s* t  t  | t  s? t  d } |  d | d | d | d |  S(   Nt   exhaust_iterR   R   R   t   count(   Rq   Rr   R   t   intR   (   R   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s
    c      	   C` sd   t  | t  s t  t  | t  s* t  t  | t  s? t  d } |  d | d | d | d |  S(   Nt   getattrR   R   R   t   attr(   Rq   Rr   R   R7   R   (   R   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s
    c      	   C` sd   t  | t  s t  t  | t  s* t  t  | t  s? t  d } |  d | d | d | d |  S(   Nt   getitemR   R   R   RN   (   Rq   Rr   R   R   (   R   R   RN   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s
    c         C` sv   t  | t  s t  | d  k s6 t  | t  s6 t  t  | t  sK t  d } |  d | d | d | d | d |  S(   Nt   static_getitemR   R   R   RN   t	   index_var(   Rq   Rr   R   R   R   (   R   R   RN   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    !c         C` sI   t  | t  s t  t  | t  s* t  d } |  d | d | d |  S(   sE   
        A node for implicit casting at the return statement
        t   castR   R   R   (   Rq   Rr   R   R   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` sF   t  | t  s t  d } |  d | d | d | d | d | d |  S(   s6   
        A node for making a function object.
        t   make_functionR   R_   RF   t   closuret   defaultsR   (   Rq   R   R   (   R   R_   RF   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c   	      C` s  |  j  d k r d j d   |  j D  } t j d k rI |  j j   n t |  j j    } d j d   | D  } |  j d  k	 r d |  j f n d } d j t
 d  | | | g   } d |  j | f S|  j  d	 k r;|  j |  j } } |  j t j k r| | } } n  t j |  j |  j  } d
 | | | f St j d k rY|  j j   n t |  j j    } d   | D } d |  j  d j |  f Sd  S(   NR   s   , c         s` s   |  ] } t  |  Vq d  S(   N(   R7   (   t   .0t   a(    (    s'   lib/python2.7/site-packages/numba/ir.pys	   <genexpr>  s    i    c         s` s%   |  ] \ } } d  | | f Vq d S(   s   %s=%sN(    (   R   t   kRz   (    (    s'   lib/python2.7/site-packages/numba/ir.pys	   <genexpr>  s    s   *%sR4   s   call %s(%s)R   s   %s %s %sc         s` s%   |  ] \ } } d  | | f Vq d S(   s   %s=%sN(    (   R   R   Rz   (    (    s'   lib/python2.7/site-packages/numba/ir.pys	   <genexpr>  s    s   %s(%s)(   R   RG   R   R   t   DIFF_IRR   R   t   sortedR   R   t   filterR   R   R   R   t   operatort   containsR   Rc   (	   R   R   t
   pres_orderR   R   t   arglistR   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s     3%!3c         C` s   |  j  |  j  S(   N(   Ru   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyRp     s    c         C` s   t  d |  d |  j  d  S(   Ns   %sR   (   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   infer_constant  s    N(   RW   RX   RY   R   R   R   R\   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   Rp   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   #  s4   			
	
			t   SetItemc           B` s    e  Z d  Z d   Z d   Z RS(   s   
    target[index] = value
    c         C` s|   t  | t  s t  t  | t  s* t  t  | t  s? t  t  | t  sT t  | |  _ | |  _ | |  _ | |  _ d  S(   N(   Rq   Rr   R   R   t   targetRN   R   R   (   R   R   RN   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    			c         C` s   d |  j  |  j |  j f S(   Ns   %s[%s] = %s(   R   RN   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    (   RW   RX   RY   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   	
t   StaticSetItemc           B` s    e  Z d  Z d   Z d   Z RS(   s(   
    target[constant index] = value
    c         C` s   t  | t  s t  t  | t  s+ t  t  | t  s@ t  t  | t  sU t  t  | t  sj t  | |  _ | |  _ | |  _ | |  _ | |  _ d  S(   N(	   Rq   Rr   R   R   R   RN   R   R   R   (   R   R   RN   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    				c         C` s   d |  j  |  j |  j f S(   Ns   %s[%r] = %s(   R   RN   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    (   RW   RX   RY   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   	t   DelItemc           B` s    e  Z d  Z d   Z d   Z RS(   s   
    del target[index]
    c         C` s^   t  | t  s t  t  | t  s* t  t  | t  s? t  | |  _ | |  _ | |  _ d  S(   N(   Rq   Rr   R   R   R   RN   R   (   R   R   RN   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    		c         C` s   d |  j  |  j f S(   Ns
   del %s[%s](   R   RN   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    (   RW   RX   RY   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   
  s   	t   SetAttrc           B` s   e  Z d    Z d   Z RS(   c         C` s|   t  | t  s t  t  | t  s* t  t  | t  s? t  t  | t  sT t  | |  _ | |  _ | |  _ | |  _ d  S(   N(	   Rq   Rr   R   R7   R   R   R   R   R   (   R   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    			c         C` s   d |  j  |  j |  j f S(   Ns   (%s).%s = %s(   R   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   &  s    (   RW   RX   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   	
t   DelAttrc           B` s   e  Z d    Z d   Z RS(   c         C` s^   t  | t  s t  t  | t  s* t  t  | t  s? t  | |  _ | |  _ | |  _ d  S(   N(   Rq   Rr   R   R7   R   R   R   R   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   +  s    		c         C` s   d |  j  |  j f S(   Ns   del (%s).%s(   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   3  s    (   RW   RX   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   *  s   	t   StoreMapc           B` s   e  Z d    Z d   Z RS(   c         C` s|   t  | t  s t  t  | t  s* t  t  | t  s? t  t  | t  sT t  | |  _ | |  _ | |  _ | |  _ d  S(   N(   Rq   Rr   R   R   t   dctt   keyR   R   (   R   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   8  s    			c         C` s   d |  j  |  j |  j f S(   Ns   %s[%s] = %s(   R   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   B  s    (   RW   RX   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   7  s   	
t   Delc           B` s   e  Z d    Z d   Z RS(   c         C` s@   t  | t  s t  t  | t  s* t  | |  _ | |  _ d  S(   N(   Rq   R7   R   R   R   R   (   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   G  s    	c         C` s   d |  j  S(   Ns   del %s(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   M  s    (   RW   RX   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   F  s   	t   Raisec           B` s)   e  Z e Z d    Z d   Z d   Z RS(   c         C` sL   | d  k s! t | t  s! t  t | t  s6 t  | |  _ | |  _ d  S(   N(   R   Rq   Rr   R   R   t	   exceptionR   (   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   T  s    !	c         C` s   d |  j  S(   Ns   raise %s(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   Z  s    c         C` s   g  S(   N(    (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   ]  s    (   RW   RX   R   R~   R   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   Q  s   		t   StaticRaisec           B` s/   e  Z d  Z e Z d   Z d   Z d   Z RS(   s   
    Raise an exception class and arguments known at compile-time.
    Note that if *exc_class* is None, a bare "raise" statement is implied
    (i.e. re-raise the current exception).
    c         C` sv   | d  k s! t | t  s! t  t | t  s6 t  | d  k sW t | t  sW t  | |  _ | |  _ | |  _ d  S(   N(	   R   Rq   RU   R   R   Rt   t	   exc_classt   exc_argsR   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   i  s    !!		c         C` sZ   |  j  d  k r d S|  j d  k r0 d |  j  f Sd |  j  d j t t |  j   f Sd  S(   Nt   raises   raise %ss   raise %s(%s)s   , (   R   R   R   RG   t   mapt   repr(   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   q  s    	c         C` s   g  S(   N(    (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   z  s    (   RW   RX   RY   R   R~   R   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   a  s
   			t   Returnc           B` s/   e  Z d  Z e Z d   Z d   Z d   Z RS(   s   
    Return to caller.
    c         C` sL   t  | t  s! t t |    t  | t  s6 t  | |  _ | |  _ d  S(   N(   Rq   Rr   R   RU   R   R   R   (   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    !	c         C` s   d |  j  S(   Ns	   return %s(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` s   g  S(   N(    (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    (   RW   RX   RY   R   R~   R   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   ~  s
   		t   Jumpc           B` s)   e  Z d  Z d   Z d   Z d   Z RS(   s   
    Unconditional branch.
    c         C` s+   t  | t  s t  | |  _ | |  _ d  S(   N(   Rq   R   R   R   R   (   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    	c         C` s   d |  j  S(   Ns   jump %s(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` s
   |  j  g S(   N(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    (   RW   RX   RY   R   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   		t   Branchc           B` s)   e  Z d  Z d   Z d   Z d   Z RS(   s   
    Conditional branch.
    c         C` sR   t  | t  s t  t  | t  s* t  | |  _ | |  _ | |  _ | |  _ d  S(   N(   Rq   Rr   R   R   t   condt   truebrt   falsebrR   (   R   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    			c         C` s   d |  j  |  j |  j f S(   Ns   branch %s, %s, %s(   R   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` s   |  j  |  j g S(   N(   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    (   RW   RX   RY   R   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   		t   Assignc           B` s    e  Z d  Z d   Z d   Z RS(   s   
    Assign to a variable.
    c         C` s^   t  | t  s t  t  | t  s* t  t  | t  s? t  | |  _ | |  _ | |  _ d  S(   N(   Rq   Rm   R   Rr   R   R   R   R   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    		c         C` s   d |  j  |  j f S(   Ns   %s = %s(   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    (   RW   RX   RY   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   	t   Printc           B` s    e  Z d  Z d   Z d   Z RS(   s   
    Print some values.
    c         C` s   t  d   | D  s t  | d  k s= t | t  s= t  t | t  sR t  t |  |  _ | |  _ i  |  _	 | |  _
 d  S(   Nc         s` s   |  ] } t  | t  Vq d  S(   N(   Rq   Rr   (   R   R%   (    (    s'   lib/python2.7/site-packages/numba/ir.pys	   <genexpr>  s    (   t   allR   R   Rq   Rr   R   Rt   R   R   t   constsR   (   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    !		c         C` s   d d j  d   |  j D  S(   Ns	   print(%s)s   , c         s` s   |  ] } t  |  Vq d  S(   N(   R7   (   R   Rz   (    (    s'   lib/python2.7/site-packages/numba/ir.pys	   <genexpr>  s    (   RG   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    (   RW   RX   RY   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   	
t   Yieldc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` sI   t  | t  s t  t  | t  s* t  | |  _ | |  _ | |  _ d  S(   N(   Rq   Rr   R   R   R   R   RN   (   R   R   R   RN   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s
    		c         C` s   d |  j  f S(   Ns   yield %s(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` s
   |  j  g S(   N(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyRp     s    (   RW   RX   R   R   Rp   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   		t	   EnterWithc           B` s)   e  Z d  Z d   Z d   Z d   Z RS(   s   Enter a "with" context
    c         C` sR   t  | t  s t  t  | t  s* t  | |  _ | |  _ | |  _ | |  _ d S(   s   
        Parameters
        ----------
        contextmanager : IR value
        begin, end : int
            The beginning and the ending offset of the with-body.
        loc : int
            Source location
        N(   Rq   Rr   R   R   t   contextmanagert   begint   endR   (   R   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    
			c         C` s   d j  |  j  S(   Ns   enter_with {}(   t   formatR   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` s
   |  j  g S(   N(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyRp     s    (   RW   RX   RY   R   R   Rp   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   		t   Argc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` s^   t  | t  s t  t  | t  s* t  t  | t  s? t  | |  _ | |  _ | |  _ d  S(   N(   Rq   R7   R   R   R   R_   RN   R   (   R   R_   RN   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    		c         C` s   d |  j  |  j f S(   Ns   arg(%d, name=%s)(   RN   R_   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` s   t  d |  d |  j  d  S(   Ns   %sR   (   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    (   RW   RX   R   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   		t   Constc           B` s&   e  Z e d   Z d   Z d   Z RS(   c         C` s4   t  | t  s t  | |  _ | |  _ | |  _ d  S(   N(   Rq   R   R   R   R   t   use_literal_type(   R   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    		c         C` s   d t  |  j  j |  j f S(   Ns   const(%s, %s)(   RU   R   RW   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` s   |  j  S(   N(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    (   RW   RX   R   R   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   	t   Globalc           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C` s4   t  | t  s t  | |  _ | |  _ | |  _ d  S(   N(   Rq   R   R   R_   R   R   (   R   R_   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   !  s    		c         C` s   d |  j  |  j f S(   Ns   global(%s: %s)(   R_   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   '  s    c         C` s   |  j  S(   N(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   *  s    c         C` s"   t  |  j |  j t j |  j   S(   N(   R   R_   R   t   copyt   deepcopyR   (   R   t   memo(    (    s'   lib/python2.7/site-packages/numba/ir.pyt   __deepcopy__-  s    (   RW   RX   R   R   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR      s   			t   FreeVarc           B` s)   e  Z d  Z d   Z d   Z d   Z RS(   sm   
    A freevar, as loaded by LOAD_DECREF.
    (i.e. a variable defined in an enclosing non-global scope)
    c         C` sg   t  | t  s t  t  | t  s* t  t  | t  s? t  | |  _ | |  _ | |  _ | |  _ d  S(   N(	   Rq   R   R   R7   R   RN   R_   R   R   (   R   RN   R_   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   9  s    			c         C` s   d |  j  |  j f S(   Ns   freevar(%s: %s)(   R_   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   E  s    c         C` s   |  j  S(   N(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   H  s    (   RW   RX   RY   R   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   3  s   		Rr   c           B` s8   e  Z d  Z d   Z d   Z d   Z e d    Z RS(   st   
    Attributes
    -----------
    - scope: Scope

    - name: str

    - loc: Loc
        Definition location
    c         C` sj   | d  k s! t | t  s! t  t | t  s6 t  t | t  sK t  | |  _ | |  _ | |  _ d  S(   N(	   R   Rq   t   ScopeR   R7   R   t   scopeR_   R   (   R   R   R_   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   X  s    !		c         C` s   d |  j  |  j f S(   Ns   Var(%s, %s)(   R_   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   a  s    c         C` s   |  j  S(   N(   R_   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   d  s    c         C` s   |  j  j d  S(   Nt   $(   R_   R#   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   is_tempg  s    (   RW   RX   RY   R   R   R   t   propertyR   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyRr   L  s
   
				R   c           B` s)   e  Z d  Z d   Z d   Z d   Z RS(   s  
    A low-level "intrinsic" function.  Suitable as the callable of a "call"
    expression.

    The given *name* is backend-defined and will be inserted as-is
    in the generated low-level IR.
    The *type* is the equivalent Numba signature of calling the intrinsic.
    c         C` s(   | |  _  | |  _ d  |  _ | |  _ d  S(   N(   R_   RU   R   R   R   (   R   R_   RU   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   v  s    			c         C` s   d |  j  |  j |  j f S(   Ns   Intrinsic(%s, %s, %s)(   R_   RU   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   |  s    c         C` s   |  j  S(   N(   R_   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    (   RW   RX   RY   R   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   l  s   		R   c           B` sh   e  Z d  Z d   Z d   Z d   Z d   Z d   Z e d  Z	 d   Z
 e d    Z d	   Z RS(
   s   
    Attributes
    -----------
    - parent: Scope
        Parent scope

    - localvars: VarMap
        Scope-local variable map

    - loc: Loc
        Start of scope location

    c         C` sg   | d  k s! t | t  s! t  t | t  s6 t  | |  _ t   |  _ | |  _ t	 t
  |  _ d  S(   N(   R   Rq   R   R   R   t   parentR]   t	   localvarsR   R   R   t	   redefined(   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    !		c         C` s5   t  d |  d | d |  } |  j j | j |  | S(   s#   
        Define a variable
        R   R_   R   (   Rr   R   Ra   R_   (   R   R_   R   Rz   (    (    s'   lib/python2.7/site-packages/numba/ir.pyRa     s    c         C` s6   | |  j  k r) d | |  j  | f } n  |  j |  S(   sC   
        Refer to a variable.  Returns the latest version.
        s   %s.%d(   R   t	   get_exact(   R   R_   (    (    s'   lib/python2.7/site-packages/numba/ir.pyRc     s    c         C` sH   y |  j  j |  SWn- t k
 rC |  j r= |  j j |  S  n Xd S(   sr   
        Refer to a variable.  The returned variable has the exact
        name (exact variable version).
        N(   R   Rc   R   t
   has_parentR   (   R   R_   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    	c         C` sw   | |  j  k r) d | |  j  | f } n  t d |  d | d |  } | |  j k rc |  j | |  S|  j j |  Sd  S(   Ns   %s.%dR   R_   R   (   R   Rr   R   Ra   Rc   (   R   R_   R   Rz   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   get_or_define  s    c         C` s{   | |  j  k r |  j | |  S| s5 |  j  j |  S|  j | } | d |  j | <d | | d f } |  j | |  Sd S(   s9   
        Redefine if the name is already defined
        i   s   %s.%dN(   R   Ra   Rc   R   (   R   R_   R   t   renamet   ctt   newname(    (    s'   lib/python2.7/site-packages/numba/ir.pyt   redefine  s    c         C` sH   t  |  j  } t d |  d d | d |  } |  j j | j |  | S(   NR   R_   s   $%dR   (   Re   R   Rr   Ra   R_   (   R   R   t   nRz   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt	   make_temp  s    c         C` s   |  j  d  k	 S(   N(   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` s    d |  j  t |  j  |  j f S(   Ns%   Scope(has_parent=%r, num_vars=%d, %s)(   R   Re   R   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    	(   RW   RX   RY   R   Ra   Rc   R   R   R   R   R   R   R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s   					
	t   Blockc           B` s   e  Z d  Z d   Z d   Z d d  Z d d  Z d   Z d   Z	 d   Z
 d   Z d	   Z d d
  Z e d    Z e d    Z d   Z d   Z d   Z d   Z RS(   s   A code block

    c         C` sI   t  | t  s t  t  | t  s* t  | |  _ g  |  _ | |  _ d  S(   N(   Rq   R   R   R   R   t   bodyR   (   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s
    		c         C` s&   t  |  j |  j  } |  j | _ | S(   N(   R   R   R   R   (   R   t   block(    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         c` sh   xa |  j  D]V } t | t  r
 | j } t | t  r` | d k sR | j | k r] | Vq] q` q
 q
 Wd S(   sE   
        Iterate over exprs of the given *op* in this block.
        N(   R   Rq   R   R   R   R   R   (   R   R   t   instt   expr(    (    s'   lib/python2.7/site-packages/numba/ir.pyt
   find_exprs  s    	c         c` s/   x( |  j  D] } t | |  r
 | Vq
 q
 Wd S(   sF   
        Iterate over insts of the given class in this block.
        N(   R   Rq   (   R   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt
   find_insts  s    c         C` s7   x0 |  j  d t  D] } | j j | k r | Sq Wd S(   sr   
        Returns the assignment inst associated with variable "name", None if
        it cannot be found.
        R   N(   R   R   R   R_   R   (   R   R_   R%   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   find_variable_assignment  s    c         C` s,   t  | t  s t  |  j j d |  d  S(   Ni    (   Rq   R{   R   R   t   insert(   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   prepend  s    c         C` s)   t  | t  s t  |  j j |  d  S(   N(   Rq   R{   R   R   RA   (   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyRA     s    c         C` s/   t  | t  s t  |  j |  j j |  =d  S(   N(   Rq   R{   R   R   RN   (   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   remove  s    c         C` s   |  j  2d  S(   N(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   clear  s    c         C` s|   | p t  j } xf |  j D][ } t | d  r> | j |  q t d   | j   D  } t d | | f d | q Wd  S(   Nt   dumpc         s` s   |  ] } t  |  Vq d  S(   N(   R7   (   R   Rz   (    (    s'   lib/python2.7/site-packages/numba/ir.pys	   <genexpr>%  s    s       %-40s %st   file(   t   syst   stdoutR   t   hasattrR  R   Rp   t   print(   R   R  R   t	   inst_vars(    (    s'   lib/python2.7/site-packages/numba/ir.pyR    s    c         C` s   |  j  d S(   Ni(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt
   terminator(  s    c         C` s   |  j  o |  j  d j S(   Ni(   R   R}   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   is_terminated,  s    c         C` sL   |  j  s t d   n  x- |  j d  D] } | j r& t d   q& q& Wd  S(   Ns   Missing block terminatoris&   Terminator before the last instruction(   R  R   R   R}   (   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   verify0  s
    		c         C` s-   |  j  j |  } |  j  j | d |  d S(   s.   
        Insert *stmt* after *other*.
        i   N(   R   RN   R   (   R   t   stmtt   otherRN   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   insert_after9  s    c         C` s;   t  | t  s t  |  j s$ t  |  j j d |  d  S(   Ni(   Rq   R{   R   R  R   R   (   R   R  (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   insert_before_terminator@  s    c         C` s   d |  j  f S(   Ns   <ir.Block at %s>(   R   (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   E  s    N(   RW   RX   RY   R   R   R   R   R   R   R   RA   R  R  R  R   R
  R  R  R  R  R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s"   			
				
				t   Loopc           B` s&   e  Z d  Z d Z d   Z d   Z RS(   s   Describes a loop-block
    t   entryt   exitc         C` s   | |  _  | |  _ d  S(   N(   R  R  (   R   R  R  (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   N  s    	c         C` s   |  j  |  j f } d | S(   Ns   Loop(entry=%s, exit=%s)(   R  R  (   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   R  s    (   R  R  (   RW   RX   RY   t	   __slots__R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR  I  s   	t   Withc           B` s&   e  Z d  Z d Z d   Z d   Z RS(   s   Describes a with-block
    R  R  c         C` s   | |  _  | |  _ d  S(   N(   R  R  (   R   R  R  (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   \  s    	c         C` s   |  j  |  j f } d | S(   Ns   With(entry=%s, exit=%s)(   R  R  (   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   `  s    (   R  R  (   RW   RX   RY   R  R   R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR  W  s   	t
   FunctionIRc           B` sk   e  Z d    Z d   Z d	 d	 e d  Z d   Z d   Z d   Z	 e d  Z
 d	 d  Z d	 d  Z RS(
   c         C` sM   | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ |  j   d  S(   N(   t   blockst   is_generatorR   R   t	   arg_countt	   arg_namest   _definitionst   _reset_analysis_variables(   R   R  R  R   R   t   definitionsR  R  (    (    s'   lib/python2.7/site-packages/numba/ir.pyR   g  s    							c         C` sA   d d l  m } | j |   |  _ d  |  _ d  |  _ i  |  _ d  S(   Ni   (   R   (   R4   R   t   ConstantInferencet   _constsR   t   generator_infot   variable_lifetimet   block_entry_vars(   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR  t  s
    		c         C` s   | t  |  } t j |   } | | _ | j | _ | rF t | _ n  | d k	 r^ | | _ n  | d k	 rv | | _ n  | j	   | j
 j   | _
 | S(   s   
        Derive a new function IR from this one, using the given blocks,
        and possibly modifying the argument count and generator flag.

        Post-processing will have to be run again on the new IR.
        N(   t   minR   R  R   R@   R  R   R  R  R  R   t   derive(   R   R  R  R  t   force_non_generatort
   firstblockt   new_ir(    (    s'   lib/python2.7/site-packages/numba/ir.pyR$    s    	
c         C` s   t  j  |   } i  } i  } xV |  j j   D]E \ } } | j    } | | | <| |  j k r+ |  j | | | <q+ q+ W| | _ | | _ | S(   N(   R   R  R   R"  (   R   R'  R  R"  t   labelR   t	   new_block(    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    
		c         C` s   |  j  | S(   sf   
        Return a set of variable names possibly alive at the beginning of
        the block.
        (   R"  (   R   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   get_block_entry_vars  s    c         C` s+   t  | t  r | j } n  |  j j |  S(   sF   
        Try to infer the constant value of a given variable.
        (   Rq   Rr   R_   R  R   (   R   R_   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    c         C` s   | } x t  r t | t  r0 | } | j } n, t | t  rN | } | } n | rX | S| S|  j | } t |  d k r t d | f   n  t |  d k r t d | f   n  | d } q	 Wd S(   s   
        Get the definition site for the given variable name or instance.
        A Expr instance is returned by default, but if lhs_only is set
        to True, the left-hand-side variable is returned instead.
        i    s   no definition for %ri   s   more than one definition for %rN(   R   Rq   Rr   R_   R7   R  Re   Rb   (   R   R   t   lhs_onlyR   R_   t   defs(    (    s'   lib/python2.7/site-packages/numba/ir.pyt   get_definition  s"    		c         C` s`   | p t  j } xJ t |  j j    D]3 \ } } t d | f d | | j d |  q% Wd  S(   Ns	   label %s:R  (   R  R  R   R  R   R  R  (   R   R  t   offsetR   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR    s    "c         C` s   | p t  j } |  j } t d t | j  d | xR t | j j    D]; \ } } t d | t | j  t | j	  f d | qJ Wd  S(   Ns   generator state variables:R  s>   yield point #%d: live variables = %s, weak live variables = %s(
   R  R  R   R  R   t
   state_varst   yield_pointsR   t	   live_varst   weak_live_vars(   R   R  t   giRN   t   yp(    (    s'   lib/python2.7/site-packages/numba/ir.pyt   dump_generator_info  s    	""N(   RW   RX   R   R  R   R@   R$  R   R*  R   R-  R  R5  (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR  e  s   					t   UndefinedTypec           B` s    e  Z d Z d    Z d   Z RS(   c         C` s5   |  j  } | d  k	 r | St j |   } | |  _  | S(   N(   t
   _singletonR   t   objectt   __new__(   R   t   obj(    (    s'   lib/python2.7/site-packages/numba/ir.pyR9    s    		c         C` s   d S(   Nt	   Undefined(    (   R   (    (    s'   lib/python2.7/site-packages/numba/ir.pyR     s    N(   RW   RX   R   R7  R9  R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyR6    s   		(F   t
   __future__R    R   R   t   collectionsR   R   R5   R/   R,   Rg   RZ   R  t   warningsR   t   typesR   R   t   numbaR   R   t   utilsR   R	   R
   R   R   R   R   R   t	   termcolorRC   R8  R   t   unknown_locR]   Rm   Rn   R{   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   Rr   R   R   R   R  R  R  R6  R   (    (    (    s'   lib/python2.7/site-packages/numba/ir.pyt   <module>   sh   "" ! ^hy