£Á°è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                 @   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 W n  ek
rt   ddlmZ Y nX e Zdd	 ZG d
d deeeZddlZdS )z
raven.context
~~~~~~~~~~~~~

:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
    )absolute_import)MappingIterable)local)ref)	iteritems)	get_identc               C   s$   y
t tjS  tk
r   g S X dS )z7Returns all the active contexts for the current thread.N)list_active_contextscontextsAttributeError r   r   >/opt/alt/python37/lib/python3.7/site-packages/raven/context.pyget_active_contexts   s    
r   c               @   s   e Zd ZdZd'ddZedd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zd(ddZdd Zd)dd Zd!d" Zd#d$ Zd*d%d&ZdS )+Contexta'  
    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()
    Nc             C   sL   t j|d kp|j}|d k	r&t|}|| _|   i | _t | _	|| _d S )N)
ravenbreadcrumbsZmake_bufferZenable_breadcrumbsweakref_clientactivatedatasetexceptions_to_skip)selfclientr   r   r   r   __init__.   s    zContext.__init__c             C   s   | j d krd S |   S )N)r   )r   r   r   r   r   =   s    
zContext.clientc             C   s   t | S )N)id)r   r   r   r   __hash__C   s    zContext.__hash__c             C   s   | |kS )Nr   )r   otherr   r   r   __eq__F   s    zContext.__eq__c             C   s   |  | S )N)r   )r   r   r   r   r   __ne__I   s    zContext.__ne__c             C   s
   | j | S )N)r   )r   keyr   r   r   __getitem__L   s    zContext.__getitem__c             C   s
   t | jS )N)iterr   )r   r   r   r   __iter__O   s    zContext.__iter__c             C   s
   t | jS )N)lenr   )r   r   r   r   __len__R   s    zContext.__len__c             C   s   dt | j| jf S )Nz<%s: %s>)type__name__r   )r   r   r   r   __repr__U   s    zContext.__repr__c             C   s   |    | S )N)r   )r   r   r   r   	__enter__X   s    zContext.__enter__c             C   s   |    d S )N)
deactivate)r   exc_type	exc_valuetbr   r   r   __exit__\   s    zContext.__exit__Fc             C   s&   |rt  | _tjdt |  d S )Nr   )get_thread_identZ_sticky_threadr
   __dict__
setdefaultr   add)r   Zstickyr   r   r   r   _   s    zContext.activatec             C   s*   yt j|  W n tk
r$   Y nX d S )N)r
   r   discardr   )r   r   r   r   r+   d   s    zContext.deactivateTc             C   sl   |r|    | j}xTt|D ]H\}}|dkr\||i  x*t|D ]\}}||| |< qBW q|||< qW d S )N)Ztagsextra)r   r   r   r2   )r   r   r   dr!   valueZt_keyZt_valuer   r   r   mergej   s    zContext.mergec             C   s
   || _ d S )N)r   )r   r   r   r   r   r   v   s    zContext.setc             C   s   | j S )N)r   )r   r   r   r   gety   s    zContext.getc             C   sL   i | _ | j  | j  |d kr<| j}|d k	r<t |jk}|rH|   d S )N)r   r   clearr   r   r0   Zmain_thread_idr+   )r   r+   r   r   r   r   r:   |   s    

zContext.clear)N)F)T)N)r(   
__module____qualname____doc__r   propertyr   r   r   r    r"   r$   r&   r)   r*   r/   r   r+   r8   r   r9   r:   r   r   r   r   r   !   s$   


r   N)r=   
__future__r   collectionsr   r   	threadingr   r   r   Zraven.utils.compatr   threadr   r0   ImportError_threadr
   r   r   Zraven.breadcrumbsr   r   r   r   r   <module>   s   l