???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................ó
¿öYc           @@ sŠ   d  Z  d d l m Z m Z d d l Z d d l m Z m Z m Z m	 Z	 m
 Z
 d „  Z d e d d „ Z d	 „  Z d
 „  Z d „  Z d S(   u­   
raven.utils.encoding
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
i    (   t   absolute_importt   unicode_literalsN(   t   integer_typest	   text_typet   binary_typet   string_typest   PY2c      	   C@ sJ   d d l  } d d l } t |  t t d ƒ t | | j | j | j f ƒ S(   u£   Determine if the object instance is of a protected type.

    Objects of protected types are preserved as-is when passed to
    force_text(strings_only=True).
    i    N(	   t   Decimalt   datetimet
   isinstanceR   t   typet   Nonet   floatt   datet   time(   t   objR   R   (    (    sE   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pyt   is_protected_type   s    u   utf-8u   strictc         C@ s,  t  |  t ƒ r |  S| r) t |  ƒ r) |  Sy— t  |  t ƒ s­ t |  d ƒ rY |  j ƒ  }  q¿ t s’ t  |  t ƒ rƒ t |  | | ƒ }  qª t |  ƒ }  q¿ t t |  ƒ | | ƒ }  n |  j | | ƒ }  Wne t	 k
 r'} t  |  t
 ƒ só t	 | j Œ  ‚ q(d j g  |  D] } t | | | | ƒ ^ q ƒ }  n X|  S(   uÆ   
    Similar to smart_text, except that lazy instances are resolved to
    strings, rather than kept as lazy objects.

    If strings_only is True, don't convert (some) non-string-like objects.
    u   __unicode__u    (   R	   R   R   R   t   hasattrt   __unicode__R   t   bytest   decodet   UnicodeDecodeErrort	   Exceptiont   argst   joint
   force_text(   t   st   encodingt   strings_onlyt   errorst   et   arg(    (    sE   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pyR      s(    		,c         C@ s*   d d l  m } t j d t ƒ | |  ƒ S(   Ni    (   t	   transformu5   You should switch to raven.utils.serializer.transform(   t   raven.utils.serializerR    t   warningst   warnt   DeprecationWarning(   t   valueR    (    (    sE   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pyR    H   s    	c         C@ s†   y t  t |  ƒ ƒ }  Wni t t f k
 r5 d }  nM t k
 r y" t  t t t |  ƒ ƒ ƒ ƒ }  Wq‚ t k
 r} d }  q‚ Xn X|  S(   Nu   (Error decoding value)(   R   R   t   UnicodeEncodeErrorR   R   t   reprR
   (   R%   (    (    sE   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pyt
   to_unicodeP   s    	"c         C@ sH   y  t  |  j d ƒ j d ƒ ƒ SWn! t k
 rC t |  ƒ j d ƒ SXd  S(   Nu   utf-8(   R   R   t   encodeR   R(   (   R%   (    (    sE   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pyt	   to_string]   s     (   t   __doc__t
   __future__R    R   R"   t   raven.utils.compatR   R   R   R   R   R   t   FalseR   R    R(   R*   (    (    (    sE   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pyt   <module>   s   (	,		