
    \j                         d dl Z d dlZd dlm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      ZdededdfdZy)    N)LRUCache)Span)Lock)TYPE_CHECKINGAny)	TypedDictFlagDataflagresultd   c                   H    e Zd ZdeddfdZddZddZddZded	e	ddfd
Z
y)
FlagBuffercapacityreturnNc                 P    || _         t               | _        t        |      | _        y N)r   r   lockr   _FlagBuffer__buffer)selfr   s     B/root/env/lib/python3.12/site-packages/sentry_sdk/feature_flags.py__init__zFlagBuffer.__init__   s      F	 !*    c                 8    t        | j                        | _        y r   )r   r   r   )r   s    r   clearzFlagBuffer.clear   s     /r   c                     | j                   5  t        | j                        }t        j                  | j
                  |      |_        |cd d d        S # 1 sw Y   y xY wr   )r   r   r   copydeepcopyr   )r   memobuffers      r   __deepcopy__zFlagBuffer.__deepcopy__   sE    YY 	.F"mmDMM4@FO	 	 	s   <AAc                     | j                   5  | j                  j                         D cg c]
  \  }}||d c}}cd d d        S c c}}w # 1 sw Y   y xY w)Nr
   )r   r   get_all)r   keyvalues      r   getzFlagBuffer.get$   sQ    YY 	AEAVAVAX3=3.	 		 	s   AAAAAr   r   c                     t        |t              rt        d      | j                  5  | j                  j                  ||       d d d        y # 1 sw Y   y xY w)Nz=FlagBuffer instances can not be inserted into the dictionary.)
isinstancer   
ValueErrorr   r   set)r   r   r   s      r   r*   zFlagBuffer.set*   sP    fj)
 O  YY 	,MMdF+	, 	, 	,s   AA)r   N)r   zdict[int, Any]r   r   )r   zlist[FlagData])__name__
__module____qualname__intr   r   r!   r&   strboolr*    r   r   r   r      s>    + + +0, ,T ,d ,r   r   r   r   r   c                     t        j                         j                  }|j                  | |       t        j                         }|r't        |t              r|j                  d|  |       yyy)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_spanr(   r   set_flag)r   r   r5   spans       r   add_feature_flagr9   8   s]    
 **,22E	IIdF&&(D
4&(/8 'tr   )r   r3   sentry_sdk._lru_cacher   sentry_sdk.tracingr   	threadingr   typingr   r   r   r/   r0   r	   DEFAULT_FLAG_CAPACITYr   r9   r1   r   r   <module>r?      s[      * #  % cT%BCH  #, #,L
93 
9 
9 
9r   