ó ¿öYc@@sŠdZddlmZmZddlZddlmZmZmZm Z m Z d„Z de dd„Z d „Zd „Zd „ZdS( 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(tabsolute_importtunicode_literalsN(t integer_typest text_typet binary_typet string_typestPY2c C@sJddl}ddl}t|ttdƒt||j|j|jfƒ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). iN( tDecimaltdatetimet isinstanceRttypetNonetfloattdatettime(tobjRR((sE/opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pytis_protected_types  uutf-8ustrictcC@s,t|tƒr|S|r)t|ƒr)|Sy—t|tƒs­t|dƒrY|jƒ}q¿ts’t|tƒrƒt|||ƒ}qªt|ƒ}q¿tt|ƒ||ƒ}n|j||ƒ}Wnet k r'}t|t ƒsót |j Œ‚q(dj g|D]}t ||||ƒ^qƒ}nX|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 RRRthasattrt __unicode__RtbytestdecodetUnicodeDecodeErrort Exceptiontargstjoint force_text(tstencodingt strings_onlyterrorstetarg((sE/opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pyRs(  ,cC@s*ddlm}tjdtƒ||ƒS(Ni(t transformu5You should switch to raven.utils.serializer.transform(traven.utils.serializerR twarningstwarntDeprecationWarning(tvalueR ((sE/opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pyR Hs cC@s†ytt|ƒƒ}Wnittfk r5d}nMtk ry"tttt|ƒƒƒƒ}Wq‚tk r}d}q‚XnX|S(Nu(Error decoding value)(RRtUnicodeEncodeErrorRRtreprR (R%((sE/opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pyt to_unicodePs  " cC@sHy t|jdƒjdƒƒSWn!tk rCt|ƒjdƒSXdS(Nuutf-8(RRtencodeRR((R%((sE/opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pyt to_string]s  (t__doc__t __future__RRR"traven.utils.compatRRRRRRtFalseRR R(R*(((sE/opt/alt/python27/lib/python2.7/site-packages/raven/utils/encoding.pyts ( ,