???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................σ
ΏφYc           @@  sL  d  Z  d d l m Z d d l Z d d l Z d d l Z e j d d k Z e j d d k Z e r e	 f Z
 e f Z e f Z e	 Z e Z n0 e f Z
 e e f Z e e j f Z e Z e	 Z y
 e Z Wn e k
 rζ d   Z n Xe Z y
 e Z Wn e k
 rd   Z n Xe r#e Z n d e f d	     YZ e rfd
   Z d   Z d   Z d   Z n$ d   Z d   Z d   Z d   Z e rΓd   Z  d   Z! d d l" Z" e" j# Z# e" j$ Z$ n+ d   Z  d   Z! d d l# Z# e# j# Z# Z$ e re% e& d  d  Z' d d  Z) n d d d  Z' e' d  e j d  d% k rQe' d  n) e j d  d& k rqe' d  n	 d   Z* e rβd d l+ m, Z, d d l- m. Z/ d d l0 j1 Z2 d d  l3 m4 Z4 d d! l5 m6 Z7 d d" l8 m9 Z: nT d d l2 m, Z, d d l/ Z/ d d l2 Z2 d d  l4 m4 Z4 d d! l8 m6 Z7 d d l: Z: d#   Z; d$   Z< d S('   sΩ   
raven.utils.compat
~~~~~~~~~~~~~~~~~~

:copyright: (c) 2010-2016 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.

Utilities for writing code that runs on Python 2 and 3
i    (   t   absolute_importNi   i   c         C@  s
   |  j    S(   N(   t   next(   t   it(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt   advance_iterator:   s    c         C@  s   t  d   t |   j D  S(   Nc         s@  s   |  ] } d  | j  k Vq d S(   t   __call__N(   t   __dict__(   t   .0t   klass(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pys	   <genexpr>C   s    (   t   anyt   typet   __mro__(   t   obj(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt   callableB   s    t   Iteratorc           B@  s   e  Z d    Z RS(   c         C@  s   t  |   j |   S(   N(   R	   t   __next__(   t   self(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyR   J   s    (   t   __name__t
   __module__R   (    (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyR   H   s   c         K@  s   t  |  j |    S(   N(   t   itert   keys(   t   dt   kw(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt   iterkeysO   s    c         K@  s   t  |  j |    S(   N(   R   t   values(   R   R   (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt
   itervaluesR   s    c         K@  s   t  |  j |    S(   N(   R   t   items(   R   R   (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt	   iteritemsU   s    c         K@  s   t  |  j |    S(   N(   R   t   lists(   R   R   (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt	   iterlistsX   s    c         K@  s   |  j  |   S(   N(   R   (   R   R   (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyR   [   s    c         K@  s   |  j  |   S(   N(   R   (   R   R   (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyR   ^   s    c         K@  s   |  j  |   S(   N(   R   (   R   R   (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyR   a   s    c         K@  s   |  j  |   S(   N(   R   (   R   R   (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyR   d   s    c         C@  s   |  j  d  S(   Ns   latin-1(   t   encode(   t   s(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt   bi   s    c         C@  s   |  S(   N(    (   R   (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt   ul   s    c         C@  s   |  S(   N(    (   R   (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyR   r   s    c         C@  s   t  |  j d d  d  S(   Ns   \\s   \\\\t   unicode_escape(   t   unicodet   replace(   R   (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyR    v   s    t   builtinst   execc         C@  sW   zC | d  k r |    } n  | j | k	 r< | j |   n  |  Wd  d  } d  } Xd  S(   N(   t   Nonet   __traceback__t   with_traceback(   t   tpt   valuet   tb(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt   reraise   s    
c         B@  sc   | d k rB e j d  } | j } | d k r< | j } n  ~ n | d k rW | } n  d d Ud S(   s   Execute code in a namespace.i   s   exec _code_ in _globs_, _locs_N(   R&   t   syst	   _getframet	   f_globalst   f_locals(   t   _code_t   _globs_t   _locs_t   frame(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt   exec_   s    		se   def reraise(tp, value, tb=None):
    try:
        raise tp, value, tb
    finally:
        tb = None
s©   def raise_from(value, from_value):
    try:
        if from_value is None:
            raise value
        raise value from from_value
    finally:
        value = None
sr   def raise_from(value, from_value):
    try:
        raise value from from_value
    finally:
        value = None
c         C@  s
   |   d  S(   N(    (   R*   t
   from_value(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt
   raise_from°   s    (   t	   HTTPError(   t   client(   t   Queue(   t   quote(   t   parsec         C@  sJ   t  |  d t  |  d d    } | d  k rF t d t |   j   n  | S(   Nt   __code__t	   func_codes   Could not get code from %r(   t   getattrR&   t	   TypeErrorR	   R   (   t   funct   rv(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt   get_codeΔ   s    c          C@  s   y d d l  m }  Wn t k
 r( d  SXd |  k r9 d  St |  j d d   j   d k r d d	 l m } | t d
   n  d  S(   Ni    (   t   optt   threadss   enable-threadst   0t   falset   offt   no(   t   warnsΎ   We detected the use of uwsgi with disabled threads.  This will cause issues with the transport you are trying to use.  Please enable threading for uwsgi.  (Enable the "enable-threads" flag).(   RG   RH   RI   RF   (	   t   uwsgiRD   t   ImportErrort   strt   gett   lowert   warningsRJ   t   Warning(   RD   RJ   (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt   check_threadsΛ   s    $(   i   i   (   i   i   (=   t   __doc__t
   __future__R    t   operatorR-   t   typest   version_infot   PY2t   PY3RM   t   string_typest   intt   integer_typesR	   t   class_typest	   text_typet   bytest   binary_typet
   basestringt   longt	   ClassTypeR"   R   R   t	   NameErrorR   t   objectR   R   R   R   R   R   R    t   iot   StringIOt   BytesIOR?   t
   __import__R5   R&   R,   R7   t   urllib.errorR8   t   httpR9   t   httplibt   urllib.requestt   requestt   urllib2t   queueR:   t   urllib.parseR;   t   urllib_quotet   urllibR<   t   urlparseRC   RR   (    (    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/compat.pyt   <module>	   s   					

													

		