
\K]c           @` sU  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l Z d d l Ty d  d l m Z Wn! e k
 r d  d l m Z n Xd  d l m Z m Z e d_ k Z e rnd  d l Z e f Z e Z e
 j Z e j  Z  e	 j! Z" e Z# d	   Z$ no d  d l% Z% d  d l& Z e e' f Z e' Z e% j Z e  Z  d
   Z# e j( d k rd   Z" n	 e	 j) Z" d   Z$ y4 d  d l* m+ Z, d  d l* m- Z. d  d l* m/ Z0 Wn e k
 ryV d  d l1 m+ Z, d  d l1 m- Z. d  d l1 m/ Z0 d  d l1 m2 Z2 d   Z3 e3 e2 _3 Wqe k
 re d   qXn Xy d  d l m4 Z4 Wn\ e k
 ry d  d l4 Z4 Wn e k
 re d   qXd   Z5 e5 e4 _5 e4 j4 Z4 n Xi e6 j7 d 6e6 j8 d 6e6 j9 d 6e6 j: d 6e6 j; d 6e6 j< d 6e6 j= d 6e6 j> d 6e6 j? d 6e6 j@ d  6e6 jA d! 6e6 jB d" 6e6 jC d# 6e6 jD d$ 6e6 jE d% 6e6 jF d& 6e6 jG d' 6e6 jH d( 6e6 jI d) 6e6 jJ d* 6e6 jK d+ 6ZL i e6 jM d, 6e6 jN d- 6e6 jO d. 6e6 jP d/ 6e6 jQ d0 6e6 jR d1 6e6 jS d2 6e6 jT d3 6e6 jU d4 6e6 jV d5 6e6 jW d6 6e6 jX d7 6ZY i e6 jZ d 6e6 j[ d 6e6 j\ d8 6e6 j] d9 6e6 j^ d: 6Z_ i& d e6 j7 6d, e6 jM 6d e6 j8 6d- e6 jN 6d e6 j9 6d. e6 jO 6d e6 j: 6d/ e6 jP 6d e6 j; 6d0 e6 jQ 6d e6 j< 6d1 e6 jR 6d e6 j= 6d2 e6 jS 6d e6 j> 6d3 e6 jT 6d e6 j? 6d4 e6 jU 6d  e6 j@ 6d5 e6 jV 6d! e6 jA 6d6 e6 jW 6d" e6 jB 6d7 e6 jX 6d# e6 jC 6d$ e6 jD 6d% e6 jE 6d& e6 jF 6d' e6 jG 6d( e6 jH 6d) e6 jI 6d* e6 jJ 6d+ e6 jK 6d e6 jZ 6d e6 j[ 6d8 e6 j\ 6d9 e6 j] 6d: e6 j^ 6Z` e ja d` k Zb e sje6 jc eL d< <e6 jd eY d= <d< e` e6 jc <d< e` e6 jd <n  eb re6 je eL d> <e6 jf eY d? <n  eg ah d@   Zi ej dA  Zk dB el f dC     YZm dD en f dE     YZo dF ep f dG     YZq dH el f dI     YZr dJ   Zs dK   Zt dL   Zu dM el f dN     YZv dO   Zw d dP  Zx e jy f Zz e da k  rez e j{ f 7Zz y! d  dQ l| m} Z} ez e} f 7Zz Wqe k
 rqXn  dR   Z~ dS   Z dT   Z dU   Z dV   Z dW   Z dX   Z dY   Z dZ Z e e  Z e j e _ d  d[ l m Z d\ db d]     YZ e d^   d^    e j sQt  d S(c   i    (   t   print_functiont   divisiont   absolute_importN(   t
   ModuleTypei   (   t   *(   t   StringIO(   t	   PYVERSIONt   MACHINE_BITSi   c         C` s/   |  j  d k	 r" t j |  j   n  |  j d  S(   s[   
        Erase the traceback and hanging locals from the given exception instance.
        N(   t   __traceback__t   Nonet	   tracebackt   clear_framest   with_traceback(   t	   exc_value(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   erase_traceback&   s    c         C` s
   t  |   S(   N(   t   ord(   t   x(    (    s*   lib/python2.7/site-packages/numba/utils.pyt	   asbyteint5   s    t   win32c         C` sI   y t  j |  |  Wn. t k
 rD t  j |  t  j |  |  n Xd  S(   N(   t   ost   renamet   OSErrort   unlink(   t   srct   dest(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   file_replace:   s
    c         C` s   |  S(   s[   
        Erase the traceback and hanging locals from the given exception instance.
        (    (   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   D   s    (   t	   signature(   t	   Signature(   t	   Parameter(   t   BoundArgumentsc         C` s   |  j  } g  } x |  j j j   D] \ } } y | j | | | f  Wq" t k
 r | j | j k	 rw | j } n3 | j t	 k r d } n | j t
 k r" i  } n q" | j | | f  q" Xq" Wt j |  |  _  d  S(   N(    (   t	   argumentst
   _signaturet
   parameterst   itemst   appendt   KeyErrort   defaultt   emptyt   kindt   _VAR_POSITIONALt   _VAR_KEYWORDt   collectionst   OrderedDict(   t   selfR   t   new_argumentst   namet   paramt   val(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   apply_defaultsY   s    			s>   please install the 'funcsigs' package ('pip install funcsigs')(   t   singledispatchsJ   please install the 'singledispatch' package ('pip install singledispatch')c         C` s   g  } x t  r g  |  D] } | r | ^ q }  |  s8 | SxD |  D]< } | d } x) |  D]  } | | d k rV d } PqV qV WPq? W| d k r t d   n  | j |  x( |  D]  } | d | k r | d =q q Wq	 Wd S(   s   Merges MROs in *sequences* to a single MRO using the C3 algorithm.

            Adapted from http://www.python.org/download/releases/2.3/mro/.

            i    i   s   Inconsistent hierarchyN(   t   TrueR	   t   RuntimeErrorR"   (   t	   sequencest   resultt   st   s1t	   candidatet   s2t   seq(    (    s*   lib/python2.7/site-packages/numba/utils.pyt	   _c3_merge~   s$    	
t   +t   -R   s   //t   /t   %s   **t   &t   |t   ^s   <<s   >>s   ==s   !=t   <s   <=t   >s   >=t   iss   is nott   ins   +=s   -=s   *=s   //=s   /=s   %=s   **=s   &=s   |=s   ^=s   <<=s   >>=t   ~t   nott   is_truei   s   /?s   /?=t   @s   @=c           C` s
   t  a d  S(   N(   R2   t   _shutting_down(    (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   _at_shutdown  s    c         C` s(   |    j  d  } | t k p' | d k S(   s  
    Whether the interpreter is currently shutting down.
    For use in finalizers, __del__ methods, and similar; it is advised
    to early bind this function rather than look it up when calling it,
    since at shutdown module globals may be cleared.
    RK   N(   t   getR2   R	   (   t   globalst   v(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   shutting_down  s    t   ConfigOptionsc           B` st   e  Z i  Z d    Z e d  Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d   Z d	   Z d
   Z RS(   c         C` s   |  j  j   |  _ d  S(   N(   t   OPTIONSt   copyt   _values(   R+   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   __init__   s    c         C` s3   | |  j  k r" t d |   n  | |  j | <d  S(   Ns   Invalid flag: %s(   RR   t	   NameErrorRT   (   R+   R-   t   value(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   set#  s    c         C` s   |  j  | t  d  S(   N(   RX   t   False(   R+   R-   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   unset(  s    c         C` s&   | |  j  k r" t d |   n  d  S(   Ns   Invalid flag: %s(   RR   t   AttributeError(   R+   R-   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   _check_attr+  s    c         C` s   |  j  |  |  j | S(   N(   R\   RT   (   R+   R-   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   __getattr__/  s    c         C` sI   | j  d  r+ t t |   j | |  n |  j |  | |  j | <d  S(   Nt   _(   t
   startswitht   superRQ   t   __setattr__R\   RT   (   R+   R-   RW   (    (    s*   lib/python2.7/site-packages/numba/utils.pyRa   3  s    c         C` s$   d d j  d   |  j j   D  S(   Ns	   Flags(%s)s   , c         s` s1   |  ]' \ } } | t  k	 r d  | | f Vq d S(   s   %s=%sN(   RY   (   t   .0t   kRO   (    (    s*   lib/python2.7/site-packages/numba/utils.pys	   <genexpr>;  s   	(   t   joinRT   R!   (   R+   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   __repr__:  s    c         C` s%   t  |     } |  j j   | _ | S(   N(   t   typeRT   RS   (   R+   RS   (    (    s*   lib/python2.7/site-packages/numba/utils.pyRS   ?  s    c         C` s   t  | t  o | j |  j k S(   N(   t
   isinstanceRQ   RT   (   R+   t   other(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   __eq__D  s    c         C` s   |  | k S(   N(    (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   __ne__G  s    c         C` s   t  t t |  j j      S(   N(   t   hasht   tuplet   sortedRT   R!   (   R+   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   __hash__J  s    (   t   __name__t
   __module__RR   RU   R2   RX   RZ   R\   R]   Ra   Re   RS   Ri   Rj   Rn   (    (    (    s*   lib/python2.7/site-packages/numba/utils.pyRQ     s   									t	   SortedMapc           B` s2   e  Z d  Z d   Z d   Z d   Z d   Z RS(   s   Immutable
    c         C` sb   g  |  _  i  |  _ xI t t |   D]5 \ } \ } } | |  j | <|  j  j | | f  q% Wd  S(   N(   RT   t   _indext	   enumerateRm   R"   (   R+   R:   t   iRc   RO   (    (    s*   lib/python2.7/site-packages/numba/utils.pyRU   R  s
    		%c         C` s   |  j  | } |  j | d S(   Ni   (   Rr   RT   (   R+   Rc   Rt   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   __getitem__Y  s    c         C` s   t  |  j  S(   N(   t   lenRT   (   R+   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   __len__]  s    c         C` s   t  d   |  j D  S(   Nc         s` s   |  ] \ } } | Vq d  S(   N(    (   Rb   Rc   RO   (    (    s*   lib/python2.7/site-packages/numba/utils.pys	   <genexpr>a  s    (   t   iterRT   (   R+   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   __iter__`  s    (   Ro   Rp   t   __doc__RU   Ru   Rw   Ry   (    (    (    s*   lib/python2.7/site-packages/numba/utils.pyRq   N  s
   			t
   UniqueDictc           B` s   e  Z d    Z RS(   c         C` s?   | |  k r" t  d | f   n  t t |   j | |  d  S(   Ns   key already in dictionary: %r(   t   AssertionErrorR`   R{   t   __setitem__(   R+   t   keyRW   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR}   e  s    (   Ro   Rp   R}   (    (    (    s*   lib/python2.7/site-packages/numba/utils.pyR{   d  s   t   cached_propertyc           B` s&   e  Z d  Z d d  Z d d  Z RS(   s
  
    Decorator that converts a method with a single self argument into a
    property cached on the instance.

    Optional ``name`` argument allows you to make cached properties of other
    methods. (e.g.  url = cached_property(get_absolute_url, name='url') )
    c         C` s   | |  _  | p | j |  _ d  S(   N(   t   funcRo   R-   (   R+   R   R-   (    (    s*   lib/python2.7/site-packages/numba/utils.pyRU   v  s    	c         C` s1   | d  k r |  S|  j |  } | j |  j <| S(   N(   R	   R   t   __dict__R-   (   R+   t   instanceRf   t   res(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   __get__z  s    N(   Ro   Rp   Rz   R	   RU   R   (    (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   n  s   c         ` s.   t  j       f d     t  _  S(   Nc          ` s.    j  s'     }  |   _ t  _  n   j S(   N(   t   _rant   _resultR2   (   R   (   t   fnt   inner(    s*   lib/python2.7/site-packages/numba/utils.pyR     s
    			(   t	   functoolst   wrapsRY   R   (   R   (    (   R   R   s*   lib/python2.7/site-packages/numba/utils.pyt   runonce  s    !	c         C` sR   t  |  t  s t  |  d k r5 t t |    d St t |  d   d Sd S(   sL   
    Return the number of bits necessary to represent integer `intval`.
    i    i   i   N(   Rg   t	   INT_TYPESR|   Rv   t   bin(   t   intval(    (    s*   lib/python2.7/site-packages/numba/utils.pyt
   bit_length  s    c         #` sF     f d   } d } x* t  rA t    } | | |  V| } q Wd S(   s  
    Given a list, return an infinite iterator of iterators.
    Each iterator iterates over the list from the last seen point up to
    the current end-of-list.

    In effect, each iterator will give the newly appended elements from the
    previous iterator instantiation time.
    c         ` s   t    |  | ! S(   N(   Rx   (   t   startt   stop(   t   lst(    s*   lib/python2.7/site-packages/numba/utils.pyt   sublist_iterator  s    i    N(   R2   Rv   (   R   R   R   R   (    (   R   s*   lib/python2.7/site-packages/numba/utils.pyt   stream_list  s    		t   BenchmarkResultc           B` s   e  Z d    Z d   Z RS(   c         C` sA   | |  _  | |  _ t j |  | |  _ t j |  j  |  _ d  S(   N(   R   t   loopt   npt   arrayt   recordst   mint   best(   R+   R   R   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyRU     s    		c         C` sD   t  |  j d |  j  } | |  j |  j j t |  j  f } d | S(   NRo   s)   %20s: %10d loops, best of %d: %s per loop(   t   getattrR   R   R   t   sizet   format_timeR   (   R+   R-   t   args(    (    s*   lib/python2.7/site-packages/numba/utils.pyRe     s    $(   Ro   Rp   RU   Re   (    (    (    s*   lib/python2.7/site-packages/numba/utils.pyR     s   	c         C` s]   d j    } d } x6 | d  D]  } |  | k r3 Pn  | d } q W| d } d |  | | f S(   Ns   s ms us ns psi   ii  s   %.1f%s(   t   split(   t   tmt   unitst   baset   unit(    (    s*   lib/python2.7/site-packages/numba/utils.pyR     s    
c         C` s   t  j |   } d } | j d |  } x6 t |  | d k r_ | d 9} | j d |  } q* Wt |  | } | | k r t |  | |  S| d | } t | | d d  } t d t j t j	 |    } | j d |  } t |  | |  S(   Ni   i    i
   i   (
   t   timeitt   Timert   repeatR   R   t   maxt   intt   matht   ceilt   log10(   R   t   maxsect   timert   numberR5   R   t   max_per_run_timeR   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt	   benchmark  s    
"(   t   newrangec         C` s!   |  |  } | t  k r t  S| S(   N(   t   NotImplemented(   t   opRh   t	   op_result(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   _not_op  s    c         C` s,   |  |  } | t  k r t  S| p+ | | k S(   N(   R   (   R   R+   Rh   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt	   _op_or_eq  s    c         C` s-   |  |  } | t  k r t  S| o, | | k S(   N(   R   (   R   R+   Rh   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   _not_op_and_not_eq  s    c         C` s-   |  |  } | t  k r t  S| p, | | k S(   N(   R   (   R   R+   Rh   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   _not_op_or_eq  s    c         C` s,   |  |  } | t  k r t  S| o+ | | k S(   N(   R   (   R   R+   Rh   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   _op_and_not_eq  s    c         C` sH   t  d k r4 t t |  } t |  |  } | | k S| t |   k Sd S(   sP   
    Whether operator *op* on *cls* is inherited from the root object type.
    i   N(   i   (   R   R   t   objectt   dir(   t   clsR   t	   object_opt   cls_op(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   _is_inherited_from_object  s
    
c         C` sW  i d d   f d d   f d d   f g d 6d d   f d d	   f d d
   f g d 6d d   f d d   f d d   f g d 6d d   f d d   f d d   f g d 6} g  | D] } t  |  |  s | ^ q } | s t d   n  t |  } xU | | D]I \ } } | | k r| | _ t t |  j | _ t |  | |  qqW|  S(   s6   Class decorator that fills in missing ordering methodst   __gt__c         S` s   t  |  j |  |  S(   N(   R   t   __lt__(   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   <lambda>)  s   t   __le__c         S` s   t  |  j |  |  S(   N(   R   R   (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   ,  t    t   __ge__c         S` s   t  |  j |  S(   N(   R   R   (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   -  R   R   c         S` s   t  |  j |  |  S(   N(   R   R   (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   /  s   c         S` s   t  |  j |  |  S(   N(   R   R   (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   2  s   c         S` s   t  |  j |  S(   N(   R   R   (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   4  R   c         S` s   t  |  j |  |  S(   N(   R   R   (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   6  s   c         S` s   t  |  j |  |  S(   N(   R   R   (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   9  R   c         S` s   t  |  j |  S(   N(   R   R   (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   :  R   c         S` s   t  |  j |  |  S(   N(   R   R   (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   <  s   c         S` s   t  |  j |  |  S(   N(   R   R   (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   ?  s   c         S` s   t  |  j |  S(   N(   R   R   (   R+   Rh   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   A  R   s6   must define at least one ordering operation: < > <= >=(   R   t
   ValueErrorR   Ro   R   R   Rz   t   setattr(   R   t   convertR   t   rootst   roott   opnamet   opfunc(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   total_ordering%  s@    								(	c         C` sF   |  } t  } x3 | rA | j r( t } Pn  | j s5 Pq | j } q W| S(   N(   RY   t   handlersR2   t	   propagatet   parent(   t   loggert   ct   rv(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   logger_hasHandlersQ  s    			s	   <dynamic>(   t   reft   finalizec           B` s   e  Z d  Z d Z i  Z e Z e j   Z	 e Z
 e Z d d d     YZ d   Z d d  Z d   Z d   Z e d    Z e d    Z e j d	    Z d
   Z e d    Z e d    Z RS(   s  Class for finalization of weakrefable objects

    finalize(obj, func, *args, **kwargs) returns a callable finalizer
    object which will be called when obj is garbage collected. The
    first time the finalizer is called it evaluates func(*arg, **kwargs)
    and returns the result. After this the finalizer is dead, and
    calling it just returns None.

    When the program exits any remaining finalizers for which the
    atexit attribute is true will be run in reverse order of creation.
    By default atexit is true.
    t   _Infoc           B` s   e  Z d Z RS(   t   weakrefR   R   t   kwargst   atexitt   index(   R   R   R   R   R   R   (   Ro   Rp   t	   __slots__(    (    (    s*   lib/python2.7/site-packages/numba/utils.pyR     s   c         O` s   |  j  s> d d  l } | j |  j  t t _  | j t  n  |  j   } t | |   | _	 | | _
 | | _ | pw d  | _ t | _ t |  j  | _ | |  j |  <t t _ d  S(   Ni    (   t   _registered_with_atexitR   t   registert	   _exitfuncR2   R   RL   R   R   R   R   R   R	   R   t   nextt   _index_iterR   t	   _registryt   _dirty(   R+   t   objR   R   R   R   t   info(    (    s*   lib/python2.7/site-packages/numba/utils.pyRU     s    					c         C` sE   |  j  j |  d  } | rA |  j rA | j | j | j p= i    Sd S(   sZ   If alive then mark as dead and return func(*args, **kwargs);
        otherwise return NoneN(   R   t   popR	   t	   _shutdownR   R   R   (   R+   R^   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   __call__  s    c         C` sh   |  j  j |   } | o! | j   } | d k	 rd |  j  j |  d  rd | | j | j | j p` i  f Sd S(   s^   If alive then mark as dead and return (obj, func, args, kwargs);
        otherwise return NoneN(   R   RM   R   R	   R   R   R   R   (   R+   R   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   detach  s    !c         C` sS   |  j  j |   } | o! | j   } | d k	 rO | | j | j | j pK i  f Sd S(   sM   If alive then return (obj, func, args, kwargs);
        otherwise return NoneN(   R   RM   R   R	   R   R   R   (   R+   R   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   peek  s    c         C` s   |  |  j  k S(   s   Whether finalizer is alive(   R   (   R+   (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   alive  s    c         C` s%   |  j  j |   } t |  o$ | j S(   s*   Whether finalizer should be called at exit(   R   RM   t   boolR   (   R+   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR     s    c         C` s.   |  j  j |   } | r* t |  | _ n  d  S(   N(   R   RM   R   R   (   R+   RW   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR     s    c         C` s   |  j  j |   } | o! | j   } | d  k rM d t |   j t |   f Sd t |   j t |   t |  j t |  f Sd  S(   Ns   <%s object at %#x; dead>s!   <%s object at %#x; for %r at %#x>(   R   RM   R   R	   Rf   Ro   t   id(   R+   R   R   (    (    s*   lib/python2.7/site-packages/numba/utils.pyRe     s    c         C` sg   g  |  j  j   D]! \ } } | j r | | f ^ q } | j d d    g  | D] \ } } | ^ qQ S(   NR~   c         S` s   |  d j  S(   Ni   (   R   (   t   item(    (    s*   lib/python2.7/site-packages/numba/utils.pyR     R   (   R   R!   R   t   sort(   R   t   fRt   t   L(    (    s*   lib/python2.7/site-packages/numba/utils.pyt   _select_for_exit  s    7c         C` s  t  } z |  j r d d  l } | j   r= t } | j   n  d  } x t r | d  k sa t j ry |  j	   } t  t _ n  | s Pn  | j
   } y |   Wn$ t k
 r t j t j     n X| |  j k sF t  qF Wn  Wd  t t _ | r | j   n  Xd  S(   Ni    (   RY   R   t   gct	   isenabledR2   t   disableR	   R   R   R   R   t	   Exceptiont   syst
   excepthookt   exc_infoR|   R   t   enable(   R   t   reenable_gcR   t   pendingR   (    (    s*   lib/python2.7/site-packages/numba/utils.pyR     s.    		 	(    (    N(   Ro   Rp   Rz   R   R   RY   R   t	   itertoolst   countR   R   R   R   RU   R	   R   R   R   t   propertyR   R   t   setterRe   t   classmethodR   R   (    (    (    s*   lib/python2.7/site-packages/numba/utils.pyR   j  s$   					c           C` s   d  S(   N(   R	   (    (    (    s*   lib/python2.7/site-packages/numba/utils.pyR     R   (   i   i    (   i   i   (   i   i    (    (   t
   __future__R    R   R   R   R)   R   t   ioR   R   t	   threadingR   R   R   R
   t   typesR   t   numpyR   t   sixt	   cStringIOR   t   ImportErrort   numba.configR   R   t   IS_PY3t   builtinsR   R   t   longintt	   get_identt   internt   replaceR   R   R   t   threadt   __builtin__t   longt   platformR   t   inspectR   t   pysignatureR   t   pySignatureR   t   pyParametert   funcsigsR   R0   R1   R;   t   operatort   addt   subt   mult   floordivt   truedivt   modt   powt   and_t   or_t   xort   lshiftt   rshiftt   eqt   net   ltt   let   gtt   get   is_t   is_nott   containst   BINOPS_TO_OPERATORSt   iaddt   isubt   imult	   ifloordivt   itruedivt   imodt   ipowt   iandt   iort   ixort   ilshiftt   irshiftt   INPLACE_BINOPS_TO_OPERATORSt   post   negt   invertt   not_t   trutht   UNARY_BUITINS_TO_OPERATORSt   OPERATORS_TO_BUILTINSt   version_infot   HAS_MATMUL_OPERATORt   divt   idivt   matmult   imatmulRY   RK   RL   RN   RP   R   RQ   t   MappingRq   t   dictR{   R   R   R   R   R   R   R   t   ranget   RANGE_ITER_OBJECTSt   xranget   future.types.newrangeR   R   R   R   R   R   R   R   R   t   _dynamic_modnamet   _dynamic_modulet   movest   __builtins__R   R   R   R   R|   (    (    (    s*   lib/python2.7/site-packages/numba/utils.pyt   <module>   sz  
												







































































	1
														,	