Edit File: tracing_utils.cpython-311.pyc
� ����v�d�/���������������������������d�dl�Z�d�dlZd�dlZd�dlmZ�d�dlmZmZmZm Z �d�dl mZmZ�d�dl mZ�erd�dlmZ�d�dlmZmZ�nd�dlmZ�d�dlmZmZ�er"d�dlZd�dlmZ�d�d lmZ�d�d lmZ�d�dlmZ�d�dlmZ��e�j��������d ������������ZdZ�G�d��de������������Zd��Z ej!��������d����������������Z"d��Z#d��Z$d��Z%�G�d��de&������������Z'd��Z(d��Z)d�dl*m+Z+�dS�)�����N)�OP)�capture_internal_exceptions�Dsn�match_regex_list� to_string)�PY2� iteritems)� TYPE_CHECKING)�Mapping)�quote�unquote)�Any)�Dict)� Generator)�Optional)�Unionz5^[ ]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ ]*$z(([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{2,3})?c��������������������*�����e�Zd�Z �dd�Zd��Zd��Zd��ZdS�)�EnvironHeaders�HTTP_c������������������"�����||�_���������||�_��������d�S��N)�environ�prefix)�selfr���r���s��� �O/opt/cloudlinux/venv/lib64/python3.11/site-packages/sentry_sdk/tracing_utils.py�__init__zEnvironHeaders.__init__5���s�������������������c������������������x�����|�j���������|�j��������|���������������������dd�����������������������������������������������z������������S��N�-�_)r���r����replace�upper)r����keys��� r����__getitem__zEnvironHeaders.__getitem__>���s0�������|�D�K�#�+�+�c�3�*?�*?�*E�*E�*G�*G�G�H�Hr���c������������������N�����t����������d��t����������|�������������D���������������������������S�)Nc��������������3�������K����|�]}d�V����dS�)����N��)�.0r!���s��� r���� <genexpr>z)EnvironHeaders.__len__.<locals>.<genexpr>D���s"����������)�)��1�)�)�)�)�)�)r���)�sum�iter�r���s��� r����__len__zEnvironHeaders.__len__B���s%�������)�)�d�4�j�j�)�)�)�)�)�)r���c��������������#������K����|�j���������D�]y}t����������|t����������������������s�|���������������������dd�����������������������������������������������}|���������������������|�j��������������������s�[|t����������|�j��������������������d�����������V����zd�S�r���)r���� isinstance�strr"���r#���� startswithr����len)r����ks��� r����__iter__zEnvironHeaders.__iter__F���s�������������� (�� (�A��a��%�%�� ��� � �#�s�#�#�)�)�+�+�A��<�<���,�,�� ���C���$�$�&�&�'�'�'�'�'� (�� (r���N)r���)�__name__� __module__�__qualname__r���r%���r/���r6���r)���r���r���r���r���4���s]�����������������������I��I��I�*��*��*� (�� (�� (�� (�� (r���r���c�����������������������|��dS�t����������|����������������������d������������duo-|����������������������d������������dup|����������������������d������������du������������S�)z} Returns True if either traces_sample_rate or traces_sampler is defined and enable_tracing is set and not false. NF�enable_tracing�traces_sample_rate�traces_sampler)�bool�get)�optionss��� r����has_tracing_enabledrA���S���si����������u�����$�%�%�U�2�� ��K�K�,�-�-�T�9�� 9��{�{�+�,�,�D�8� ����r���c��������������#����:��K����|�j���������r:|�j���������j��������d������������������������������dd������������r|r|d�gk����rd�}|dk����rd}nd�}d�}t����������||������������}i�}|�||d<���|�||d<���|rd|d <���t ������������������������5��|����������������������|d |��������������d�d�d��������������n#�1�swxY�w�Y���|����������������������t����������j��������|�������������5�}|� ����������������������������������D�]\��}} |� ��������������������|| ��������������|V���d�d�d��������������d�S�#�1�swxY�w�Y���d�S�) N�_experiments�record_sql_paramsF�pyformat�formatz db.paramsz db.paramstyleTzdb.executemany�query)�message�category�data)�op�description)�clientr@���r?����_format_sqlr����add_breadcrumb� start_spanr����DB�items�set_data) �hub�cursorrG����params_list� paramstyle�executemanyrJ����spanr5����vs ��� r����record_sql_queriesr[���e���s������������z�� �c�j�(��8�<�<��U����� ���� �k�d�V�3�3��K���#�#�!�J����� ����&�&�E� �D���'��[���� *��_����&�!%�� �� $� &� &��G��G����5�7���F�F�F�G��G��G��G��G��G��G��G��G��G��G�����G��G��G��G�� ���2�5�e�� 4� 4�����J�J�L�L�� �� �D�A�q��M�M�!�Q������ � � ��������������������������������������s$����=B"�"B&�)B&�5D�D�Dc������������������B����|j���������t����������j��������k����r%|����������������������|j��������dd|j����������������������d�S�|j���������t����������j��������k����r|����������������������dd|j����������������������d�S�|j���������dk����r%|����������������������dd|j��������|j����������������������d�S�d�S�)N�redis)rH����typerI���rJ����http�httplib)r^���rI���rJ���� subprocess)r^���rI���rH���rJ���)rK���r����DB_REDISrO���rL����_tags�HTTP_CLIENT�_data)rT���rY���s��� r����"maybe_create_breadcrumbs_from_spanrf�������s��������w�"�+�������$�7�W�4�:�� �� �� �� �� �� �� ��B�N� "� "���������L�L�L�L�L� ��L� � �����!��$��� � �� �� �� �� �� �� !� r���c����������������������|�sdS�|�����������������������d������������r|����������������������d������������r |�dd����������}�t�������������������������������|�������������}|sdS�|�����������������������������������\��}}}d}|r#d���������������������t ����������|d������������������������}|r#d���������������������t ����������|d������������������������}|r|d k����}|||d �S�)zL Given a `sentry-trace` header string, return a dictionary of data. Nz00-z-00�������z{:032x}����z{:016x}�0)�trace_id�parent_span_id�parent_sampled)r3����endswith�SENTRY_TRACE_REGEX�match�groupsrF����int)�headerrq���rl���rm����sampled_strrn���s��� r����extract_sentrytrace_datarv�������s������� �����t� ��������F�O�O�E�$:�$:�����"�����$�$�V�,�,�E�����t�,1�L�L�N�N�)�H�n�k��N���7��#�#�C��"�$5�$5�6�6����C�"�)�)�#�n�b�*A�*A�B�B����,�$��+����(�(�����r���c����������������������d�} �t����������|�d������������rI|����������������������|������������}t����������|t����������������������r|���������������������|�j��������j��������������������}n#�t����������$�r�d�}Y�nw�xY�w|pt����������|������������S�)N�mogrify) �hasattrrx���r1����bytes�decode� connection�encoding� Exceptionr���)rU����sql�real_sqls��� r���rN���rN�������s���������H���6�9�%�%�� G��~�~�c�*�*�H��(�E�*�*�� G�#�?�?�6�+<�+E�F�F���������������������%�y��~�~�%s����AA��A-�,A-c�������������������������e�Zd�ZdZdZ�ej��������d������������Z � �dd�Ze d����������������Z e d����������������Ze d ����������������Zd ��Z d��Zdd �ZdS�)�Baggage��sentry_items�third_party_items�mutablezsentry-z^sentry-��Tc������������������0�����||�_���������||�_��������||�_��������d�S�r���r����)r���r����r����r����s��� r���r���zBaggage.__init__����s�������)���!2�������r���c�����������������������i�}d}d}|r�|����������������������d������������D�]�}d|vr�t������������������������5��|�����������������������������������}|����������������������d������������\��}}t����������j�����������������������������|������������r=t ����������|����������������������d������������d���������������������}t ����������|������������||<���d}n||rdnd|z���z ��}ddd�������������n#�1�swxY�w�Y�����t����������|||������������S�) zF freeze if incoming header already has sentry baggage r����T�,�=r ���r(���FN)�splitr����stripr�����SENTRY_PREFIX_REGEXrq���r ���) �clsrt���r����r����r�����itemr$����val�baggage_keys ��� r����from_incoming_headerzBaggage.from_incoming_header����sV�������������� W����S�)�)�� W�� W���d�?�?��0�2�2��W��W��:�:�<�<�D�#�z�z�#���H�C���2�8�8��=�=��W�&-�c�i�i��n�n�Q�.?�&@�&@��4;�C�L�L��[�1�"'���)�5F�.N�c�c�B�RV�-V�V�)�W��W��W��W��W��W��W��W��W��W��W�����W��W��W��W����|�%6��@�@�@s����BC�C �C c������������������D����i�}d}d}t�����������j��������j��������j��������}|�|j���������t����������|������������S�|j��������}|j��������}|�d|v�r|d���������|d<���|���������������������d������������r|d���������|d<���|���������������������d������������r|d���������|d<���|���������������������d������������rt����������|d���������������������j ��������|d<���|���������������������d������������r|d���������|d <���|r|j ��������pi�}|���������������������d ������������r|d ���������|d<���t����������|||������������S�)Nr����Frl����environment�release�dsn� public_keyr<����sample_rate�segment�user_segment)� sentry_sdk�Hub�currentrM����_propagation_contextr����r@���r?���r���r�����_user) r�����scoper����r����r����rM���r@����propagation_context�users ��� r����from_optionszBaggage.from_options���sM��������������'�.���>�U�7�?��<�(�(�(��.��#�8���*�z�=P�/P�/P�':�:�'F�L��$��;�;�}�%�%�� A�*1�-�*@�L��'��;�;�y�!�!�� 9�&-�i�&8�L��#��;�;�u���� H�),�W�U�^�)<�)<�)G�L��&��;�;�+�,�,�� H�*1�2F�*G�L��'��%�%�+�,�"���8�8�I���� ;�+/� �?�L��(��|�%6��@�@�@r���c����������������������|j���������pt����������j��������j��������}|j��������}i�}|st����������|������������S�|j��������pi�}|j��������r|j��������j��������pi�}|j ��������|d<���|� ��������������������d������������r|d���������|d<���|� ��������������������d������������r|d���������|d<���|� ��������������������d������������rt����������|d���������������������j��������|d<���|j ��������r|j��������t����������vr |j ��������|d<���|� ��������������������d������������r|d���������|d<���|j���������t#����������|j��������������������|d <���|j���������|j��������rdnd|d <���|j��������r+|j��������j��������r|���������������������|j��������j���������������������t����������|d�������������S�)z� Populate fresh baggage entry with sentry_items and make it immutable if this is the head SDK which originates traces. rl���r����r����r����r�����transactionr����r����Nr�����true�false�sampledF�r����)rT���r����r����r����rM���r����r@���r����r����rl���r?���r���r�����name�source�LOW_QUALITY_TRANSACTION_SOURCESr����r2���r�����_baggager�����update)r����r����rT���rM���r����r@���r����s��� r����populate_from_transactionz!Baggage.populate_from_transaction%��s��������o�7���!7��������� )��<�(�(�(��.�&�B��� �-�c�i�o�4�"��#.�#7��Z� ��;�;�}�%�%�� A�*1�-�*@�L��'��;�;�y�!�!�� 9�&-�i�&8�L��#��;�;�u���� H�),�W�U�^�)<�)<�)G�L��&�� �� ;��"�*I�I�I�*5�*:�L��'��8�8�I���� ;�+/� �?�L��(��"�.�*-�k�.E�*F�*F�L��'���*�0;�0C�&P�f�f��L��#� ���� C�K�$8�$E�� C����� 4� A�B�B�B��|�U�3�3�3�3r���c�����������������������d|�_���������d�S�)NFr����r.���s��� r����freezezBaggage.freezeX��s ����������r���c������������������H�����i�}t����������|�j��������������������D�] \��}}|||<����|S�r���)r ���r����)r���rt���r$���r����s��� r����dynamic_sampling_contextz Baggage.dynamic_sampling_context\��s5��������"�4�#4�5�5�� �� �I�C���F�3�K�K�� r���Fc����������������������g�}t����������|�j��������������������D�]|\��}}t������������������������5��t����������j��������t����������|������������z���dz���t����������t ����������|������������������������z���}|���������������������|�������������d�d�d��������������n#�1�swxY�w�Y����}|r|���������������������|�j���������������������d� ��������������������|������������S�)Nr����r����) r ���r����r���r����� SENTRY_PREFIXr���r2����appendr�����join)r����include_third_partyrR���r$���r����r����s��� r���� serializezBaggage.serializee��s���������!�$�"3�4�4�� #�� #�H�C��,�.�.�� #�� #��,�u�S�z�z�9�C�?�%��C���/�/�Q�����T�"�"�"� #�� #�� #�� #�� #�� #�� #�� #�� #�� #�� #����� #�� #�� #�� #����� 1��L�L��/�0�0�0��x�x����s����AB�B �B N)r����T)F)r7���r8���r9���� __slots__r�����re�compiler����r����classmethodr����r����r����r����r����r����r)���r���r���r����r��������s���������������@�I��M�$�"�*�Z�0�0�� ��� ���������A��A���[�A�4��"A��"A���[�"A�H��04��04���[�04�d��������������������r���r����c�����������������������|�j���������}|j��������d���������}|j��������r|j��������j��������r|j��������j��������j��������}nd}|o||v�}|rdS�t����������||d�������������S�)zv Returns True if url matches trace_propagation_targets configured in the given hub. Otherwise, returns False. �trace_propagation_targetsNFT)�substring_matching)rM���r@���� transport� parsed_dsn�netlocr���)rT����urlrM���r�����dsn_url�is_request_to_sentrys��� r����should_propagate_tracer����t��sx������ ��Z�F� &��/J� K�� ����F�,�7����"�-�4�����"�5�w�#�~������u��C�!:�t�T�T�T�Tr���c������������������������i�}|�������������������������������������D�]Q\��}}|���������������������d������������r |dd����������}|���������������������dd�����������������������������������������������}|||<����R|S�)z� Normalizes incoming data so the keys are all lowercase with dashes instead of underscores and stripped from known prefixes. r�������Nr!���r ���)rR���r3���r"����lower)� incoming_datarJ���r$����values��� r����normalize_incoming_datar�������sx������ ��D�#�)�)�+�+����� ��U��>�>�'�"�"�� ��a�b�b�'�C��k�k�#�s�#�#�)�)�+�+����S� � ��Kr���)r����),r����� contextlibr�����sentry_sdk.constsr����sentry_sdk.utilsr���r���r���r����sentry_sdk._compatr���r ����sentry_sdk._typesr ����collectionsr����urllibr���r ����collections.abc�urllib.parse�typingr���r���r���r���r���r����rp����base64_strippedr���rA����contextmanagerr[���rf���rv���rN����objectr����r����r�����sentry_sdk.tracingr����r)���r���r����<module>r�������s������ � � � ������������������ �� �� �� �� �� �������������������������.��-��-��-��-��-��-��-��+��+��+��+��+��+���,�#�#�#�#�#�#�%�%�%�%�%�%�%�%�%�'�'�'�'�'�'�+�+�+�+�+�+�+�+�����M�M�M������������� � � � � � �������������� �R�Z����������(��(��(��(��(�W��(��(��(�>�����$���'��'����'�T �� �� �"�����@&��&��&�(\��\��\��\��\�f��\��\��\�~U��U��U�( �� �� �"�?��>��>��>��>��>��>��>r���