Edit File: tracing.cpython-311.pyc
� ����v�d+t��������������� ������������d�dl�Z�d�dlZd�dlmZmZ�d�dlZd�dlmZ�d�dlmZm Z m Z �d�dlmZ�d�dlm Z �d�dlmZ�er6d�dlZd�dlmZ�d�d lmZ�d�d lmZ�d�dlmZ�d�dlmZ�d�d lmZ�d�dlZd�dlmZmZmZ�dZdZdZdZdZdZ dZ!dZ"egZ#e!e!e!eee!eeed� Z$�G�d��de%������������Z&�G�d��de%������������Z'�G�d��de'������������Z(�G�d��de'������������Z)d"d �Z*d�d!l+m,Z,m-Z-m.Z.m/Z/m0Z0�dS�)#�����N)�datetime� timedelta)�INSTRUMENTER)�is_valid_sample_rate�logger�nanosecond_time)�PY2)�SPANDATA)� TYPE_CHECKING)�Any)�Dict)�Iterator)�List)�Optional)�Tuple)�Event�MeasurementUnit�SamplingContext�baggagezsentry-trace�custom�url�route�view� component�task) �endpoint� function_name�handler_name�method_and_path_pattern�path� route_name� route_pattern�uri_templater���c��������������������"�����e�Zd�ZdZdZd��Zd��ZdS�)� _SpanRecorderz5Limits the number of spans recorded in a transaction.��maxlen�spansc������������������(�����|dz ��|�_���������g�|�_��������d�S�)N����r&�����selfr'���s��� �I/opt/cloudlinux/venv/lib64/python3.11/site-packages/sentry_sdk/tracing.py�__init__z_SpanRecorder.__init__@���s��������q�j����� � � �����c�����������������������t����������|�j��������������������|�j��������k����r d�|_��������d�S�|�j�����������������������������|�������������d�S��N)�lenr(���r'����_span_recorder�append)r,����spans��� r-����addz_SpanRecorder.addJ���sA�������t�z�?�?�T�[�(�(�"&�D�����J���d�#�#�#�#�#r/���N)�__name__� __module__�__qualname__�__doc__� __slots__r.���r6�����r/���r-���r%���r%���;���s=��������������?�?�#�I������$��$��$��$��$r/���r%���c������������������������e�Zd�ZdZd��Z � � � � � � � � � � � �dd�Zd��Zd��Zd��Zd ��Z e d ����������������Zej ��������fd�Zd��Zed ����������������Zed����������������Zd��Zed����������������Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zdd�Zd��Zd��ZdS�)�Span)�trace_id�span_id�parent_span_id�same_process_as_parent�sampled�op�description�start_timestamp�_start_timestamp_monotonic_ns�status� timestamp�_tags�_datar3����hub�_context_manager_state�_containing_transactionc������������������|�����d|v�rt��������������������������������t����������������������S�t��������������������������������|�������������S�)z_ Backwards-compatible implementation of Span and Transaction creation. �transaction)�object�__new__�Transaction)�cls�kwargss��� r-���rR���zSpan.__new__g���s3��������F�"�"��>�>�+�.�.�.��~�~�c�"�"�"r/���NTc ����������������������|pt����������j����������������������j��������|�_��������|pt����������j����������������������j��������dd�����������|�_��������||�_��������||�_��������||�_��������||�_��������||�_ ��������| |�_ ��������||�_��������i�|�_��������i�|�_ ��������||�_��������|pt����������j����������������������|�_�������� �t%������������������������|�_��������n#�t(����������$�r�Y�nw�xY�wd�|�_��������d�|�_��������d�S�)N����)�uuid�uuid4�hexr?���r@���rA���rB���rC���rD���rE���rH���rL���rJ���rK���rN���r����utcnowrF���r���rG����AttributeErrorrI���r3���) r,���r?���r@���rA���rB���rC���rD���rE���rL���rH���rP����containing_transactionrF���s ��� r-���r.���z Span.__init__u���s������� �!�4�D�J�L�L�$4�� ��7�$�*�,�,�"2�2�3�3�"7���,���&<��#�������&����������� ��� �'=��$�.�C�(�/�2C�2C��� ��2A�1B�1B�D�.�.���� �� �� ��D� ��������"����s����(B<��< C �C c������������������@�����|�j����������t����������|������������|�_���������d�S�d�S�r1���)r3���r%���r+���s��� r-����init_span_recorderzSpan.init_span_recorder����s)��������&�"/��"7�"7�D�����'�&r/���c�����������������������d|�j���������j���������d|�j���������d|�j���������d|�j���������d|�j���������d|�j���������d|�j���������d�S�) N�<z(op=z, description:�, trace_id=� , span_id=�, parent_span_id=� , sampled=�)>)� __class__r7���rD���rE���r?���r@���rA���rC����r,���s��� r-����__repr__z Span.__repr__����sZ�������� ���'�'�'������ � � �� � � ������#�#�#����� � r/���c�����������������������|�j���������pt����������j��������j��������}|j��������d���������\��}}|j��������}|�|_��������|||f|�_��������|�S�)N���)rL���� sentry_sdk�Hub�current�_stackr5���rM���)r,���rL����_�scope�old_spans��� r-���� __enter__zSpan.__enter__����sD�������h�0�*�.�0���:�b�>���5��:���� �'*�E�8�&<��#��r/���c�����������������������|�|�����������������������d�������������|�j��������\��}}}|�`|����������������������|�������������||_��������d�S�)N�internal_error)� set_statusrM����finishr5���)r,����ty�value�tbrL���rq���rr���s��� r-����__exit__z Span.__exit__����sM���������O�O�,�-�-�-�#�:���U�H��'����C������ � � r/���c�����������������������|�j���������S�r1���)rN���rh���s��� r-���r]���zSpan.containing_transaction����s ��������+�+r/���c������������������R����|�j���������pt����������j��������j��������}|j��������}|o|j��������d���������}||k����rt ������������������������S�|���������������������d|�j���������������������t����������d|�j ��������|�j��������|�j��������d�|��}|�j��������o|�j��������j ��������}|r|���������������������|�������������|S�)a�� Start a sub-span from the current span or transaction. Takes the same arguments as the initializer of :py:class:`Span`. The trace id, sampling decision, transaction pointer, and span recorder are inherited from the current span/transaction. �instrumenterrC���)r?���rA���r]���r<���)rL���rl���rm���rn����client�options�NoOpSpan� setdefaultrC���r>���r?���r@���r]���r3���r6���)r,���r~���rU���rL���r����configuration_instrumenter�child� span_recorders��� r-����start_childzSpan.start_child����s���������h�0�*�.�0�����%+�%N���~�0N�"��5�5�5��:�:�����)�T�\�2�2�2��� ��]��<�#'�#>� �� ��� �� ��� �'�V�D�,G�,V�� ���� %����e�$�$�$��r/���c������������������D�����t����������j��������d��������������|�j��������di�|��S�)zGDeprecated: use :py:meth:`sentry_sdk.tracing.Span.start_child` instead.z:Deprecated: use Span.start_child instead of Span.new_span.r<���)r����warningr�����r,���rU���s��� r-����new_spanz Span.new_span����s.������� ��S�T�T�T��t��)�)�&�)�)�)r/���c������������������z�����|�t�����������u�rt����������j��������d�������������t����������j��������t����������|������������fi�|��S�)a��� Create a Transaction with the given params, then add in data pulled from the 'sentry-trace' and 'baggage' headers from the environ (if any) before returning the Transaction. This is different from `continue_from_headers` in that it assumes header names in the form "HTTP_HEADER_NAME" - such as you would get from a wsgi environ - rather than the form "header-name". zXDeprecated: use Transaction.continue_from_environ instead of Span.continue_from_environ.)r>���r���r����rS����continue_from_headers�EnvironHeaders)rT����environrU���s��� r-����continue_from_environzSpan.continue_from_environ����sI������ ��$�;�;��N�9� �� �� ���0���1H�1H�S�S�F�S�S�Sr/���c����������������������|�t�����������u�rt����������j��������d�������������t����������j��������|���������������������t����������������������������������}|���������������������t����������|i�������������t����������|���������������������t����������������������������������}|�)|���������������������|�������������|� �����������������������������������t����������di�|��}d|_��������|S�)z� Create a transaction with the given params (including any data pulled from the 'sentry-trace' and 'baggage' headers). zXDeprecated: use Transaction.continue_from_headers instead of Span.continue_from_headers.NFr<���) r>���r���r�����Baggage�from_incoming_header�get�BAGGAGE_HEADER_NAME�update�extract_sentrytrace_data�SENTRY_TRACE_HEADER_NAME�freezerS���rB���)rT����headersrU���r����sentrytrace_kwargsrP���s��� r-���r����zSpan.continue_from_headers��s���������$�;�;��N�9� �� �� ���.�w�{�{�;N�/O�/O�P�P��� � �*�G�4�5�5�5�5��K�K�0�1�1� �� ����)��M�M�,�-�-�-� � �N�N����!�+�+�F�+�+��-2��*��r/���c��������������#��������K����t�����������|������������������������������������fV���|�j��������r:|�j������������������������������������������������������������������������������}|rt ����������|fV���dS�dS�dS�)z� Creates a generator which returns the span's `sentry-trace` and `baggage` headers. If the span's containing transaction doesn't yet have a `baggage` value, this will cause one to be generated and stored. N)r�����to_traceparentr]����get_baggage� serializer����)r,���r���s��� r-����iter_headerszSpan.iter_headers7��s������������'��(;�(;�(=�(=�=�=�=�=��&�� 3��1�=�=�?�?�I�I�K�K�G��� 3�)�7�2�2�2�2�2�2� 3�� 3� 3�� 3r/���c������������������\�����t����������j��������d�������������|sdS��|�j��������t����������|ifi�|��S�)a�� DEPRECATED: Use :py:meth:`sentry_sdk.tracing.Transaction.continue_from_headers`. Create a `Transaction` with the given params, then add in data pulled from the given 'sentry-trace' header value before returning the `Transaction`. zwDeprecated: Use Transaction.continue_from_headers(headers, **kwargs) instead of from_traceparent(traceparent, **kwargs)N)r���r����r����r����)rT����traceparentrU���s��� r-����from_traceparentzSpan.from_traceparentE��sY������� �� A� �� �� � ��� ��4�(�s�(� %�{�3� �� �7=� �� �� r/���c������������������p�����|�j���������du�rd}n|�j���������du�rd}nd�}|�j���������d|�j����������}|�|d|��z ��}|S�)NT�1F�0�-)rC���r?���r@���)r,���rC���r����s��� r-���r����zSpan.to_traceparent^��s`�������<�4����G�G� �\�U� "� "��G�G��G�!%�������=�����K�G�G�-�-�K��r/���c������������������F�����|�j���������r|�j��������������������������������������������S�d�S�r1���)r]���r����rh���s��� r-���� to_baggagezSpan.to_baggagem��s'�������&�� =��.�:�:�<�<�<��tr/���c�����������������������||�j���������|<���d�S�r1���)rJ����r,����keyry���s��� r-����set_tagzSpan.set_tags����������� �3���r/���c�����������������������||�j���������|<���d�S�r1���)rK���r����s��� r-����set_dataz Span.set_dataw��r����r/���c�����������������������||�_���������d�S�r1����rH����r,���ry���s��� r-���rv���zSpan.set_status{��s ����������r/���c����������������������|�����������������������dt����������|�������������������������|����������������������t����������j��������|�������������|dk�����r|����������������������d�������������d�S�d|cxk����rdk�����r�n�n�|dk����r|����������������������d�������������d�S�|dk����r|����������������������d�������������d�S�|d k����r|����������������������d �������������d�S�|dk����r|����������������������d�������������d�S�|d k����r|����������������������d�������������d�S�|dk����r|����������������������d�������������d�S�|����������������������d�������������d�S�d|cxk����rdk�����rqn�nn|dk����r|����������������������d�������������d�S�|dk����r|����������������������d�������������d�S�|dk����r|����������������������d�������������d�S�|����������������������d�������������d�S�|����������������������d�������������d�S�)Nzhttp.status_codei����oki���i����permission_deniedi���� not_foundi����resource_exhaustedi����failed_preconditioni����unauthenticatedi����already_exists�invalid_argumentiX��i����deadline_exceededi���� unimplementedi����unavailableru���� unknown_error)r�����strr����r ����HTTP_STATUS_CODErv����r,����http_statuss��� r-����set_http_statuszSpan.set_http_status��s0����������K� 0� 0� �� �� �� � � �h�/��=�=�=������O�O�D�!�!�!�!�!� �K� %� %� %� %�#� %� %� %� %� %��c�!�!���� 3�4�4�4�4�4���#�#�����,�,�,�,�,���#�#���� 4�5�5�5�5�5���#�#���� 5�6�6�6�6�6���#�#���� 1�2�2�2�2�2���#�#���� 0�1�1�1�1�1���� 2�3�3�3�3�3� �K� %� %� %� %�#� %� %� %� %� %��c�!�!���� 3�4�4�4�4�4���#�#�����0�0�0�0�0���#�#���� �.�.�.�.�.���� 0�1�1�1�1�1��O�O�O�,�,�,�,�,r/���c�����������������������|�j���������dk����S�)Nr����r����rh���s��� r-���� is_successzSpan.is_success���s�������{�d�"�"r/���c������������������@����|�j����������d�S�|p|�j��������pt����������j��������j��������} �|r||�_���������n6t������������������������|�j��������z ��}|�j��������t����������|dz���������������z���|�_���������n(#�t����������$�r�t����������j����������������������|�_���������Y�nw�xY�wt����������||��������������d�S�)Ni���)�microseconds) rI���rL���rl���rm���rn���r���rG���rF���r���r\���r���r[����"maybe_create_breadcrumbs_from_span)r,���rL���� end_timestamp�elapseds��� r-���rw���zSpan.finish���s���������>�%��4��7�T�X�7���!7�� /��� �!.����)�+�+�d�.P�P��!%�!5� �!(�4��9��9��9��"�������� /�� /�� /�%�_�.�.�D�N�N�N� /����� +�3��5�5�5��ts����A�A&��&"B� Bc����������� �������������|�j���������|�j��������|�j��������|�j��������|�j��������|�j��������|�j��������|�j��������d�}|�j��������r|�j��������|�j ��������d<���|�j ��������}|r||d<���|�j ��������}|r||d<���|S�)N)r?���r@���rA���rB���rD���rE���rF���rI���rH����tags�data)r?���r@���rA���rB���rD���rE���rF���rI���rH���rJ���rK���)r,����rvr����r����s��� r-����to_jsonzSpan.to_json���s��������� ��|�"�1�&*�&A��'��+�#�3��� �� ����;�� /�#'�;�D�J�x� ��z���� ��B�v�J��z���� ��B�v�J�� r/���c������������������������|�j���������|�j��������|�j��������|�j��������|�j��������d�}|�j��������r |�j��������|d<���|�j��������r.|�j������������������������������������������������������������������������������|d<���|S�)N)r?���r@���rA���rD���rE���rH����dynamic_sampling_context) r?���r@���rA���rD���rE���rH���r]���r����r����)r,���r����s��� r-����get_trace_contextzSpan.get_trace_context���s��������� ��|�"�1��'��+� �� ����;�� '��;�B�x�L��&�� U���+�7�7�9�9�R�R�T�T�� �*� ��� r/���)NNNTNNNNNNNN�NN)r7���r8���r9���r;���rR���r.���r_���ri���rs���r{����propertyr]���r����SENTRYr����r�����classmethodr����r����r����r����r����r����r����r����rv���r����r����rw���r����r����r<���r/���r-���r>���r>���R���s���������������I�(#��#��#� ����#�������#��'#��'#��'#��'#�V8��8��8� �� �� ������ �� �� ���,��,���X�,��(4�':���������@*��*��*���T��T���[�T�,��%��%���[�%�N3��3��3��� �� ���[� �0 �� �� ������ �� �� � �� �� ������"-��"-��"-�H#��#��#��������0�����4��������r/���r>���c���������������������������e�Zd�ZdZdddefd�Zd��Z��fd�Z��fd�Ze d����������������Z dd �Zdd �Zd��Z ��fd�Zd ��Zd��Z��xZS�)rS���)�name�source�parent_sampled�sample_rate� _measurements� _contexts�_profile�_baggage��Nc�����������������������|s-d|v�r)t����������j��������d�������������|���������������������d������������}t����������j��������|�fi�|���||�_��������||�_��������d�|�_��������||�_��������i�|�_ ��������i�|�_ ��������d�|�_��������||�_��������d�S�)NrP���z^Deprecated: use Transaction(name=...) to create transactions instead of Span(transaction=...).) r���r�����popr>���r.���r����r����r����r����r����r����r����r����)r,���r����r����r���r����rU���s��� r-���r.���zTransaction.__init__���s���������� -� ��/�/��N�4� �� �� ���:�:�m�,�,�D�� �d�%�%�f�%�%�%��� �������,����������� ��� � � r/���c�����������������������d|�j���������j���������d|�j���������d|�j���������d|�j���������d|�j���������d|�j���������d|�j���������d|�j���������d �S�) Nra���z(name=z, op=rb���rc���rd���re���z , source=rf���) rg���r7���r����rD���r?���r@���rA���rC���r����rh���s��� r-���ri���zTransaction.__repr__��s`�������� ���'�'�'�� � � ������ � � ������#�#�#��������� � r/���c������������������������t����������t����������|�������������������������������������������������|�j���������|�j��������������������������������������������|�S�r1���)�superrS���rs���r����)r,���rg���s��� �r-���rs���zTransaction.__enter__(��s@������� �k�4� � �*�*�,�,�,��=�$��M�#�#�%�%�%��r/���c������������������������|�j����������|�j������������������������������|||�������������t����������t����������|����������������������������������|||�������������d�S�r1���)r����r{���r����rS���)r,���rx���ry���rz���rg���s��� �r-���r{���zTransaction.__exit__1��sM��������=�$��M�"�"�2�u�b�1�1�1� �k�4� � �)�)�"�e�R�8�8�8�8�8r/���c�����������������������|�S�r1���r<���rh���s��� r-���r]���z"Transaction.containing_transaction8��s ��������r/���c����������� �����������|�j����������d�S�|p|�j��������pt����������j��������j��������}|j��������}|�d�S�|�j���������it����������j��������d�������������|j ��������rLt����������|j��������������������r8|j��������r|j��������j ��������dk����rd}nd}|j �����������������������������|d��������������d�S�|�j��������st����������j��������d�������������d|�_��������t"�������������������������������|�||�������������|�j��������s|�j���������t����������j��������d �������������d�S�d ��|�j��������j��������D���������������}d�|�_��������i�}|���������������������|�j���������������������|���������������������d|������������������������������������i�������������d|�j��������d|�j��������i||�j��������|�j���������|�j��������|d �}|�j���������*|�j�������������������������������������������r|�j��������|d<���d�|�_��������|�j��������|d<���|���������������������|������������S�)Nz.Discarding transaction because sampled = Falser*����backpressurer����rP���)� data_categoryzCTransaction has no name, falling back to `<unlabeled transaction>`.z<unlabeled transaction>z1Discarding transaction without sampling decision.c������������������D�����g�|�]}|j���������� |�������������������������������������S�r1���)rI���r����)�.0r5���s��� r-���� <listcomp>z&Transaction.finish.<locals>.<listcomp>o��s2������� �� �� ���~�)�� �L�L�N�N�)�)�)r/����tracer����)�typerP����transaction_info�contextsr����rI���rF���r(����profile�measurements)rI���rL���rl���rm���rn���r���r3���r����debug� transport�has_tracing_enabledr�����monitor�downsample_factor�record_lost_eventr����r����r>���rw���rC���r(���r����r����r����r����rJ���rF���r�����validr����� capture_event)r,���rL���r����r����reason�finished_spansr�����events��� r-���rw���zTransaction.finishA��s������>�%��4��7�T�X�7���!7������>��4����&��L�I�J�J�J� ���� X�$7���$G�$G�� X��>��+�f�n�&F��&J�&J�+�F�F�*�F�� �2�2�6��2�W�W�W��4��y�� 2��N�U� �� �� ��2�D�I����D�#�}�-�-�-��|�� ���|�#���R�S�S�S��4� �� ��+�1� �� �� ���#����������'�'�'�����$�"8�"8�":�":�;�<�<�<��"��9�!)�4�;� 7� ��J���#�3�#� �� ����=�$���)<�)<�)>�)>�$�#�}�E�)�� �D�M� $� 2��n��� � ��'�'�'r/���c������������������ �����||d�|�j���������|<���d�S�)N)ry����unit)r����)r,���r����ry���r��s��� r-����set_measurementzTransaction.set_measurement���s������-2�D�#A�#A���4� � � r/���c�����������������������||�j���������|<���d�S�r1���)r����r����s��� r-����set_contextzTransaction.set_context���s������#���s���r/���c������������������������t����������t����������|������������������������������������������������}|�j��������|d<���|�j��������|d<���|�j��������|d<���|S�)Nr����r����rC���)r����rS���r����r����r����rC���)r,���r����rg���s��� �r-���r����zTransaction.to_json���sD������� �;�� %� %� -� -� /� /���Y��6� ��{��8�����9� �� r/���c������������������h�����|�j���������r|�j���������j��������rt����������j��������|�������������|�_���������|�j���������S�)zd The first time a new baggage with sentry items is made, it will be frozen. )r�����mutabler�����populate_from_transactionrh���s��� r-���r����zTransaction.get_baggage���s6��������}�� D�� � 5�� D�#�=�d�C�C�D�M��}�r/���c����������� �������p����|�j���������pt����������j��������j��������}|j��������}|r|j��������pi�}d���������������������|�j��������r d|�j��������z���dz���nd|�j���������������������}|rt����������|������������s d|�_ ��������dS�|�j ���������t����������|�j ��������������������|�_��������dS�t����������|���������������������d������������������������r�|d���������|������������n|d ����������|d ���������n|d ���������}t����������|d�������������s1t!����������j��������d ���������������������|��������������������������d|�_ ��������dS�t����������|������������|�_��������|j��������r|�xj��������|j��������j��������z��c_��������|�j��������sVt!����������j��������d���������������������|t����������|���������������������d������������������������rdnd��������������������������d|�_ ��������dS�t+����������j����������������������|�j��������k�����|�_ ��������|�j ��������r*t!����������j��������d���������������������|��������������������������dS�t!����������j��������d���������������������||�j����������������������������������dS�)aO�� Sets the transaction's sampling decision, according to the following precedence rules: 1. If a sampling decision is passed to `start_transaction` (`start_transaction(name: "my transaction", sampled: True)`), that decision will be used, regardless of anything else 2. If `traces_sampler` is defined, its decision will be used. It can choose to keep or ignore any parent sampling decision, or use the sampling context data to make its own decision or to choose a sample rate for the transaction. 3. If `traces_sampler` is not defined, but there's a parent sampling decision, the parent sampling decision will be used. 4. If `traces_sampler` is not defined and there's no parent sampling decision, `traces_sample_rate` will be used. z{op}transaction <{name}>ra���z> r����)rD���r����FN�traces_samplerr�����traces_sample_rate�Tracing)r����zN[Tracing] Discarding {transaction_description} because of invalid sample rate.)�transaction_descriptionz?[Tracing] Discarding {transaction_description} because {reason}z"traces_sampler returned 0 or Falseztraces_sample_rate is set to 0)r ��r����z,[Tracing] Starting {transaction_description}z}[Tracing] Discarding {transaction_description} because it's not included in the random sample (sampling rate = {sample_rate}))r ��r����)rL���rl���rm���rn���r���r�����formatrD���r����r����rC����floatr�����callabler����r���r���r����r����r����r�����random)r,����sampling_contextrL���r���r����r ��r����s��� r-����_set_initial_sampling_decisionz*Transaction._set_initial_sampling_decision���s������,��h�0�*�.�0������,�f�n�3���"<�"C�"C�(,��7��d�g� ��$�$�R�t�y��#D��# ��# �� ��� �0��9�9�� � �D�L��F���<�#�$�T�\�2�2�D���F������$4�5�5�6�6� �%�G�$�%�&6�7�7�7� �$�$4�5�A��!�!1�2�2��1�2�� ��$�K� �B�B�B�� ��N�`�g�g�,C��h����� �� �� � �!�D�L��F� ��-�-����>�� A������ @�@������� ��L�Q�X�X�,C��$�G�K�K�0@�$A�$A�B�B�>�<�<�=��Y����� �� �� ��!�D�L��F� ��}����)9�9����<�� ��L�>�E�E�,C��F����� �� �� �� �� �� �L��P���W���W�,C� $� 0��W����� �� �� �� �� r/���r����)r����)r7���r8���r9���r;����TRANSACTION_SOURCE_CUSTOMr.���ri���rs���r{���r����r]���rw���r��r��r����r����r��� __classcell__)rg���s���@r-���rS���rS������s"�������������� �I�����(� �� �� �� �< �� �� � ���������9��9��9��9��9��������X��O(��O(��O(��O(�bB��B��B��B�$��$��$���������� �� �� �h��h��h��h��h��h��hr/���rS���c��������������������r�����e�Zd�Zd��Zej��������fd�Zd��Zd��Zd��Z d��Z d��Zd��Zd ��Z d ��Zd��Zd��Zd ��Zdd�ZdS�)r����c�����������������������|�j���������j��������S�r1���)rg���r7���rh���s��� r-���ri���zNoOpSpan.__repr__��s �������~�&�&r/���c�����������������������t������������������������S�r1���)r����)r,���r~���rU���s��� r-���r����zNoOpSpan.start_child��s�������z�z�r/���c������������������������|�j���������di�|��S��Nr<���)r����r����s��� r-���r����zNoOpSpan.new_span#��s�������t��)�)�&�)�)�)r/���c�����������������������dS�)Nr����r<���rh���s��� r-���r����zNoOpSpan.to_traceparent'��s�������rr/���c�����������������������d�S�r1���r<���rh���s��� r-���r����zNoOpSpan.to_baggage+����������tr/���c������������������ �����t����������d������������S�r��)�iterrh���s��� r-���r����zNoOpSpan.iter_headers/��s �������B�x�x�r/���c�����������������������d�S�r1���r<���r����s��� r-���r����zNoOpSpan.set_tag3����������r/���c�����������������������d�S�r1���r<���r����s��� r-���r����zNoOpSpan.set_data7��r!��r/���c�����������������������d�S�r1���r<���r����s��� r-���rv���zNoOpSpan.set_status;��r!��r/���c�����������������������d�S�r1���r<���r����s��� r-���r����zNoOpSpan.set_http_status?��r!��r/���c�����������������������dS�)NTr<���rh���s��� r-���r����zNoOpSpan.is_successC��r��r/���c�����������������������i�S�r1���r<���rh���s��� r-���r����zNoOpSpan.to_jsonG���������� r/���c�����������������������i�S�r1���r<���rh���s��� r-���r����zNoOpSpan.get_trace_contextK��r'��r/���Nc�����������������������d�S�r1���r<���)r,���rL���r����s��� r-���rw���zNoOpSpan.finishO��r!��r/���r����)r7���r8���r9���ri���r���r����r����r����r����r����r����r����r����rv���r����r����r����r����rw���r<���r/���r-���r����r������s���������������'��'��'��(4�':���������*��*��*���������������� �� �� � �� �� � �� �� � �� �� ���������������� �� �� �� �� �� r/���r����c������������������H�����t�����������rddlm}�nddlm}�|�r�||�������������S�|S�)av�� Decorator to start a child span under the existing current transaction. If there is no current transaction, then nothing will be traced. .. code-block:: :caption: Usage import sentry_sdk @sentry_sdk.trace def my_function(): ... @sentry_sdk.trace async def my_async_function(): ... r���)�start_child_span_decorator)r ����sentry_sdk.tracing_utils_py2r+���sentry_sdk.tracing_utils_py3)�funcr+��s��� r-���r����r����T��sU������&���L�K�K�K�K�K�K�K�K�K�K�K�K�K����*�)�)�$�/�/�/�)�)r/���)r����r����r����r����r����r1���)1rX���r��r���r���rl����sentry_sdk.constsr����sentry_sdk.utilsr���r���r����sentry_sdk._compatr ���r ����sentry_sdk._typesr����typingr���r ���r���r���r���r����sentry_sdk.profilerr���r���r���r����r����r���TRANSACTION_SOURCE_URL�TRANSACTION_SOURCE_ROUTE�TRANSACTION_SOURCE_VIEW�TRANSACTION_SOURCE_COMPONENT�TRANSACTION_SOURCE_TASK�LOW_QUALITY_TRANSACTION_SOURCES�SOURCE_FOR_STYLErQ���r%���r>���rS���r����r�����sentry_sdk.tracing_utilsr����r����r����r����r����r<���r/���r-����<module>r=�����s����������� � � � ��(��(��(��(��(��(��(��(����������*��*��*��*��*��*��J��J��J��J��J��J��J��J��J��J��"��"��"��"��"��"��&��&��&��&��&��&��+��+��+��+��+��+����J��M�M�M�����������������������������������������I�I�I�I�I�I�I�I�I�I�� ���)��� �%������"��� ���*��� �����#��� �-�1�0�7�"�.�-�,�#� �� ���$��$��$��$��$�F��$��$��$�.X��X��X��X��X�6��X��X��X�vj��j��j��j��j�$��j��j��j�Z 7 ��7 ��7 ��7 ��7 �t��7 ��7 ��7 �t*��*��*��*�D������������������������������r/���