ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ Yc@@sdZddlmZddlZddlZddlmZmZmZm Z m Z m Z m Z ddl mZddlmZdZd Zdefd YZd efd YZd efdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZe rdefdYZnejeejeejeejeejeejeejeejeejee rejendS( s raven.utils.serializer.base ~~~~~~~~~~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. i(tabsolute_importN(t text_typet binary_typet string_typest iteritemst class_typestPY2tPY3(t to_unicodei(tmanagert SerializercC@s0yt|jdSWntk r+tSXdS(Nt __sentry__(tcallablet__getattribute__t ExceptiontFalse(tvalue((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pythas_sentry_metadatas cB@s8eZdZdZdZdZdddZRS(cC@s ||_dS(N(R (tselfR ((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyt__init__ scC@st||jS(s| Given ``value``, return a boolean describing whether this serializer can operate on the given type (t isinstancettypes(RR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pytcan#scK@s|S(s@ Given ``value``, coerce into a JSON-safe type. ((RRtkwargs((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyt serialize*siicK@s|jdd}|d7}||krytt|| }Wqtk r}ddl}|j|jjj |tt |SXn|jj |d|d||S(s| Given ``value``, recurse (using the parent serializer) to handle coercing of newly defined values. tstring_max_lengthiiNt max_deptht_depth( tgettNoneRtreprRt tracebackt print_excR tloggert exceptionttypet transform(RRRRRRteR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pytrecurse0s    ((t__name__t __module__RRRRR&(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR s    tIterableSerializercB@s#eZeeeefZdZRS(c @sSjdptdtfdtjfdt|DS(Ntlist_max_lengthtinfc3@s'|]\}}j|VqdS(N(R&(t.0tnto(RR(sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pys Jsc@s|dkS(Ni((tx(R*(sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pytLt(Rtfloatttuplet itertoolst takewhilet enumerate(RRR((RR*RsL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRGs (R'R(R3tlisttsett frozensetRR(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR)DstDictSerializercB@s#eZefZdZdZRS(cC@st|tst|S|S(N(RRR(Rtkey((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pytmake_keyTs c @sYjdptdtfdtjfdtt|DS(NR*R+c3@sH|]>\}\}}jj|j|fVqdS(N(R<R&(R,R-tktv(RR(sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pys \sc@s|dkS(Ni((R/(R*(sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR0^R1(RR2tdictR4R5R6R(RRR((RR*RsL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRYs (R'R(R?RR<R(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR:Qs  tUnicodeSerializercB@seZefZdZRS(cK@s-|jdd}ttd|| fS(NRs%s(RRRR(RRRR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRfs(R'R(RRR(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR@cs tStringSerializercB@seZefZdZRS(cK@sn|jdd}tr&t|| Sy&d|jd| jddSWntk r_nXt|| S(NRt'tutf8(RRRRtdecodetencodetUnicodeDecodeError(RRRR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRrs& (R'R(RRR(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRAos tTypeSerializercB@s eZeZdZdZRS(cC@s#tt|j| o"t|S(N(tsuperRGRR(RR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRscK@s|j|j|S(N(R&R (RRR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRs(R'R(RRRR(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRGs tBooleanSerializercB@seZefZdZRS(cK@s t|S(N(tbool(RRR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRs(R'R(RJRR(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRIs tFloatSerializercB@seZefZdZRS(cK@s t|S(N(R2(RRR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRs(R'R(R2RR(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRKs tIntegerSerializercB@seZefZdZRS(cK@s t|S(N(tint(RRR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRs(R'R(RMRR(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRLs tFunctionSerializercB@seZejfZdZRS(cK@sd|j|jt|fS(Ns(R'R(tid(RRR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRs(R'R(Rt FunctionTypeR(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRNs tLongSerializercB@seZefZdZRS(cK@s t|S(N(tlong(RRR((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRs(R'R(RRRR(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRQs (R ( t__doc__t __future__RR4Rtraven.utils.compatRRRRRRRtraven.utils.encodingRR tserialization_managert__all__RtobjectR R)R:R@RARGRIRKRLRNRQtregister(((sL/opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyts>  4 '