ó
\K]c           @@ sŒ	  d  d l  m Z m Z d  d l m Z d  d l m Z d  d l m Z m	 Z	 m
 Z
 d d l m Z d e f d „  ƒ  YZ e e	 j ƒ d	 e f d
 „  ƒ  Yƒ Z e e	 j ƒ d e f d „  ƒ  Yƒ Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ e e	 j ƒ e e	 j ƒ d e f d „  ƒ  Yƒ ƒ Z e e	 j ƒ e e	 j ƒ e e	 j ƒ e e	 j ƒ e e	 j ƒ e e	 j ƒ e e	 j ƒ e e	 j ƒ e e	 j  ƒ e e	 j! ƒ e e	 j" ƒ e e	 j# ƒ e e	 j$ ƒ e e	 j% ƒ e e	 j& ƒ e e	 j' ƒ e e	 j( ƒ e e	 j) ƒ e e	 j* ƒ e e	 j+ ƒ e e	 j, ƒ e e	 j- ƒ e e	 j. ƒ e e	 j/ ƒ e e	 j0 ƒ e e	 j1 ƒ d e f d „  ƒ  Yƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ Z2 e e	 j3 ƒ d e2 f d „  ƒ  Yƒ Z4 e e	 j5 ƒ e e	 j6 ƒ d e f d „  ƒ  Yƒ ƒ Z7 e e	 j8 ƒ d e f d „  ƒ  Yƒ Z9 e e	 j: ƒ d e f d „  ƒ  Yƒ Z; e e	 j< ƒ d e; f d „  ƒ  Yƒ Z= e e	 j> ƒ d e; f d  „  ƒ  Yƒ Z? e e	 j@ ƒ d! e f d" „  ƒ  Yƒ ZA e e	 jB ƒ e e	 jC ƒ d# e f d$ „  ƒ  Yƒ ƒ ZD d% e f d& „  ƒ  YZE d' eE f d( „  ƒ  YZF e e	 jG ƒ d) eF f d* „  ƒ  Yƒ ZH e e	 jI ƒ e e	 jJ ƒ d+ eF f d, „  ƒ  Yƒ ƒ ZK e e	 jL ƒ d- eF f d. „  ƒ  Yƒ ZM e e	 jN ƒ d/ eF f d0 „  ƒ  Yƒ ZO e e	 jP ƒ d1 eF f d2 „  ƒ  Yƒ ZQ e e	 jR ƒ d3 eF f d4 „  ƒ  Yƒ ZS e e	 jT ƒ d5 eF f d6 „  ƒ  Yƒ ZU e e	 jV ƒ d7 eF f d8 „  ƒ  Yƒ ZW e e	 jX ƒ d9 eF f d: „  ƒ  Yƒ ZY e e	 jZ ƒ d; eF f d< „  ƒ  Yƒ Z[ e e	 j\ ƒ e e	 j] ƒ e e	 j^ ƒ e e	 j_ ƒ e e	 j` ƒ e e	 ja ƒ d= eF f d> „  ƒ  Yƒ ƒ ƒ ƒ ƒ ƒ Zb e e	 jc ƒ d? eF f d@ „  ƒ  Yƒ Zd e e	 je ƒ dA eF f dB „  ƒ  Yƒ Zf e e	 jg ƒ dC eb f dD „  ƒ  Yƒ Zh e e	 ji ƒ dE eF f dF „  ƒ  Yƒ Zj e e	 jk ƒ dG eE f dH „  ƒ  Yƒ Zl e e	 jm ƒ dI e f dJ „  ƒ  Yƒ Zm e e	 jn ƒ dK e f dL „  ƒ  Yƒ Zn dM eF f dN „  ƒ  YZo dO eF f dP „  ƒ  YZp e e	 jq ƒ dQ eF f dR „  ƒ  Yƒ Zq e e	 jr ƒ dS eF f dT „  ƒ  Yƒ Zs e e	 jt ƒ e e	 ju ƒ dU e f dV „  ƒ  Yƒ ƒ Zv e e	 jw ƒ dW eF f dX „  ƒ  Yƒ Zw e e	 jx ƒ dY eF f dZ „  ƒ  Yƒ Zx e e	 jy ƒ d[ eF f d\ „  ƒ  Yƒ Zy e e	 jz ƒ d] eF f d^ „  ƒ  Yƒ Zz e e	 j{ ƒ d_ eE f d` „  ƒ  Yƒ Z| e e	 j} ƒ da eF f db „  ƒ  Yƒ Z~ e e	 j ƒ dc eF f dd „  ƒ  Yƒ Z€ e e	 j ƒ de eF f df „  ƒ  Yƒ Z‚ e e	 jƒ ƒ dg „  ƒ Z„ e e	 j… ƒ dh „  ƒ Z† e e	 j‡ ƒ di „  ƒ Zˆ e e	 j‰ ƒ dj eF f dk „  ƒ  Yƒ ZŠ e e	 j‹ ƒ dl eE f dm „  ƒ  Yƒ ZŒ dn S(o   i    (   t   print_functiont   absolute_import(   t   partial(   t   ir(   t   cgutilst   typest   numpy_supporti   (   t   register_defaultt	   DataModelc           B@ sï   e  Z d  Z d „  Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z 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 RS(   sô  
    DataModel describe how a FE type is represented in the LLVM IR at
    different contexts.

    Contexts are:

    - value: representation inside function body.  Maybe stored in stack.
    The representation here are flexible.

    - data: representation used when storing into containers (e.g. arrays).

    - argument: representation used for function argument.  All composite
    types are unflattened into multiple primitive types.

    - return: representation used for return argument.

    Throughput the compiler pipeline, a LLVM value is usually passed around
    in the "value" representation.  All "as_" prefix function converts from
    "value" representation.  All "from_" prefix function converts to the
    "value"  representation.

    c         C@ s   | |  _  | |  _ d  S(   N(   t   _dmmt   _fe_type(   t   selft   dmmt   fe_type(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   __init__"   s    	c         C@ s   |  j  S(   N(   R
   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   &   s    c         C@ s
   t  ‚ d  S(   N(   t   NotImplementedError(   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   get_value_type*   s    c         C@ s
   |  j  ƒ  S(   N(   R   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   get_data_type-   s    c         C@ s
   |  j  ƒ  S(   s8   Return a LLVM type or nested tuple of LLVM type
        (   R   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   get_argument_type0   s    c         C@ s
   |  j  ƒ  S(   N(   R   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   get_return_type5   s    c         C@ s
   t  ‚ d  S(   N(   R   (   R   t   buildert   value(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   as_data8   s    c         C@ s   t  |  ƒ ‚ d S(   s`   
        Takes one LLVM value
        Return a LLVM value or nested tuple of LLVM value
        N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   as_argument;   s    c         C@ s   t  |  ƒ ‚ d  S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt	   as_returnB   s    c         C@ s   t  |  ƒ ‚ d  S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt	   from_dataE   s    c         C@ s   t  |  ƒ ‚ d S(   sa   
        Takes a LLVM value or nested tuple of LLVM value
        Returns one LLVM value
        N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   from_argumentH   s    c         C@ s
   t  ‚ d  S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   from_returnO   s    c         C@ s   |  j  | | j | d | ƒƒ S(   s~   
        Load value from a pointer to data.
        This is the default implementation, sufficient for most purposes.
        t   align(   R   t   load(   R   R   t   ptrR   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   load_from_data_pointerR   s    c         C@ s   g  S(   s®   
        Traverse contained members.
        Returns a iterable of contained (types, getters).
        Each getter is a one-argument function accepting a LLVM value.
        (    (   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   traverseY   s    c         C@ s$   g  |  j  ƒ  D] } |  j | ^ q S(   sE   
        Recursively list all models involved in this model.
        (   t   traverse_typesR	   (   R   t   t(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   traverse_modelsa   s    c         C@ s   |  j  g |  j ƒ  S(   sM   
        Recursively list all frontend types involved in this model.
        (   R
   t   inner_types(   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR!   g   s    c         C@ s   g  S(   s2   
        List all *inner* frontend types.
        (    (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR$   m   s    c         C@ s   d S(   s   
        Returns the MemInfo object or None if it is not tracked.
        It is only defined for types.meminfo_pointer
        N(   t   None(   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   get_nrt_meminfos   s    c         C@ s   t  S(   N(   t   False(   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   has_nrt_meminfoz   s    c         C@ s   t  d „  |  j ƒ  Dƒ ƒ S(   sQ   
        Recursively check all contained types for need for NRT meminfo.
        c         s@ s   |  ] } | j  ƒ  Vq d  S(   N(   R(   (   t   .0t   model(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pys	   <genexpr>   s    (   t   anyR#   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   contains_nrt_meminfo}   s    c         C@ s   t  |  ƒ |  j f S(   N(   t   typeR
   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   _compared_fieldsƒ   s    c         C@ s   t  t |  j ƒ  ƒ ƒ S(   N(   t   hasht   tupleR.   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   __hash__†   s    c         C@ s6   t  |  ƒ t  | ƒ k r. |  j ƒ  | j ƒ  k St Sd  S(   N(   R-   R.   R'   (   R   t   other(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   __eq__‰   s    c         C@ s   |  j  | ƒ S(   N(   R3   (   R   R2   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   __ne__   s    N(   t   __name__t
   __module__t   __doc__R   t   propertyR   R   R   R   R   R   R   R   R   R   R   R%   R   R    R#   R!   R$   R&   R(   R,   R.   R1   R3   R4   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR      s2   																					t   OmittedArgDataModelc           B@ s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s”   
    A data model for omitted arguments.  Only the "argument" representation
    is defined, other representations raise a NotImplementedError.
    c         C@ s   d S(   N(    (    (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ›   s    c         C@ s   d S(   N(    (    (   R   R   t   val(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ž   s    c         C@ s   | d k s t  | ƒ ‚ d  S(   N(    (   t   AssertionErrorR%   (   R   R   R:   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ¡   s    (   R5   R6   R7   R   R   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR9   “   s   		t   BooleanModelc           B@ s€   e  Z e j d  ƒ Z e j d ƒ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z RS(   i   i   c         C@ s   |  j  S(   N(   t	   _bit_type(   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   «   s    c         C@ s   |  j  S(   N(   t
   _byte_type(   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ®   s    c         C@ s
   |  j  ƒ  S(   N(   R   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ±   s    c         C@ s
   |  j  ƒ  S(   N(   R   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ´   s    c         C@ s   | j  | |  j ƒ  ƒ S(   N(   t   zextR   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ·   s    c         C@ s   |  j  | | ƒ S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   º   s    c         C@ s   |  j  | | ƒ S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ½   s    c         C@ s­   |  j  ƒ  } t j | | ƒ } | j d | | j d ƒ ƒ } | j | ƒ S \ } } |  | j | d ƒ | ƒ Wd  QX|  | j | d ƒ | ƒ Wd  QXWd  QX| j | ƒ S(   Ns   ==i    i   (   R   R   t   alloca_oncet   icmp_unsignedR-   t   if_elset   storeR   (   R   R   R   t   tyt	   resallocat   condt   thent	   otherwise(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   À   s    "c         C@ s   |  j  | | ƒ S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ë   s    c         C@ s   |  j  | | ƒ S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Î   s    (   R5   R6   R   t   IntTypeR=   R>   R   R   R   R   R   R   R   R   R   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR<   ¦   s   									t   PrimitiveModelc           B@ sV   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   sZ   A primitive type can be represented natively in the target in all
    usage contexts.
    c         C@ s&   t  t |  ƒ j | | ƒ | |  _ d  S(   N(   t   superRJ   R   t   be_type(   R   R   R   RL   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ×   s    c         C@ s   |  j  S(   N(   RL   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Û   s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Þ   s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   á   s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ä   s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ç   s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ê   s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   í   s    (   R5   R6   R7   R   R   R   R   R   R   R   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRJ   Ò   s   							t
   ProxyModelc           B@ sh   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   sB   
    Helper class for models which delegate to another model.
    c         C@ s   |  j  j ƒ  S(   N(   t   _proxied_modelR   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ö   s    c         C@ s   |  j  j ƒ  S(   N(   RN   R   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ù   s    c         C@ s   |  j  j ƒ  S(   N(   RN   R   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ü   s    c         C@ s   |  j  j ƒ  S(   N(   RN   R   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ÿ   s    c         C@ s   |  j  j | | ƒ S(   N(   RN   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    c         C@ s   |  j  j | | ƒ S(   N(   RN   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    c         C@ s   |  j  j | | ƒ S(   N(   RN   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    c         C@ s   |  j  j | | ƒ S(   N(   RN   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    c         C@ s   |  j  j | | ƒ S(   N(   RN   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    c         C@ s   |  j  j | | ƒ S(   N(   RN   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    (   R5   R6   R7   R   R   R   R   R   R   R   R   R   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRM   ñ   s   									t	   EnumModelc           B@ s   e  Z d  Z d „  Z RS(   sA   
    Enum members are represented exactly like their values.
    c         C@ s2   t  t |  ƒ j | | ƒ | j | j ƒ |  _ d  S(   N(   RK   RO   R   t   lookupt   dtypeRN   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    (   R5   R6   R7   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRO     s   t   OpaqueModelc           B@ s,   e  Z d  Z e j d ƒ j ƒ  Z d „  Z RS(   s#   
    Passed as opaque pointers
    i   c         C@ s)   |  j  } t t |  ƒ j | | | ƒ d  S(   N(   t	   _ptr_typeRK   RR   R   (   R   R   R   RL   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   @  s    	(   R5   R6   R7   R   RI   t
   as_pointerRS   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRR      s   t   MemInfoModelc           B@ s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C@ s   |  j  j |  j j ƒ j ƒ  S(   N(   R	   RP   R
   RQ   R!   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR$   H  s    c         C@ s   t  S(   N(   t   True(   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR(   K  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR&   N  s    (   R5   R6   R$   R(   R&   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRU   E  s   		t   IntegerModelc           B@ s   e  Z d  „  Z RS(   c         C@ s2   t  j | j ƒ } t t |  ƒ j | | | ƒ d  S(   N(   R   RI   t   bitwidthRK   RW   R   (   R   R   R   RL   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   U  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRW   R  s   t
   FloatModelc           B@ s   e  Z d  „  Z RS(   c         C@ sh   | t  j k r t j ƒ  } n* | t  j k r< t j ƒ  } n t | ƒ ‚ t t |  ƒ j	 | | | ƒ d  S(   N(
   R   t   float32R   t	   FloatTypet   float64t
   DoubleTypeR   RK   RY   R   (   R   R   R   RL   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   \  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRY   Z  s   t   PointerModelc           B@ s   e  Z d  „  Z RS(   c         C@ sV   | j  | j ƒ |  _ |  j j ƒ  |  _ |  j j ƒ  } t t |  ƒ j | | | ƒ d  S(   N(	   RP   RQ   t   _pointee_modelR   t   _pointee_be_typeRT   RK   R^   R   (   R   R   R   RL   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   h  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR^   f  s   t   EphemeralPointerModelc           B@ s/   e  Z d  „  Z d „  Z d „  Z d d „ Z RS(   c         C@ s   |  j  S(   N(   R`   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   r  s    c         C@ s"   | j  | ƒ } |  j j | | ƒ S(   N(   R   R_   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   u  s    c         C@ s   t  d ƒ ‚ d  S(   Ns$   use load_from_data_pointer() instead(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   y  s    c         C@ s   | j  | |  j ƒ  ƒ S(   N(   t   bitcastR   (   R   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   |  s    N(   R5   R6   R   R   R   R%   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRa   o  s   			t   EphemeralArrayModelc           B@ s8   e  Z d  „  Z d „  Z d „  Z d „  Z d d „ Z RS(   c         C@ s;   t  t |  ƒ j | | ƒ t j |  j |  j j ƒ |  _ d  S(   N(	   RK   Rc   R   R   t	   ArrayTypeR`   R
   t   countt
   _data_type(   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ƒ  s    c         C@ s   |  j  S(   N(   Rf   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ˆ  s    c         C@ sM   g  t  |  j j ƒ D]$ } | j t j | | | ƒ ƒ ^ q } t j | | ƒ S(   N(   t   rangeR
   Re   R   R   t   gep_inboundst
   pack_array(   R   R   R   t   it   values(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ‹  s    :c         C@ s   t  d ƒ ‚ d  S(   Ns$   use load_from_data_pointer() instead(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    c         C@ s   | j  | |  j ƒ  ƒ S(   N(   Rb   R   (   R   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   “  s    N(   R5   R6   R   R   R   R   R%   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRc   €  s
   				t   ExternalFuncPointerModelc           B@ s   e  Z d  „  Z RS(   c         C@ s‡   | j  } | j | j ƒ j ƒ  } g  | j D] } | j | ƒ j ƒ  ^ q+ } t j t j | | ƒ ƒ } t t	 |  ƒ j
 | | | ƒ d  S(   N(   t   sigRP   t   return_typeR   t   argsR   t   PointerTypet   FunctionTypeRK   Rl   R   (   R   R   R   Rm   t   rettyR"   Ro   RL   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ™  s
    	+(   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRl   —  s   t   UniTupleModelc           B@ s}   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 „  Z d „  Z RS(   c         C@ sƒ   t  t |  ƒ j | | ƒ | j | j ƒ |  _ t | ƒ |  _ t j	 |  j j
 ƒ  |  j ƒ |  _ t j	 |  j j ƒ  |  j ƒ |  _ d  S(   N(   RK   Rs   R   RP   RQ   t   _elem_modelt   lent   _countR   Rd   R   t   _value_typeR   Rf   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ¦  s    c         C@ s   |  j  S(   N(   Rw   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ¯  s    c         C@ s   |  j  S(   N(   Rf   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ²  s    c         C@ s
   |  j  ƒ  S(   N(   R   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   µ  s    c         C@ s   |  j  j ƒ  f |  j S(   N(   Rt   R   Rv   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ¸  s    c         C@ s[   g  } xN t  |  j ƒ D]= } | j | | g ƒ } |  j j | | ƒ } | j | ƒ q W| S(   N(   Rg   Rv   t   extract_valueRt   R   t   append(   R   R   R   t   outRj   t   v(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   »  s    c         C@ si   t  j |  j ƒ  t  j ƒ } xG t | ƒ D]9 \ } } |  j j | | ƒ } | j | | | g ƒ } q( W| S(   N(   R   t   ConstantR   t	   Undefinedt	   enumerateRt   R   t   insert_value(   R   R   R   Rz   Rj   R{   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ã  s
    c         C@ s{   t  j |  j ƒ  t  j ƒ } xY t |  j ƒ D]H } | j | | g ƒ } |  j j | | ƒ } | j	 | | | g ƒ } q+ W| S(   N(
   R   R|   R   R}   Rg   Rv   Rx   Rt   R   R   (   R   R   R   Rz   Rj   R:   t   dval(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ê  s    c         C@ s{   t  j |  j ƒ  t  j ƒ } xY t |  j ƒ D]H } | j | | g ƒ } |  j j | | ƒ } | j	 | | | g ƒ } q+ W| S(   N(
   R   R|   R   R}   Rg   Rv   Rx   Rt   R   R   (   R   R   R   Rz   Rj   R:   R€   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ò  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ú  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ý  s    c         @ sD   ‡  f d †  } g  t  |  j ƒ D]! } |  j j t | | ƒ f ^ q S(   Nc         @ s   ˆ  j  | |  ƒ S(   N(   Rx   (   Rj   R   (   R   (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   getterá  s    (   Rg   Rv   R
   RQ   R   (   R   R   R   Rj   (    (   R   s5   lib/python2.7/site-packages/numba/datamodel/models.pyR    à  s    c         C@ s   |  j  j ƒ  S(   N(   Rt   R!   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR$   æ  s    (   R5   R6   R   R   R   R   R   R   R   R   R   R   R   R    R$   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRs   £  s   													t   CompositeModelc           B@ s   e  Z d  Z RS(   sW   Any model that is composed of multiple other models should subclass from
    this.
    (   R5   R6   R7   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR‚   ê  s   t   StructModelc           B@ sì   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	 „  Z d d
 „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@ s   t  t |  ƒ j | | ƒ | r: t | Œ  \ |  _ |  _ n d |  _ |  _ t g  |  j D] } |  j j | ƒ ^ qW ƒ |  _	 d  S(   N(    (
   RK   Rƒ   R   t   zipt   _fieldst   _membersR0   R	   RP   t   _models(   R   R   R   t   membersR"   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   õ  s
    c         C@ s   |  j  | ƒ } |  j | S(   sU   
        StructModel-specific: get the Numba type of the field named *name*.
        (   t   get_field_positionR†   (   R   t   namet   pos(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   get_member_fe_typeý  s    c         C@ sG   |  j  d  k r@ t j g  |  j D] } | j ƒ  ^ q ƒ |  _  n  |  j  S(   N(   Rw   R%   R   t   LiteralStructTypeR‡   R   (   R   R"   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    	(c         C@ sG   |  j  d  k r@ t j g  |  j D] } | j ƒ  ^ q ƒ |  _  n  |  j  S(   N(   Rf   R%   R   R   R‡   R   (   R   R"   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   
  s    	(c         C@ s&   t  g  |  j D] } | j ƒ  ^ q ƒ S(   N(   R0   R‡   R   (   R   R"   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    c         C@ s
   |  j  ƒ  S(   N(   R   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    c         C@ s^   g  } xK t  |  j ƒ D]: \ } } | j t | | ƒ | |  j | | | ƒ ƒ ƒ q Wt | ƒ S(   N(   R~   R‡   Ry   t   getattrt   getR0   (   R   t   methnameR   R   t	   extractedRj   t   dm(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   _as  s
    c   	      C@ s~   t  j |  j ƒ  t  j ƒ } x\ t t |  j | ƒ ƒ D]B \ } \ } } t | | ƒ | | ƒ } |  j | | | | ƒ } q4 W| S(   N(	   R   R|   R   R}   R~   R„   R‡   RŽ   t   set(	   R   R   R   R   t   structRj   R’   R:   R{   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   _from  s
    +c         C@ si   |  j  d | | ƒ } t j |  j ƒ  t j ƒ } x2 t | ƒ D]$ \ } } | j | | | g ƒ } q= W| S(   s,  
        Converts the LLVM struct in `value` into a representation suited for
        storing into arrays.

        Note
        ----
        Current implementation rarely changes how types are represented for
        "value" and "data".  This is usually a pointless rebuild of the
        immutable LLVM struct value.  Luckily, LLVM optimization removes all
        redundancy.

        Sample usecase: Structures nested with pointers to other structures
        that can be serialized into  a flat representation when storing into
        array.
        R   (   R“   R   R|   R   R}   R~   R   (   R   R   R   t   elemsR•   Rj   t   el(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   &  s
    c         C@ sJ   g  t  t |  j ƒ ƒ D] } | j | | g ƒ ^ q } |  j d | | ƒ S(   s©   
        Convert from "data" representation back into "value" representation.
        Usually invoked when loading from array.

        See notes in `as_data()`
        R   (   Rg   Ru   R†   Rx   R–   (   R   R   R   Rj   t   vals(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   <  s    4c   
      C@ s´   g  } xW t  |  j ƒ D]F \ } } t j | | d | ƒ } | j | | | ƒ } | j | ƒ q Wt j |  j ƒ  t j	 ƒ }	 x2 t  | ƒ D]$ \ } } |  j
 | |	 | | ƒ }	 qˆ W|	 S(   Ni    (   R~   R‡   R   Rh   R   Ry   R   R|   R   R}   R”   (
   R   R   R   R   Rk   Rj   R*   t   elem_ptrR:   R•   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   G  s    c         C@ s   |  j  d | | ƒ S(   NR   (   R“   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   S  s    c         C@ s   |  j  d | | ƒ S(   NR   (   R–   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   V  s    c         C@ si   |  j  d | | ƒ } t j |  j ƒ  t j ƒ } x2 t | ƒ D]$ \ } } | j | | | g ƒ } q= W| S(   NR   (   R“   R   R|   R   R}   R~   R   (   R   R   R   R—   R•   Rj   R˜   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Y  s
    c         C@ sJ   g  t  t |  j ƒ ƒ D] } | j | | g ƒ ^ q } |  j d | | ƒ S(   NR   (   Rg   Ru   R†   Rx   R–   (   R   R   R   Rj   R™   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   `  s    4c         C@ sE   t  | t ƒ r! |  j | ƒ } n  | j | | g d d |  j | ƒS(   s'  Get a field at the given position or the fieldname

        Args
        ----
        builder:
            LLVM IRBuilder
        val:
            value to be inserted
        pos: int or str
            field index or field name

        Returns
        -------
        Extracted value
        RŠ   s
   extracted.(   t
   isinstancet   strR‰   Rx   R…   (   R   R   R:   R‹   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   e  s    c         C@ sH   t  | t ƒ r! |  j | ƒ } n  | j | | | g d d |  j | ƒS(   sn  Set a field at the given position or the fieldname

        Args
        ----
        builder:
            LLVM IRBuilder
        stval:
            LLVM struct value
        val:
            value to be inserted
        pos: int or str
            field index or field name

        Returns
        -------
        A new LLVM struct with the value inserted
        RŠ   s	   inserted.(   R›   Rœ   R‰   R   R…   (   R   R   t   stvalR:   R‹   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR”   z  s    c         C@ sH   y |  j  j | ƒ SWn- t k
 rC t d |  j j | f ƒ ‚ n Xd  S(   Ns!   %s does not have a field named %r(   R…   t   indext
   ValueErrort   KeyErrort	   __class__R5   (   R   t   field(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR‰   ‘  s
    c         C@ s   t  |  j ƒ S(   N(   Ru   R…   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   field_count˜  s    c         C@ s,   t  | t ƒ r! |  j | ƒ } n  |  j | S(   s¼   Get the frontend type (numba type) of a field given the position
         or the fieldname

        Args
        ----
        pos: int or str
            field index or field name
        (   R›   Rœ   R‰   R†   (   R   R‹   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   get_typeœ  s    	c         C@ s   |  j  | S(   s¬   
        Get the datamodel of a field given the position or the fieldname.

        Args
        ----
        pos: int or str
            field index or field name
        (   R‡   (   R   R‹   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt	   get_model©  s    	c         @ sD   ‡  ‡ f d †  } g  ˆ j  D]$ } ˆ j | ƒ t | | ƒ f ^ q S(   Nc         @ sU   | j  ˆ j ƒ  k rB ˆ j ƒ  | j  f } t d j | Œ  ƒ ‚ n  ˆ j ˆ  | |  ƒ S(   Ns   expecting {0} but got {1}(   R-   R   t	   TypeErrort   formatR   (   t   kR   Ro   (   R   R   (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   µ  s    (   R…   R¤   R   (   R   R   R   R¨   (    (   R   R   s5   lib/python2.7/site-packages/numba/datamodel/models.pyR    ´  s    c         C@ s.   g  } x! |  j  D] } | | j ƒ  7} q W| S(   N(   R‡   R!   (   R   R   R’   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR$   ½  s    N(   R5   R6   R%   Rw   Rf   R   RŒ   R   R   R   R   R“   R–   R   R   R   R   R   R   R   R   R”   R‰   R8   R£   R¤   R¥   R    R$   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRƒ   ñ  s2   																						t   ComplexModelc           B@ s   e  Z e Z d  „  Z RS(   c         C@ s>   d | j  f d | j  f g } t t |  ƒ j | | | ƒ d  S(   Nt   realt   imag(   t   underlying_floatRK   R©   R   (   R   R   R   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   È  s    (   R5   R6   t   NotImplementedt   _element_typeR   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR©   Ä  s   t
   TupleModelc           B@ s   e  Z d  „  Z RS(   c         C@ sU   g  t  | ƒ D]" \ } } d t | ƒ | f ^ q } t t |  ƒ j | | | ƒ d  S(   Nt   f(   R~   Rœ   RK   R¯   R   (   R   R   R   Rj   R"   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ó  s    5(   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR¯   Ð  s   t	   PairModelc           B@ s   e  Z d  „  Z RS(   c         C@ s>   d | j  f d | j f g } t t |  ƒ j | | | ƒ d  S(   Nt   firstt   second(   t
   first_typet   second_typeRK   R±   R   (   R   R   R   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ú  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR±   Ø  s   t   ListPayloadModelc           B@ s   e  Z d  „  Z RS(   c         C@ sY   d t  j f d t  j f d t  j f d | j j f g } t t |  ƒ j | | | ƒ d  S(   Nt   sizet	   allocatedt   dirtyt   data(   R   t   intpt   booleant	   containerRQ   RK   R¶   R   (   R   R   R   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   â  s
    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR¶   à  s   t	   ListModelc           B@ s   e  Z d  „  Z RS(   c         C@ sS   t  j | ƒ } d t  j | ƒ f d t  j f g } t t |  ƒ j | | | ƒ d  S(   Nt   meminfot   parent(   R   t   ListPayloadt   MemInfoPointert   pyobjectRK   R¾   R   (   R   R   R   t   payload_typeRˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ó  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR¾   ñ  s   t   ListIterModelc           B@ s   e  Z d  „  Z RS(   c         C@ s_   t  j | j ƒ } d t  j | ƒ f d t  j t  j ƒ f g } t t |  ƒ j | | | ƒ d  S(   NR¿   Rž   (	   R   RÁ   R½   RÂ   t   EphemeralPointerR»   RK   RÅ   R   (   R   R   R   RÄ   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR      s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRÅ   þ  s   t   SetEntryModelc           B@ s   e  Z d  „  Z RS(   c         C@ sG   | j  j } d t j f d | f g } t t |  ƒ j | | | ƒ d  S(   NR/   t   key(   t   set_typeRQ   R   R»   RK   RÇ   R   (   R   R   R   RQ   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRÇ     s   t   SetPayloadModelc           B@ s   e  Z d  „  Z RS(   c         C@ s}   t  j | j ƒ } d t  j f d t  j f d t  j f d t  j f d t  j f d | f g } t t |  ƒ j | | | ƒ d  S(   Nt   fillt   usedt   maskt   fingerR¹   t   entries(   R   t   SetEntryR½   R»   R¼   RK   RÊ   R   (   R   R   R   t
   entry_typeRˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRÊ     s   t   SetModelc           B@ s   e  Z d  „  Z RS(   c         C@ sS   t  j | ƒ } d t  j | ƒ f d t  j f g } t t |  ƒ j | | | ƒ d  S(   NR¿   RÀ   (   R   t
   SetPayloadRÂ   RÃ   RK   RÒ   R   (   R   R   R   RÄ   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   -  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRÒ   +  s   t   SetIterModelc           B@ s   e  Z d  „  Z RS(   c         C@ s_   t  j | j ƒ } d t  j | ƒ f d t  j t  j ƒ f g } t t |  ƒ j | | | ƒ d  S(   NR¿   Rž   (	   R   RÓ   R½   RÂ   RÆ   R»   RK   RÔ   R   (   R   R   R   RÄ   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   9  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRÔ   7  s   t
   ArrayModelc           B@ s   e  Z d  „  Z RS(   c      
   C@ s­   | j  } d t j | j ƒ f d t j f d t j f d t j f d t j | j ƒ f d t j t j | ƒ f d t j t j | ƒ f g } t t	 |  ƒ j
 | | | ƒ d  S(   NR¿   RÀ   t   nitemst   itemsizeRº   t   shapet   strides(   t   ndimR   RÂ   RQ   RÃ   R»   t   CPointert   UniTupleRK   RÕ   R   (   R   R   R   RÚ   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   L  s    	(   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRÕ   E  s   t   ArrayFlagsModelc           B@ s   e  Z d  „  Z RS(   c         C@ s2   d | j  f g } t t |  ƒ j | | | ƒ d  S(   NRÀ   (   t
   array_typeRK   RÝ   R   (   R   R   R   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ]  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRÝ   [  s   t   SmartArrayModelc           B@ s   e  Z d  „  Z RS(   c         C@ s>   d t  j f d | j f g } t t |  ƒ j | | | ƒ d  S(   NRÀ   Rº   (   R   RÃ   t   as_arrayRK   Rß   R   (   R   R   R   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   f  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRß   d  s   t   NestedArrayModelc           B@ s   e  Z d  „  Z d „  Z RS(   c         C@ s8   | j  | j ƒ j ƒ  |  _ t t |  ƒ j | | ƒ d  S(   N(   RP   RQ   R   t   _be_typeRK   Rá   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   p  s    c         C@ s   t  j |  j |  j j ƒ } | S(   N(   R   Rd   Râ   R
   RÖ   (   R   t   ret(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   t  s    (   R5   R6   R   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRá   n  s   	t   OptionalModelc           B@ s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@ sS   d | j  f d t j f g } | j | j  ƒ |  _ t t |  ƒ j | | | ƒ d  S(   NRº   t   valid(   R-   R   R¼   RP   t   _value_modelRK   Rä   R   (   R   R   R   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   {  s    c         C@ s   |  j  j ƒ  S(   N(   Ræ   R   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ƒ  s    c         C@ s
   t  ‚ d  S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   †  s    c         C@ s   |  j  j | | ƒ S(   N(   Ræ   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ‰  s    c         @ sO   ‡  ‡ ‡ f d †  } ‡  ‡ f d †  ‰ ˆ j  d ƒ | f ˆ j  d ƒ ˆ f g S(   Nc         @ sC   ˆ |  ƒ } ˆ j  ˆ  |  d ƒ } ˆ  j | | t j | j d  ƒ ƒ S(   NRº   (   R   t   selectR   R|   R-   R%   (   R   Rå   Rº   (   R   t	   get_validR   (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   get_data  s    c         @ s   ˆ j  ˆ  |  d ƒ S(   NRå   (   R   (   R   (   R   R   (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRè   ‘  s    Rº   Rå   (   R¤   (   R   R   Ré   (    (   R   Rè   R   s5   lib/python2.7/site-packages/numba/datamodel/models.pyR    Œ  s    (   R5   R6   R   R   R   R   R    (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRä   y  s
   				t   RecordModelc           B@ sw   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 d „ Z RS(   c         C@ s   t  t |  ƒ j | | ƒ g  | j D] \ } } |  j j | ƒ ^ q# |  _ t j t j	 d ƒ | j
 ƒ |  _ |  j j ƒ  |  _ d  S(   Ni   (   RK   Rê   R   Rˆ   R	   RP   R‡   R   Rd   RI   R·   Râ   RT   t   _be_ptr_type(   R   R   R   t   _R"   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   š  s    1!c         C@ s   |  j  S(   s6   Passed around as reference to underlying data
        (   Rë   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR      s    c         C@ s   |  j  S(   N(   Rë   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ¥  s    c         C@ s   |  j  S(   N(   Rë   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ¨  s    c         C@ s   |  j  S(   N(   Râ   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   «  s    c         C@ s   | j  | ƒ S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ®  s    c         C@ s   t  d ƒ ‚ d  S(   Ns$   use load_from_data_pointer() instead(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ±  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ´  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ·  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   º  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ½  s    c         C@ s   | j  | |  j ƒ  ƒ S(   N(   Rb   R   (   R   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   À  s    N(   R5   R6   R   R   R   R   R   R   R   R   R   R   R   R%   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRê   ˜  s   											t   UnicodeCharSeqc           B@ s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C@ sK   t  t |  ƒ j | | ƒ t j t j d ƒ } t j | | j ƒ |  _	 d  S(   Ni   (
   RK   Rí   R   R   RI   R   t   sizeof_unicode_charRd   Re   Râ   (   R   R   R   t   charty(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Æ  s    c         C@ s   |  j  S(   N(   Râ   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ë  s    c         C@ s   |  j  S(   N(   Râ   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Î  s    (   R5   R6   R   R   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRí   Ä  s   		t   CharSeqc           B@ sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   c         C@ sD   t  t |  ƒ j | | ƒ t j d ƒ } t j | | j ƒ |  _ d  S(   Ni   (   RK   Rð   R   R   RI   Rd   Re   Râ   (   R   R   R   Rï   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ô  s    c         C@ s   |  j  S(   N(   Râ   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ù  s    c         C@ s   |  j  S(   N(   Râ   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Ü  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ß  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   â  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   å  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   è  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ë  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   î  s    (   R5   R6   R   R   R   R   R   R   R   R   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRð   Ò  s   								t   CContiguousFlatIterc           B@ s   e  Z d  „  Z RS(   c         C@ s®   | j  j d k s t ‚ | j  } | j } | j } d | f d t j f d t j t j ƒ f g } | rŽ | j d t j	 t j | ƒ f ƒ n  t
 t |  ƒ j | | | ƒ d  S(   Nt   Ct   arrayt   strideRž   t   indices(   RÞ   t   layoutR;   RQ   RÚ   R   R»   RÆ   Ry   t   EphemeralArrayRK   Rñ   R   (   R   R   R   t   need_indicesRÞ   RQ   RÚ   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ó  s    				%(   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRñ   ò  s   t   FlatIterc           B@ s   e  Z d  „  Z RS(   c         C@ s•   | j  } | j } | j } d | f d t j t j | ƒ | ƒ f d t j t j | ƒ f d t j t j ƒ f g } t	 t
 |  ƒ j | | | ƒ d  S(   NRó   t   pointersRõ   t	   exhausted(   RÞ   RQ   RÚ   R   R÷   RÛ   R»   RÆ   R¼   RK   Rù   R   (   R   R   R   RÞ   RQ   RÚ   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    				(   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRù     s   t   UniTupleIterc           B@ s   e  Z d  „  Z RS(   c         C@ sG   d t  j t  j ƒ f d | j f g } t t |  ƒ j | | | ƒ d  S(   NRž   R0   (   R   RÆ   R»   R½   RK   Rü   R   (   R   R   R   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRü     s   t
   SliceModelc           B@ s   e  Z d  „  Z RS(   c         C@ sJ   d t  j f d t  j f d t  j f g } t t |  ƒ j | | | ƒ d  S(   Nt   startt   stopt   step(   R   R»   RK   Rý   R   (   R   R   R   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyRý     s   t   NPDatetimeModelc           B@ s   e  Z d  „  Z RS(   c         C@ s/   t  j d ƒ } t t |  ƒ j | | | ƒ d  S(   Ni@   (   R   RI   RK   R  R   (   R   R   R   RL   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   $  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR  !  s   t   ArrayIteratorc           B@ s   e  Z d  „  Z RS(   c         C@ sG   d t  j t  j ƒ f d | j f g } t t |  ƒ j | | | ƒ d  S(   NRž   Ró   (   R   RÆ   t   uintpRÞ   RK   R  R   (   R   R   R   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   +  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR  )  s   t   EnumerateTypec           B@ s   e  Z d  „  Z RS(   c         C@ sG   d t  j t  j ƒ f d | j f g } t t |  ƒ j | | | ƒ d  S(   NRe   t   iter(   R   RÆ   R»   t   source_typeRK   R  R   (   R   R   R   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   4  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR  2  s   t   ZipTypec           B@ s   e  Z d  „  Z RS(   c         C@ sU   g  t  | j ƒ D] \ } } d | | j f ^ q } t t |  ƒ j | | | ƒ d  S(   Ns   iter%d(   R~   t   source_typest   iterator_typeRK   R  R   (   R   R   R   Rj   R  Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   =  s    2(   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR  ;  s   t   RangeIteratorTypec           B@ s   e  Z d  „  Z RS(   c         C@ se   | j  } d t j | ƒ f d | f d | f d t j | ƒ f g } t t |  ƒ j | | | ƒ d  S(   NR  Rÿ   R   Re   (   t
   yield_typeR   RÆ   RK   R
  R   (   R   R   R   t   int_typeRˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   E  s    			(   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR
  C  s   t   GeneratorModelc           B@ sk   e  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)  t  t |  ƒ j | | ƒ g  | j D]* } t | t j ƒ s# |  j j | ƒ ^ q# |  _	 g  | j
 D] } |  j j | ƒ ^ q` |  _ t j g  |  j	 D] } | j ƒ  ^ q‘ ƒ |  _ t j g  |  j D] } | j ƒ  ^ q¿ ƒ |  _ t j |  j j t j ƒ j ƒ  |  j |  j g ƒ |  _ |  j j ƒ  |  _ d  S(   N(   RK   R  R   t	   arg_typesR›   R   t   OmittedR	   RP   t   _arg_modelst   state_typest   _state_modelsR   R   R   t   _args_be_typet   _state_be_typet   int32R   Râ   RT   Rë   (   R   R   R   R"   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   P  s    -+((c         C@ s   |  j  S(   sH   
        The generator closure is passed around as a reference.
        (   Rë   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   a  s    c         C@ s   |  j  S(   N(   Rë   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   g  s    c         C@ s   |  j  S(   N(   Râ   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   j  s    c         C@ s   |  j  S(   N(   Râ   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   m  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   p  s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   s  s    c         C@ s   |  j  | | ƒ S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   v  s    c         C@ s   |  j  | | ƒ S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   y  s    c         C@ s   | j  | ƒ S(   N(   R   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   |  s    c         C@ s)   t  j | | j ƒ } | j | | ƒ | S(   N(   R   R@   R-   RC   (   R   R   R   t   stack(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    (   R5   R6   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR  N  s   										t   ArrayCTypesModelc           B@ s   e  Z d  „  Z RS(   c         C@ sP   d t  j | j ƒ f d t  j | j ƒ f g } t t |  ƒ j | | | ƒ d  S(   NRº   R¿   (   R   RÛ   RQ   RÂ   RK   R  R   (   R   R   R   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ‡  s    (   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR  …  s   t
   RangeModelc           B@ s   e  Z d  „  Z RS(   c         C@ sM   | j  j } d | f d | f d | f g } t t |  ƒ j | | | ƒ d  S(   NRþ   Rÿ   R   (   R	  R  RK   R  R   (   R   R   R   R  Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s
    		(   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR  Ž  s   t   NdIndexModelc           B@ s   e  Z d  „  Z RS(   c         C@ st   | j  } d t j t j | ƒ f d t j t j | ƒ f d t j t j ƒ f g } t t |  ƒ j	 | | | ƒ d  S(   NRØ   Rõ   Rû   (
   RÚ   R   RÜ   R»   R÷   RÆ   R¼   RK   R  R   (   R   R   R   RÚ   Rˆ   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   œ  s
    	(   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR  š  s   c         C@ s6   | j  j d k r% t |  | d t ƒSt |  | ƒ Sd  S(   NRò   Rø   (   RÞ   Rö   Rñ   R'   Rù   (   R   RD   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   handle_numpy_flat_type¥  s    c         C@ s6   | j  j d k r% t |  | d t ƒSt |  | ƒ Sd  S(   NRò   Rø   (   RÞ   Rö   Rñ   RV   Rù   (   R   RD   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   handle_numpy_ndenumerate_type¬  s    c         C@ s   |  | j  S(   N(   t   this(   R   RD   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   handle_bound_function³  s    t   NdIterc           B@ s   e  Z d  „  Z RS(   c         C@ s„  | j  } | j } | j r! | n d } d t j t j ƒ f d t j | ƒ f d t j t j | ƒ f d t j	 t j | ƒ f g } x‚ t
 | j ƒ D]q \ } } | \ }	 }
 } } d | } |	 d k rê | j | t j t j ƒ f ƒ q” |	 d k rù q” d s” t ‚ q” WxX t
 | j  ƒ D]G \ } } t | t j ƒ sd | } | j | t j | ƒ f ƒ qqWt t |  ƒ j | | | ƒ d  S(   Ni   Rû   t   arraysRØ   Rõ   s   index%dt   flatt   scalart   indexedt   0di    s   scalar%d(   R!  R"  R#  (   R  RÚ   t   need_shaped_indexingR   RÆ   R¼   t   TupleRÜ   R»   R÷   R~   t   indexersRy   R;   R›   t   ArrayRK   R  R   (   R   R   R   t   array_typesRÚ   t	   shape_lenRˆ   Rj   t   subt   kindt	   start_dimt   end_dimRì   t   member_nameRD   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   »  s(    		
"
#(   R5   R6   R   (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR  ¹  s   t   DeferredStructModelc           B@ s³   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 „  Z d d „ Z d „  Z d „  Z d „  Z e d „  ƒ Z d „  Z RS(   c         C@ sD   t  t |  ƒ j | | ƒ d j t | ƒ ƒ |  _ | j ƒ  |  _ d  S(   Ns   deferred.{0}(   RK   R/  R   R§   t   idt   typenameR   t   actual_fe_type(   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   Þ  s    c         C@ s   t  j j |  j d ƒ S(   Ns   .value(   R   t   global_contextt   get_identified_typeR1  (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ã  s    c         C@ s   t  j j |  j d ƒ S(   Ns   .data(   R   R3  R4  R1  (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   æ  s    c         C@ s   |  j  j ƒ  S(   N(   t   _actual_modelR   (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   é  s    c         C@ s%   |  j  | | ƒ } |  j j | | ƒ S(   N(   R   R5  R   (   R   R   R   t   inner(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ì  s    c         C@ s.   |  j  j | | ƒ } |  j | |  j ƒ  | ƒ S(   N(   R5  R   R”   t   make_uninitialized(   R   R   R   t   res(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ð  s    c         C@ sP   |  j  ƒ  |  j | | ƒ } |  j j | | ƒ } |  j ƒ  } |  j | | | ƒ S(   N(   t   _defineR   R5  R   R7  R”   (   R   R   R   t   elemRz   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   ô  s
    
c         C@ sV   |  j  ƒ  |  j | | ƒ } |  j j | | ƒ } |  j d d ƒ } |  j | | | ƒ S(   NR+  Rº   (   R9  R   R5  R   R7  R”   (   R   R   R   R:  Rz   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR   û  s
    
c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    c         C@ s   | S(   N(    (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    c         C@ s   | j  | d g ƒ S(   Ni    (   Rx   (   R   R   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR     s    c         C@ s   | j  | | d g ƒ S(   Ni    (   R   (   R   R   R   t   content(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR”     s    R   c         C@ sD   |  j  ƒ  | d k r% |  j ƒ  } n |  j ƒ  } t j | t j ƒ S(   NR   (   R9  R   R   R   R|   R}   (   R   R+  RD   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR7    s
    
c         C@ s6   |  j  ƒ  } |  j | ƒ |  j ƒ  } |  j | ƒ d  S(   N(   R   t   _define_value_typeR   t   _define_data_type(   R   t   valtyt   datty(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR9    s    c         C@ s&   | j  r" | j |  j j ƒ  ƒ n  d  S(   N(   t	   is_opaquet   set_bodyR5  R   (   R   t
   value_type(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR<    s    	c         C@ s&   | j  r" | j |  j j ƒ  ƒ n  d  S(   N(   R@  RA  R5  R   (   R   t	   data_type(    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR=     s    	c         C@ s   |  j  j |  j ƒ S(   N(   R	   RP   R2  (   R   (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR5  $  s    c         @ s   |  j  ‡  f d †  f g S(   Nc         @ s   ˆ  j  |  d g ƒ S(   Ni    (   Rx   (   R   (   R   (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   <lambda>*  t    (   R2  (   R   R   (    (   R   s5   lib/python2.7/site-packages/numba/datamodel/models.pyR    (  s    (   R5   R6   R   R   R   R   R   R   R   R   R   R   R   R”   R7  R9  R<  R=  R8   R5  R    (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyR/  Ü  s$   															N(   t
   __future__R    R   t	   functoolsR   t   llvmliteR   t   numbaR   R   R   t   registryR   t   objectR   R  R9   t   BooleanR<   RJ   RM   t
   EnumMembert   IntEnumMemberRO   t   Opaquet   PyObjectt
   RawPointert   NoneTypet   StringLiteralt   EllipsisTypet   Functiont   Typet   Objectt   Modulet   Phantomt   ContextManagert
   Dispatchert   ObjModeDispatchert   ExceptionClasst   Dummyt   ExceptionInstancet   ExternalFunctiont   Macrot	   EnumClasst   IntEnumClasst   NumberClasst   TypeReft   NamedTupleClasst   DTypet   RecursiveCallRR   RÂ   RU   t   Integert   IntegerLiteralRW   t   FloatRY   RÛ   R^   RÆ   Ra   R÷   Rc   t   ExternalFunctionPointerRl   RÜ   t   NamedUniTupleRs   R‚   Rƒ   t   ComplexR©   R%  t
   NamedTupleR¯   t   PairR±   RÁ   R¶   t   ListR¾   t   ListIterRÅ   RÐ   RÇ   RÓ   RÊ   t   SetRÒ   t   SetIterRÔ   R'  t   Buffert	   ByteArrayt   Bytest
   MemoryViewt   PyArrayRÕ   t
   ArrayFlagsRÝ   t   SmartArrayTypeRß   t   NestedArrayRá   t   OptionalRä   t   RecordRê   Rí   Rð   Rñ   Rù   Rü   t	   SliceTypeRý   t
   NPDatetimet   NPTimedeltaR  R  R  R  R
  t	   GeneratorR  t   ArrayCTypesR  t	   RangeTypeR  t   NumpyNdIndexTypeR  t   NumpyFlatTypeR  t   NumpyNdEnumerateTypeR  t   BoundFunctionR  t   NumpyNdIterTypeR  t   DeferredTypeR/  (    (    (    s5   lib/python2.7/site-packages/numba/datamodel/models.pyt   <module>   s  ˆ+$	aEÓ%	
+	
6
"