Viewing File: /opt/hc_python/lib/python3.12/site-packages/sentry_sdk/__pycache__/sessions.cpython-312.pyc

�

_�*j_"��P�ddlZddlZddlmZddlmZmZmZddlm	Z	ddl
Z
ddlmZddl
mZddlmZe	rddlmZmZmZmZmZmZmZ	d			dd�Ze	dd	d
d
eddfd��Zdddefd�Zdddefd�Ze	dddd
eddfd��Ze	dddd
eddfd��ZdZ dZ!dd�Z"Gd�d�Z#y) �N)�contextmanager)�Event�Lock�Thread)�
TYPE_CHECKING)�Envelope)�Session)�format_timestamp)�Any�Callable�Dict�	Generator�List�Optional�Union�hub�Optional[sentry_sdk.Hub]�returnc��tjdtd��|�tjj
}|jj}|�6|jr|jjni}|jdd�}|S)zHDEPRECATED: Utility function to find out if session tracking is enabled.�nThis function is deprecated and will be removed in the next major release. There is no public API replacement.���
stacklevel�auto_session_trackingF)�warnings�warn�DeprecationWarning�
sentry_sdk�Hub�current�scope�_force_auto_session_tracking�client�options�get)r�should_track�client_optionss   �B/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/sessions.py� is_auto_session_tracking_enabledr)sv��
�M�M�	.���	��{��n�n�$�$���9�9�9�9�L���/2�z�z����+�+�r��%�)�)�*A�5�I�����session_modezGenerator[None, None, None]c#�K�tjdtd��|�tjj
}tj�5tjdt�t|�}ddd�r|j|��	d��|r|j�yy#1swY�6xYw#|r|j�wwxYw�w)zgDEPRECATED: Use track_session instead
    Starts and stops a session automatically around a block.
    zeThis function is deprecated and will be removed in the next major release. Use track_session instead.rrN�ignore�r+)rrrrrr �catch_warnings�simplefilterr)�
start_session�end_session)rr+r&s   r(rr)s�����
�M�M�	%���	��{��n�n�$�$��	�	 �	 �	"����h�(:�;�7��<��
#�����|��4��
���O�O���
#�	"����O�O���s6�A
C�&B*�5C�B6�C�*B3�/C�6C�Cr!zsentry_sdk.Scopec�P�tjdtd��t|�S)zR
    DEPRECATED: Utility function to find out if session tracking is enabled.
    rrr)rrr�!_is_auto_session_tracking_enabled)r!s r(�&is_auto_session_tracking_enabled_scoper5Es(��

�M�M�	.���	�-�U�3�3r*c��|j}|�0tj�j}|j	dd�}|S)zF
    Utility function to find out if session tracking is enabled.
    rF)r"r�
get_clientr$r%)r!r&r's   r(r4r4UsB��
�5�5�L���#�.�.�0�8�8��%�)�)�*A�5�I���r*c#�K�tjdtd��t||��5d��ddd�y#1swYyxYw�w)z�DEPRECATED: This function is a deprecated alias for track_session.
    Starts and stops a session automatically around a block.
    zdThis function is a deprecated alias for track_session and will be removed in the next major release.rrr.N)rrr�
track_session)r!r+s  r(�auto_session_tracking_scoper:bs7����
�M�M�n����
�u�<�	8�
�
9�	8�	8�s�*A�:�	A�A�Ac#�K�t|�}|r|j|��	d��|r|j�yy#|r|j�wwxYw�w)z�
    Start a new session in the provided scope, assuming session tracking is enabled.
    This is a no-op context manager if session tracking is not enabled.
    r.N)r4r1r2)r!r+r&s   r(r9r9tsV����5�U�;�L��
�����6� �
��������<������s� A�;�A�A�A)�exited�abnormal�crashed�dc�L�t|�t|j��d�S)N)�attrs�
aggregates)�dict�list�values)�aggregate_statesrAs  r(�make_aggregate_enveloperG�s ���%�[��5E�5L�5L�5N�0O�P�Pr*c�\�eZdZ	ddddeddfd�Zd
d�Zd
d�Z				dd	�Z				dd
�Zd
d�Z	y)�SessionFlusher�capture_funczCallable[[Envelope], None]�flush_intervalrNc��||_||_g|_i|_d|_t�|_t�|_d|_t�|_
y�N)rJrK�pending_sessions�pending_aggregates�_threadr�_thread_lock�_aggregate_lock�_thread_for_pidr�#_SessionFlusher__shutdown_requested)�selfrJrKs   r(�__init__zSessionFlusher.__init__�sQ��
)���,���-/���46���+/��� �F���#�v���04���$)�G��!r*c�l�|j}g|_|j5|j}i|_ddd�t�}|D]J}t	|j
�tk(r|j|�t�}|j|��Lj�D]W\}}t	|j
�tk(r|j|�t�}|jt||���Yt	|j
�dkDr|j|�yy#1swY��xYw)Nr)rNrRrOr�len�items�MAX_ENVELOPE_ITEMSrJ�add_session�add_sessionsrG)rUrNrO�envelope�sessionrA�statess       r(�flushzSessionFlusher.flush�s���0�0�� "���
�
!�
!�!%�!8�!8��&(�D�#�"��:��'�G��8�>�>�"�&8�8��!�!�(�+�#�:��� � ��)�(�0�5�5�7�M�E�6��8�>�>�"�&8�8��!�!�(�+�#�:���!�!�"9�&�%�"H�I�8��x�~�~���"����h�'�#�'"�
!�s�D*�*D3c����jtj�k(r
�j�y�j5�jtj�k(r�j�
	ddd�yd�fd�}t|��}d|_	|j�|�_tj��_ddd�y#t$r%�jj�Yddd�ywxYw#1swYyxYw)a%
        Check that we have an active thread to run in, or create one if not.

        Note that this might fail (e.g. in Python 3.12 it's not possible to
        spawn new threads at interpreter shutdown). In that case self._running
        will be False after running this function.
        Nc���d}|r:�jj�j�}�j�|r�9yy)NT)rT�waitrKr`)�runningrUs �r(rPz/SessionFlusher._ensure_running.<locals>._thread�s8������"&�";�";�"@�"@��AT�AT�"U�U�G��J�J�L�r*)�targetT�rN)rS�os�getpidrPrQr�daemon�start�RuntimeErrorrT�set)rUrP�threads`  r(�_ensure_runningzSessionFlusher._ensure_running�s�������2�9�9�;�.�4�<�<�3K��
�
�
��#�#�r�y�y�{�2�t�|�|�7O���
�
!��7�+�F� �F�M�
�����"�D�L�#%�9�9�;�D� �+�.�� �
��)�)�-�-�/��%�
�
���.�s5�/C8�4C8�C� C8�#C5�*C8�4C5�5C8�8Dc�z�|j5|jd��}tt|j	���}|j
}|jj|i�}|j|i�}d|vrt|j
�|d<|jdk(r|jdd�dz|d<nh|jdk(r|jdd�dz|d<n@|jdkDr|jdd�dz|d<n|jd	d�dz|d	<ddd�y#1swYyxYw)
NF)�with_user_info�startedr>r�r=�erroredr<)rR�get_json_attrs�tuple�sortedrY�truncated_startedrO�
setdefaultr
�statusr%�errors)rUr^rA�primary_key�
secondary_keyr_�states       r(�add_aggregate_sessionz$SessionFlusher.add_aggregate_session�s ���
!�
!��*�*�%�*�@�E���u�{�{�}� 5�6�K�#�5�5�M��,�,�7�7��R�H�F��%�%�m�R�8�E���%�#3�G�4M�4M�#N��i� ��~�~��*�#(�9�9�Y��#:�Q�#>��i� ����:�-�$)�I�I�j�!�$<�q�$@��j�!����!�#�#(�9�9�Y��#:�Q�#>��i� �"'�)�)�H�a�"8�1�"<��h��%"�
!�
!�s�DD1�1D:c��|jdk(r|j|�n)|jj|j	��|j�y)N�request)r+r~rN�append�to_jsonrn)rUr^s  r(r[zSessionFlusher.add_session�sG�����9�,��&�&�w�/��!�!�(�(����):�;����r*c�8�|jj�yrM)rTrl)rUs r(�killzSessionFlusher.kills���!�!�%�%�'r*)�<rf)r^r	rN)
�__name__�
__module__�__qualname__�intrVr`rnr~r[r��r*r(rIrI�sf��!�
,�2�
,��
,�
�	
,�(�4!�F=��=�
�=�>���
��(r*rIrM)rrrzUnion[Any, bool, None])N�application)r�)rFrrArrr)$rgr�
contextlibr�	threadingrrr�typingrr�sentry_sdk.enveloper�sentry_sdk.sessionr	�sentry_sdk.utilsr
rrr
rrrrr)�strr�boolr5r4r:r9�TERMINAL_SESSION_STATESrZrGrIr�r*r(�<module>r�s��	��%�)�)� ��(�&�-��L�L�L�'+��	#����2�@M��	#��:=��"����6
4�2D�
4��
4� 
�-?�
�D�
��3@����-0��"����"�3@� �� �-0� �"� �� �$<����Q�w(�w(r*
Back to Directory File Manager