
    gh                         S SK r S SKrS SKrS SKJrJr  S SKJrJrJrJ	r	J
r
  S SKJrJr  S SKJrJrJr  \	(       a  S SKJr   " S S5      rg)	    N)datetimetimezone)OptionalListCallableTYPE_CHECKINGAny)format_timestamp	safe_repr)EnvelopeItem
PayloadRef)Logc                   V    \ rS rSrSrSrS rS rS rS r	S r
S	 r\S
 5       rS rSrg)
LogBatcher   d   g      @c                     / U l         Xl        SU l        [        R                  " 5       U l        [        R                  " 5       U l        S U l        S U l	        g )NT)
_log_buffer_capture_func_running	threadingLock_lockEvent_flush_event_flusher_flusher_pid)selfcapture_funcs     Z/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/_log_batcher.py__init__LogBatcher.__init__   sE    
 )^^%
%OO-     c                    U R                   (       d  g[        R                  " 5       nU R                  U:X  a  gU R                     U R                  U:X  a
   SSS5        gXl        [
        R                  " U R                  S9U l        SU R                  l	         U R                  R                  5          SSS5        g! [         a    SU l          SSS5        gf = f! , (       d  f       g= f)z|For forking processes we might need to restart this thread.
This ensures that our process actually has that thread running.
FTN)target)r   osgetpidr   r   r   Thread_flush_loopr   daemonstartRuntimeError)r   pids     r!   _ensure_threadLogBatcher._ensure_thread!   s    
 }}iik#ZZ   C'	 Z !$%,,D4D4DEDM#'DMM ##% &     !&# Z Z& s0   C :CB??CCCC
C,c                    U R                   (       ay  U R                  R                  U R                  [        R                  " 5       -   5        U R                  R                  5         U R                  5         U R                   (       a  Mx  g g N)r   r   waitFLUSH_WAIT_TIMErandomclear_flushr   s    r!   r*   LogBatcher._flush_loopB   sT    mm""4#7#7&--/#IJ##%KKM mmmr$   c                 F   U R                  5       (       a  U R                  c  g U R                     U R                  R	                  U5        [        U R                  5      U R                  :  a  U R                  R                  5         S S S 5        g ! , (       d  f       g = fr2   )	r/   r   r   r   appendlenMAX_LOGS_BEFORE_FLUSHr   set)r   logs     r!   addLogBatcher.addI   so    
 ""$$(=ZZ##C(4##$(B(BB!!%%' ZZs   AB
B c                 p    U R                   c  g SU l        U R                  R                  5         S U l         g )NF)r   r   r   r>   r8   s    r!   killLogBatcher.killV   s/    == r$   c                 $    U R                  5         g r2   )r7   r8   s    r!   flushLogBatcher.flush_   s    r$   c                 >   S nSU S   ;  a  U S   U S   S'   SU S   ;  a  U S   U S   S'   [        U S   5      S-  U R                  S	S
5      [        U S   5      [        U S   5      U S   R                  5        VVs0 s H  u  p#X!" U5      _M     snnS.nU$ s  snnf )Nc                     [        U [        5      (       a  U SS.$ [        U [        5      (       a  U SS.$ [        U [        5      (       a  U SS.$ [        U [        5      (       a  U SS.$ [        U 5      SS.$ )Nboolean)valuetypeintegerdoublestring)
isinstanceboolintfloatstrr   )vals    r!   format_attribute=LogBatcher._log_to_transport_format.<locals>.format_attributef   sq    #t$$!$i88#s##!$i88#u%%!$h77#s##!$h77&s^X>>r$   zsentry.severity_number
attributesseverity_numberzsentry.severity_textseverity_texttime_unix_nanog    eAtrace_idz$00000000-0000-0000-0000-000000000000body)	timestampr\   levelr]   rX   )rR   getrT   items)r?   rV   kvress        r!   _log_to_transport_format#LogBatcher._log_to_transport_formatc   s    
	? $3|+<<:=>O:PC67!\)::8;O8LC45 S!123e;
,RS_-.F$585F5L5L5N5N6A#A&&5N
 
s   =Bc                 *   [        S[        [        R                  " [        R
                  5      5      0S9nU R                     [        U R                  5      S:X  a
   S S S 5        g UR                  [        SSS[        U R                  5      0[        SU R                   Vs/ s H  nU R                  U5      PM     sn0S9S	95        U R                  R                  5         S S S 5        U R                  U5        U$ s  snf ! , (       d  f       N&= f)
Nsent_at)headersr   r?   z%application/vnd.sentry.items.log+json
item_countra   )json)rL   content_typeri   payload)r   r
   r   nowr   utcr   r<   r   add_itemr   r   re   r6   r   )r   enveloper?   s      r!   r7   LogBatcher._flush   s      0hll1K LM
 ZZ4##$) Z !H$c$*:*:&; '#+/+;+;&+;C !% = =c B+;&" ""$+ . 	8$& Zs$   D'<D#C?>&D?D
D)r   r   r   r   r   r   r   N)__name__
__module____qualname____firstlineno__r=   r4   r"   r/   r*   r@   rC   rF   staticmethodre   r7   __static_attributes__ r$   r!   r   r      sE    O!B(  >r$   r   )r'   r5   r   r   r   typingr   r   r   r   r	   sentry_sdk.utilsr
   r   sentry_sdk.enveloper   r   r   sentry_sdk._typesr   r   ry   r$   r!   <module>r~      s2    	   ' ? ? 8 : :%S Sr$   