o
    h                     @   sv   d dl Z d dlZd dlmZ d dlmZ d dlmZmZ er,d dlm	Z	 e	de
edZdZG d	d
 d
Zdd ZdS )    N)LRUCache)Lock)TYPE_CHECKINGAny)	TypedDictFlagDataflagresultd   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
FlagBufferc                 C   s   || _ t | _t|| _d S N)capacityr   lockr   _FlagBuffer__buffer)selfr    r   Z/var/www/html/pro-man-master/venv/lib/python3.10/site-packages/sentry_sdk/feature_flags.py__init__   s   zFlagBuffer.__init__c                 C   s   t | j| _d S r   )r   r   r   r   r   r   r   clear   s   zFlagBuffer.clearc                 C   sH   | j  t| j}t| j||_|W  d    S 1 sw   Y  d S r   )r   r   r   copydeepcopyr   )r   memobufferr   r   r   __deepcopy__    s
   
$zFlagBuffer.__deepcopy__c                 C   s>   | j  dd | j D W  d    S 1 sw   Y  d S )Nc                 S   s   g | ]	\}}||d qS )r   r   ).0keyvaluer   r   r   
<listcomp>*   s    z"FlagBuffer.get.<locals>.<listcomp>)r   r   get_allr   r   r   r   get'   s
   $zFlagBuffer.getc                 C   sL   t |tr	td| j | j|| W d    d S 1 sw   Y  d S )Nz=FlagBuffer instances can not be inserted into the dictionary.)
isinstancer   
ValueErrorr   r   set)r   r	   r
   r   r   r   r$   .   s   
"zFlagBuffer.setN)__name__
__module____qualname__r   r   r   r!   r$   r   r   r   r   r      s    	r   c                 C   s<   t  j}|| | t  }|r|d|  | dS dS )z
    Records a flag and its value to be sent on subsequent error events.
    We recommend you do this on flag evaluations. Flags are buffered per Sentry scope.
    zflag.evaluation.N)
sentry_sdkget_isolation_scopeflagsr$   get_current_spanset_flag)r	   r
   r*   spanr   r   r   add_feature_flag=   s   
r.   )r   r(   sentry_sdk._lru_cacher   	threadingr   typingr   r   r   strboolr   DEFAULT_FLAG_CAPACITYr   r.   r   r   r   r   <module>   s    ,