£Á°è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>

Yc           @@  s  d  Z  d d l m Z d d l Z d d l Z d d l m Z m Z m Z m	 Z	 m
 Z
 m Z m Z d d l m Z d d l m Z d Z d	   Z d e f d
     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ e rd e f d     YZ n  e j e  e j e  e j e  e j e  e j e  e j e  e j e  e j e  e j e  e re j e  n  d S(    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    (   t   absolute_importN(   t	   text_typet   binary_typet   string_typest	   iteritemst   class_typest   PY2t   PY3(   t
   to_unicodei   (   t   managert
   Serializerc         C@  s0   y t  |  j d   SWn t k
 r+ t SXd  S(   Nt
   __sentry__(   t   callablet   __getattribute__t	   Exceptiont   False(   t   value(    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyt   has_sentry_metadata   s    c           B@  s8   e  Z d Z d    Z d   Z d   Z d d d  Z RS(   c         C@  s   | |  _  d  S(   N(   R	   (   t   selfR	   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyt   __init__    s    c         C@  s   t  | |  j  S(   s|   
        Given ``value``, return a boolean describing whether this
        serializer can operate on the given type
        (   t
   isinstancet   types(   R   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyt   can#   s    c         K@  s   | S(   s@   
        Given ``value``, coerce into a JSON-safe type.
        (    (   R   R   t   kwargs(    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyt	   serialize*   s    i   i    c         K@  s   | j  d d  } | d 7} | | k r y t t |   |  } Wq t k
 r } d d l } | j   |  j j j	 |  t t
 |   SXn  |  j j | d | d | | S(   s|   
        Given ``value``, recurse (using the parent serializer) to handle
        coercing of newly defined values.
        t   string_max_lengthi   i    Nt	   max_deptht   _depth(   t   gett   NoneR   t   reprR   t	   tracebackt	   print_excR	   t   loggert	   exceptiont   typet	   transform(   R   R   R   R   R   R   t   eR   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyt   recurse0   s    

(    (   t   __name__t
   __module__R   R   R   R   R&   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR
      s
   			t   IterableSerializerc           B@  s#   e  Z e e e e f Z d    Z RS(   c         @  sS     j  d  p t d   t    f d   t j  f d   t |   D  S(   Nt   list_max_lengtht   infc         3@  s'   |  ] \ } }  j  |    Vq d  S(   N(   R&   (   t   .0t   nt   o(   R   R   (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pys	   <genexpr>J   s   c         @  s   |  d   k  S(   Ni    (    (   t   x(   R*   (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyt   <lambda>L   t    (   R   t   floatt   tuplet	   itertoolst	   takewhilet	   enumerate(   R   R   R   (    (   R   R*   R   sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR   G   s
    (   R'   R(   R3   t   listt   sett	   frozensetR   R   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR)   D   s   t   DictSerializerc           B@  s#   e  Z e f Z d    Z d   Z RS(   c         C@  s   t  | t  s t |  S| S(   N(   R   R   R   (   R   t   key(    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyt   make_keyT   s    
c         @  sY     j  d  p t d   t    f d   t j  f d   t t |    D  S(   NR*   R+   c         3@  sH   |  ]> \ } \ } }  j   j |      j |    f Vq d  S(   N(   R<   R&   (   R,   R-   t   kt   v(   R   R   (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pys	   <genexpr>\   s   c         @  s   |  d   k  S(   Ni    (    (   R/   (   R*   (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR0   ^   R1   (   R   R2   t   dictR4   R5   R6   R   (   R   R   R   (    (   R   R*   R   sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR   Y   s
    (   R'   R(   R?   R   R<   R   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR:   Q   s   		t   UnicodeSerializerc           B@  s   e  Z e f Z d    Z RS(   c         K@  s-   | j  d d   } t t d   | |  f S(   NR   s   %s(   R   R   R   R   (   R   R   R   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR   f   s    (   R'   R(   R   R   R   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR@   c   s   	t   StringSerializerc           B@  s   e  Z e f Z d    Z RS(   c         K@  sn   | j  d d   } t r& t | |   Sy& d | j d  |  j d  d SWn t k
 r_ n Xt | |   S(   NR   t   't   utf8(   R   R   R   R   t   decodet   encodet   UnicodeDecodeError(   R   R   R   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR   r   s    &(   R'   R(   R   R   R   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRA   o   s   	t   TypeSerializerc           B@  s    e  Z e Z d    Z d   Z RS(   c         C@  s#   t  t |   j |  o" t |  S(   N(   t   superRG   R   R   (   R   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR      s    c         K@  s   |  j  | j   |  S(   N(   R&   R   (   R   R   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR      s    (   R'   R(   R   R   R   R   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRG      s   	t   BooleanSerializerc           B@  s   e  Z e f Z d    Z RS(   c         K@  s
   t  |  S(   N(   t   bool(   R   R   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR      s    (   R'   R(   RJ   R   R   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRI      s   	t   FloatSerializerc           B@  s   e  Z e f Z d    Z RS(   c         K@  s
   t  |  S(   N(   R2   (   R   R   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR      s    (   R'   R(   R2   R   R   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRK      s   	t   IntegerSerializerc           B@  s   e  Z e f Z d    Z RS(   c         K@  s
   t  |  S(   N(   t   int(   R   R   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR      s    (   R'   R(   RM   R   R   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRL      s   	t   FunctionSerializerc           B@  s   e  Z e j f Z d    Z RS(   c         K@  s   d | j  | j t |  f S(   Ns   <function %s from %s at 0x%x>(   R'   R(   t   id(   R   R   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR      s    (   R'   R(   R   t   FunctionTypeR   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRN      s   t   LongSerializerc           B@  s   e  Z e f Z d    Z RS(   c         K@  s
   t  |  S(   N(   t   long(   R   R   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyR      s    (   R'   R(   RR   R   R   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyRQ      s   	(   R
   (    t   __doc__t
   __future__R    R4   R   t   raven.utils.compatR   R   R   R   R   R   R   t   raven.utils.encodingR   R	   t   serialization_managert   __all__R   t   objectR
   R)   R:   R@   RA   RG   RI   RK   RL   RN   RQ   t   register(    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/serializer/base.pyt   <module>   s>   4	'