§
    xÅj†  ã                   óÄ   — d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZmZm	Z	 d dl
mZmZmZ d dlmZmZ er
d dlmZmZmZ  e	d¦  «        Z G d„ d	ee         ¦  «        ZdS )
é    N)ÚdatetimeÚtimezone)ÚTYPE_CHECKINGÚGenericÚTypeVar)ÚEnvelopeÚItemÚ
PayloadRef)Úcapture_internal_exceptionsÚformat_timestamp)ÚAnyÚCallableÚOptionalÚTc                   óš   — e Zd ZdZdZdZdZdZ	 	 	 	 	 	 dd„Zdd„Z	d	e
fd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d„Zdd„Zed!d„¦   «         Zd
S )"ÚBatcheréd   iè  g      @Ú Úcapture_funcúCallable[[Envelope], None]Úrecord_lost_funcúCallable[..., None]ÚreturnNc                 ó‚  ‡— g | _         || _        || _        d| _        t	          j        ¦   «         | _        t	          j        ¦   «         | _        t	          j	        ¦   «         | _
        d | _        d | _        t          t          d¦  «        r6t          j        | j        ¦  «        Šdˆfd„}t          j        |¬¦  «         d S d S )NTÚregister_at_forkr   c                  ó8   •—  ‰¦   «         } | � | ¦   «          d S d S ©N© )ÚmethodÚ
weak_resets    €úDC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/_batcher.pyÚ_reset_in_childz)Batcher.__init__.<locals>._reset_in_child.   s+   ø€ Ø#˜™œ�ØÐ%Ø�F‘H”H�H�H�Hð &Ð%ó    )Úafter_in_child©r   N)Ú_bufferÚ_capture_funcÚ_record_lost_funcÚ_runningÚ	threadingÚLockÚ_lockÚlocalÚ_activeÚEventÚ_flush_eventÚ_flusherÚ_flusher_pidÚhasattrÚosÚweakrefÚ
WeakMethodÚ_reset_thread_stater   )Úselfr   r   r"   r    s       @r!   Ú__init__zBatcher.__init__   sÏ   ø€ ð
 #%ˆŒØ)ˆÔØ!1ˆÔØˆŒÝ”^Ñ%Ô%ˆŒ
Ý*3¬/Ñ*;Ô*;ˆŒå/8¬Ñ/@Ô/@ˆÔà6:ˆŒØ-1ˆÔõ •2Ð)Ñ*Ô*ð 	@Ý Ô+¨DÔ,DÑEÔEˆJðð ð ð ð ð õ
 Ô¨Ð?Ñ?Ô?Ð?Ð?Ð?ð	@ð 	@r#   c                 óÎ   — g | _         d| _        t          j        ¦   «         | _        t          j        ¦   «         | _        t          j        ¦   «         | _        d | _	        d | _
        d S ©NT)r&   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   ©r8   s    r!   r7   zBatcher._reset_thread_state5   sS   € ØˆŒØˆŒÝ”^Ñ%Ô%ˆŒ
Ý ”Ñ(Ô(ˆŒÝ%œOÑ-Ô-ˆÔØˆŒØ ˆÔÐÐr#   c                 óª  — | j         sdS t          j        ¦   «         }| j        |k    rdS | j        5  | j        |k    r	 ddd¦  «         dS || _        t          j        | j        ¬¦  «        | _        d| j        _	        	 | j         
                    ¦   «          n## t          $ r d| _         Y ddd¦  «         dS w xY w	 ddd¦  «         n# 1 swxY w Y   dS )zŒFor forking processes we might need to restart this thread.
        This ensures that our process actually has that thread running.
        FTN)Útarget)r)   r4   Úgetpidr2   r,   r*   ÚThreadÚ_flush_loopr1   ÚdaemonÚstartÚRuntimeError)r8   Úpids     r!   Ú_ensure_threadzBatcher._ensure_thread>   sl  € ð Œ}ð 	Ø�5åŒi‰kŒkˆØÔ Ò#Ð#Ø�4àŒZð 	ð 	ð Ô  CÒ'Ð'Øð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð !$ˆDÔå%Ô,°DÔ4DÐEÑEÔEˆDŒMØ#'ˆDŒMÔ ðØ”×#Ò#Ñ%Ô%Ð%Ð%øÝð ð ð ð !&�”Øð#	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ðøøøð &ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð& ˆts;   ±CÁ2CÁ>BÂCÂB8Â)CÂ7B8Â8CÃCÃCc                 óJ  — d| j         _        | j        r�| j                             | j        t          j        ¦   «         z   ¦  «         | j                             ¦   «          t          ¦   «         5  |  	                    ¦   «          d d d ¦  «         n# 1 swxY w Y   | j        °�d S d S r;   )
r.   Úflagr)   r0   ÚwaitÚFLUSH_WAIT_TIMEÚrandomÚclearr   Ú_flushr<   s    r!   rA   zBatcher._flush_loop^   sâ   € ð
 !ˆŒÔØŒmð 		ØÔ×"Ò" 4Ô#7½&¼-¹/¼/Ñ#IÑJÔJÐJØÔ×#Ò#Ñ%Ô%Ð%õ -Ñ.Ô.ð ð Ø—’‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð Œmð 		ð 		ð 		ð 		ð 		s   Á.BÂBÂBÚitemr   c                 óT  — t          | j        dd¦  «        rd S d| j        _        	 |                      ¦   «         r| j        €	 d| j        _        d S | j        5  t          | j        ¦  «        | j        k    r/|  	                    |¦  «         	 d d d ¦  «         d| j        _        d S | j         
                    |¦  «         t          | j        ¦  «        | j        k    r| j                             ¦   «          d d d ¦  «         n# 1 swxY w Y   d| j        _        d S # d| j        _        w xY w©NrH   FT)Úgetattrr.   rH   rF   r1   r,   Úlenr&   ÚMAX_BEFORE_DROPÚ_record_lostÚappendÚMAX_BEFORE_FLUSHr0   Úset©r8   rN   s     r!   ÚaddzBatcher.addo   s‰  € õ �4”< ¨Ñ/Ô/ð 	Ø�4à ˆŒÔð	&Ø×&Ò&Ñ(Ô(ð ¨D¬MÐ,AØð !&ˆDŒLÔÐÐð ”ð ,ð ,Ý�t”|Ñ$Ô$¨Ô(<Ò<Ð<Ø×%Ò% dÑ+Ô+Ð+Øð,ð ,ð ,ñ ,ô ,ð ,ð !&ˆDŒLÔÐÐð	 ”×#Ò# DÑ)Ô)Ð)Ý�t”|Ñ$Ô$¨Ô(=Ò=Ð=ØÔ%×)Ò)Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð !&ˆDŒLÔÐÐø ˆDŒLÔÐ%Ð%Ð%Ð%sB   ¦D ÁD Á4D ÂD Â$AD Ã4D Ä DÄD ÄDÄD ÄD'c                 óf   — | j         €d S d| _        | j                             ¦   «          d | _         d S )NF)r1   r)   r0   rW   r<   s    r!   ÚkillzBatcher.killˆ   s6   € ØŒ=Ð ØˆFàˆŒØÔ×ÒÑÔÐØˆŒˆˆr#   c                 ó®   — t          | j        dd¦  «        }d| j        _        	 |                      ¦   «          || j        _        d S # || j        _        w xY wrP   )rQ   r.   rH   rM   )r8   Ú
was_actives     r!   ÚflushzBatcher.flush�   sW   € Ý˜Tœ\¨6°5Ñ9Ô9ˆ
Ø ˆŒÔð	+Ø�KŠK‰MŒMˆMà *ˆDŒLÔÐÐø 
ˆDŒLÔÐ*Ð*Ð*Ð*s   ¤A ÁAÚenveloper   c                 óÔ   ‡ — |                      t          ‰ j        ‰ j        dt	          ‰ j        ¦  «        it          dˆ fd„‰ j        D ¦   «         dœ¬¦  «        ¬¦  «        ¦  «         d S )NÚ
item_counté   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   )Ú_to_transport_format)Ú.0rN   r8   s     €r!   ú
<listcomp>z,Batcher._add_to_envelope.<locals>.<listcomp>£   s4   ø€ ð "ð "ð "Ø@D˜D×5Ò5°dÑ;Ô;ð"ð "ð "r#   )ÚversionÚitems)Újson)ÚtypeÚcontent_typeÚheadersÚpayload)Úadd_itemr	   ÚTYPEÚCONTENT_TYPErR   r&   r
   ©r8   r_   s   ` r!   Ú_add_to_envelopezBatcher._add_to_envelope˜   sŸ   ø€ Ø×ÒÝØ”YØ!Ô.à ¥# d¤lÑ"3Ô"3ðõ #à#$ð"ð "ð "ð "ØHLÌð"ñ "ô "ðð ðñ ô ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
r#   úOptional[Envelope]c                 óŒ  — t          dt          t          j        t          j        ¦  «        ¦  «        i¬¦  «        }| j        5  t          | j        ¦  «        dk    r	 d d d ¦  «         d S |  	                    |¦  «         | j         
                    ¦   «          d d d ¦  «         n# 1 swxY w Y   |                      |¦  «         |S )NÚsent_at)rl   r   )r   r   r   Únowr   Úutcr,   rR   r&   rr   rL   r'   rq   s     r!   rM   zBatcher._flush«   s  € ÝØÕ 0µ´½h¼lÑ1KÔ1KÑ LÔ LÐMð
ñ 
ô 
ˆð ŒZð 	!ð 	!Ý�4”<Ñ Ô  AÒ%Ð%Øð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð ×!Ò! (Ñ+Ô+Ð+ØŒL×ÒÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	×Ò˜8Ñ$Ô$Ð$Øˆs   ÁB$Á*.B$Â$B(Â+B(c                 ó   — d S r   r   rX   s     r!   rT   zBatcher._record_lost¹   s   € Øˆr#   r   c                 ó   — d S r   r   )rN   s    r!   rd   zBatcher._to_transport_format¼   s   € àˆr#   )r   r   r   r   r   Nr%   )rN   r   r   N)r_   r   r   N)r   rs   )rN   r   r   r   )Ú__name__Ú
__module__Ú__qualname__rV   rS   rJ   ro   rp   r9   r7   ÚboolrF   rA   rY   r[   r^   rr   rM   rT   Ústaticmethodrd   r   r#   r!   r   r      sA  € € € € € ØÐØ€OØ€Oà€DØ€Lð@à2ð@ð 0ð@ð 
ð	@ð @ð @ð @ð8!ð !ð !ð !ð ð ð ð ð ð@ð ð ð ð"&ð &ð &ð &ð2ð ð ð ð+ð +ð +ð +ð
ð 
ð 
ð 
ð&ð ð ð ðð ð ð ð ðð ð ñ „\ðð ð r#   r   )r4   rK   r*   r5   r   r   Útypingr   r   r   Úsentry_sdk.enveloper   r	   r
   Úsentry_sdk.utilsr   r   r   r   r   r   r   r   r#   r!   ú<module>r‚      s  ðØ 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ Jàð /Ø.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.à€GˆC�L„L€ðmð mð mð mð mˆg�aŒjñ mô mð mð mð mr#   