ó
\K]c           @   sR   d  d l  m Z m Z d d l m Z m Z e d ƒ d e f d „  ƒ  Yƒ Z d S(   iÿÿÿÿ(   t   irt   errorsi   (   t   register_rewritet   Rewrites   before-inferencet   DetectStaticBinopsc           B   s)   e  Z d  Z d h Z d „  Z d „  Z RS(   s5   
    Detect constant arguments to select binops.
    s   **c         C   s¾   i  |  _  i  |  _ | |  _ xx | j d d ƒ D]d } yD | j |  j k rw | j t j k rw | j | j	 ƒ |  j | <n  Wq. t
 j k
 r‘ q. q. Xq. Wt |  j  ƒ d k p½ t |  j ƒ d k S(   Nt   opt   binopi    (   t
   static_lhst
   static_rhst   blockt
   find_exprst   fnt   rhs_operatorsR    t	   UNDEFINEDt   infer_constantt   rhsR   t   ConstantInferenceErrort   len(   t   selft   func_irR	   t   typemapt	   calltypest   expr(    (    s:   lib/python2.7/site-packages/numba/rewrites/static_binop.pyt   match   s    			 c         C   s0   x& |  j  j ƒ  D] \ } } | | _  q W|  j S(   sI   
        Store constant arguments that were detected in match().
        (   R   t   itemsR	   (   R   R   R   (    (    s:   lib/python2.7/site-packages/numba/rewrites/static_binop.pyt   apply   s    (   t   __name__t
   __module__t   __doc__R   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/rewrites/static_binop.pyR      s   		N(   t   numbaR    R   t    R   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/rewrites/static_binop.pyt   <module>   s   