ó
\K]c           @` sY  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z d  d l	 m
 Z
 m Z d  d l m Z m Z m Z m Z m Z m Z m Z d  d l m Z d  d l m Z e d d	 d
 d f ƒ Z d „  Z e e j ƒ d e f d „  ƒ  Yƒ Z e e j ƒ d e f d „  ƒ  Yƒ Z d „  Z e d e f d „  ƒ  Yƒ Z e d e f d „  ƒ  Yƒ Z e d e f d „  ƒ  Yƒ Z  e d e f d „  ƒ  Yƒ Z! e d e f d „  ƒ  Yƒ Z" e d e f d „  ƒ  Yƒ Z# e d e f d „  ƒ  Yƒ Z$ e d  e f d! „  ƒ  Yƒ Z% e d" e f d# „  ƒ  Yƒ Z& d$ „  Z' d% „  Z( d& „  Z) d' „  Z* d( „  Z+ d) „  Z, d* „  Z- d+ „  Z. d, „  Z/ x! d- d. g D] Z0 e/ e0 e( ƒ q|We/ d/ e) ƒ e/ d0 e* ƒ x! d1 d2 g D] Z0 e/ e0 e+ ƒ qºWx d3 g D] Z1 e/ e1 e, ƒ qÛWx! d4 d5 g D] Z1 e/ e1 e- ƒ qÿWe/ d6 e. ƒ e/ d7 e. ƒ e e j2 ƒ d8 e f d9 „  ƒ  Yƒ Z3 d S(:   i    (   t   print_functiont   divisiont   absolute_importN(   t
   namedtuple(   t   typest   utils(   t   AttributeTemplatet   AbstractTemplatet   infert   infer_globalt   infer_getattrt	   signaturet   bound_function(   t   collections(   t   TypingErrort   Indexingt   indext   resultt   advancedc         ` s  t  |  t j ƒ s d S|  j } g  } g  } t } t } t } t  | t j ƒ s[ | g } n  xr| D]j} | t j k rœ | r“ t d | f ƒ ‚ n  t } nt  | t j	 ƒ r± nt  | t j
 ƒ rñ | j rÕ t j n t j } | d 8} t } nÂ t  | t j ƒ r:| j d k r:t  | j t j
 ƒ r:| d 8} t } ny t  | t j ƒ r| j d k rt  | j t j
 t j f ƒ r| s…| r”t d ƒ ‚ n  t } n t d | | f ƒ ‚ | r¿| n | j | ƒ qb W| rít  |  t j ƒ ríd S| | }	 | r | d t j k st ‚ | d =n  t |	 ƒ | }
 |
 |  j k r[t d |  |
 | f ƒ ‚ n  |
 |  j k r‰| d k r‰| r‰|  j } n<| r°|  j d | d	 d
 d t ƒ } n|  j r½d S|  j } d „  ‰  ‡  f d †  } | d
 k r3|
 |  j k r| | } g  } n  | rd } q•| | ƒ s•d } q•nb | d k r•|
 |  j k ra| | } g  } n  | rpd } q•| | d d d … ƒ s•d } q•n  | d k r­|  j } n |  j d | d	 | ƒ } t  | t j ƒ rìt j j |	 ƒ } n	 |	 \ } t | | | ƒ S(   s¹   
    Returns None or a tuple-3 for the types of the input array, index, and
    resulting type of ``array[index]``.

    Note: This is shared logic for ndarray getitem and setitem.
    Ns1   only one ellipsis allowed in array index (got %s)i   i    s!   only one advanced index supporteds%   unsupported array index type %s in %ss#   cannot index %s with %d indices: %st   ndimt   layoutt   Ct   readonlyc         S` sA   |  t  j k p@ t |  t  j ƒ p@ | o@ t |  t  j ƒ o@ |  j S(   N(   R   t   ellipsist
   isinstancet   Integert	   SliceTypet   has_step(   t   tyt   is_innermost(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   keeps_contiguityk   s    !c         ` sJ   x% |  d  D] } ˆ  | t  ƒ s t  Sq W|  rF ˆ  |  d t ƒ rF t  St S(   sš   
            Whether indexing with the given indices (from outer to inner in
            physical layout order) can keep an array contiguous.
            iÿÿÿÿ(   t   Falset   True(   t   outer_indicesR   (   R   (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   check_contiguityr   s    t   At   Fiÿÿÿÿ(   R   R   t   BufferR   R   t	   BaseTupleR   t	   TypeErrorR    R   R   t   signedt   intpt   uintpt   Arrayt   dtypet   Booleant   NotImplementedErrort   appendt   AssertionErrort   lent   copyt   slice_is_copyR   t
   from_typesR   (   t   aryt   idxR   t   left_indicest   right_indicest   ellipsis_metR   t   has_integerR   t   all_indicest	   n_indicest   resR   R"   (    (   R   s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   get_array_index_type   sš    		
	!
		

"!			
		
			t   GetItemBufferc           B` s   e  Z d  „  Z RS(   c         C` sN   | s t  ‚ | \ } } t | | ƒ } | d  k	 rJ t | j | | j ƒ Sd  S(   N(   R0   R>   t   NoneR   R   R   (   t   selft   argst   kwsR5   R6   t   out(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   generic¤   s
    (   t   __name__t
   __module__RE   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyR?   ¢   s   t   SetItemBufferc           B` s   e  Z d  „  Z RS(   c   	      C` sÊ  | s t  ‚ | \ } } } t | t j ƒ s2 d  S| j sQ t d | f ƒ ‚ n  t | | ƒ } | d  k rp d  S| j } | j	 } t | t j
 ƒ rEt | t j
 ƒ rÎ |  j j | j | j ƒ sÅ d  S| } q´t | t j ƒ r| j d k r|  j j | j | j ƒ r| } qBd  Sq´|  j j | | j ƒ r>| j } q´d  Sno t | t j
 ƒ s°|  j j | | ƒ s§| j ƒ  s | j d | ƒ } t t j | | | ƒ Sd  Sn  | } n d  St t j | | | ƒ S(   Ns   Cannot modify value of type %si   R,   (   R0   R   R   R%   t   mutableR'   R>   R@   R   R   R+   t   contextt   can_convertR,   t   SequenceR   t
   is_preciseR2   R   t   none(	   RA   RB   RC   R5   R6   t   valRD   R=   t   newary(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyRE   ­   sB    						(   RF   RG   RE   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyRH   «   s   c         C` s–   t  |  t j ƒ r^ t  |  j t j ƒ r’ |  j j r< t j n t j } t j | t |  ƒ ƒ Sn4 t  |  t j	 ƒ r’ |  j
 d k r’ t j t j d ƒ Sd  S(   Ni    (   R   R   t   UniTupleR,   R   R(   R)   R*   R1   t   Tuplet   count(   t   shapet   dimtype(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   normalize_shapeá   s    !t   ArrayAttributec           B` s   e  Z e j 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 d „  Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d  „  ƒ Z e d! ƒ d" „  ƒ Z e d# ƒ d$ „  ƒ Z e d% ƒ d& „  ƒ Z d' „  Z  RS((   c         C` s   t  j | j ƒ S(   N(   R   t   DTypeR,   (   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_dtypeð   s    c         C` s   t  j S(   N(   R   R)   (   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_itemsizeó   s    c         C` s   t  j t  j | j ƒ S(   N(   R   RQ   R)   R   (   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_shapeö   s    c         C` s   t  j t  j | j ƒ S(   N(   R   RQ   R)   R   (   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_stridesù   s    c         C` s   t  j S(   N(   R   R)   (   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_ndimü   s    c         C` s   t  j S(   N(   R   R)   (   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_sizeÿ   s    c         C` s   t  j | ƒ S(   N(   R   t   NumpyFlatType(   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_flat  s    c         C` s   t  j | ƒ S(   N(   R   t   ArrayCTypes(   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_ctypes  s    c         C` s   t  j | ƒ S(   N(   R   t
   ArrayFlags(   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_flags  s    c         C` sQ   | j  d k r | } n5 i d d 6d d 6j | j d ƒ } | j d | ƒ } | S(   Ni   R$   R   R#   R   (   R   t   getR   R2   (   RA   R5   t   rettyR   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt	   resolve_T  s
    	#c         C` s   |  j  | d d ƒS(   Nt   attrt   real(   t   _resolve_real_imag(   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_real  s    c         C` s   |  j  | d d ƒS(   NRh   t   imag(   Rj   (   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_imag  s    c         C` sŸ   | j  t j k r. | j d | j  j d d ƒ S| j  t j k rz | j d | j  ƒ } | d k rv | j d t ƒ } n  | Sd } t | j | | j  ƒ ƒ ‚ d  S(   NR,   R   R#   Rl   R   s    cannot access .{} of array of {}(	   R,   R   t   complex_domainR2   t   underlying_floatt   number_domainR    R   t   format(   RA   R5   Rh   R=   t   msg(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyRj     s    s   array.transposec         ` s@  d „  ‰  | s t  ‚ t | ƒ d k r; t |  j | ƒ ƒ St | ƒ d k rÎ | \ } ˆ  | ƒ r„ | j d k sw t  ‚ t | | Œ St | ƒ } | d  k r  d  S| j | j k s¸ t  ‚ t |  j | ƒ | ƒ St ‡  f d †  | Dƒ ƒ rt	 d j
 d j | ƒ ƒ ƒ ‚ n  | j t | ƒ k s&t  ‚ t |  j | ƒ | Œ Sd  S(   Nc         S` sE   |  t  j k r= t |  t  j ƒ s9 t d j |  ƒ ƒ ‚ n  t St Sd  S(   Ns   transpose() arg cannot be {0}(   R   Rp   R   R   R'   Rq   R    R   (   R   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   sentry_shape_scalar'  s
    i    i   c         3` s   |  ] } ˆ  | ƒ Vq d  S(   N(    (   t   .0t   a(   Rs   (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pys	   <genexpr>C  s    s   transpose({0}) is not supporteds   , (   R0   R1   R   Rg   R   RV   R@   RS   t   anyR'   Rq   t   join(   RA   R5   RB   RC   RT   (    (   Rs   s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_transpose%  s&    				s
   array.copyc         C` s<   | s t  ‚ | s t  ‚ | j d d d t ƒ } t | ƒ S(   NR   R   R   (   R0   R2   R   R   (   RA   R5   RB   RC   Rf   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_copyI  s    s
   array.itemc         C` s$   | s t  ‚ | s  t | j ƒ Sd  S(   N(   R0   R   R,   (   RA   R5   RB   RC   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_itemP  s    s   array.itemsetc         C` s6   | s t  ‚ t | ƒ d k r2 t t j | j ƒ Sd  S(   Ni   (   R0   R1   R   R   RN   R,   (   RA   R5   RB   RC   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_itemsetY  s    s   array.nonzeroc         C` sZ   | s t  ‚ | s t  ‚ t | j d ƒ } t j t j t j d d ƒ | ƒ } t | ƒ S(   Ni   R   (   R0   t   maxR   R   RQ   R+   R)   R   (   RA   R5   RB   RC   R   Rf   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_nonzerob  s
    $s   array.reshapec         ` s8  d „  ‰  | s t  ‚ | j d k r4 t d ƒ ‚ n  t | ƒ d k r¨ | \ } ˆ  | ƒ rd d } n% t | ƒ } | d  k r€ d  S| j } | j d | ƒ } t | | ƒ St | ƒ d k rÉ t d ƒ ‚ nk t	 ‡  f d †  | Dƒ ƒ rt d	 j
 d
 j t t | ƒ ƒ ƒ ƒ ‚ n  | j d t | ƒ ƒ } t | | Œ Sd  S(   Nc         S` sE   |  t  j k r= t |  t  j ƒ s9 t d j |  ƒ ƒ ‚ n  t St Sd  S(   Ns   reshape() arg cannot be {0}(   R   Rp   R   R   R'   Rq   R    R   (   R   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyRs   m  s
    t   CFs(   reshape() supports contiguous array onlyi   R   i    s   reshape() take at least one argc         3` s   |  ] } ˆ  | ƒ Vq d  S(   N(    (   Rt   Ru   (   Rs   (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pys	   <genexpr>  s    s   reshape({0}) is not supporteds   , (   R0   R   R'   R1   RV   R@   RS   R2   R   Rv   Rq   Rw   t   mapt   str(   RA   R5   RB   RC   RT   R   Rf   (    (   Rs   s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_reshapek  s*    						!s
   array.sortc         C` s:   | s t  ‚ | s t  ‚ | j d k r6 t t j ƒ Sd  S(   Ni   (   R0   R   R   R   RN   (   RA   R5   RB   RC   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_sort–  s    s   array.argsortc         C` sÐ   | s t  ‚ t | ƒ } | j d t j d ƒ ƒ } | rq d } t | j g  | j ƒ  D] } | ^ qV ƒ ƒ ‚ n  | j d k rÌ d d „ } t	 j
 | ƒ }	 t t j t j d d ƒ | ƒ j d |	 ƒ }
 |
 Sd  S(   Nt   kindt	   quicksorts   Unsupported keywords: {!r}i   c         S` s   d  S(   N(    (   Rƒ   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   argsort_stub¦  s    R   t   pysig(   R0   t   dictt   popR   t   StringLiteralR   Rq   t   keysR   R   t   pysignatureR   R+   R)   t   replace(   RA   R5   RB   RC   t   kwargsRƒ   Rr   t   kR…   R†   t   sig(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_argsort  s    1-s
   array.viewc         C` sa   d d l  m } | s t ‚ | \ } | | ƒ } | d  k rB d  S| j d | ƒ } t | | Œ S(   Ni   (   t   _parse_dtypeR,   (   t   npydeclR‘   R0   R@   R2   R   (   RA   R5   RB   RC   R‘   R,   Rf   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_view¬  s    	s   array.astypec         C` sÅ   d d l  m } | s t ‚ | \ } | | ƒ } | d  k rB d  S|  j j | j | ƒ s| t d | | | j | f ƒ ‚ n  | j d k r” | j n d } | j	 d | d | d t
 ƒ } t | | Œ S(	   Ni   (   R‘   s<   astype(%s) not supported on %s: cannot convert from %s to %sR~   R   R,   R   R   (   R’   R‘   R0   R@   RJ   RK   R,   R'   R   R2   R   R   (   RA   R5   RB   RC   R‘   R,   R   Rf   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_astype·  s    	s   array.ravelc         C` s6   | s t  ‚ | s t  ‚ t | j d d d d ƒ ƒ S(   NR   i   R   R   (   R0   R   R2   (   RA   R5   RB   RC   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_ravelÉ  s    s   array.flattenc         C` s6   | s t  ‚ | s t  ‚ t | j d d d d ƒ ƒ S(   NR   i   R   R   (   R0   R   R2   (   RA   R5   RB   RC   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_flattenÐ  s    s
   array.takec         C` sÿ   | s t  ‚ | \ } t | t j ƒ r= t | j | Œ } n¾ t | t j ƒ rv t | j d d d | j ƒ | Œ } n… t | t j ƒ r¬ t t j | j d d ƒ | Œ } nO t | t j	 ƒ rë t t j | j t
 j | ƒ d ƒ | Œ } n t d | ƒ ‚ | S(   NR   R   R,   i   s   take(%s) not supported for %s(   R0   R   R   R   R   R,   R+   R2   t   ListR&   t   npR   R'   (   RA   R5   RB   RC   t   argtyR   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_take×  s    	'$-c         C` sP   t  | j t j ƒ rL | | j j k rL | j d | j j | ƒ d d ƒ Sn  d  S(   NR,   R   R#   (   R   R,   R   t   Recordt   fieldsR2   t   typeof(   RA   R5   Rh   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   generic_resolveç  s    (!   RF   RG   R   R+   t   keyRY   RZ   R[   R\   R]   R^   R`   Rb   Rd   Rg   Rk   Rm   Rj   R   Rx   Ry   Rz   R{   R}   R   R‚   R   R“   R”   R•   R–   Rš   Rž   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyRW   ì   s8   														$			+t	   DTypeAttrc           B` s#   e  Z e j Z d  „  Z d „  Z RS(   c         C` s   t  j | j ƒ S(   N(   R   t   NumberClassR,   (   RA   R5   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_typeò  s    c         C` sS   t  | j t j j ƒ r! d } n% t  | j t j j ƒ rB d } n d  St j | ƒ S(   Nt   ft   i(   R   RŸ   R   t   scalarst   FloatR   R@   R‰   (   RA   R5   RO   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_kindö  s    		(   RF   RG   R   RX   RŸ   R¢   R§   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyR    î  s   		t   StaticGetItemArrayc           B` s   e  Z d  Z d „  Z RS(   t   static_getitemc         C` sŒ   | \ } } t  | t j ƒ rˆ t  | t ƒ rˆ t  | j t j ƒ rˆ | | j j k rˆ | j d | j j | ƒ d d ƒ } t	 | | Œ Sn  d  S(   NR,   R   R#   (
   R   R   R+   R€   R,   R›   Rœ   R2   R   R   (   RA   RB   RC   R5   R6   t   ret(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyRE     s    !$(   RF   RG   RŸ   RE   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyR¨   ÿ  s   t   RecordAttributec           B` s   e  Z e j Z d  „  Z RS(   c         C` s   | j  | ƒ } | s t ‚ | S(   N(   R   R0   (   RA   t   recordRh   Rª   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyRž     s    (   RF   RG   R   R›   RŸ   Rž   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyR«     s   	t   StaticGetItemRecordc           B` s   e  Z d  Z d „  Z RS(   R©   c         C` sY   | \ } } t  | t j ƒ rU t  | t ƒ rU | j | ƒ } | sH t ‚ t | | Œ Sd  S(   N(   R   R   R›   R€   R   R0   R   (   RA   RB   RC   R¬   R6   Rª   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyRE     s
    !(   RF   RG   RŸ   RE   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyR­     s   t   StaticSetItemRecordc           B` s   e  Z d  Z d „  Z RS(   t   static_setitemc         C` s€   | \ } } } t  | t j ƒ r| t  | t ƒ r| | j | ƒ } |  j j | | ƒ d  k	 r| t t j	 | t j
 | ƒ | ƒ Sn  d  S(   N(   R   R   R›   R€   R   RJ   RK   R@   R   t   voidt   literal(   RA   RB   RC   R¬   R6   t   valuet
   expectedty(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyRE   &  s
    !(   RF   RG   RŸ   RE   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyR®   "  s   t   ArrayCTypesAttributec           B` s   e  Z e j Z d  „  Z RS(   c         C` s   t  j S(   N(   R   R*   (   RA   t   ctinfo(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_data3  s    (   RF   RG   R   Ra   RŸ   R¶   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyR´   /  s   	t   ArrayFlagsAttributec           B` s,   e  Z e j Z d  „  Z d „  Z d „  Z RS(   c         C` s   t  j S(   N(   R   t   boolean(   RA   t   ctflags(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_contiguous;  s    c         C` s   t  j S(   N(   R   R¸   (   RA   R¹   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_c_contiguous>  s    c         C` s   t  j S(   N(   R   R¸   (   RA   R¹   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   resolve_f_contiguousA  s    (   RF   RG   R   Rc   RŸ   Rº   R»   R¼   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyR·   7  s   			t   NestedArrayAttributec           B` s   e  Z e j Z RS(    (   RF   RG   R   t   NestedArrayRŸ   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyR½   E  s   c         C` s_   t  |  t j ƒ r> |  j r+ t t j |  ƒ St t j |  ƒ Sn t  |  t j ƒ rW t j S|  Sd S(   sI   
    If *ty* is an integer, expand it to a machine int (like Numpy).
    N(   R   R   R   R(   R|   R)   R*   R-   (   R   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   _expand_integerJ  s    	c         C` s3   | s t  ‚ | s t  ‚ t |  j j d |  j ƒS(   Nt   recvr(   R0   R   t   thisR,   (   RA   RB   RC   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   generic_homogX  s    c         C` s9   | s t  ‚ | s t  ‚ t t |  j j ƒ d |  j ƒS(   NRÀ   (   R0   R   R¿   RÁ   R,   (   RA   RB   RC   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   generic_expand]  s    c         C` s  d } | rD d „  } t j | ƒ } t | ƒ | d g } d } n  t | ƒ } | d k sb t ‚ | d k r• t t |  j j	 ƒ d |  j | Œ} nm |  j j
 d k r¶ |  j j	 } n4 t j d t |  j j	 ƒ d |  j j
 d d d	 ƒ } t | d |  j | Œ} | j d
 | ƒ S(   s>   
    sum can be called with or without an axis parameter.
    c         S` s   d  S(   N(    (   t   axis(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   sum_stubh  s    RÄ   i   i    RÀ   R,   R   R   R   R†   N(   R@   R   R‹   t   listR1   R0   R   R¿   RÁ   R,   R   R   R+   RŒ   (   RA   RB   RC   R†   RÅ   t   args_lenRD   t   return_type(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt
   sum_expandb  s"    		c         C` sr   | s t  ‚ | s t  ‚ t |  j t j ƒ s5 t  ‚ t j d t |  j j ƒ d d d d ƒ } t | d |  j ƒS(   NR,   R   i   R   R   RÀ   (   R0   R   RÁ   R   R+   R¿   R,   R   (   RA   RB   RC   RÈ   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   generic_expand_cumulative‚  s    c         C` sj   | s t  ‚ | s t  ‚ t |  j j t j t j f ƒ rQ t t j d |  j ƒSt |  j j d |  j ƒS(   NRÀ   (	   R0   R   RÁ   R,   R   R   R-   R   t   float64(   RA   RB   RC   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   generic_hetero_realŠ  s
    !c         C` sž   | s t  ‚ | s t  ‚ t |  j j t j t j f ƒ rQ t t j d |  j ƒSt |  j j t j	 ƒ r… t |  j j j
 d |  j ƒSt |  j j d |  j ƒS(   NRÀ   (   R0   R   RÁ   R,   R   R   R-   R   RË   t   ComplexRo   (   RA   RB   RC   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   generic_hetero_always_real‘  s    !c         C` s0   | s t  ‚ | s t  ‚ t t j d |  j ƒS(   NRÀ   (   R0   R   R   R)   RÁ   (   RA   RB   RC   (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   generic_indexš  s    c         ` sX   i d |  d 6| d 6} t  d |  t f | ƒ ‰  ‡  f d †  } t t d |  | ƒ d  S(   Ns   array.RŸ   RE   t   Array_c         ` s   t  j ˆ  | ƒ S(   N(   R   t   BoundFunction(   RA   R5   (   t
   temp_class(    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   array_attribute_attachment¢  s    t   resolve_(   t   typeR   t   setattrRW   (   t   nameRE   t   my_attrRÓ   (    (   RÒ   s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   install_array_methodŸ  s    t   minR|   t   prodt   sumt   cumsumt   cumprodt   meant   vart   stdt   argmint   argmaxt   CmpOpEqArrayc           B` s   e  Z d  „  Z RS(   c         C` sZ   | s t  ‚ | \ } } t | t j ƒ rV | | k rV t | j d t j ƒ | | ƒ Sd  S(   NR,   (   R0   R   R   R+   R   R2   R¸   (   RA   RB   RC   t   vat   vb(    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyRE   Æ  s    (   RF   RG   RE   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyRä   Â  s   (4   t
   __future__R    R   R   t   numpyR˜   t   operatorR   R   t   numbaR   R   t   numba.typing.templatesR   R   R   R	   R
   R   R   t   numba.typingt   numba.errorsR   R   R>   t   getitemR?   t   setitemRH   RV   RW   R    R¨   R«   R­   R®   R´   R·   R½   R¿   RÂ   RÃ   RÉ   RÊ   RÌ   RÎ   RÏ   RÙ   t   fnamet   fNamet   eqRä   (    (    (    s5   lib/python2.7/site-packages/numba/typing/arraydecl.pyt   <module>   sp   4	5	ÿ 				 							