£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    Y                 @   sf   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d Zdd
dZdd Zdd Zdd ZdS )z
raven.utils.encoding
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
    )absolute_importunicode_literalsN)integer_types	text_typebinary_typestring_typesPY2c          	   C   s4   ddl }ddl}t| ttdt||j|j|jf S )zDetermine 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).
    r   N)Decimaldatetime
isinstancer   typefloatdatetime)objr	   r
    r   E/opt/alt/python37/lib/python3.7/site-packages/raven/utils/encoding.pyis_protected_type   s    r   utf-8Fstrictc          
      s   t | tr| S rt| r| S yft | tsvt| dr>|  } qtsdt | trZt|  } qtt| } qtt|  } n|  } W nT t	k
r } z6t | t
st	|j nd fdd| D } W dd}~X Y nX | S )z
    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.
    __unicode__ c                s   g | ]}t | qS r   )
force_text).0arg)encodingerrorsstrings_onlyr   r   
<listcomp>C   s   zforce_text.<locals>.<listcomp>N)r   r   r   r   hasattrr   r   bytesdecodeUnicodeDecodeError	Exceptionargsjoin)sr   r   r   er   )r   r   r   r   r      s(    	






r   c             C   s    ddl m} tdt || S )Nr   )	transformz5You should switch to raven.utils.serializer.transform)Zraven.utils.serializerr(   warningswarnDeprecationWarning)valuer(   r   r   r   r(   H   s    r(   c             C   sv   yt t| } W n` ttfk
r,   d} Y nF tk
rp   yt ttt| } W n tk
rj   d} Y nX Y nX | S )Nz(Error decoding value))r   r   UnicodeEncodeErrorr"   r#   reprr   )r,   r   r   r   
to_unicodeP   s    r/   c             C   s8   yt | ddS  tk
r2   t| dS X d S )Nzutf-8)r   r!   encoder#   r/   )r,   r   r   r   	to_string]   s    r1   )r   Fr   )__doc__
__future__r   r   r)   Zraven.utils.compatr   r   r   r   r   r   r   r(   r/   r1   r   r   r   r   <module>   s   
,