
\K]c           @` s  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 m	 Z	 d  d l
 m Z m Z d  d l
 j j Z d  d l m Z d  d l j Z d  d l m Z d  d l m Z m Z m Z m Z m Z e d  k re j Z e j Z e j  Z! e j" Z# n  d
 e$ f d     YZ% e%   Z& e%   Z' e%   Z( e& j) Z* e' j) Z+ e( j) Z, d e d d!  f d     YZ- d e d d"  f d     YZ. d e d d#  f d     YZ/ d e$ f d     YZ0 d e$ f d     YZ1 e d d$  Z2 d e$ f d     YZ3 d S(%   i    (   t   print_functiont   divisiont   absolute_import(   t
   namedtupleN(   t   ir(   t   Typet   Constant(   t	   PYVERSION(   t   config(   t   typest   utilst   cgutilst   loweringt
   _helperlibi   t	   _Registryc           B` s&   e  Z d    Z d   Z d d  Z RS(   c         C` s   i  |  _  d  S(   N(   t	   functions(   t   self(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   __init__   s    c         ` s.   t   t j  s t     f d   } | S(   Nc         ` s6      j  k r% t d  f   n  |    j   <|  S(   Ns   duplicate registration for %s(   R   t   KeyError(   t   func(   R   t	   typeclass(    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   decorator   s    (   t
   issubclassR	   R   t   AssertionError(   R   R   R   (    (   R   R   s.   lib/python2.7/site-packages/numba/pythonapi.pyt   register   s    c         C` sR   t  | t j  s t  x3 | j D]( } |  j j |  } | d  k	 r" | Sq" W| S(   N(   R   R	   R   R   t   __mro__R   t   gett   None(   R   R   t   defaultt   clsR   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   lookup&   s    N(   t   __name__t
   __module__R   R   R   R   (    (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR      s   			t   _BoxContextt   contextt   buildert   pyapit   env_managerc           B` s   e  Z d  Z d Z d   Z RS(   s<   
    The facilities required by boxing implementations.
    c         C` s   |  j  j | | |  j  S(   N(   R$   t   from_native_valueR%   (   R   t   typt   val(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   box>   s    (    (   R   R    t   __doc__t	   __slots__R)   (    (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR!   7   s   t   _UnboxContextc           B` s   e  Z d  Z d Z d   Z RS(   s>   
    The facilities required by unboxing implementations.
    c         C` s   |  j  j | |  S(   N(   R$   t   to_native_value(   R   R'   t   obj(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   unboxI   s    (    (   R   R    R*   R+   R/   (    (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR,   B   s   t   _ReflectContextt   is_errorc           B` s/   e  Z d  Z d Z d   Z d   Z d   Z RS(   s@   
    The facilities required by reflection implementations.
    c         C` s   |  j  j |  j t j  d  S(   N(   R#   t   storeR1   R   t   true_bit(   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   set_errorV   s    c         C` s   |  j  j | | |  j  S(   N(   R$   R&   R%   (   R   R'   R(   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR)   Y   s    c         C` s   |  j  j | | |  j  S(   N(   R$   t   reflect_native_valueR%   (   R   R'   R(   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   reflect\   s    (    (   R   R    R*   R+   R4   R)   R6   (    (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR0   M   s
   		t   NativeValuec           B` s   e  Z d  Z d d d  Z RS(   s   
    Encapsulate the result of converting a Python object to a native value,
    recording whether the conversion was successful and how to cleanup.
    c         C` s4   | |  _  | d  k	 r | n t j |  _ | |  _ d  S(   N(   t   valueR   R   t	   false_bitR1   t   cleanup(   R   R8   R1   R:   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR   f   s    	N(   R   R    R*   R   R   (    (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR7   `   s   t   EnvironmentManagerc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` s@   t  | t j  s t  | |  _ | |  _ | |  _ | |  _ d  S(   N(   t
   isinstanceR   t   EnvironmentR   R$   t   envt   env_bodyt   env_ptr(   R   R$   R>   R?   R@   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR   n   s
    			c         C` s}   t  | t  r! t j |  } n  xU t |  j j  D] \ } } | | k r4 Pq4 q4 Wt |  j j  } |  j j j |  | S(   sF   
        Add a constant to the environment, return its index.
        (	   R<   t   strR
   t   internt	   enumerateR>   t   constst   lent   append(   R   t   constt   indexR(   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   add_constu   s    c         C` s7   | t  |  j j  k  s t  |  j j |  j j |  S(   sx   
        Look up constant number *index* inside the environment body.
        A borrowed reference is returned.
        (   RE   R>   RD   R   R$   t   list_getitemR?   (   R   RH   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   read_const   s    (   R   R    R   RI   RK   (    (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR;   l   s   		t   _IteratorLoopR8   t   do_breakt	   PythonAPIc           B` sM  e  Z d  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 e j e 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, d(   Z- d)   Z. d*   Z/ d+   Z0 d,   Z1 d-   Z2 d.   Z3 e d/  Z4 e d0  Z5 e d1  Z6 e d2  Z7 e d3  Z8 e d4  Z9 e d5  Z: e d6  Z; e d7  Z< e d8  Z= e d9  Z> e d:  Z? e d;  Z@ e d<  ZA e d=  ZB d>   ZC d?   ZD d@   ZE dA   ZF dB   ZG dC   ZH dD   ZI dE   ZJ dF   ZK dG   ZL dH   ZM dI   ZN dJ   ZO dK   ZP dL   ZQ dM   ZR dN   ZS dO   ZT dP   ZU dQ   ZV dR   ZW dS   ZX dT   ZY dU   ZZ d dV  Z[ dW   Z\ dX   Z] dY   Z^ dZ   Z_ d[   Z` e j d\    Za d]   Zb d^   Zc d_   Zd d`   Ze da   Zf db   Zg dc   Zh dd   Zi de   Zj d df  Zk d d dg  Zl dh   Zm di   Zn dj   Zo dk   Zp dl   Zq dm   Zr dn   Zs do   Zt dp   Zu dq   Zv dr   Zw ds   Zx dt   Zy du   Zz dv   Z{ dw   Z| dx   Z} dy   Z~ dz   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 d   Z d   Z d   Z 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 d   Z d d  Z d 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 d   Z RS(   s^   
    Code generation facilities to call into the CPython C API (and related
    helpers).
    c         C` s  d d l  m } | |  _ | |  _ | j j j |  _ y |  j j Wn t k
 ra i  |  j _ n X|  j j	 t
 j  |  _ |  j j   |  _ t j t j d   |  _ t j t j t j  d  |  _ |  j |  _ t j t j t j  d  |  _ |  j |  _ t j   |  _ |  j j t
 j  |  _ t j t j d   |  _ t j t  j! d  |  _" t# j$ t# j% d  t  j&  |  _' t( d k r|  j |  _) n |  j |  _) t( d k rt  j* |  _* t  j+ |  _+ t  j, |  _, t  j- |  _- n  d S(   sL   
        Note: Maybe called multiple times when lowering a function
        i    (   t   boxingi   i   N(   i   i    (   i   i   (.   t   numba.targetsRO   R"   R#   t   basic_blockt   functiont   modulet   _PythonAPI__serializedt   AttributeErrort   get_argument_typeR	   t   pyobjectt   pyobjt
   as_pointert   pyobjptrR   t   pointert   intt   voidptrt   ctypest   sizeoft   c_longt   longt   ulongt   c_ulonglongt   longlongt	   ulonglongt   doublet   get_value_typet   intpt
   py_ssize_tt   cstringR   t   py_gil_state_sizet	   gil_stateR   t	   ArrayTypet   IntTypet   py_buffer_sizet   py_buffer_tR   t	   py_hash_tt   py_unicode_1byte_kindt   py_unicode_2byte_kindt   py_unicode_4byte_kindt   py_unicode_wchar_kind(   R   R"   R#   RO   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR      s8    		""!c         C` s   t  |  | | |  S(   N(   R;   (   R   R>   R?   R@   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   get_env_manager   s    c         C` s   t  j |  j |  } t  j |  j |  z | r |  j j j j } | j |  j k s[ t	  |  j
 d d  |  j j |  j    n |  j j j |  j t d  Wd QXd S(   s;   Emits LLVM code to ensure the `envptr` is not NULL
        t   PyExc_RuntimeErrors   missing EnvironmentN(   s   missing Environment(   R   t   is_nullR#   t   if_unlikelyRR   t   typet   pointeet   return_typeRX   R   t   err_set_stringt   rett   get_null_objectR"   t	   call_convt   return_user_exct   RuntimeError(   R   t   envptrt   return_pyobjectRx   t   fnty(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   emit_environment_sentry   s    	c         C` sM   t  j t  j   |  j g  } |  j | d d } |  j j | | g  d  S(   Nt   namet	   Py_IncRef(   R   RR   t   voidRX   t   _get_functionR#   t   call(   R   R.   R   t   fn(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   incref   s    c         C` sM   t  j t  j   |  j g  } |  j | d d } |  j j | | g  d  S(   NR   t	   Py_DecRef(   R   RR   R   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   decref   s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   numba_py_type(   R   RR   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   get_type   s    c         G` s   t  j t  j d   } t  j |  } |  j |  j | | g } t  j t  j   | d t }	 |  j |	 d d }
 |  j j |
 | | | | g t	 |   S(   Ni   t   var_argR   t   PyArg_ParseTupleAndKeywords(
   R   R[   R\   RX   RR   t   TrueR   R#   R   t   list(   R   t   argst   kwst   fmtt   keywordst   objst   charptrt
   charptraryt   argtypesR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   parse_tuple_and_keywords   s    c         G` s}   t  j t  j d   } |  j | g } t  j t  j   | d t } |  j | d d } |  j j | | | g t	 |   S(   Ni   R   R   t   PyArg_ParseTuple(
   R   R[   R\   RX   RR   R   R   R#   R   R   (   R   R   R   R   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   parse_tuple   s
    c   
      G` s   t  j t  j d   } |  j | |  j |  j g } t  j t  j   | d t } |  j | d d }	 t j |  j |  } t j |  j |  } t	 | t
  r |  j j |  j j |  } n  |  j j |	 | | | | g t |   S(   Ni   R   R   t   PyArg_UnpackTuple(   R   R[   R\   RX   Ri   RR   R   R   R   R<   RA   R"   t   insert_const_stringR#   RS   R   R   (
   R   R   R   t   n_mint   n_maxR   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   unpack_tuple   s    c         C` s=   t  j |  j d  } |  j | d d } |  j j | d  S(   NR   t   PyErr_Occurred(    (    (   R   RR   RX   R   R#   R   (   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   err_occurred  s    c         C` s@   t  j t  j   d  } |  j | d d } |  j j | d  S(   NR   t   PyErr_Clear(    (    (   R   RR   R   R   R#   R   (   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   err_clear  s    c         C` s   t  j t  j   |  j |  j g  } |  j | d d } t | t  rZ |  j |  } n  t | t  r |  j	 j
 |  j |  } n  |  j j | | | f  S(   NR   t   PyErr_SetString(   R   RR   R   RX   Rj   R   R<   RA   t   get_c_objectR"   R   RS   R#   R   (   R   t   exctypet   msgR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR}     s    $c         G` s   t  j t  j   |  j |  j g d t } |  j | d d } t | t  r` |  j	 |  } n  t | t  r |  j
 j |  j |  } n  |  j j | | | f t |   S(   NR   R   t   PyErr_Format(   R   RR   R   RX   Rj   R   R   R<   RA   R   R"   R   RS   R#   R   t   tuple(   R   R   R   t   format_argsR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   err_format  s    *c         C` sd   t  j t  j   |  j g  } |  j | d d } | d k rN |  j   } n  |  j j | | f  S(   s   
        Raise an arbitrary exception (type or value or (type, args)
        or None - if reraising).  A reference to the argument is consumed.
        R   t   numba_do_raiseN(	   R   RR   R   RX   R   R   t	   make_noneR#   R   (   R   t   excR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   raise_object#  s
    c         C` ss   t  j t  j   |  j |  j g  } |  j | d d } t | t  rZ |  j |  } n  |  j j	 | | | f  S(   NR   t   PyErr_SetObject(
   R   RR   R   RX   R   R<   RA   R   R#   R   (   R   R   t   excvalR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   err_set_object.  s
    $c         C` sj   t  j t  j   |  j g  } |  j | d d } t | t  rT |  j |  } n  |  j j	 | | f  S(   NR   t   PyErr_SetNone(
   R   RR   R   RX   R   R<   RA   R   R#   R   (   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   err_set_none5  s
    c         C` sI   t  j t  j   |  j g  } |  j | d d } |  j j | | f  S(   NR   t   PyErr_WriteUnraisable(   R   RR   R   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   err_write_unraisable<  s    c         C` sS   t  j t  j   |  j g d  } |  j | d d } |  j j | | | | f  S(   Ni   R   t   PyErr_Fetch(   R   RR   R   RZ   R   R#   R   (   R   t   ptyt   pvalt   ptbR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   err_fetchA  s    "c         C` sS   t  j t  j   |  j g d  } |  j | d d } |  j j | | | | f  S(   Ni   R   t   PyErr_Restore(   R   RR   R   RX   R   R#   R   (   R   t   tyR(   t   tbR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   err_restoreF  s    "c         c` s>  g  t  d  D] } t j |  j |  j  ^ q \ } } } |  j | | |  d V|  j j |  } |  j j |  } |  j j |  } | r't j |  j |  j    }	 |  j j	 |	 d t
 a \ }
 } |
 , |  j |  |  j |  |  j |  Wd QX|  |  j | | |  Wd QXWd QXn |  j | | |  d S(   s  
        Temporarily push the current error indicator while the code
        block is executed.  If *keep_new* is True and the code block
        raises a new error, the new error is kept, otherwise the old
        error indicator is restored at the end of the block.
        i   Nt   likely(   t   rangeR   t   alloca_onceR#   RX   R   t   loadt   is_not_nullR   t   if_elset   FalseR   R   (   R   t   keep_newt   iR   R   R   R   R(   R   t	   new_errort   if_errort   if_ok(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   err_pushK  s"    7!"c         C` s%   |  j  j |  j |  j j | d t S(   s   
        Get a Python object through its C-accessible *name*
        (e.g. "PyExc_ValueError").  The underlying variable must be
        a `PyObject *`, and the value of that pointer is returned.
        t	   dllimport(   R"   t   get_c_valueR#   RX   R{   R   (   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR   h  s    c         C` s6   d | } |  j  j |  j |  } |  j d |  d  S(   Ns   global name '%s' is not definedt   PyExc_NameError(   R"   R   RS   R}   (   R   R   R   t   cstr(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   raise_missing_global_errors  s    
c         C` s6   d | } |  j  j |  j |  } |  j d |  d  S(   Ns   name '%s' is not definedR   (   R"   R   RS   R}   (   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   raise_missing_name_errorx  s    
c         C` su   t  j t  j   |  j g  } |  j | d d } | j j d  |  j j |  j	 |  } |  j
 j | | f  d  S(   NR   t   Py_FatalErrort   noreturn(   R   RR   R   Rj   R   t
   attributest   addR"   R   RS   R#   R   (   R   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   fatal_error}  s
    c         C` sg   t  j |  j |  j |  j g  } |  j | d d } |  j j |  j |  } |  j j	 | | | g  S(   sF   Lookup name inside dict

        Returns a borrowed reference
        R   t   PyDict_GetItemString(
   R   RR   RX   Rj   R   R"   R   RS   R#   R   (   R   t   dicR   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   dict_getitem_string  s    !c         C` sO   t  j |  j |  j |  j g  } |  j | d d } |  j j | | | g  S(   sF   Lookup name inside dict

        Returns a borrowed reference
        R   t   PyDict_GetItem(   R   RR   RX   R   R#   R   (   R   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   dict_getitem  s    !i    c         C` s   | d k rI t  j |  j d  } |  j | d d } |  j j | d  St  j |  j |  j g  } |  j | d d } |  j j | t j |  j |  g  Sd  S(   Ni    R   t
   PyDict_Newt   _PyDict_NewPresized(    (    (	   R   RR   RX   R   R#   R   Ri   R   R\   (   R   t   presizeR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   dict_new  s    c         C` s[   t  j t  j   |  j |  j |  j f  } |  j | d d } |  j j | | | | f  S(   NR   t   PyDict_SetItem(   R   RR   R\   RX   R   R#   R   (   R   t   dictobjt   nameobjt   valobjR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   dict_setitem  s    c         C` ss   t  j t  j   |  j |  j |  j f  } |  j | d d } |  j j |  j |  } |  j	 j
 | | | | f  S(   NR   t   PyDict_SetItemString(   R   RR   R\   RX   Rj   R   R"   R   RS   R#   R   (   R   R   R   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   dict_setitem_string  s
    c      	   C` sP   |  j    } |  j |  / x' | D] \ } } |  j | | |  q# WWd QX| S(   sb   
        Args
        -----
        keyvalues: iterable of (str, llvm.Value of PyObject*)
        N(   R   t   if_object_okR   (   R   t	   keyvaluesR   t   kt   v(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   dict_pack  s
    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyFloat_FromDouble(   R   RR   RX   Rf   R   R#   R   (   R   t   fvalR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   float_from_double  s    c         C` s^   t  j |  j |  j |  j g  } |  j | d d } |  j d  } |  j j | | | g  S(   NR   t   PyNumber_AsSsize_tt   PyExc_OverflowError(   R   RR   Ri   RX   R   R   R#   R   (   R   t   numobjR   R   t	   exc_class(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_as_ssize_t  s    !c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyNumber_Long(   R   RR   RX   R   R#   R   (   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_long  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyLong_AsUnsignedLongLong(   R   RR   Re   RX   R   R#   R   (   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   long_as_ulonglong  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyLong_AsLongLong(   R   RR   Re   RX   R   R#   R   (   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   long_as_longlong  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   s   
        Convert the given Python integer to a void*.  This is recommended
        over number_as_ssize_t as it isn't affected by signedness.
        R   t   PyLong_AsVoidPtr(   R   RR   R]   RX   R   R#   R   (   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   long_as_voidptr  s    c         C` s  t  j |  j | g  } |  j | d | } t j |  j |  j  } t d k  rt  j |  j |  j g  } |  j | d d }	 t	 j
 | t j  }
 | r t	 j
 | t j  } |  j j |  j j t j | |  |  j j t j | |
   } n |  j j t j | |
  } |  j j |   \ } } | H |  j j | |  j  } |  j j |	 | g  } |  j j | |  Wd  QX| 0 |  j j | | g  } |  j j | |  Wd  QXWd  QXn: |  j | d | } |  j j |  j j | | g  |  |  j j |  S(   NR   i   i    t   PyInt_FromLong(   i   i    (   R   RR   RX   R   R   R   R#   R   Ra   R   R\   R   t   long_maxt   long_mint   and_t   icmpt   lct   ICMP_SGEt   ICMP_SLEt   ICMP_ULER   t   truncR   R2   R   (   R   t   ivalt	   func_namet   native_int_typet   signedR   R   t   resptrt
   pyint_fntyt   pyint_fnR  R  t	   use_pyintt   thent	   otherwiset   downcast_ivalt   res(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   _long_from_native_int  s0    	!"%c         C` sa   t  d k  r d } n d } t j |  j |  j g  } |  j | d | } |  j j | | g  S(   Ni   i    R  t   PyLong_FromLongR   (   i   i    (   R   R   RR   RX   Ra   R   R#   R   (   R   R  R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   long_from_long
  s    	c         C` s   |  j  | d |  j d t S(   Nt   PyLong_FromUnsignedLongR  (   R  Ra   R   (   R   R  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   long_from_ulong  s    c         C` s   |  j  | d |  j d t S(   Nt   PyLong_FromSsize_tR  (   R  Ri   R   (   R   R  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   long_from_ssize_t  s    c         C` s   |  j  | d |  j d t S(   Nt   PyLong_FromLongLongR  (   R  Rd   R   (   R   R  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   long_from_longlong  s    c         C` s   |  j  | d |  j d t S(   Nt   PyLong_FromUnsignedLongLongR  (   R  Re   R   (   R   R  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   long_from_ulonglong  s    c         C` s   | j  j } | |  j j k r= |  j |  j j | |  j   S| |  j j k rn |  j |  j j | |  j   St d |   d S(   sH   
        Return a Python integer from any native integer value.
        s   integer too big (%d bits)N(	   Rz   t   widthRa   R  R#   t   sextRd   R!  t   OverflowError(   R   R  t   bits(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   long_from_signed_int#  s    c         C` s   | j  j } | |  j j k r= |  j |  j j | |  j   S| |  j j k rn |  j |  j j | |  j   St d |   d S(   sH   
        Same as long_from_signed_int, but for unsigned values.
        s   integer too big (%d bits)N(	   Rz   R$  Rb   R  R#   t   zextRe   R#  R&  (   R   R  R'  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   long_from_unsigned_int/  s    c         C` s>   t  j |  j |  j |  j g  } |  j | d d | } | S(   NR   s   PyNumber_%s(   R   RR   RX   R   (   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   _get_number_operator;  s    !c         C` s;   | r d | } n  |  j  |  } |  j j | | | g  S(   Nt   InPlace(   R+  R#   R   (   R   R   t   lhst   rhst   inplaceR   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   _call_number_operator@  s    c         C` s   |  j  d | | d | S(   Nt   AddR/  (   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   number_addF  s    c         C` s   |  j  d | | d | S(   Nt   SubtractR/  (   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_subtractI  s    c         C` s   |  j  d | | d | S(   Nt   MultiplyR/  (   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_multiplyL  s    c         C` s+   t  d k  s t  |  j d | | d | S(   Ni   i    t   DivideR/  (   i   i    (   R   R   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_divideO  s    c         C` s   |  j  d | | d | S(   Nt
   TrueDivideR/  (   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_truedivideS  s    c         C` s   |  j  d | | d | S(   Nt   FloorDivideR/  (   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_floordivideV  s    c         C` s   |  j  d | | d | S(   Nt	   RemainderR/  (   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_remainderY  s    c         C` s+   t  d k s t  |  j d | | d | S(   Ni   i   t   MatrixMultiplyR/  (   i   i   (   R   R   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_matrix_multiply\  s    c         C` s   |  j  d | | d | S(   Nt   LshiftR/  (   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_lshift`  s    c         C` s   |  j  d | | d | S(   Nt   RshiftR/  (   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_rshiftc  s    c         C` s   |  j  d | | d | S(   Nt   AndR/  (   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   number_andf  s    c         C` s   |  j  d | | d | S(   Nt   OrR/  (   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   number_ori  s    c         C` s   |  j  d | | d | S(   Nt   XorR/  (   R0  (   R   R-  R.  R/  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   number_xorl  s    c         C` se   t  j |  j |  j g d  } | r+ d n d } |  j | |  } |  j j | | | |  j   g  S(   Ni   t   PyNumber_InPlacePowert   PyNumber_Power(   R   RR   RX   R   R#   R   t   borrow_none(   R   R-  R.  R/  R   t   fnameR   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_powero  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | f  S(   NR   t   PyNumber_Negative(   R   RR   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_negativeu  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | f  S(   NR   t   PyNumber_Positive(   R   RR   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_positivez  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyNumber_Float(   R   RR   RX   R   R#   R   (   R   R(   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_float  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | f  S(   NR   t   PyNumber_Invert(   R   RR   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   number_invert  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyFloat_AsDouble(   R   RR   Rf   RX   R   R#   R   (   R   t   fobjR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   float_as_double  s    c         C` s%   |  j  j | |  j  } |  j |  S(   s8   
        Get a Python bool from a LLVM boolean.
        (   R#   R)  Ra   t   bool_from_long(   R   t   bvalt   longval(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   bool_from_bool  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyBool_FromLong(   R   RR   RX   Ra   R   R#   R   (   R   R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR[    s    c         C` sU   t  j |  j t  j   t  j   g  } |  j | d d } |  j j | | | g  S(   NR   t   PyComplex_FromDoubles(   R   RR   RX   Rf   R   R#   R   (   R   t   realvalt   imagvalR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   complex_from_doubles  s    'c         C` sI   t  j t  j   |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyComplex_RealAsDouble(   R   RR   Rf   RX   R   R#   R   (   R   t   cobjR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   complex_real_as_double  s    c         C` sI   t  j t  j   |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyComplex_ImagAsDouble(   R   RR   Rf   RX   R   R#   R   (   R   Re  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   complex_imag_as_double  s    c         C` s  t  j |  j |  j  } t  j |  j |  j  } t  j |  j |  j  } t j t j   |  j g |  j j   g d  } |  j	 | d d } |  j j
 | | | | | f  } |  j j |  } |  j j |  }	 |  j j |  }
 t  j |  j |  | |	 |
 f S(   s   
        Read the members of a slice of integers.

        Returns a (ok, start, stop, step) tuple where ok is a boolean and
        the following members are pointer-sized ints.
        i   R   t   numba_unpack_slice(   R   R   R#   Ri   R   RR   R\   RX   RY   R   R   R   Rx   (   R   R.   t   pstartt   pstopt   pstepR   R   R  t   startt   stopt   step(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   slice_as_ints  s    #!c         C` sX   t  j |  j |  j |  j |  j g  } |  j | d d } |  j j | | | | f  S(   NR   t   PySequence_GetSlice(   R   RR   RX   Ri   R   R#   R   (   R   R.   Rm  Rn  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   sequence_getslice  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PySequence_Tuple(   R   RR   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   sequence_tuple  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t
   PyList_New(   R   RR   RX   Ri   R   R#   R   (   R   t   szvalR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   list_new  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyList_Size(   R   RR   Ri   RX   R   R#   R   (   R   t   lstR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   list_size  s    c         C` sR   t  j t  j   |  j |  j g  } |  j | d d } |  j j | | | g  S(   NR   t   PyList_Append(   R   RR   R\   RX   R   R#   R   (   R   Ry  R(   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   list_append  s    $c         C` s[   t  j t  j   |  j |  j |  j g  } |  j | d d } |  j j | | | | g  S(   s6   
        Warning: Steals reference to ``val``
        R   t   PyList_SetItem(   R   RR   R\   RX   Ri   R   R#   R   (   R   Ry  t   idxR(   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   list_setitem  s    c         C` sy   t  j |  j |  j |  j g  } |  j | d d } t | t  r` |  j j t	 j
 |  } n  |  j j | | | g  S(   s/   
        Returns a borrowed reference.
        R   t   PyList_GetItem(   R   RR   RX   Ri   R   R<   R\   R"   t   get_constantR	   Rh   R#   R   (   R   Ry  R~  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyRJ     s
    !c         C` s   | d  k r |  j   } n  t j t j   |  j |  j |  j |  j g  } |  j | d d } |  j j	 | | | | | f  S(   NR   t   PyList_SetSlice(
   R   R   R   RR   R\   RX   Ri   R   R#   R   (   R   Ry  Rm  Rn  R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   list_setslice  s    c         C` sg   t  j |  j |  j |  j g  } |  j | d d } |  j j t j |  } |  j	 j
 | | | g  S(   s"   
        Borrow reference
        R   t   PyTuple_GetItem(   R   RR   RX   Ri   R   R"   R  R	   Rh   R#   R   (   R   t   tupR~  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   tuple_getitem  s    !c         C` s}   t  j |  j |  j g d t } |  j | d d } |  j j t j	 t
 |   } | g } | j |  |  j j | |  S(   NR   R   t   PyTuple_Pack(   R   RR   RX   Ri   R   R   R"   R  R	   Rh   RE   t   extendR#   R   (   R   t   itemsR   R   t   nR   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   tuple_pack  s    !	c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyTuple_Size(   R   RR   Ri   RX   R   R#   R   (   R   R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   tuple_size  s    c         C` s[   t  j |  j t  j   g  } |  j | d d } |  j j | |  j j t	 j
 |  g  S(   NR   t   PyTuple_New(   R   RR   RX   R\   R   R#   R   R"   R  R	   t   int32(   R   t   countR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   tuple_new  s    c         C` sz   t  j t  j   |  j t  j   |  j g  } |  j | d d } |  j j t j |  } |  j	 j
 | | | | g  d S(   s/   
        Steals a reference to `item`.
        R   t   PyTuple_SetItemN(   R   RR   R\   RX   R   R"   R  R	   R  R#   R   (   R   t	   tuple_valRH   t   itemR   t
   setitem_fn(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   tuple_setitem  s    -c         C` sa   | d  k r |  j   } n  t j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t	   PySet_New(   R   R   R   RR   RX   R   R#   R   (   R   t   iterableR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   set_new'  s
    c         C` sR   t  j t  j   |  j |  j g  } |  j | d d } |  j j | | | g  S(   NR   t	   PySet_Add(   R   RR   R\   RX   R   R#   R   (   R   t   setR8   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   set_add.  s    $c         C` sI   t  j t  j   |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PySet_Clear(   R   RR   R\   RX   R   R#   R   (   R   R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   set_clear3  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t
   PySet_Size(   R   RR   Ri   RX   R   R#   R   (   R   R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   set_size8  s    c         C` sR   t  j t  j   |  j |  j g  } |  j | d d } |  j j | | | g  S(   NR   t   _PySet_Update(   R   RR   R\   RX   R   R#   R   (   R   R  R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   set_update=  s    $c         C` sv   t  j t  j   |  j |  j j   |  j j   |  j j   g  } |  j | d d } |  j j	 | | | | | f  S(   NR   t   _PySet_NextEntry(
   R   RR   R\   RX   Ri   RY   Rq   R   R#   R   (   R   R  t   posptrt   keyptrt   hashptrR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   set_next_entryB  s
    !c   	   
   #` sA  |  j   t j  |  j d d } t j  |  j d d } t j  t j |  j d  d d }  j	 d  }  j	 d     j
 |     f d   }  j |  | |  j | | | |  } t j  |  }  j | d	 t   j
    Wd  QXt  j |  |  V j
 |  Wd  QX j    d  S(
   NR   R  R  i    R  t   bb_bodyt   bb_endc           ` s    j     d  S(   N(   t   branch(    (   R  R#   (    s.   lib/python2.7/site-packages/numba/pythonapi.pyRM   W  s    R   (   R#   R   R   Rq   RX   t   alloca_once_valueR   R   Ri   t   append_basic_blockR  t
   goto_blockR  Rx   t   if_thenR   RL   R   t   position_at_end(	   R   R  R  R  R  R  RM   t   rt   finished(    (   R  R#   s.   lib/python2.7/site-packages/numba/pythonapi.pyt   set_iterateI  s$    			c         C` sq   t  j |  j  } t  j t  j   | g  } |  j | d  } t j |  j |  j  } |  j j	 | | g  | S(   sk   
        Ensure the GIL is acquired.
        The returned value must be consumed by gil_release().
        t   numba_gil_ensure(
   R   R[   Rl   RR   R   R   R   R   R#   R   (   R   t   gilptrtyR   R   t   gilptr(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   gil_ensureh  s    c         C` sU   t  j |  j  } t  j t  j   | g  } |  j | d  } |  j j | | g  S(   sg   
        Release the acquired GIL by gil_ensure().
        Must be paired with a gil_ensure().
        t   numba_gil_release(   R   R[   Rl   RR   R   R   R#   R   (   R   t   gilR  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   gil_releaset  s    c         C` s=   t  j |  j g   } |  j | d d } |  j j | g   S(   sj   
        Release the GIL and return the former thread state
        (an opaque non-NULL pointer).
        R   t   PyEval_SaveThread(   R   RR   R]   R   R#   R   (   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   save_thread~  s    c         C` sM   t  j t  j   |  j g  } |  j | d d } |  j j | | g  d S(   sH   
        Restore the given thread state by reacquiring the GIL.
        R   t   PyEval_RestoreThreadN(   R   RR   R   R]   R   R#   R   (   R   t   thread_stateR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   restore_thread  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | f  S(   NR   t   numba_get_pyobject_private_data(   R   RR   R]   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_get_private_data  s    c         C` sR   t  j t  j   |  j |  j g  } |  j | d d } |  j j | | | f  S(   NR   t   numba_set_pyobject_private_data(   R   RR   R   RX   R]   R   R#   R   (   R   R.   t   ptrR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_set_private_data  s    $c         C` sI   t  j t  j   |  j g  } |  j | d d } |  j j | | f  S(   NR   t!   numba_reset_pyobject_private_data(   R   RR   R   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_reset_private_data  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyImport_ImportModuleNoBlock(   R   RR   RX   Rj   R   R#   R   (   R   t   modnameR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   import_module_noblock  s    c         C` sx   t  j |  j |  j g d t } |  j | d d } | g t |  } | j |  j j t	 j
   |  j j | |  S(   NR   R   t   PyObject_CallFunctionObjArgs(   R   RR   RX   R   R   R   RF   R"   t   get_constant_nullR	   RW   R#   R   (   R   t   calleet   objargsR   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   call_function_objargs  s
    !c   
      C` s   |  j  j |  j |  } t j |  j |  j |  j |  j g d t } |  j | d d } d t	 |  } |  j  j |  j |  } | | | g }	 | r |	 j
 |  n  |	 j |  j  j t j   |  j j | |	  S(   NR   R   t   PyObject_CallMethodt   O(   R"   R   RS   R   RR   RX   Rj   R   R   RE   R  RF   R  R	   RW   R#   R   (
   R   R  t   methodR  t   cnameR   R   R   t   cfmtR   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   call_method  s    $	c         C` s   | d  k r |  j   } n  | d  k r6 |  j   } n  t j |  j |  j g d  } |  j | d d } |  j j | | | | f  S(   Ni   R   t   PyObject_Call(   R   R   R   RR   RX   R   R#   R   (   R   R  R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR     s    c         C` sI   t  j t  j   |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyObject_IsTrue(   R   RR   R\   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_istrue  s    c         C` sI   t  j t  j   |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyObject_Not(   R   RR   R\   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   object_not  s    c         C` sq  d d d d d d g } | | k r | j  |  } t j |  j |  j |  j t j   g  } |  j | d d } |  j j t j	 |  } |  j
 j | | | | f  S| d	 k r |  j
 j t j | |  }	 |  j t j |	  S| d
 k r|  j
 j t j | |  }	 |  j t j |	  S| d k rUt j t j   |  j |  j g  } |  j | d d } |  j
 j | | | f  }
 |  j j t j	 d  } |  j
 j t j |
 |  } t j |  j
 t j |  j   } t j |  j
 |  ` | d k r|  j
 j |
  }
 n  |  j
 j |
 t j d   } |  j
 j |  j |  |  Wd QX|  j
 j |  St d j d |    d S(   sd   
        Refer to Python source Include/object.h for macros definition
        of the opid.
        t   <s   <=s   ==s   !=t   >s   >=R   t   PyObject_RichComparet   iss   is nott   ins   not int   PySequence_Containsii   Ns   Unknown operator {op!r}t   op(   R  s   not in(   RH   R   RR   RX   R\   R   R"   R  R	   R  R#   R   R  R  t   ICMP_EQR&   t   booleant   ICMP_NER   R  R   t   nullt	   if_likelyt   not_R  R2   R^  R   t   NotImplementedErrort   format(   R   R-  R.  t   opstrt   opst   opidR   R   t   lopidt   bitflagt   statust   negonet   is_goodt   outptrt	   truncated(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_richcompare  s<    *$c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyIter_Next(   R   RR   RX   R   R#   R   (   R   t   iterobjR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   iter_next  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyObject_GetIter(   R   RR   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_getiter  s    c         C` sg   |  j  j |  j |  } t j |  j |  j |  j g  } |  j | d d } |  j j	 | | | g  S(   NR   t   PyObject_GetAttrString(
   R"   R   RS   R   RR   RX   Rj   R   R#   R   (   R   R.   t   attrR   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_getattr_string  s    !c         C` sO   t  j |  j |  j |  j g  } |  j | d d } |  j j | | | g  S(   NR   t   PyObject_GetAttr(   R   RR   RX   R   R#   R   (   R   R.   R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_getattr  s    !c         C` ss   |  j  j |  j |  } t j t j   |  j |  j |  j g  } |  j | d d } |  j	 j
 | | | | g  S(   NR   t   PyObject_SetAttrString(   R"   R   RS   R   RR   R\   RX   Rj   R   R#   R   (   R   R.   R  R(   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_setattr_string  s    *c         C` s[   t  j t  j   |  j |  j |  j g  } |  j | d d } |  j j | | | | g  S(   NR   t   PyObject_SetAttr(   R   RR   R\   RX   R   R#   R   (   R   R.   R  R(   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_setattr  s    *c         C` s   |  j  | | |  j    S(   N(   R  R   (   R   R.   R  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_delattr_string  s    c         C` s   |  j  | | |  j    S(   N(   R   R   (   R   R.   R  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_delattr"  s    c         C` sO   t  j |  j |  j |  j g  } |  j | d d } |  j j | | | f  S(   s!   
        Return obj[key]
        R   t   PyObject_GetItem(   R   RR   RX   R   R#   R   (   R   R.   t   keyR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_getitem'  s    !c         C` s[   t  j t  j   |  j |  j |  j g  } |  j | d d } |  j j | | | | f  S(   s    
        obj[key] = val
        R   t   PyObject_SetItem(   R   RR   R\   RX   R   R#   R   (   R   R.   R  R(   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_setitem/  s    *c         C` sR   t  j t  j   |  j |  j g  } |  j | d d } |  j j | | | f  S(   s   
        del obj[key]
        R   t   PyObject_DelItem(   R   RR   R\   RX   R   R#   R   (   R   R.   R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_delitem7  s    $c         C` sa   t  j |  j |  j g  } t d k r0 d } n d } |  j | d | } |  j j | | g  S(   Ni   i    t   PyUnicode_AsUTF8t   PyString_AsStringR   (   i   i    (   R   RR   Rj   RX   R   R   R#   R   (   R   t   strobjR   RN  R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   string_as_string?  s    	c         C` s  t  j |  j |  j  } t d k r t j |  j |  j |  j j	   g  } d } |  j
 | d | } |  j j | | | g  } |  j j d t j | j d	  |  } n t j t j j   |  j |  j j	   |  j j	   g  } d } |  j
 | d | } t  j |  j |  j  } |  j j | | | | g  }	 t j |	 j d  }
 |  j j d |	 |
  } |  j j |  } | | |  j j |  f S(
   s   
        Returns a tuple of ``(ok, buffer, length)``.
        The ``ok`` is i1 value that is set if ok.
        The ``buffer`` is a i8* of the output buffer.
        The ``length`` is a i32/i64 (py_ssize_t) of the length of the buffer.
        i   i    t   PyUnicode_AsUTF8AndSizeR   s   !=t   PyString_AsStringAndSizei(   i   i    N(   R   R   R#   Ri   R   R   RR   Rj   RX   RY   R   R   t   icmp_unsignedR   R   Rz   R   R  R\   t   icmp_signedR   (   R   R  t   p_lengthR   RN  R   t   buffert   okt   p_bufferR  R  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   string_as_string_and_sizeH  s*    c         C` s  t  d k rot j |  j |  j  } t j |  j t j    } t j |  j t j    } t j |  j |  j  } t j |  j	 |  j
 |  j j   t j   j   t j   j   |  j j   g  } d } |  j | d | } |  j j | | | | | | g  }	 |  j j d t j |	 j d  |	  }
 |
 |	 |  j j |  |  j j |  |  j j |  |  j j |  f St st d   d S(   s  
        Returns a tuple of ``(ok, buffer, length, kind)``.
        The ``ok`` is i1 value that is set if ok.
        The ``buffer`` is a i8* of the output buffer.
        The ``length`` is a i32/i64 (py_ssize_t) of the length of the buffer.
        The ``kind`` is a i32 (int32) of the Unicode kind constant
        The ``hash`` is a long/uint64_t (py_hash_t) of the Unicode constant hash
        i   t   numba_extract_unicodeR   s   !=s   not supported on Python < 3.3N(   i   i   (   R   R   R   R#   Ri   R   R\   Rq   RR   Rj   RX   RY   R   R   R  R   R   Rz   R   R   R   R   (   R   R  R  t   p_kindt   p_asciit   p_hashR   RN  R   R  R  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   string_as_string_size_and_kindl  s*    			c         C` sj   t  j |  j |  j |  j g  } t d k r6 d } n d } |  j | d | } |  j j | | | g  S(   Ni   i    t   PyUnicode_FromStringAndSizet   PyString_FromStringAndSizeR   (   i   i    (	   R   RR   RX   Rj   Ri   R   R   R#   R   (   R   t   stringt   sizeR   RN  R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   string_from_string_and_size  s    !	c         C` sa   t  j |  j |  j g  } t d k r0 d } n d } |  j | d | } |  j j | | g  S(   Ni   i    t   PyUnicode_FromStringt   PyString_FromStringR   (   i   i    (   R   RR   RX   Rj   R   R   R#   R   (   R   R  R   RN  R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   string_from_string  s    	c         C` sy   t  j |  j t  j   |  j |  j g  } t d k sB t d   d } |  j | d | } |  j	 j
 | | | | g  S(   Ni   s"   unsupported in this python-versiont   PyUnicode_FromKindAndDataR   (   i   i   (   R   RR   RX   R\   Rj   Ri   R   R   R   R#   R   (   R   t   kindR  R  R   RN  R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   string_from_kind_and_data  s
    *c         C` sj   t  j |  j |  j |  j g  } t d k r6 d } n d } |  j | d | } |  j j | | | g  S(   Ni   i    t   PyBytes_FromStringAndSizeR  R   (   i   i    (	   R   RR   RX   Rj   Ri   R   R   R#   R   (   R   R  R  R   RN  R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   bytes_from_string_and_size  s    !	c         C` sL   t  j |  j |  j g  } d } |  j | d | } |  j j | | g  S(   Nt   PyObject_HashR   (   R   RR   Rq   RX   R   R#   R   (   R   R.   R   RN  R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_hash  s    c         C` sF   t  j |  j |  j g  } |  j | d d } |  j j | | g  S(   NR   t   PyObject_Str(   R   RR   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   object_str  s    c         C` s   |  j    } |  j |  | S(   N(   RM  R   (   R   R.   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR     s    c         C` s   |  j  d  S(   Nt   _Py_NoneStruct(   R   (   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyRM    s    c         G` sw   t  j t  j   |  j g d t } t d k rH |  j | d d } n |  j | d d } |  j j | | f |  S(   NR   i   i   R   t   PySys_FormatStdoutt   PySys_WriteStdout(   i   i   (	   R   RR   R   Rj   R   R   R   R#   R   (   R   R   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   sys_write_stdout  s
    $c         C` sI   t  j t  j   |  j g  } |  j | d d } |  j j | | f  S(   sL   
        Dump a Python object on C stderr.  For debugging purposes.
        R   t   _PyObject_Dump(   R   RR   R   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   object_dump  s    c   
      C` s   |  j  j s t d   t j d  } t j |  j |  j | | |  j g  } |  j	 | d d } | j
 d j t j  |  j  j t j | j  } |  j  j t j t | j   } t j |  j |  }	 |  j j | |  j j |	 |  j  | | | g  S(   Ns   NRT requiredi    R   t   NRT_adapt_ndarray_to_pythoni    (   R"   t
   enable_nrtR   R   Rn   R   RR   RX   R]   R   R   t   add_attributeR  t   ATTR_NO_CAPTURER  R	   R  t   ndimR\   t   mutableR   R  R#   R   t   bitcast(
   R   t   arytyt   aryt   dtypeptrt   inttyR   R   R7  t   writablet   aryptr(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   nrt_adapt_ndarray_to_python  s    !	c         C` s   |  j  j } t j t j t j t j g  } | j | d d } | j d j t	 j
  | j d j t	 j
  | j j d  |  j  j | | | g  S(   sa   
        Allocate a new MemInfo with data payload borrowed from a python
        object.
        R   t   NRT_meminfo_new_from_pyobjecti    i   t   noalias(   R#   RS   R   t   FunctionTypeR   t	   voidptr_tt   get_or_insert_functionR   R5  R  R6  t   return_valueR   (   R   t   dataRX   t   modR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   nrt_meminfo_new_from_pyobject  s    	c         C` sb   |  j  j } t j |  j t j g  } | j | d d } | j j	 d  |  j  j
 | | g  S(   NR   t   NRT_meminfo_as_pyobjectRB  (   R#   RS   R   RC  RX   R   RD  RE  RF  R5  R   (   R   t   miptrRH  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   nrt_meminfo_as_pyobject  s    	c         C` sb   |  j  j } t j t j |  j g  } | j | d d } | j j	 d  |  j  j
 | | g  S(   NR   t   NRT_meminfo_from_pyobjectRB  (   R#   RS   R   RC  R   RD  RX   RE  RF  R5  R   (   R   t   miobjRH  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   nrt_meminfo_from_pyobject  s    	c         C` s   |  j  j s t  t j t j   |  j |  j g  } |  j | d d } | j	 d j
 t j  | j	 d j
 t j  |  j j | | | f  S(   NR   t   NRT_adapt_ndarray_from_pythoni    i   (   R"   R4  R   R   RR   R\   RX   R]   R   R   R5  R  R6  R#   R   (   R   R;  R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   nrt_adapt_ndarray_from_python  s    $c         C` s   |  j  j s t  t j t j   t j |  j  |  j g  } |  j	 | d d } | j
 d j t j  | j
 d j t j  |  j j | | | f  S(   NR   t   NRT_adapt_buffer_from_pythoni    i   (   R"   R4  R   R   RR   R   R[   Rp   R]   R   R   R5  R  R6  R#   R   (   R   t   bufR  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   nrt_adapt_buffer_from_python  s    c         C` s   |  j  j | d | S(   NR   (   RS   RE  (   R   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR   '  s    c         C` s   |  j  j |  j  S(   N(   R#   t   allocaRX   (   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   alloca_obj*  s    c         C` s(   t  j |  j t j j |  j   } | S(   sT   
        Return a pointer to a stack-allocated, zero-initialized Py_buffer.
        (   R   R  R#   R  R   R  Rp   (   R   R  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   alloca_buffer-  s    c         c` s4   t  j |  j t  j |  j |   
 d  VWd  QXd  S(   N(   R   R  R#   R   (   R   R.   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR   6  s    c         C` sW   |  j  |  } |  j |  } |  j j |  j d  } |  j | |  |  j |  d  S(   Ns   %s(   R,  R  R"   R   RS   R0  R   (   R   R.   R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   print_object<  s
    c         C` s)   |  j  j |  j |  } |  j |  d  S(   N(   R"   R   RS   R0  (   R   t   textR   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   print_stringC  s    c         C` s   t  j |  j  S(   N(   R   R  RX   (   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR   G  s    c         C` s    |  j    } |  j j |  d  S(   N(   R   R#   R~   (   R   t   none(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   return_noneJ  s    c      
   C` s   t  |  } |  j |  j j t j |   } |  j |  \ xT t |  D]F } |  j j t j |  } |  j | |  |  j	 | | | |  qJ WWd  QX| S(   N(
   RE   Rw  R"   R  R	   Rh   R   R   R   R  (   R   R  R  t   seqR   R~  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt	   list_packN  s    !!c         C` s   t  j |  j |  j t j d  f  } |  j | d d } |  j j |  j j	 |  d  } |  j j |  j j	 |  d  } |  j j
 | | | f  S(   sx   
        Unserialize some data.  *structptr* should be a pointer to
        a {i8* data, i32 length} structure.
        i    R   t   numba_unpicklei    i   (   R   RR   RX   R]   R   Rn   R   R#   t   extract_valueR   R   (   R   t	   structptrR   R   R  R  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   unserializeX  s
    '!!c         C` s   t  j | d d } t |  d	 k  s- t  d t j d k rK t |  n d } t j |  } |  j	 j
 |  j | |  } t j j | j |  j  t j t j d  | j j j  g  } | S(
   s   
        Same as serialize_object(), but don't create a global variable,
        simply return a literal {i8* data, i32 length} structure.
        t   protocolii   i   s   .const.pickledata.%si    t   DIFF_IRi    I       (   t   picklet   dumpsRE   R   R   Rd  t   idR   t   make_bytearrayR"   t   insert_unique_constRS   R   R   t   literal_structR9  R]   Rn   Rz   R{   R  (   R   R.   RG  R   t   bdatat   arrt   struct(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   serialize_uncachedc  s    %	*c         C` s   y |  j  j | } Wnp t k
 r |  j |  } d t j d k rQ t |  n d } |  j j |  j  | |  } | |  j  j | <n X| S(   s   
        Serialize the given object in the bitcode, and return it
        as a pointer to a {i8* data, i32 length}, structure constant
        (suitable for passing to unserialize()).
        s   .const.picklebuf.%si    Rd  (	   RS   RT   R   Rn  R   Rd  Rg  R"   Ri  (   R   R.   t   gvRm  R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   serialize_objectu  s    %c         C` s   t  j |  j |  j    S(   N(   R   R   R#   R   (   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   c_api_error  s    c         C` sM   d d l  m } t j | j |  } t |  j |  j |   } | | | |  S(   sn   
        Unbox the Python object as the given Numba type.
        A NativeValue instance is returned.
        i    (   t   unbox_unsupported(   t   numba.targets.boxingRr  t	   _unboxersR   t	   __class__R,   R"   R#   (   R   R'   R.   Rr  t   implt   c(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR-     s    c         C` s8   t  | t j  s t d   |  j | | |  } | S(   Ns;   callconv should have prevented the return of optional value(   R<   R	   t   OptionalR   R&   (   R   R'   R(   R%   t   out(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   from_native_return  s    c         C` sP   d d l  m } t j | j |  } t |  j |  j |  |  } | | | |  S(   s   
        Box the native value of the given Numba type.  A Python object
        pointer is returned (NULL if an error occurred).
        This method steals any native (NRT) reference embedded in *val*.
        i    (   t   box_unsupported(   Rs  R{  t   _boxersR   Ru  R!   R"   R#   (   R   R'   R(   R%   R{  Rv  Rw  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR&     s    c         C` s~   t  j | j  } | d k r% t j St j |  j t j  } t |  j	 |  j |  | |  } | | | |  |  j j
 | j  S(   s   
        Reflect the native value onto its Python original, if any.
        An error bit (as an LLVM value) is returned.
        N(   t   _reflectorsR   Ru  R   R   R9   R  R#   R0   R"   R   R1   (   R   R'   R(   R%   Rv  R1   Rw  (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyR5     s    	c         C` s@   t  j |  j j |   } |  j j |  j | |  } t |  S(   sy   
        Extract the generator structure pointer from a generator *obj*
        (a _dynfunc.Generator instance).
        (   R   R[   R"   t   get_data_typet   get_generator_stateR#   R7   (   R   R.   R'   t
   gen_ptr_tyR8   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   to_native_generator  s    c         C` s  |  j  j |  } | j s" t  |  j  j |  } |  j  j |  } t j |  j |  j |  j |  j g  } |  j	 | d | j
 } t j t j   |  j g  }	 | j r |  j	 |	 d | j }
 n t j t j |	   }
 t j |  j |  j |  j t j |  t j |	  |  j g  } |  j	 | d d } t j |  j |  } |  j j | |  j  } | d k r{|  j   } n  |  j j | |  j  } |  j j | | | | |
 | f  S(   s   
        Make a Numba generator (a _dynfunc.Generator instance) from a
        generator structure pointer *val*.
        *env* is an optional _dynfunc.Environment instance to be wrapped
        in the generator.
        R   t   numba_make_generatorN(   R"   R~  t
   is_pointerR   t   get_abi_sizeoft   get_generator_descR   RR   RX   R   t   llvm_cpython_wrapper_nameR   R]   t   has_finalizert   llvm_finalizer_nameR   R  R[   Ri   R   R#   R9  R   R   R   (   R   R(   R'   R>   t   lltyt   gen_struct_sizet   gendesct   genfntyt   genfnt   finalizertyt	   finalizerR   R   t
   state_sizet   initial_state(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   from_native_generator  s.    '	c         C` s   |  j  j s t  t j t j   |  j |  j g  } |  j | d d } | j	 d j
 t j  | j	 d j
 t j  |  j j | | | f  S(   NR   t   numba_adapt_ndarrayi    i   (   R"   R4  R   R   RR   R\   RX   R]   R   R   R5  R  R6  R#   R   (   R   R;  R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   numba_array_adaptor  s    $c         C` s   t  j t  j   t j |  j  |  j g  } |  j | d d } | j d j	 t
 j  | j d j	 t
 j  |  j j | | | f  S(   NR   t   numba_adapt_bufferi    i   (   R   RR   R   R   t   PointerTypeRp   R]   R   R   R5  R  R6  R#   R   (   R   RS  R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   numba_buffer_adaptor  s    c         C` sR   t  j t  j   |  j | j g  } |  j | d d } |  j j | | | g  S(   NR   t   numba_complex_adaptor(   R   RR   R\   RX   Rz   R   R#   R   (   R   Re  t   cmplxR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   complex_adaptor  s    $c         C` sX   t  j |  j |  j t j |  j  g  } |  j | d d } |  j j	 | | | g  S(   NR   t   numba_extract_record_data(
   R   RR   R]   RX   R   R  Rp   R   R#   R   (   R   R.   t   pbufR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   extract_record_data  s    c         C` s[   t  j t  j   |  j t j |  j  g  } |  j | d d } |  j j	 | | | g  S(   NR   t   numba_get_buffer(
   R   RR   R\   RX   R   R  Rp   R   R#   R   (   R   R.   R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt
   get_buffer  s    c         C` sR   t  j t  j   t j |  j  g  } |  j | d d } |  j j | | g  S(   NR   t   numba_release_buffer(	   R   RR   R   R   R  Rp   R   R#   R   (   R   R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   release_buffer
  s    'c         C` sL   t  j t  j d  |  j g  } |  j | d d } |  j j | | g  S(   Ni@   R   t   numba_extract_np_datetime(   R   RR   R\   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   extract_np_datetime  s    !c         C` sL   t  j t  j d  |  j g  } |  j | d d } |  j j | | g  S(   Ni@   R   t   numba_extract_np_timedelta(   R   RR   R\   RX   R   R#   R   (   R   R.   R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   extract_np_timedelta  s    !c         C` sp   t  j t j   |  } t j |  j t j d  t j   g  } |  j | d d } |  j j | | | g  S(   Ni@   R   t   numba_create_np_datetime(   R   R\   R   RR   RX   R   R#   R   (   R   R(   t	   unit_codeR   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   create_np_datetime  s    *c         C` sp   t  j t j   |  } t j |  j t j d  t j   g  } |  j | d d } |  j j | | | g  S(   Ni@   R   t   numba_create_np_timedelta(   R   R\   R   RR   RX   R   R#   R   (   R   R(   R  R   R   (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   create_np_timedelta  s    *c         C` s   t  j |  j t  j t  j d   t  j   |  j g  } |  j | d d } | j | j |   } |  j j	 | | | | g  S(   Ni   R   t   numba_recreate_record(
   R   RR   RX   R[   R\   R   RK   RI   R#   R   (   R   t   pdataR  t   dtypeR%   R   R   t	   dtypeaddr(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   recreate_record%  s
    !c         C` sF   |  j  j |  j |  } |  j  j t j t |   } |  j | |  S(   N(   R"   R   RS   R  R	   Rh   RE   R   (   R   R  R   t   sz(    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   string_from_constant_string,  s    N(    (   R   R    R*   R   Rv   R   R   R   R   R   R   R   R   R   R   R}   R   R   R   R   R   R   R   R   t
   contextlibt   contextmanagerR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  R  R  R  R  R!  R#  R(  R*  R+  R0  R2  R4  R6  R8  R:  R<  R>  R@  RB  RD  RF  RH  RJ  RO  RQ  RS  RU  RW  RZ  R^  R[  Rc  Rf  Rh  Rp  Rr  Rt  Rw  Rz  R|  R  RJ   R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R   R  R  R  R  R  R  R  R  R   R  R  R  R  R	  R  R  R  R   R#  R&  R(  R*  R,  R   RM  R0  R2  R@  RI  RL  RO  RQ  RT  R   RV  RW  R   RX  RZ  R   R\  R^  Rb  Rn  Rp  Rq  R-   Rz  R&   R5   R  R  R  R  R  R  R  R  R  R  R  R  R  R  (    (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyRN      sP  	&																								
													#																													
														
						
						)														$	!																												
								)											(   i   i   (   R"   R#   R$   R%   (   R"   R#   R$   (   R"   R#   R$   R%   R1   (   R8   RM   (4   t
   __future__R    R   R   t   collectionsR   R  Re  t   llvmliteR   t   llvmlite.llvmpy.coreR   R   t   llvmpyt   coreR  t   numba.configR   t   numba.ctypes_supportt   ctypes_supportR^   t   numbaR   R	   R
   R   R   R   Rr   t   PY_UNICODE_1BYTE_KINDRs   t   PY_UNICODE_2BYTE_KINDRt   t   PY_UNICODE_4BYTE_KINDRu   t   PY_UNICODE_WCHAR_KINDt   objectR   R|  Rt  R}  R   R)   R/   R6   R!   R,   R0   R7   R;   RL   RN   (    (    (    s.   lib/python2.7/site-packages/numba/pythonapi.pyt   <module>   sB   (										
	
	 "