<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</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