???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................ó
¿öYc           @@  sÒ   d  Z  d d l m Z d d l m Z m Z d d l m Z d d l m	 Z d d l
 m Z y d d l m Z Wn! e k
 r“ d d l m Z n Xe ƒ  Z d „  Z d	 e e e f d
 „  ƒ  YZ d d l Z d S(   s—   
raven.context
~~~~~~~~~~~~~

:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
i    (   t   absolute_import(   t   Mappingt   Iterable(   t   local(   t   ref(   t	   iteritems(   t	   get_identc           C@  s*   y t  t j ƒ SWn t k
 r% g  SXd S(   s7   Returns all the active contexts for the current thread.N(   t   listt   _active_contextst   contextst   AttributeError(    (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   get_active_contexts   s    t   Contextc           B@  s¹   e  Z d  Z d d „ Z e d „  ƒ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z e d „ Z d „  Z e d „ Z d „  Z d „  Z d d „ Z RS(   s'  
    Stores context until cleared.

    >>> def view_handler(view_func, *args, **kwargs):
    >>>     context = Context()
    >>>     context.merge(tags={'key': 'value'})
    >>>     try:
    >>>         return view_func(*args, **kwargs)
    >>>     finally:
    >>>         context.clear()
    c         C@  sq   t  j j | d  k p | j ƒ } | d  k	 r< t | ƒ } n  | |  _ |  j ƒ  i  |  _ t	 ƒ  |  _
 | |  _ d  S(   N(   t   ravent   breadcrumbst   make_buffert   Nonet   enable_breadcrumbst   weakreft   _clientt   activatet   datat   sett   exceptions_to_skip(   t   selft   clientR   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   __init__.   s    		
	c         C@  s   |  j  d  k r d  S|  j  ƒ  S(   N(   R   R   (   R   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyR   =   s    c         C@  s
   t  |  ƒ S(   N(   t   id(   R   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   __hash__C   s    c         C@  s
   |  | k S(   N(    (   R   t   other(    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   __eq__F   s    c         C@  s   |  j  | ƒ S(   N(   R   (   R   R   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   __ne__I   s    c         C@  s   |  j  | S(   N(   R   (   R   t   key(    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   __getitem__L   s    c         C@  s   t  |  j ƒ S(   N(   t   iterR   (   R   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   __iter__O   s    c         C@  s   t  |  j ƒ S(   N(   t   lenR   (   R   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   __len__R   s    c         C@  s   d t  |  ƒ j |  j f S(   Ns   <%s: %s>(   t   typet   __name__R   (   R   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   __repr__U   s    c         C@  s   |  j  ƒ  |  S(   N(   R   (   R   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt	   __enter__X   s    
c         C@  s   |  j  ƒ  d  S(   N(   t
   deactivate(   R   t   exc_typet	   exc_valuet   tb(    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   __exit__\   s    c         C@  s8   | r t  ƒ  |  _ n  t j j d t ƒ  ƒ j |  ƒ d  S(   NR	   (   t   get_thread_identt   _sticky_threadR   t   __dict__t
   setdefaultR   t   add(   R   t   sticky(    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyR   _   s    c         C@  s,   y t  j j |  ƒ Wn t k
 r' n Xd  S(   N(   R   R	   t   discardR
   (   R   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyR*   d   s    c         C@  s‘   | r |  j  ƒ  n  |  j } xn t | ƒ D]` \ } } | d k r | j | i  ƒ x5 t | ƒ D] \ } } | | | | <q^ Wq) | | | <q) Wd  S(   Nt   tagst   extra(   R6   R7   (   R   R   R   R2   (   R   R   R   t   dR    t   valuet   t_keyt   t_value(    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   mergej   s    	c         C@  s   | |  _  d  S(   N(   R   (   R   R   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyR   v   s    c         C@  s   |  j  S(   N(   R   (   R   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   gety   s    c         C@  ss   i  |  _  |  j j ƒ  |  j j ƒ  | d  k r\ |  j } | d  k	 r\ t ƒ  | j k } q\ n  | ro |  j ƒ  n  d  S(   N(	   R   R   t   clearR   R   R   R/   t   main_thread_idR*   (   R   R*   R   (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyR>   |   s    		N(   R'   t
   __module__t   __doc__R   R   t   propertyR   R   R   R   R!   R#   R%   R(   R)   R.   t   FalseR   R*   t   TrueR<   R   R=   R>   (    (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyR   !   s$   												N(   RA   t
   __future__R    t   collectionsR   R   t	   threadingR   R   R   t   raven.utils.compatR   t   threadR   R/   t   ImportErrort   _threadR   R   R   t   raven.breadcrumbsR   (    (    (    s>   /opt/alt/python27/lib/python2.7/site-packages/raven/context.pyt   <module>   s   		l