
    ghp                         S SK r S SKrS SKJrJr  S SKJrJr  S SKJr  S SK	J
r
  S SKJr  \(       a  S SKJr  S SKJr  S S	KJr  \" 5       r " S
 S5      rg)    N)sleeptime)Queue	FullError)logger)DEFAULT_QUEUE_SIZE)TYPE_CHECKING)Any)Optional)Callablec                   j    \ rS rSr\4S jr\S 5       rS rS r	S r
S rSS	 jrS
 rS rS rS rSrg)BackgroundWorker   c                 t    [        U5      U l        [        R                  " 5       U l        S U l        S U l        g N)r   _queue	threadingLock_lock_thread_thread_for_pid)self
queue_sizes     T/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/worker.py__init__BackgroundWorker.__init__   s+    J'^^%
#    c                     U R                   [        R                  " 5       :w  a  gU R                  (       d  gU R                  R	                  5       $ )NF)r   osgetpidr   is_aliver   s    r   r!   BackgroundWorker.is_alive   s8     299;.||||$$&&r   c                 H    U R                   (       d  U R                  5         g g r   )r!   startr"   s    r   _ensure_threadBackgroundWorker._ensure_thread%   s    }}JJL r   c                    [        5       U-   nU R                  nUR                  R                  5          UR                  (       a[  U[        5       -
  nUS::  a   UR                  R                  5         gUR                  R                  US9  UR                  (       a  M[   UR                  R                  5         g! UR                  R                  5         f = f)Nr   F)timeoutT)r   r   all_tasks_doneacquireunfinished_tasksreleasewait)r   r)   deadlinequeuedelays        r   _timed_queue_join"BackgroundWorker._timed_queue_join*   s    6G#$$&		+(( 46)A: 
   ((*	 $$))%)8	 (((   ((*E  ((*s   $B= 5*B= =Cc                 t   U R                      U R                  (       dj  [        R                  " U R                  SS9U l        SU R
                  l         U R
                  R                  5         [        R                  " 5       U l
        S S S 5        g ! [         a
    S U l         Nf = f! , (       d  f       g = f)Nzsentry-sdk.BackgroundWorker)targetnameT)r   r!   r   Thread_targetr   daemonr%   r   r    r   RuntimeErrorr"   s    r   r%   BackgroundWorker.start<   s    ZZ==(//<<.K  '+#(LL&&(+-99;D( Z $ ( $(DL	( Zs*   AB)4BB&#B)%B&&B))
B7c                 F   [         R                  " S5        U R                     U R                  (       a.   U R                  R                  [        5        SU l        SU l        SSS5        g! [         a    [         R                  " S5         N9f = f! , (       d  f       g= f)zo
Kill worker thread. Returns immediately. Not useful for
waiting on shutdown for events, use `flush` for that.
z"background worker got kill requestz)background worker queue full, kill failedN)	r   debugr   r   r   
put_nowait_TERMINATORr   r   r"   s    r   killBackgroundWorker.killM   sw     	9:ZZ||NKK**;7  $'+$ Z ! NLL!LMN	 Zs.   BA,B, BBBB
B Nc                     [         R                  " S5        U R                     U R                  (       a  US:  a  U R	                  X5        S S S 5        [         R                  " S5        g ! , (       d  f       N%= f)Nz#background worker got flush requestg        zbackground worker flushed)r   r=   r   r!   _wait_flush)r   r)   callbacks      r   flushBackgroundWorker.flush^   sM    :;ZZ}}3  3  	01 Zs   )A++
A9c                 6    U R                   R                  5       $ r   )r   fullr"   s    r   rH   BackgroundWorker.fullf   s    {{!!r   c                 b   [        SU5      nU R                  U5      (       d  U R                  R                  5       S-   n[        R
                  " SU5        Ub  U" XA5        U R                  X-
  5      (       d5  U R                  R                  5       S-   n[        R                  " SU5        g g g )Ng?   z%d event(s) pending on flushz"flush timed out, dropped %s events)minr2   r   qsizer   r=   error)r   r)   rD   initial_timeoutpendings        r   rC   BackgroundWorker._wait_flushj   s    c7+%%o66kk'')A-GLL7A#*))'*CDD++++-1A7K E 7r   c                 |    U R                  5          U R                  R                  U5        g! [         a     gf = f)NTF)r&   r   r>   r   r   rD   s     r   submitBackgroundWorker.submitw   s:    	KK""8, 		s   . 
;;c                 j    U R                   R                  5       n U[        L a   U R                   R                  5         g  U" 5         U R                   R                  5         [        S5        Mo  ! [         a    [
        R                  " SSS9   NHf = f! U R                   R                  5         f = f)NTzFailed processing job)exc_infor   )r   getr?   	task_done	Exceptionr   rN   r   rS   s     r   r8   BackgroundWorker._target   s    {{(H({* %%'IJ %%'!H  ! ILL!84HI %%'s)   	B A1 1BB BB B2)r   r   r   r   r   )__name__
__module____qualname____firstlineno__r   r   propertyr!   r&   r2   r%   r@   rE   rH   rC   rT   r8   __static_attributes__ r   r   r   r      sL    "4 $ ' '
+$(","2"Lr   r   )r   r   r   r   sentry_sdk._queuer   r   sentry_sdk.utilsr   sentry_sdk.constsr   typingr	   r
   r   r   objectr?   r   rb   r   r   <module>rh      s;    	   . # 0   hy yr   