§
    xŠtjÿË  ã            
       ó¾  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dl	mZ d dlmZ d d	lmZ d d
lmZ  d dlm!Z" d dlm#Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z>m?Z? d dl@mAZA d dlBmCZC d dlDmEZEmFZF d dlGmHZHmIZImJZJmKZK d dlLmMZMmNZN d dlOmPZPmQZQ d dlRmZ d dlSmTZT  ejU        eV¦  «        ZWdZXdZYdZZdZ[dZ\dZ]dZ^ G d„ d ¦  «        Z_ G d!„ d"e_¦  «        Z` G d#„ d$e_¦  «        Za G d%„ d&e jb        ¦  «        Zc G d'„ d(ec¦  «        Zdd)„ Zed*eNd+ejf        d,egfd-„Zh G d.„ d/¦  «        Zi G d0„ d1¦  «        Zj ejejjk        ejjk        ejjk        ejjk        ejjk        ejjk        ejjk        ejjk        ¬2¦  «        Zlej m                    de0eY¦  «        Zn G d3„ d4e$jo        ei¦  «        Zo G d5„ d6eo¦  «        Zpe G d7„ d8¦  «        ¦   «         Zq G d9„ d:e$jr        ¦  «        ZreeFgeqf         ZseCeq         Ztd;eFd,eqfd<„Zud;eFd,eqfd=„Zv G d>„ d?e$jw        ¦  «        ZwdS )@é    N)ÚCallableÚIteratorÚMappingÚMutableMappingÚSequence)Ú	dataclass)Úenviron)Útime_ns)ÚMappingProxyTypeÚTracebackType)ÚAny)Úfilterwarnings)Ú
deprecated©Úcontext)Úmetrics)Útrace)ÚBoundedAttributes)Úutil)
ÚOTEL_ATTRIBUTE_COUNT_LIMITÚ!OTEL_ATTRIBUTE_VALUE_LENGTH_LIMITÚ OTEL_EVENT_ATTRIBUTE_COUNT_LIMITÚOTEL_LINK_ATTRIBUTE_COUNT_LIMITÚ(OTEL_PYTHON_SDK_INTERNAL_METRICS_ENABLEDÚOTEL_SDK_DISABLEDÚOTEL_SPAN_ATTRIBUTE_COUNT_LIMITÚ&OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMITÚOTEL_SPAN_EVENT_COUNT_LIMITÚOTEL_SPAN_LINK_COUNT_LIMIT)Ú"parse_boolean_environment_variable)ÚResourceÚ_get_process_dependent_resource)Úsampling)Úcreate_tracer_metrics)ÚIdGeneratorÚRandomIdGenerator)ÚBoundedList)ÚRuleBasedConfigurator)ÚInstrumentationInfoÚInstrumentationScope)ÚEXCEPTION_ESCAPEDÚEXCEPTION_MESSAGEÚEXCEPTION_STACKTRACEÚEXCEPTION_TYPE)Ú
NoOpTracerÚSpanContext)ÚStatusÚ
StatusCode)Útypes)Ú_agnosticcontextmanageré€   Ú c                   ód   — e Zd ZdZ	 ddddej        dz  ddfd„Zdd„Zdd
„Zdd„Z	dde
defd„ZdS )ÚSpanProcessora   Interface which allows hooks for SDK's `Span` start and end method
    invocations.

    Span processors can be registered directly using
    :func:`TracerProvider.add_span_processor` and they are invoked
    in the same order as they were registered.
    NÚspanÚSpanÚparent_contextÚreturnc                 ó   — dS )az  Called when a :class:`opentelemetry.trace.Span` is started.

        This method is called synchronously on the thread that starts the
        span, therefore it should not block or throw an exception.

        Args:
            span: The :class:`opentelemetry.trace.Span` that just started.
            parent_context: The parent context of the span that just started.
        N© ©Úselfr9   r;   s      ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/opentelemetry/sdk/trace/__init__.pyÚon_startzSpanProcessor.on_startc   ó   € € € ó    c                 ó   — dS )a&  Called when a :class:`opentelemetry.trace.Span` is ending.

        This method is called synchronously on the thread that ends the
        span, therefore it should not block or throw an exception.

        Args:
            span: The :class:`opentelemetry.trace.Span` that is ending.
        Nr>   ©r@   r9   s     rA   Ú
_on_endingzSpanProcessor._on_endingr   rC   rD   ÚReadableSpanc                 ó   — dS )a&  Called when a :class:`opentelemetry.trace.Span` is ended.

        This method is called synchronously on the thread that ends the
        span, therefore it should not block or throw an exception.

        Args:
            span: The :class:`opentelemetry.trace.Span` that just ended.
        Nr>   rF   s     rA   Úon_endzSpanProcessor.on_end|   rC   rD   c                 ó   — dS )zJCalled when a :class:`opentelemetry.sdk.trace.TracerProvider` is shutdown.Nr>   ©r@   s    rA   ÚshutdownzSpanProcessor.shutdown†   rC   rD   é0u  Útimeout_millisc                 ó   — dS )a+  Export all ended spans to the configured Exporter that have not yet
        been exported.

        Args:
            timeout_millis: The maximum amount of time to wait for spans to be
                exported.

        Returns:
            False if the timeout is exceeded, True otherwise.
        Tr>   ©r@   rO   s     rA   Úforce_flushzSpanProcessor.force_flush‰   s	   € ð ˆtrD   ©N©r9   r:   r<   N©r9   rH   r<   N©r<   N©rN   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úcontext_apiÚContextrB   rG   rJ   rM   ÚintÚboolrR   r>   rD   rA   r8   r8   Z   sÇ   € € € € € ðð ð 6:ðð àðð $Ô+¨dÑ2ðð 
ð	ð ð ð ðð ð ð ðð ð ð ðYð Yð Yð Yðð ¨#ð ¸$ð ð ð ð ð ð rD   r8   c                   ó–   — e Zd ZU dZeedf         ed<   d„ Zdeddfd„Z	 dd	d
de	j
        dz  ddfd„Zdd„Zdd„Zdd„Zddedefd„ZdS )ÚSynchronousMultiSpanProcessorzØImplementation of class:`SpanProcessor` that forwards all received
    events to a list of span processors sequentially.

    The underlying span processors are called in sequential order as they were
    added.
    .Ú_span_processorsc                 óD   — d| _         t          j        ¦   «         | _        d S )Nr>   )rb   Ú	threadingÚLockÚ_lockrL   s    rA   Ú__init__z&SynchronousMultiSpanProcessor.__init__£   s   € ð !#ˆÔÝ”^Ñ%Ô%ˆŒ
ˆ
ˆ
rD   Úspan_processorr<   Nc                 óh   — | j         5  | xj        |fz  c_        ddd¦  «         dS # 1 swxY w Y   dS ©z:Adds a SpanProcessor to the list handled by this instance.N©rf   rb   ©r@   rh   s     rA   Úadd_span_processorz0SynchronousMultiSpanProcessor.add_span_processor©   ó…   € àŒZð 	7ð 	7ØÐ!Ô! nÐ%6Ñ6Ð!Ô!ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	7ð 	7ó   ˆ'§+®+r9   r:   r;   c                 óH   — | j         D ]}|                     ||¬¦  «         Œd S )N©r;   )rb   rB   )r@   r9   r;   Úsps       rA   rB   z&SynchronousMultiSpanProcessor.on_start®   s9   € ð
 Ô'ð 	=ð 	=ˆBØ�KŠK˜¨^ˆKÑ<Ô<Ð<Ð<ð	=ð 	=rD   c                 óD   — | j         D ]}|                     |¦  «         Œd S rS   )rb   rG   ©r@   r9   rr   s      rA   rG   z(SynchronousMultiSpanProcessor._on_ending¶   s3   € ØÔ'ð 	 ð 	 ˆBà�MŠM˜$ÑÔÐÐð	 ð 	 rD   rH   c                 óD   — | j         D ]}|                     |¦  «         Œd S rS   )rb   rJ   rt   s      rA   rJ   z$SynchronousMultiSpanProcessor.on_end»   s/   € ØÔ'ð 	ð 	ˆBØ�IŠI�d‰OŒOˆOˆOð	ð 	rD   c                 óB   — | j         D ]}|                     ¦   «          ŒdS )z7Sequentially shuts down all underlying span processors.N)rb   rM   )r@   rr   s     rA   rM   z&SynchronousMultiSpanProcessor.shutdown¿   s-   € àÔ'ð 	ð 	ˆBØ�KŠK‰MŒMˆMˆMð	ð 	rD   rN   rO   c                 ó²   — t          ¦   «         |dz  z   }d}| j        D ]8}t          ¦   «         }||k    r dS |                     ||z
  dz  ¦  «        du rd}Œ9|S )añ  Sequentially calls force_flush on all underlying
        :class:`SpanProcessor`

        Args:
            timeout_millis: The maximum amount of time over all span processors
                to wait for spans to be exported. In case the first n span
                processors exceeded the timeout followup span processors will be
                skipped.

        Returns:
            True if all span processors flushed their spans within the
            given timeout, False otherwise.
        i@B TF)r
   rb   rR   )r@   rO   Údeadline_nsÚall_flushedrr   Úcurrent_time_nss         rA   rR   z)SynchronousMultiSpanProcessor.force_flushÄ   s   € õ ‘i”i .°7Ñ":Ñ:ˆØˆØÔ'ð 		$ð 		$ˆBÝ%™iœiˆOØ +Ò-Ð-Ø�u�uð —’ ¨oÑ =À'ÑIÑJÔJØðð ð $�øàÐrD   rS   rT   rU   rV   rW   )rX   rY   rZ   r[   Útupler8   Ú__annotations__rg   rm   r\   r]   rB   rG   rJ   rM   r^   r_   rR   r>   rD   rA   ra   ra   ™   s  € € € € € € ðð ð ˜M¨3Ð.Ô/Ð/Ð/Ñ/ð&ð &ð &ð7°ð 7À4ð 7ð 7ð 7ð 7ð 6:ð=ð =àð=ð $Ô+¨dÑ2ð=ð 
ð	=ð =ð =ð =ð ð  ð  ð  ð
ð ð ð ðð ð ð ð
ð ¨#ð ¸$ð ð ð ð ð ð rD   ra   c                   óà   — e Zd ZU dZeedf         ed<   ddefd„Zdeddfd	„Z	d
eddfd„Z
deeged         f         dedefd„Z	 ddddej        dz  ddfd„Zdd„Zdd„Zd d„Zd!dedefd„ZdS )"ÚConcurrentMultiSpanProcessoraÙ  Implementation of :class:`SpanProcessor` that forwards all received
    events to a list of span processors in parallel.

    Calls to the underlying span processors are forwarded in parallel by
    submitting them to a thread pool executor and waiting until each span
    processor finished its work.

    Args:
        num_threads: The number of threads managed by the thread pool executor
            and thus defining how many span processors can work in parallel.
    .rb   é   Únum_threadsc                 ó
  ‡‡— d| _         t          j        ¦   «         | _        |                      ‰¦  «         t          t          d¦  «        r7t          j        | j        ¦  «        Šdˆˆfd„}t          j	        |¬¦  «         d S d S )Nr>   Úregister_at_forkr<   c                  ó:   •—  ‰¦   «         } | � | ‰¦  «         d S d S rS   r>   )Úreinitr€   Úweak_reinits    €€rA   Ú_after_in_childz>ConcurrentMultiSpanProcessor.__init__.<locals>._after_in_childü   s2   ø€ Ø$˜™œ�ØÐ%Ø�F˜;Ñ'Ô'Ð'Ð'Ð'ð &Ð%rD   ©Úafter_in_childrV   )
rb   rd   re   rf   Ú_init_executorÚhasattrÚosÚweakrefÚ
WeakMethodr‚   )r@   r€   r†   r…   s    ` @rA   rg   z%ConcurrentMultiSpanProcessor.__init__ñ   s¥   øø€ ð !#ˆÔÝ”^Ñ%Ô%ˆŒ
Ø×Ò˜KÑ(Ô(Ð(Ý•2Ð)Ñ*Ô*ð 
	@õ "Ô,¨TÔ-@ÑAÔAˆKð(ð (ð (ð (ð (ð (ð (õ
 Ô¨Ð?Ñ?Ô?Ð?Ð?Ð?ð
	@ð 
	@rD   r<   Nc                 óP   — t           j                             |¬¦  «        | _        d S )N)Úmax_workers)Ú
concurrentÚfuturesÚThreadPoolExecutorÚ	_executor)r@   r€   s     rA   r‰   z+ConcurrentMultiSpanProcessor._init_executor  s(   € Ý#Ô+×>Ò>Ø#ð ?ñ 
ô 
ˆŒˆˆrD   rh   c                 óh   — | j         5  | xj        |fz  c_        ddd¦  «         dS # 1 swxY w Y   dS rj   rk   rl   s     rA   rm   z/ConcurrentMultiSpanProcessor.add_span_processor  rn   ro   Úfunc).NÚargsÚkwargsc                 ó¸   — g }| j         D ]6} | j        j         ||¦  «        g|¢R i |¤Ž}|                     |¦  «         Œ7|D ]}|                     ¦   «          Œd S rS   )rb   r“   ÚsubmitÚappendÚresult)r@   r•   r–   r—   r‘   rr   Úfutures          rA   Ú_submit_and_awaitz.ConcurrentMultiSpanProcessor._submit_and_await  s„   € ð ˆØÔ'ð 	#ð 	#ˆBØ*�T”^Ô*¨4¨4°©8¬8ÐE°dÐEÐEÐE¸fÐEÐEˆFØ�NŠN˜6Ñ"Ô"Ð"Ð"Øð 	ð 	ˆFØ�MŠM‰OŒOˆOˆOð	ð 	rD   r9   r:   r;   c                 ó8   — |                       d„ ||¬¦  «         d S )Nc                 ó   — | j         S rS   )rB   ©rr   s    rA   ú<lambda>z7ConcurrentMultiSpanProcessor.on_start.<locals>.<lambda>   s   € �r”{€ rD   rq   ©r�   r?   s      rA   rB   z%ConcurrentMultiSpanProcessor.on_start  s5   € ð
 	×ÒØ"Ð" D¸ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rD   c                 ó4   — |                       d„ |¦  «         d S )Nc                 ó   — | j         S rS   )rG   r    s    rA   r¡   z9ConcurrentMultiSpanProcessor._on_ending.<locals>.<lambda>%  s   € ¨"¬-€ rD   r¢   rF   s     rA   rG   z'ConcurrentMultiSpanProcessor._on_ending#  s"   € à×ÒÐ7Ð7¸Ñ>Ô>Ð>Ð>Ð>rD   rH   c                 ó4   — |                       d„ |¦  «         d S )Nc                 ó   — | j         S rS   )rJ   r    s    rA   r¡   z5ConcurrentMultiSpanProcessor.on_end.<locals>.<lambda>(  s   € ¨"¬)€ rD   r¢   rF   s     rA   rJ   z#ConcurrentMultiSpanProcessor.on_end'  s"   € Ø×ÒÐ3Ð3°TÑ:Ô:Ð:Ð:Ð:rD   c                 ó2   — |                       d„ ¦  «         dS )z6Shuts down all underlying span processors in parallel.c                 ó   — | j         S rS   )rM   r    s    rA   r¡   z7ConcurrentMultiSpanProcessor.shutdown.<locals>.<lambda>,  s   € ¨"¬+€ rD   Nr¢   rL   s    rA   rM   z%ConcurrentMultiSpanProcessor.shutdown*  s    € à×ÒÐ5Ð5Ñ6Ô6Ð6Ð6Ð6rD   rN   rO   c                 ó  — g }| j         D ]7}| j                             |j        |¦  «        }|                     |¦  «         Œ8|dz  }t
          j                             ||¦  «        \  }}|rdS |D ]}|                     ¦   «         du r dS ŒdS )aF  Calls force_flush on all underlying span processors in parallel.

        Args:
            timeout_millis: The maximum amount of time to wait for spans to be
                exported.

        Returns:
            True if all span processors flushed their spans within the given
            timeout, False otherwise.
        g     @�@FT)	rb   r“   r™   rR   rš   r�   r‘   Úwaitr›   )r@   rO   r‘   rr   rœ   Útimeout_secÚdone_futuresÚnot_done_futuress           rA   rR   z(ConcurrentMultiSpanProcessor.force_flush.  sº   € ð ˆØÔ'ð 	#ð 	#ˆBØ”^×*Ò*¨2¬>¸>ÑJÔJˆFØ�NŠN˜6Ñ"Ô"Ð"Ð"à$ sÑ*ˆÝ)3Ô);×)@Ò)@Ø�[ñ*
ô *
Ñ&ˆÐ&ð ð 	Ø�5à"ð 	ð 	ˆFØ�}Š}‰Œ %Ð'Ð'Ø�u�uð (ð ˆtrD   )r   rS   rT   rU   rV   rW   )rX   rY   rZ   r[   r{   r8   r|   r^   rg   r‰   rm   r   r   r�   r\   r]   rB   rG   rJ   rM   r_   rR   r>   rD   rA   r~   r~   â   sˆ  € € € € € € ð
ð 
ð ˜M¨3Ð.Ô/Ð/Ð/Ñ/ð@ð @ Cð @ð @ð @ð @ð$
¨#ð 
°$ð 
ð 
ð 
ð 
ð
7°ð 7À4ð 7ð 7ð 7ð 7ð
à˜�¨°Ô(;Ð;Ô<ðð ðð ð	ð ð ð ð  6:ð
ð 
àð
ð $Ô+¨dÑ2ð
ð 
ð	
ð 
ð 
ð 
ð?ð ?ð ?ð ?ð;ð ;ð ;ð ;ð7ð 7ð 7ð 7ðð ¨#ð ¸$ð ð ð ð ð ð rD   r~   c                   ó¢   — e Zd Zd	dededz  ddfd„Zedefd„¦   «         Zedefd„¦   «         Zee	j
        dej        fd„¦   «         ¦   «         ZdS )
Ú	EventBaseNÚnameÚ	timestampr<   c                 óP   — || _         |€t          ¦   «         | _        d S || _        d S rS   )Ú_namer
   Ú
_timestamp)r@   r°   r±   s      rA   rg   zEventBase.__init__M  s)   € ØˆŒ
ØÐÝ%™iœiˆDŒOˆOˆOà'ˆDŒOˆOˆOrD   c                 ó   — | j         S rS   ©r³   rL   s    rA   r°   zEventBase.nameT  ó
   € àŒzÐrD   c                 ó   — | j         S rS   )r´   rL   s    rA   r±   zEventBase.timestampX  s
   € àŒÐrD   c                 ó   — d S rS   r>   rL   s    rA   Ú
attributeszEventBase.attributes\  s	   € ð 	ˆrD   rS   )rX   rY   rZ   Ústrr^   rg   Úpropertyr°   r±   ÚabcÚabstractmethodr3   Ú
Attributesrº   r>   rD   rA   r¯   r¯   L  sÌ   € € € € € ð(ð (˜Sð (¨S°4©Zð (À4ð (ð (ð (ð (ð ð�cð ð ð ñ „Xðð ð˜3ð ð ð ñ „Xðð ØÔð˜EÔ,ð ð ð ñ Ôñ „Xðð ð rD   r¯   c                   ó˜   ‡ — e Zd ZdZddefdedej        dedz  dedz  ddf
ˆ fd„Z	e
dej        fd	„¦   «         Ze
defd
„¦   «         Zˆ xZS )ÚEventa  A text annotation with a set of attributes. The attributes of an event
    are immutable.

    Args:
        name: Name of the event.
        attributes: Attributes of the event.
        timestamp: Timestamp of the event. If `None` it will filled
            automatically.
    Nr°   rº   r±   Úlimitr<   c                 óZ   •— t          ¦   «                              ||¦  «         || _        d S rS   )Úsuperrg   Ú_attributes)r@   r°   rº   r±   rÂ   Ú	__class__s        €rA   rg   zEvent.__init__m  s-   ø€ õ 	‰Œ×Ò˜˜yÑ)Ô)Ð)Ø%ˆÔÐÐrD   c                 ó   — | j         S rS   )rÅ   rL   s    rA   rº   zEvent.attributesw  ó   € àÔÐrD   c                 óR   — t          | j        t          ¦  «        r| j        j        S dS ©Nr   ©Ú
isinstancerÅ   r   ÚdroppedrL   s    rA   Údropped_attributeszEvent.dropped_attributes{  ó)   € å�dÔ&Õ(9Ñ:Ô:ð 	,ØÔ#Ô+Ð+ØˆqrD   )rX   rY   rZ   r[   Ú(_DEFAULT_OTEL_SPAN_ATTRIBUTE_COUNT_LIMITr»   r3   r¿   r^   rg   r¼   rº   rÎ   Ú__classcell__©rÆ   s   @rA   rÁ   rÁ   b  sã   ø€ € € € € ðð ð (,Ø $ØDð&ð &àð&ð Ô$ð&ð ˜‘:ð	&ð
 �T‰zð&ð 
ð&ð &ð &ð &ð &ð &ð ð ˜EÔ,ð  ð  ð  ñ „Xð ð ð Cð ð ð ñ „Xðð ð ð ð rD   rÁ   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó¾   •— d}| j         5  | j        € ‰| g|¢R i |¤Ž nd}d d d ¦  «         n# 1 swxY w Y   |r"t                               d‰j        ¦  «         d S d S )NFTz"Tried calling %s on an ended span.)rf   Ú	_end_timeÚloggerÚwarningrX   )r@   r–   r—   Úalready_endedr•   s       €rA   Úwrapperz"_check_span_ended.<locals>.wrapperƒ  sÉ   ø€ ØˆØŒZð 	%ð 	%ØŒ~Ð%Ø��TÐ+˜DÐ+Ð+Ð+ FÐ+Ð+Ð+Ð+à $�ð		%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð ð 	PÝ�NŠNÐ?ÀÄÑOÔOÐOÐOÐOð	Pð 	Ps   ‹.®2µ2r>   )r•   rÙ   s   ` rA   Ú_check_span_endedrÚ   ‚  s(   ø€ ð	Pð 	Pð 	Pð 	Pð 	Pð €NrD   r   rº   r<   c                 ó@   — t          | o| j        p|p| j        ¦  «        S rS   )r_   Úis_validÚtrace_state©r   rº   s     rA   Ú_is_valid_linkrß   ‘  s,   € ÝØÐM�WÔ%ÐL¨*Ð*K¸Ô8Kñô ð rD   c                   óŽ  — e Zd ZdZddddddej        j        d eej	        ¦  «        dddfde
dej        dz  dej        dz  dedz  dej        d	ee         d
eej                 dej        dedz  dededz  dedz  dedz  ddfd„Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zede
fd„¦   «         Zdej        dz  fd„Zed„ ¦   «         Zedej        fd„¦   «         Zedej        dz  fd„¦   «         Zededz  fd„¦   «         Zededz  fd„¦   «         Z edej        fd„¦   «         Z!edej        fd„¦   «         Z"edee         fd„¦   «         Z#edeej                 fd „¦   «         Z$edefd!„¦   «         Z%e e&d"¦  «        dedz  fd#„¦   «         ¦   «         Z'ededz  fd$„¦   «         Z(d,d&edz  fd'„Z)e*dede+e
e
f         fd(„¦   «         Z,e*dej        de+e
e-f         dz  fd)„¦   «         Z.e*d	ee         de/e+e
e-f                  fd*„¦   «         Z0e*d
eej                 de/e+e
e-f                  fd+„¦   «         Z1dS )-rH   zÒProvides read-only access to span attributes.

    Users should NOT be creating these objects directly. `ReadableSpan`s are created as
    a direct result from using the tracing pipeline via the `Tracer`.

    Nr>   r°   r   ÚparentÚresourcerº   ÚeventsÚlinksÚkindÚinstrumentation_infoÚstatusÚ
start_timeÚend_timeÚinstrumentation_scoper<   c                 óô   — || _         || _        || _        |	| _        || _        || _        || _        || _        || _        || _	        || _
        |€t          j        i ¦  «        | _        n|| _        |
| _        d S rS   )r³   Ú_contextÚ_kindÚ_instrumentation_infoÚ_instrumentation_scopeÚ_parentÚ_start_timerÕ   rÅ   Ú_eventsÚ_linksr!   ÚcreateÚ	_resourceÚ_status)r@   r°   r   rá   râ   rº   rã   rä   rå   ræ   rç   rè   ré   rê   s                 rA   rg   zReadableSpan.__init__Ÿ  s€   € ð  ˆŒ
ØˆŒØˆŒ
Ø%9ˆÔ"Ø&;ˆÔ#ØˆŒØ%ˆÔØ!ˆŒØ%ˆÔØˆŒØˆŒØÐÝ%œ_¨RÑ0Ô0ˆDŒNˆNà%ˆDŒNØˆŒˆˆrD   c                 óR   — t          | j        t          ¦  «        r| j        j        S dS rÊ   rË   rL   s    rA   rÎ   zReadableSpan.dropped_attributesÀ  rÏ   rD   c                 óR   — t          | j        t          ¦  «        r| j        j        S dS rÊ   )rÌ   rò   r'   rÍ   rL   s    rA   Údropped_eventszReadableSpan.dropped_eventsÆ  s&   € å�d”l¥KÑ0Ô0ð 	(Ø”<Ô'Ð'ØˆqrD   c                 óR   — t          | j        t          ¦  «        r| j        j        S dS rÊ   )rÌ   ró   r'   rÍ   rL   s    rA   Údropped_linkszReadableSpan.dropped_linksÌ  s&   € å�d”k¥;Ñ/Ô/ð 	'Ø”;Ô&Ð&ØˆqrD   c                 ó   — | j         S rS   r¶   rL   s    rA   r°   zReadableSpan.nameÒ  r·   rD   c                 ó   — | j         S rS   ©rì   rL   s    rA   Úget_span_contextzReadableSpan.get_span_contextÖ  s
   € ØŒ}ÐrD   c                 ó   — | j         S rS   rþ   rL   s    rA   r   zReadableSpan.contextÙ  s
   € àŒ}ÐrD   c                 ó   — | j         S rS   )rí   rL   s    rA   rå   zReadableSpan.kindÝ  r·   rD   c                 ó   — | j         S rS   )rð   rL   s    rA   rá   zReadableSpan.parentá  ó
   € àŒ|ÐrD   c                 ó   — | j         S rS   )rñ   rL   s    rA   rè   zReadableSpan.start_timeå  rÈ   rD   c                 ó   — | j         S rS   ©rÕ   rL   s    rA   ré   zReadableSpan.end_timeé  ó
   € àŒ~ÐrD   c                 ó   — | j         S rS   )rö   rL   s    rA   rç   zReadableSpan.statusí  r  rD   c                 ó.   — t          | j        pi ¦  «        S rS   )r   rÅ   rL   s    rA   rº   zReadableSpan.attributesñ  s   € å Ô 0Ð 6°BÑ7Ô7Ð7rD   c                 ó*   — t          | j        ¦  «        S rS   )r{   rò   rL   s    rA   rã   zReadableSpan.eventsõ  s   € å�T”\Ñ"Ô"Ð"rD   c                 ó*   — t          | j        ¦  «        S rS   )r{   ró   rL   s    rA   rä   zReadableSpan.linksù  s   € å�T”[Ñ!Ô!Ð!rD   c                 ó   — | j         S rS   ©rõ   rL   s    rA   râ   zReadableSpan.resourceý  r  rD   zFYou should use instrumentation_scope. Deprecated since version 1.11.1.c                 ó   — | j         S rS   )rî   rL   s    rA   ræ   z!ReadableSpan.instrumentation_info  s   € ð
 Ô)Ð)rD   c                 ó   — | j         S rS   )rï   rL   s    rA   rê   z"ReadableSpan.instrumentation_scope  s   € àÔ*Ð*rD   é   Úindentc                 óî  — d }| j         �!dt          j        | j         j        ¦  «        › �}d }| j        rt          j        | j        ¦  «        }d }| j        rt          j        | j        ¦  «        }dt          | j	        j
        j        ¦  «        i}| j	        j        r| j	        j        |d<   | j        | j        r|                      | j        ¦  «        nd t          | j        ¦  «        |||||                      | j        ¦  «        |                      | j        ¦  «        |                      | j        ¦  «        t/          j        | j                             ¦   «         ¦  «        dœ}t/          j        ||¬¦  «        S )NÚ0xÚstatus_codeÚdescription)r°   r   rå   Ú	parent_idrè   ré   rç   rº   rã   rä   râ   )r  )rá   Ú	trace_apiÚformat_span_idÚspan_idrñ   r   Úns_to_iso_strrÕ   r»   rö   r  r°   r  r³   rì   Ú_format_contextrå   Ú_format_attributesrÅ   Ú_format_eventsrò   Ú_format_linksró   ÚjsonÚloadsrâ   Úto_jsonÚdumps)r@   r  r  rè   ré   rç   Úf_spans          rA   r!  zReadableSpan.to_json  sa  € Øˆ	ØŒ;Ð"ØL�YÔ5°d´kÔ6IÑJÔJÐLÐLˆIàˆ
ØÔð 	>ÝÔ+¨DÔ,<Ñ=Ô=ˆJàˆØŒ>ð 	:ÝÔ)¨$¬.Ñ9Ô9ˆHð �3˜tœ|Ô7Ô<Ñ=Ô=ð
ˆð Œ<Ô#ð 	=Ø$(¤LÔ$<ˆF�=Ñ!ð ”Jà7;´}ÐN�×$Ò$ T¤]Ñ3Ô3Ð3È$å˜œ	‘N”NØ"Ø$Ø ØØ×1Ò1°$Ô2BÑCÔCØ×)Ò)¨$¬,Ñ7Ô7Ø×'Ò'¨¬Ñ4Ô4Ýœ
 4¤=×#8Ò#8Ñ#:Ô#:Ñ;Ô;ð
ð 
ˆõ  Œz˜&¨Ð0Ñ0Ô0Ð0rD   c                 óš   — dt          j        | j        ¦  «        › �dt          j        | j        ¦  «        › �t          | j        ¦  «        dœS )Nr  )Útrace_idr  rÝ   )r  Úformat_trace_idr%  r  r  ÚreprrÝ   r   s    rA   r  zReadableSpan._format_context1  sS   € ð K�YÔ6°wÔ7GÑHÔHÐJÐJØG�IÔ4°W´_ÑEÔEÐGÐGÝ Ô 3Ñ4Ô4ð
ð 
ð 	
rD   c                 óR   — | �$t          | t          ¦  «        st          | ¦  «        S | S rS   )rÌ   Údict)rº   s    rA   r  zReadableSpan._format_attributes9  s-   € ð Ð!­*°ZÅÑ*FÔ*FÐ!Ý˜
Ñ#Ô#Ð#ØÐrD   c                 ó   — d„ | D ¦   «         S )Nc                 óŒ   — g | ]A}|j         t          j        |j        ¦  «        t                               |j        ¦  «        d œ‘ŒBS ))r°   r±   rº   )r°   r   r  r±   r:   r  rº   )Ú.0Úevents     rA   ú
<listcomp>z/ReadableSpan._format_events.<locals>.<listcomp>C  s_   € ð 	
ð 	
ð 	
ð ð œ
Ý!Ô/°´Ñ@Ô@Ý"×5Ò5ØÔ$ñô ðð ð	
ð 	
ð 	
rD   r>   )rã   s    rA   r  zReadableSpan._format_eventsA  s%   € ð	
ð 	
ð  ð	
ñ 	
ô 	
ð 		
rD   c                 ó   — d„ | D ¦   «         S )Nc                 óŒ   — g | ]A}t                                |j        ¦  «        t                                |j        ¦  «        d œ‘ŒBS )rÞ   )r:   r  r   r  rº   )r,  Úlinks     rA   r.  z.ReadableSpan._format_links.<locals>.<listcomp>P  sc   € ð 

ð 

ð 

ð õ  ×/Ò/Ø”Lñô õ #×5Ò5Ø”Oñô ð	ð ð

ð 

ð 

rD   r>   )rä   s    rA   r  zReadableSpan._format_linksN  s%   € ð

ð 

ð ð

ñ 

ô 

ð 
	
rD   )r  )2rX   rY   rZ   r[   r  ÚSpanKindÚINTERNALr1   r2   ÚUNSETr»   r0   r!   r3   r¿   r   rÁ   ÚLinkr)   r^   r*   rg   r¼   rÎ   rù   rû   r°   rÿ   r   rå   rá   rè   ré   rç   rº   rã   rä   râ   r   ræ   rê   r!  Ústaticmethodr)  r  r   r  Úlistr  r  r>   rD   rA   rH   rH   —  s!  € € € € € ðð ð 15Ø/3Ø$(Ø'+Ø"$Ø*,Ø#,Ô#5Ô#>Ø;?Ø˜ 
Ô 0Ñ1Ô1Ø!%Ø#Ø=Aðð àðð Ô&¨Ñ-ðð Ô%¨Ñ,ð	ð
 ˜T‘/ðð Ô$ðð ˜”ðð ˜	œÔ'ðð Ô ðð 2°DÑ8ðð ðð ˜$‘Jðð ˜‘*ðð  4°dÑ:ðð 
ðð ð ð ðB ð Cð ð ð ñ „Xðð
 ð ð ð ð ñ „Xðð
 ð˜sð ð ð ñ „Xðð
 ð�cð ð ð ñ „Xðð )Ô"7¸$Ñ">ð ð ð ð ð ðð ñ „Xðð ð�iÔ(ð ð ð ñ „Xðð ð˜	Ô-°Ñ4ð ð ð ñ „Xðð ð ˜C $™Jð  ð  ð  ñ „Xð ð ð˜# ™*ð ð ð ñ „Xðð ð˜	Ô(ð ð ð ñ „Xðð ð8˜EÔ,ð 8ð 8ð 8ñ „Xð8ð ð#˜ œð #ð #ð #ñ „Xð#ð ð"�x 	¤Ô/ð "ð "ð "ñ „Xð"ð ð˜(ð ð ð ñ „Xðð Ø€ZØPñô ð*Ð&9¸DÑ&@ð *ð *ð *ñô ñ „Xð*ð ð+Ð';¸dÑ'Bð +ð +ð +ñ „Xð+ð#1ð #1˜c D™jð #1ð #1ð #1ð #1ðJ ð
 ð 
°°c¸3°h´ð 
ð 
ð 
ñ „\ð
ð ðØÔ$ðà	ˆc�3ˆhŒ˜$Ñ	ðð ð ñ „\ðð ð

˜x¨œð 

°4¸¸SÀ#¸X¼Ô3Gð 

ð 

ð 

ñ „\ð

ð ð
˜X i¤nÔ5ð 
¸$¸tÀCÈÀH¼~Ô:Nð 
ð 
ð 
ñ „\ð
ð 
ð 
rD   rH   c                   óÄ   — e Zd ZdZdZ	 	 	 	 	 	 	 	 ddedz  dedz  dedz  dedz  dedz  d	edz  d
edz  dedz  fd„Zd„ Ze	 ddedz  de	dedz  dedz  fd„¦   «         Z
dS )Ú
SpanLimitsa/	  The limits that should be enforce on recorded data such as events, links, attributes etc.

    This class does not enforce any limits itself. It only provides an a way read limits from env,
    default values and from user provided arguments.

    All limit arguments must be either a non-negative integer, ``None`` or ``SpanLimits.UNSET``.

    - All limit arguments are optional.
    - If a limit argument is not set, the class will try to read its value from the corresponding
      environment variable.
    - If the environment variable is not set, the default value, if any, will be used.

    Limit precedence:

    - If a model specific limit is set, it will be used.
    - Else if the corresponding global limit is set, it will be used.
    - Else if the model specific limit has a default value, the default value will be used.
    - Else if the global limit has a default value, the default value will be used.

    Args:
        max_attributes: Maximum number of attributes that can be added to a span, event, and link.
            Environment variable: OTEL_ATTRIBUTE_COUNT_LIMIT
            Default: {_DEFAULT_ATTRIBUTE_COUNT_LIMIT}
        max_events: Maximum number of events that can be added to a Span.
            Environment variable: OTEL_SPAN_EVENT_COUNT_LIMIT
            Default: {_DEFAULT_SPAN_EVENT_COUNT_LIMIT}
        max_links: Maximum number of links that can be added to a Span.
            Environment variable: OTEL_SPAN_LINK_COUNT_LIMIT
            Default: {_DEFAULT_SPAN_LINK_COUNT_LIMIT}
        max_span_attributes: Maximum number of attributes that can be added to a Span.
            Environment variable: OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT
            Default: {_DEFAULT_OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT}
        max_event_attributes: Maximum number of attributes that can be added to an Event.
            Default: {_DEFAULT_OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT}
        max_link_attributes: Maximum number of attributes that can be added to a Link.
            Default: {_DEFAULT_OTEL_LINK_ATTRIBUTE_COUNT_LIMIT}
        max_attribute_length: Maximum length an attribute value can have. Values longer than
            the specified length will be truncated.
        max_span_attribute_length: Maximum length a span attribute value can have. Values longer than
            the specified length will be truncated.
    éÿÿÿÿNÚmax_attributesÚ
max_eventsÚ	max_linksÚmax_span_attributesÚmax_event_attributesÚmax_link_attributesÚmax_attribute_lengthÚmax_span_attribute_lengthc	                 ó|  — |                       |t          t          ¦  «        | _        |                       |t          t
          ¦  «        | _        |                       |t          ¦  «        }	|	�|	nt          | _	        |                       |t          |	�|	nt          ¦  «        | _        |                       |t          |	�|	nt          ¦  «        | _        |                       |t           |	�|	nt"          ¦  «        | _        |                       |t&          ¦  «        | _        |                       |t*          | j        ¦  «        | _        d S rS   )Ú_from_env_if_absentr   Ú$_DEFAULT_OTEL_SPAN_EVENT_COUNT_LIMITr<  r   Ú#_DEFAULT_OTEL_SPAN_LINK_COUNT_LIMITr=  r   Ú#_DEFAULT_OTEL_ATTRIBUTE_COUNT_LIMITr;  r   rÐ   r>  r   Ú)_DEFAULT_OTEL_EVENT_ATTRIBUTE_COUNT_LIMITr?  r   Ú(_DEFAULT_OTEL_LINK_ATTRIBUTE_COUNT_LIMITr@  r   rA  r   rB  )
r@   r;  r<  r=  r>  r?  r@  rA  rB  Úglobal_max_attributess
             rA   rg   zSpanLimits.__init__Š  sd  € ð ×2Ò2ØÝ'Ý0ñ
ô 
ˆŒð
 ×1Ò1ØÝ&Ý/ñ
ô 
ˆŒð !%× 8Ò 8ØÕ6ñ!
ô !
Ðð
 %Ð0ð "Ð!å4ð 	Ôð $(×#;Ò#;ØÝ+ð )Ð4ð &Ð%å=ñ$
ô $
ˆÔ ð %)×$<Ò$<Ø Ý,ð )Ð4ð &Ð%å>ñ%
ô %
ˆÔ!ð $(×#;Ò#;ØÝ+ð )Ð4ð &Ð%å=ñ$
ô $
ˆÔ ð %)×$<Ò$<Ø Ý-ñ%
ô %
ˆÔ!ð *.×)AÒ)AØ%Ý2àÔ%ñ	*
ô *
ˆÔ&Ð&Ð&rD   c                 ó    — t          | ¦  «        j        › d| j        › d| j        › d| j        › d| j        › d| j        › d| j        › d| j        › d�S )	Nz(max_span_attributes=z, max_events_attributes=z, max_link_attributes=z, max_attributes=z, max_events=z, max_links=z, max_attribute_length=ú))	ÚtyperX   r>  r?  r@  r;  r<  r=  rA  rL   s    rA   Ú__repr__zSpanLimits.__repr__Ó  sÏ   € Ý�t‘*”*Ô%ð  Mð  M¸DÔ<Tð  Mð  MÐnrô  oHð  Mð  Mð  `dô  `xð  Mð  Mð  KOô  K^ð  Mð  Mð  mqô  m|ð  Mð  Mð  JNô  JXð  Mð  Mð  quô  qJð  Mð  Mð  Mð  	MrD   ÚvalueÚenv_varÚdefaultr<   c                 ó   — || j         k    rd S d}|€“|t          vr|S t          j        |d¦  «                             ¦   «                              ¦   «         }|t
          k    rd S 	 t          |¦  «        }n1# t          $ r$ t          |                     ||¦  «        ¦  «        ‚w xY w|dk     r#t          |                     ||¦  «        ¦  «        ‚|S )Nz,{} must be a non-negative integer but got {}r6   r   )	r4  r	   ÚgetÚstripÚlowerÚ_ENV_VALUE_UNSETr^   Ú
ValueErrorÚformat)ÚclsrO  rP  rQ  Úerr_msgÚ	str_values         rA   rD  zSpanLimits._from_env_if_absentÖ  sæ   € ð �C”IÒÐØ�4à@ˆð ˆ=à�gÐ%Ð%Ø�åœ G¨RÑ0Ô0×6Ò6Ñ8Ô8×>Ò>Ñ@Ô@ˆIØÕ,Ò,Ð,Ø�tðEÝ˜I™œ��øÝð Eð Eð EÝ  §¢°¸Ñ!CÔ!CÑDÔDÐDðEøøøð �1Š9ˆ9Ý˜WŸ^š^¨G°UÑ;Ô;Ñ<Ô<Ð<Øˆs   Á$A4 Á4.B")NNNNNNNNrS   )rX   rY   rZ   r[   r4  r^   rg   rN  Úclassmethodr»   rD  r>   rD   rA   r9  r9  ]  s;  € € € € € ð(ð (ðT €Eð &*Ø!%Ø $Ø*.Ø+/Ø*.Ø+/Ø04ðG
ð G
à˜d™
ðG
ð ˜$‘JðG
ð ˜‘:ð	G
ð
 ! 4™ZðG
ð " D™jðG
ð ! 4™ZðG
ð " D™jðG
ð $'¨¡:ðG
ð G
ð G
ð G
ðRMð Mð Mð àDHðð Ø˜$‘JðØ),ðØ7:¸T±zðà	ˆt‰ðð ð ñ „[ðð ð rD   r9  )r;  r<  r=  r>  r?  r@  rA  rB  c            $       ó�  ‡ — e Zd ZdZˆ fd„Zdddddddej        j         e¦   «         ddde	dfddœde
dej        d	ej        dz  d
ej        dz  dddedz  dej        dee         dz  deej                 dej        dededz  dedededz  deg df         dz  ddf"ˆ fd„Zd„ Zd„ Zdeej                 fd„Zdej        fd„Zdee
ej        f         ddfd„Zde
dej        ddfd „Z e!d!e"ddfd"„¦   «         Z#	 	 d;de
dej        d#e$dz  ddfd$„Z%e!d%ej        ddfd&„¦   «         Z&	 d<dedej        ddfd'„Z'de(fd(„Z)	 	 d;d)e$dz  d*e*j+        dz  ddfd+„Z,d<d,e$dz  ddfd-„Z-e!de
ddfd.„¦   «         Z.defd/„Z/e!	 d<d0e0e1z  d1e
dz  ddfd2„¦   «         Z2d3e3e4         dz  d4e4dz  d5e5dz  ddfˆ fd6„Z6	 	 	 d=d8e4dej        d#e$dz  d9eddf
d:„Z7ˆ xZ8S )>r:   aü  See `opentelemetry.trace.Span`.

    Users should create `Span` objects via the `Tracer` instead of this
    constructor.

    Args:
        name: The name of the operation this span represents
        context: The immutable span context
        parent: This span's parent's `opentelemetry.trace.SpanContext`, or
            None if this is a root span
        sampler: The sampler used to create this span
        trace_config:  Unused. Originally intended for trace-level configuration
            from the OpenTelemetry protocol, but the upstream ``TraceConfig``
            proto was removed. Retained for backwards compatibility.
        resource: Entity producing telemetry
        attributes: The span's attributes to be exported
        events: Timestamped events to be exported
        links: Links to other spans to be exported
        span_processor: `SpanProcessor` to invoke when starting and ending
            this `Span`.
        limits: `SpanLimits` instance that was passed to the `TracerProvider`
    c                 óv   •— | t           u rt          d¦  «        ‚t          ¦   «                              | ¦  «        S )Nz'Span must be instantiated via a tracer.)r:   Ú	TypeErrorrÄ   Ú__new__)rY  r–   r—   rÆ   s      €rA   r`  zSpan.__new__  s1   ø€ Ø•$ˆ;ˆ;ÝÐEÑFÔFÐFÝ‰wŒw�Š˜sÑ#Ô#Ð#rD   Nr>   T)Úrecord_end_metricsr°   r   rá   ÚsamplerÚtrace_configrâ   rº   rã   rä   rå   rh   ræ   Úrecord_exceptionÚset_status_on_exceptionrê   ra  r<   c          	      óv  •— |€t          j        i ¦  «        }t          ¦   «                              ||||
|||¬¦  «         || _        || _        || _        || _        || _        || _	        t          j        ¦   «         | _        t          | j	        j        |d| j	        j        ¬¦  «        | _        |                      ¦   «         | _        |rO|D ]L}t          | j	        j        |j        | j	        j        ¬¦  «        |_        | j                             |¦  «         ŒM|                      |	¦  «        | _        || _        d S )N)r°   r   rá   rå   râ   ræ   rê   F)Ú	immutableÚmax_value_len©rh  )r!   rô   rÄ   rg   Ú_samplerÚ_trace_configÚ_record_exceptionÚ_set_status_on_exceptionÚ_span_processorÚ_limitsrd   re   rf   r   r>  rB  rÅ   Ú_new_eventsrò   r?  rº   rA  rš   Ú
_new_linksró   Ú_record_end_metrics)r@   r°   r   rá   rb  rc  râ   rº   rã   rä   rå   rh   ræ   rd  re  Úlimitsrê   ra  r-  rÆ   s                      €rA   rg   zSpan.__init__$  sQ  ø€ ð* ÐÝ” rÑ*Ô*ˆHÝ‰Œ×ÒØØØØØØ!5Ø"7ð 	ñ 	
ô 	
ð 	
ð  ˆŒØ)ˆÔØ!1ˆÔØ(?ˆÔ%Ø-ˆÔØˆŒÝ”^Ñ%Ô%ˆŒ
Ý,ØŒLÔ,ØØØœ,Ô@ð	
ñ 
ô 
ˆÔð ×'Ò'Ñ)Ô)ˆŒØð 	+Øð +ð +�Ý$5Ø”LÔ5ØÔ$Ø"&¤,Ô"Cð%ñ %ô %�Ô!ð
 ”×#Ò# EÑ*Ô*Ð*Ð*à—o’o eÑ,Ô,ˆŒà#5ˆÔ Ð Ð rD   c                 óP   — t          | ¦  «        j        › d| j        › d| j        › d�S )Nz(name="z", context=rL  )rM  rX   r³   rì   rL   s    rA   rN  zSpan.__repr___  s.   € Ý�t‘*”*Ô%ÐUÐU¨d¬jÐUÐUÀTÄ]ÐUÐUÐUÐUrD   c                 ó4   — t          | j        j        ¦  «        S rS   )r'   ro  r<  rL   s    rA   rp  zSpan._new_eventsb  s   € Ý˜4œ<Ô2Ñ3Ô3Ð3rD   c                 óF  — |st          | j        j        ¦  «        S g }|D ]c}|r_t          |j        |j        ¦  «        rEt          | j        j        |j        | j        j        ¬¦  «        |_	        | 
                    |¦  «         Œdt          j        | j        j        |¦  «        S )Nri  )r'   ro  r=  rß   r   rº   r   r@  rA  rÅ   rš   Úfrom_seq)r@   rä   Úvalid_linksr1  s       rA   rq  zSpan._new_linkse  s©   € Øð 	7Ý˜tœ|Ô5Ñ6Ô6Ð6àˆØð 	)ð 	)ˆDØð )� t¤|°T´_ÑEÔEð )å#4Ø”LÔ4Ø”OØ"&¤,Ô"Cð$ñ $ô $�Ô ð
 ×"Ò" 4Ñ(Ô(Ð(øåÔ# D¤LÔ$:¸KÑHÔHÐHrD   c                 óJ   — t          j        t          j        | j        ¦  «        S rS   )ÚtypingÚcastr  r0   rì   rL   s    rA   rÿ   zSpan.get_span_contextv  s   € ÝŒ{�9Ô0°$´-Ñ@Ô@Ð@rD   c                 óØ   — | j         5  | j        �(t                               d¦  «         	 d d d ¦  «         d S | j                             |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©Nz Setting attribute on ended span.)rf   rÕ   rÖ   r×   rÅ   Ú
_set_items)r@   rº   s     rA   Úset_attributeszSpan.set_attributesy  sÏ   € ð ŒZð 	4ð 	4ØŒ~Ð)Ý—’ÐAÑBÔBÐBØð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð
 Ô×'Ò'¨
Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   ˆ#A¸AÁA#Á&A#ÚkeyrO  c                 ó¸   — | j         5  | j        �(t                               d¦  «         	 d d d ¦  «         d S || j        |<   d d d ¦  «         d S # 1 swxY w Y   d S r}  )rf   rÕ   rÖ   r×   rÅ   )r@   r€  rO  s      rA   Úset_attributezSpan.set_attributeƒ  sÃ   € ØŒZð 	*ð 	*ØŒ~Ð)Ý—’ÐAÑBÔBÐBØð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð
 %*ˆDÔ˜SÑ!ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s   ˆ#A¸
AÁAÁAr-  c                 ó:   — | j                              |¦  «         d S rS   )rò   rš   )r@   r-  s     rA   Ú
_add_eventzSpan._add_event‹  s   € àŒ×Ò˜EÑ"Ô"Ð"Ð"Ð"rD   r±   c                 óœ   — t          | j        j        || j        j        ¬¦  «        }|                      t          |||¬¦  «        ¦  «         d S )Nri  ©r°   rº   r±   )r   ro  r?  rA  r„  rÁ   )r@   r°   rº   r±   s       rA   Ú	add_eventzSpan.add_event�  sh   € õ 'ØŒLÔ-ØØœ,Ô;ð
ñ 
ô 
ˆ
ð
 	�ŠÝØØ%Ø#ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
rD   r1  c                 ó:   — | j                              |¦  «         d S rS   )ró   rš   )r@   r1  s     rA   Ú	_add_linkzSpan._add_link¢  s   € àŒ×Ò˜4Ñ Ô Ð Ð Ð rD   c                 óÈ   — t          ||¦  «        sd S t          | j        j        || j        j        ¬¦  «        }|                      t          j        ||¬¦  «        ¦  «         d S )Nri  rÞ   )rß   r   ro  r@  rA  r‰  r  r5  )r@   r   rº   s      rA   Úadd_linkzSpan.add_link¦  s~   € õ
 ˜g zÑ2Ô2ð 	ØˆFå&ØŒLÔ,ØØœ,Ô;ð
ñ 
ô 
ˆ
ð
 	�ŠÝŒNØØ%ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
rD   c                 ó¼   — t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j        | j        ¬¦  «        S )N)r°   r   rá   râ   rº   rã   rä   rå   rç   rè   ré   ræ   rê   )rH   r³   rì   rð   rõ   rÅ   rò   ró   rå   rö   rñ   rÕ   rî   rï   rL   s    rA   Ú_readable_spanzSpan._readable_spanº  s^   € ÝØ”Ø”MØ”<Ø”^ØÔ'Ø”<Ø”+Ø”Ø”<ØÔ'Ø”^Ø!%Ô!;Ø"&Ô"=ð
ñ 
ô 
ð 	
rD   rè   r;   c                 ó  — | j         5  | j        �(t                               d¦  «         	 d d d ¦  «         d S |�|nt	          ¦   «         | _        d d d ¦  «         n# 1 swxY w Y   | j                             | |¬¦  «         d S )Nz"Calling start() on a started span.rq   )rf   rñ   rÖ   r×   r
   rn  rB   )r@   rè   r;   s      rA   Ústartz
Span.startË  sæ   € ð
 ŒZð 	ð 	ØÔÐ+Ý—’ÐCÑDÔDÐDØð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð
 )Ð4�
�
½'¹)¼)ð Ôð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	Ô×%Ò% d¸>Ð%ÑJÔJÐJÐJÐJs   ˆ#A¸AÁAÁ"Aré   c                 óÖ  — | j         5  | j        €t          d¦  «        ‚| j        �(t                               d¦  «         	 d d d ¦  «         d S |�|nt          ¦   «         | _        d| j        _        d d d ¦  «         n# 1 swxY w Y   | j	        r|  	                    ¦   «          | j
                             | ¦  «         | j
                             |                      ¦   «         ¦  «         d S )Nz$Calling end() on a not started span.zCalling end() on an ended span.T)rf   rñ   ÚRuntimeErrorrÕ   rÖ   r×   r
   rÅ   Ú
_immutablerr  rn  rG   rJ   r�  )r@   ré   s     rA   ÚendzSpan.endÚ  s=  € ØŒZð 	/ð 	/ØÔÐ'Ý"Ð#IÑJÔJÐJØŒ~Ð)Ý—’Ð@ÑAÔAÐAØð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð *2Ð)=˜X˜XÅ7Á9Ä9ˆDŒNØ*.ˆDÔÔ'ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð Ô#ð 	'Ø×$Ò$Ñ&Ô&Ð&àÔ×'Ò'¨Ñ-Ô-Ð-ØÔ×#Ò# D×$7Ò$7Ñ$9Ô$9Ñ:Ô:Ð:Ð:Ð:s   ˆ9A=Á#A=Á=BÂBc                 ó   — || _         d S rS   r¶   )r@   r°   s     rA   Úupdate_namezSpan.update_nameë  s   € àˆŒ
ˆ
ˆ
rD   c                 ó   — | j         d u S rS   r  rL   s    rA   Úis_recordingzSpan.is_recordingï  s   € ØŒ~ Ð%Ð%rD   rç   r  c                 óš  — t          |t          ¦  «        rZ| j        r| j        j        t          j        u s|j        t          j        u rd S |�t                               d|¦  «         || _        d S t          |t          ¦  «        rF| j        r| j        j        t          j        u s|t          j        u rd S t          ||¦  «        | _        d S d S )NzJDescription %s ignored. Use either `Status` or `(StatusCode, Description)`)	rÌ   r1   rö   r  r2   ÚOKr4  rÖ   r×   )r@   rç   r  s      rA   Ú
set_statuszSpan.set_statusò  s×   € õ �f�fÑ%Ô%ð 	7à”ðà”LÔ,µ
´Ð=Ð=ØÔ%­Ô)9Ð9Ð9à�ØÐ&Ý—’Ø`Øñô ð ð "ˆDŒLˆLˆLÝ˜¥
Ñ+Ô+ð 	7à”ðà”LÔ,µ
´Ð=Ð=Ø�ZÔ-Ð-Ð-à�Ý! &¨+Ñ6Ô6ˆDŒLˆLˆLð	7ð 	7rD   Úexc_typeÚexc_valÚexc_tbc                 óN  •— |�~|                       ¦   «         rj| j        r|                      |d¬¦  «         | j        rE|                      t          t          j        t          |¦  «        j	        › d|› �¬¦  «        ¦  «         t          ¦   «                              |||¦  «         dS )z3Ends context manager and calls `end` on the `Span`.NT)Ú	exceptionÚescapedz: )r  r  )r—  rl  rd  rm  rš  r1   r2   ÚERRORrM  rX   rÄ   Ú__exit__)r@   r›  rœ  r�  rÆ   s       €rA   r¢  zSpan.__exit__  s¼   ø€ ð Ð 4×#4Ò#4Ñ#6Ô#6Ðð Ô%ð GØ×%Ò%°ÀÐ%ÑFÔFÐFð Ô,ð Ø—’ÝÝ$.Ô$4Ý(,¨W©¬Ô(>Ð%KÐ%KÀ'Ð%KÐ%Kðñ ô ñô ð õ 	‰Œ×Ò˜ 7¨FÑ3Ô3Ð3Ð3Ð3rD   FrŸ  r   c           
      ó”  — d                      t          j        |¦  «        ¦  «        }t          |¦  «        j        }t          |¦  «        j        }|r|dk    r|› d|› �n|}t          |t          t          |¦  «        t          |t          t          |¦  «        i}	|r|	                     |¦  «         |                      d|	|¬¦  «         dS )z%Records an exception as a span event.r6   Úbuiltinsú.rŸ  r†  N)ÚjoinÚ	tracebackÚformat_exceptionrM  rY   rZ   r.   r,   r»   r-   r+   Úupdater‡  )
r@   rŸ  rº   r±   r   Ú
stacktraceÚmoduleÚqualnameÚexception_typerÅ   s
             rA   rd  zSpan.record_exception(  sã   € ð —W’W�YÔ7¸	ÑBÔBÑCÔCˆ
Ý�i‘”Ô+ˆÝ˜	‘?”?Ô/ˆð ðØ  JÒ.Ð.ð Ð"Ð"˜Ð"Ð"Ð"àð 	õ ˜NÝ�s 9™~œ~Ý  *Ý�s 7™|œ|ð	B
ˆð ð 	+Ø×Ò˜zÑ*Ô*Ð*Ø�ŠØ¨À	ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rD   )NNrS   )NNF)9rX   rY   rZ   r[   r`  r  r2  r3  r8   Ú_UnsetLimitsr»   r0   r#   ÚSamplerr!   r3   r¿   r   rÁ   r5  r)   r_   r*   r   rg   rN  rp  rq  rÿ   r   ÚAttributeValuer  r‚  rÚ   r¯   r„  r^   r‡  r‰  r‹  rH   r�  r\   r]   r�  r“  r•  r—  r1   r2   rš  rM  ÚBaseExceptionr   r¢  rd  rÑ   rÒ   s   @rA   r:   r:     s1  ø€ € € € € ðð ð.$ð $ð $ð $ð $ð 04Ø+/Ø!Ø$(Ø'+Ø)-Ø*,Ø#,Ô#5Ô#>Ø(5¨©¬Ø;?Ø!%Ø(,ØØ=Að#96ð& 9=ð'96ð 96ð 96àð96ð Ô&ð96ð Ô%¨Ñ,ð	96ð
 Ô! DÑ(ð96ð ð96ð ˜T‘/ð96ð Ô$ð96ð ˜” $Ñ&ð96ð ˜	œÔ'ð96ð Ô ð96ð &ð96ð 2°DÑ8ð96ð ð96ð "&ð96ð"  4°dÑ:ð#96ð& % R¨ XÔ.°Ñ5ð'96ð( 
ð)96ð 96ð 96ð 96ð 96ð 96ðvVð Vð Vð4ð 4ð 4ðI ¨¬Ô 8ð Ið Ið Ið Ið"A )Ô"7ð Að Að Að Að4Ø! # uÔ';Ð";Ô<ð4à	ð4ð 4ð 4ð 4ð* ð *¨UÔ-Að *Àdð *ð *ð *ð *ð ð# 	ð #¨dð #ð #ð #ñ Ôð#ð (,Ø $ð	
ð 
àð
ð Ô$ð
ð ˜‘:ð	
ð
 
ð
ð 
ð 
ð 
ð& ð!˜iœnð !°ð !ð !ð !ñ Ôð!ð (,ð
ð 
àð
ð Ô$ð
ð 
ð	
ð 
ð 
ð 
ð(
 ð 
ð 
ð 
ð 
ð& "&Ø59ðKð Kà˜$‘JðKð $Ô+¨dÑ2ðKð 
ð	Kð Kð Kð Kð;ð ;˜C $™Jð ;°$ð ;ð ;ð ;ð ;ð" ð ð ¨ð ð ð ñ Ôðð&˜dð &ð &ð &ð &ð ð #'ð7ð 7à˜Ñ#ð7ð ˜4‘Zð7ð 
ð	7ð 7ð 7ñ Ôð7ð:4à�}Ô%¨Ñ,ð4ð  Ñ%ð4ð  Ñ$ð	4ð
 
ð4ð 4ð 4ð 4ð 4ð 4ð6 (,Ø $Øð
ð 
à ð
ð Ô$ð
ð ˜‘:ð	
ð
 ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
rD   r:   c                   ó   — e Zd ZdZdS )Ú_Spanz½Protected implementation of `opentelemetry.trace.Span`.

    This constructor exists to prevent the instantiation of the `Span` class
    by other mechanisms than through the `Tracer`.
    N)rX   rY   rZ   r[   r>   rD   rA   r³  r³  E  s   € € € € € ðð ð ð rD   r³  c                   ó0   — e Zd ZU eed<   ed„ ¦   «         ZdS )Ú_TracerConfigÚ
is_enabledc                 ó   —  | d¬¦  «        S )NT©r¶  r>   )rY  s    rA   rQ  z_TracerConfig.defaultQ  s   € àˆs˜dÐ#Ñ#Ô#Ð#rD   N)rX   rY   rZ   r_   r|   r\  rQ  r>   rD   rA   rµ  rµ  M  s;   € € € € € € àÐÐÑàð$ð $ñ „[ð$ð $ð $rD   rµ  c                   óú  — e Zd ZdZdddœdej        dedeez  de	de
d	ed
edej        dz  dedz  ddfd„Zdefd„Zdeddfd„Zdefd„Zedej        j        ddddddfdedej        dz  dej        dej        deej                 dz  de dz  dededede!ej"                 fd„¦   «         Z#dej        j        dddddfdedej        dz  dej        dej        deej                 dz  de dz  dededej"        fd„Z$dS ) ÚTracerz!See `opentelemetry.trace.Tracer`.N©Úmeter_providerÚ_tracer_configrb  râ   rh   Úid_generatorræ   Úspan_limitsrê   r¼  r½  r<   c                ó   — || _         || _        || _        || _        || _        || _        || _        |	pt                               ¦   «         | _	        |pt          j        ¦   «         }t          |t          t          ¦  «        ¦  «        | _        d S rS   )rb  râ   rh   r¾  ræ   Ú_span_limitsrï   rµ  rQ  r½  Úmetrics_apiÚget_meter_providerr$   r    r   Ú_tracer_metrics)
r@   rb  râ   rh   r¾  ræ   r¿  rê   r¼  r½  s
             rA   rg   zTracer.__init__Y  s‘   € ð ˆŒØ ˆŒØ,ˆÔØ(ˆÔØ$8ˆÔ!Ø'ˆÔØ&;ˆÔ#Ø,ÐGµ×0EÒ0EÑ0GÔ0GˆÔà'ÐK­;Ô+IÑ+KÔ+KˆÝ4ØÝ.Ý8ñô ñ 
ô  
ˆÔÐÐrD   Útracer_configc                 ó   — || _         d S rS   )r½  )r@   rÅ  s     rA   Ú_set_tracer_configzTracer._set_tracer_configx  s   € Ø+ˆÔÐÐrD   c                 ó   — || _         d S rS   )râ   )r@   râ   s     rA   Ú_set_resourcezTracer._set_resource{  s   € Ø ˆŒˆˆrD   c                 ó   — | j         j        S )zGIf the tracer is not enabled, start_span will create a NonRecordingSpan)r½  r¶  rL   s    rA   Ú_is_enabledzTracer._is_enabled~  s   € àÔ"Ô-Ð-rD   r>   Tr°   r   rå   rº   rä   rè   rd  re  Úend_on_exitc
           
   #   ó®   K  — |                       ||||||||¬¦  «        }
t          j        |
|	||¬¦  «        5 }
|
V — d d d ¦  «         d S # 1 swxY w Y   d S )N)r°   r   rå   rº   rä   rè   rd  re  )rÌ  rd  re  )Ú
start_spanr  Úuse_span)r@   r°   r   rå   rº   rä   rè   rd  re  rÌ  r9   s              rA   Ústart_as_current_spanzTracer.start_as_current_span‚  sË   è è € ð �ŠØØØØ!ØØ!Ø-Ø$;ð ñ 	
ô 	
ˆõ ÔØØ#Ø-Ø$;ð	
ñ 
ô 
ð 	ð
 ØˆJˆJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ¸A
Á
AÁAc	                 ó®  — |pd}t          j        |¦  «                             ¦   «         }	|	�)t          |	t           j        ¦  «        st          d¦  «        ‚|                      ¦   «         st          j        |	¬¦  «        S |	�|	j        sd }	| j	         
                    ¦   «         }
n|	j        }
| j                             ||
||||¦  «        }|j                             ¦   «         r#t          j        t           j        j        ¦  «        n"t          j        t           j        j        ¦  «        }|	€| j	                             ¦   «         }n|	j        j        }|r&t          j        |t           j        j        z  ¦  «        }t          j        |
| j	                             ¦   «         d||j        ¬¦  «        }| j                             |	|j        ¦  «        }|j                             ¦   «         rYt9          |||	| j        | j        |j        | j        ||| j         ||| j!        | j"        |¬¦  «        }| #                    ||¬¦  «         nt          j        |¬¦  «        }|S )Nr>   z2parent_span_context must be a SpanContext or None.r   F)Ú	is_remoteÚtrace_flagsrÝ   )r°   r   rá   rb  râ   rº   rh   rå   rä   ræ   rd  re  rs  rê   ra  )rè   r;   )$r  Úget_current_spanrÿ   rÌ   r0   r_  rË  ÚNonRecordingSpanrÜ   r¾  Úgenerate_trace_idr%  rb  Úshould_sampleÚdecisionÚ
is_sampledÚ
TraceFlagsÚSAMPLEDÚDEFAULTÚis_trace_id_randomrÓ  Úrandom_trace_idÚRANDOM_TRACE_IDÚgenerate_span_idrÝ   rÄ  rÎ  r—  r³  râ   rº   rh   ræ   rÁ  rï   r�  )r@   r°   r   rå   rº   rä   rè   rd  re  Úparent_span_contextr%  Úsampling_resultrÓ  rÞ  Úspan_contextra  r9   s                    rA   rÎ  zTracer.start_span¡  s†  € ð �˜ˆÝ'Ô8Øñ
ô 
ç
Ò
Ñ
Ô
ð 	ð Ð*µ:Ø¥Ô!6ñ4
ô 4
Ð*õ ØDñô ð ð ×ÒÑ!Ô!ð 	KÝÔ-Ð6IÐJÑJÔJÐJð Ð&Ð.AÔ.JÐ&Ø"&ÐØÔ(×:Ò:Ñ<Ô<ˆHˆHà*Ô3ˆHð œ,×4Ò4Ø�X˜t T¨:°uñ
ô 
ˆð Ô'×2Ò2Ñ4Ô4ðD�IÔ ¥Ô!5Ô!=Ñ>Ô>Ð>åÔ%¥iÔ&:Ô&BÑCÔCð 	ð Ð&Ø"Ô/×BÒBÑDÔDˆOˆOà1Ô=ÔMˆOàð 	Ý#Ô.Ø�iÔ2ÔBÑBñô ˆKõ !Ô,ØØÔ×.Ò.Ñ0Ô0ØØ#Ø'Ô3ð
ñ 
ô 
ˆð "Ô1×<Ò<Ø Ô!9ñ
ô 
Ðð
 Ô#×0Ò0Ñ2Ô2ð 	DåØØ$Ø*ØœØœØ*Ô5Ø#Ô2ØØØ%)Ô%>Ø!1Ø(?ØÔ(Ø&*Ô&AØ#5ðñ ô ˆDð" �JŠJ *¸WˆJÑEÔEÐEÐEåÔ-°lÐCÑCÔCˆDØˆrD   )%rX   rY   rZ   r[   r#   r¯  r!   ra   r~   r%   r)   r9  r*   rÂ  ÚMeterProviderrµ  rg   rÇ  rÉ  r_   rË  r4   r  r2  r3  r»   r\   r]   r3   r¿   r   r5  r^   r   r:   rÐ  rÎ  r>   rD   rA   rº  rº  V  sŸ  € € € € € Ø+Ð+ð <@Ø/3ð
ð 
ð 
àÔ!ð
ð ð
ð 6Ø
&ñ'ð	
ð "ð
ð 2ð
ð  ð
ð  4ð
ð $Ô1°DÑ8ð
ð &¨Ñ,ð
ð 
ð
ð 
ð 
ð 
ð>,°ð ,ð ,ð ,ð ,ð! hð !°4ð !ð !ð !ð !ð.˜Tð .ð .ð .ð .ð ð /3Ø#,Ô#5Ô#>Ø'+Ø13Ø!%Ø!%Ø(,Ø ðð àðð Ô$ tÑ+ðð Ô ð	ð
 Ô$ðð ˜	œÔ'¨$Ñ.ðð ˜$‘Jðð ðð "&ðð ðð 
�)”.Ô	!ðð ð ñ ÔððB /3Ø#,Ô#5Ô#>Ø'+Ø13Ø!%Ø!%Ø(,ð^ð ^àð^ð Ô$ tÑ+ð^ð Ô ð	^ð
 Ô$ð^ð ˜	œÔ'¨$Ñ.ð^ð ˜$‘Jð^ð ð^ð "&ð^ð 
Œð^ð ^ð ^ð ^ð ^ð ^rD   rº  Útracer_scopec                 ód   —  t          g t                               ¦   «         ¬¦  «        | ¦  «        S )zÚDefault Tracer Configurator implementation

    In order to update Tracers configs you need to call
    TracerProvider._set_tracer_configurator with a function
    implementing this interface returning a Tracer Config.©ÚrulesÚdefault_config)Ú_RuleBasedTracerConfiguratorrµ  rQ  ©rå  s    rA   Ú_default_tracer_configuratorrì    s?   € ðÕ'ØÝ$×,Ò,Ñ.Ô.ðñ ô ð ñô ð rD   c                 óR   —  t          g t          d¬¦  «        ¬¦  «        | ¦  «        S )NFr¸  rç  )rê  rµ  rë  s    rA   Ú_disable_tracer_configuratorrî    s>   € ðÕ'ØÝ$°Ð6Ñ6Ô6ðñ ô ð ñô ð rD   c                   óN  — e Zd ZdZ	 	 	 	 	 	 d"dddœdej        dz  dedz  dedee	z  dz  d	e
dz  d
edz  dej        dz  dedz  ddfd„Zd#d„Zdefd„Zedefd„¦   «         Zdeddfd„Zdefd„Z	 	 	 d$dededz  dedz  dej        dz  ddf
d„Zdeddfd„Zd#d„Zd%d edefd!„ZdS )&ÚTracerProviderz)See `opentelemetry.trace.TracerProvider`.NT)r¼  Ú_tracer_configuratorrb  râ   Úshutdown_on_exitÚactive_span_processorr¾  r¿  r¼  rñ  r<   c                óò  ‡— |pt          ¦   «         | _        |€t          ¦   «         | _        n|| _        |€t	          j        i ¦  «        | _        n|| _        |st          j        ¦   «         }|| _	        |pt          ¦   «         | _        t          j        t          d¦  «        }	|	                     ¦   «                              ¦   «         dk    | _        d | _        || _        |rt)          j        | j        ¦  «        | _        |pt.          | _        t3          j        ¦   «         | _        i | _        t;          t<          d¦  «        r6t?          j         | j!        ¦  «        Šdˆfd„}
t=          j"        |
¬¦  «         d S d S )Nr6   Útruer‚   r<   c                  ó8   •—  ‰¦   «         x} r | ¦   «          d S d S rS   r>   )Úat_forkÚweak_at_forks    €rA   r†   z0TracerProvider.__init__.<locals>._after_in_childM  s/   ø€ Ø*˜l™nœnÐ,�7ð Ø�G‘I”I�I�I�Iðð rD   r‡   rV   )#ra   Ú_active_span_processorr&   r¾  r!   rô   rõ   r#   Ú_get_from_env_or_defaultrb  r9  rÁ  r	   rS  r   rU  rT  Ú	_disabledÚ_atexit_handlerÚ_meter_providerÚatexitÚregisterrM   rì  rñ  rd   re   Ú_tracers_lockÚ_tracersrŠ   r‹   rŒ   r�   Ú_handle_forkr‚   )r@   rb  râ   rò  ró  r¾  r¿  r¼  rñ  Údisabledr†   rø  s              @rA   rg   zTracerProvider.__init__   s…  ø€ ð "ÐDÕ%BÑ%DÔ%Dð 	Ô#ð ÐÝ 1Ñ 3Ô 3ˆDÔÐà ,ˆDÔØÐÝ%œ_¨RÑ0Ô0ˆDŒNˆNà%ˆDŒNØð 	:ÝÔ7Ñ9Ô9ˆGØˆŒØ'Ð7­:©<¬<ˆÔÝ”;Õ0°"Ñ5Ô5ˆØ!ŸšÑ)Ô)×/Ò/Ñ1Ô1°VÒ;ˆŒØ#ˆÔØ-ˆÔàð 	BÝ#)¤?°4´=Ñ#AÔ#AˆDÔ ð !Ð@Õ$@ð 	Ô!õ 'œ^Ñ-Ô-ˆÔØ<>ˆŒÝ•2Ð)Ñ*Ô*ð 	@Ý"Ô-¨dÔ.?Ñ@Ô@ˆLðð ð ð ð ð õ Ô¨Ð?Ñ?Ô?Ð?Ð?Ð?ð	@ð 	@rD   c                 óx   — t          j        ¦   «         | _        |                      t	          ¦   «         ¦  «         d S rS   )rd   re   r   Ú_update_resourcer"   rL   s    rA   r  zTracerProvider._handle_forkS  s3   € Ý&œ^Ñ-Ô-ˆÔØ×ÒÕ=Ñ?Ô?Ñ@Ô@Ð@Ð@Ð@rD   Útracer_configuratorc                óè   — || _         | j        5  | j                             ¦   «         D ]/\  }}|                      |¦  «        }|                     |¦  «         Œ0	 ddd¦  «         dS # 1 swxY w Y   dS )zäThis is the function used to update the TracerProvider TracerConfigurator

        Setting a new TracerConfigurator for a TracerProvider will update the
        TracerConfig of all Tracers create by this TracerProvider.
        N)rñ  r   r  ÚitemsÚ_apply_tracer_configuratorrÇ  )r@   r  rê   ÚtracerrÅ  s        rA   Ú_set_tracer_configuratorz'TracerProvider._set_tracer_configuratorW  sÒ   € ð %8ˆÔ!ØÔð 	9ð 	9Ø15´×1DÒ1DÑ1FÔ1Fð 9ð 9Ñ-Ð% vØ $× ?Ò ?Ø)ñ!ô !�ð ×)Ò)¨-Ñ8Ô8Ð8Ð8ð9ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9ð 	9s   �A
A'Á'A+Á.A+c                 ó   — | j         S rS   r  rL   s    rA   râ   zTracerProvider.resourceh  r  rD   c                 óò   — | j         5  | j                             |¦  «        | _        | j                             ¦   «         D ]}|                     | j        ¦  «         Œ	 d d d ¦  «         d S # 1 swxY w Y   d S rS   )r   rõ   Úmerger  ÚvaluesrÉ  )r@   râ   r
  s      rA   r  zTracerProvider._update_resourcel  sÁ   € ØÔð 	5ð 	5Ø!œ^×1Ò1°(Ñ;Ô;ˆDŒNØœ-×.Ò.Ñ0Ô0ð 5ð 5�Ø×$Ò$ T¤^Ñ4Ô4Ð4Ð4ð5ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s   ˆAA,Á,A0Á3A0rê   c                 ó¶   — 	 |                       |¦  «        S # t          $ r7 t                               d|¦  «         t                               ¦   «         cY S w xY w)NzDFailed to create a Tracer Config for %s, using default Tracer config)rñ  Ú	ExceptionrÖ   rŸ  rµ  rQ  )r@   rê   s     rA   r	  z)TracerProvider._apply_tracer_configuratorr  so   € ð	+Ø×,Ò,Ð-BÑCÔCÐCøÝð 	+ð 	+ð 	+Ý×ÒØVØ%ñô ð õ !×(Ò(Ñ*Ô*Ð*Ð*Ð*ð	+øøøs   ‚ —>AÁAÚinstrumenting_module_nameÚinstrumenting_library_versionÚ
schema_urlrº   ztrace_api.Tracerc                 ó  — | j         rt          ¦   «         S |sd}t                               d¦  «         |€d}t	          ddt
          d¬¦  «         t          |||¦  «        }t          ||||¦  «        }| j        5  || j	        v r| j	        |         cd d d ¦  «         S |  
                    |¦  «        }t          | j        | j        | j        | j        || j        || j        |¬¦	  «	        }|| j	        |<   d d d ¦  «         n# 1 swxY w Y   |S )Nr6   z+get_tracer called with missing module name.ÚignorezEYou should use InstrumentationScope. Deprecated since version 1.11.1.zopentelemetry.sdk.trace)ÚmessageÚcategoryr«  r»  )rû  r/   rÖ   Úerrorr   ÚDeprecationWarningr)   r*   r   r  r	  rº  rb  râ   rù  r¾  rÁ  rý  )	r@   r  r  r  rº   ræ   rê   rÅ  r
  s	            rA   Ú
get_tracerzTracerProvider.get_tracer~  s³  € ð Œ>ð 	 Ý‘<”<ÐØ(ð 	HØ(*Ð%Ý�LŠLÐFÑGÔGÐGØ(Ð0Ø,.Ð)åØàXå'Ø,ð	
ñ 	
ô 	
ð 	
õ  3Ø%Ø)Øñ 
ô  
Ðõ !5Ø%Ø)ØØñ	!
ô !
Ðð Ôð 	:ð 	:Ø$¨¬Ð5Ð5Ø”}Ð%:Ô;ð	:ð 	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð !×;Ò;Ø%ñô ˆMõ Ø”Ø”ØÔ+ØÔ!Ø$ØÔ!Ø%Ø#Ô3Ø,ð
ñ 
ô 
ˆFð 4:ˆDŒMÐ/Ñ0ð%	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð( ˆs   Á:C>ÂAC>Ã>DÄDrh   c                 ó:   — | j                              |¦  «         dS )zšRegisters a new :class:`SpanProcessor` for this `TracerProvider`.

        The span processors are invoked in the same order they are registered.
        N)rù  rm   rl   s     rA   rm   z!TracerProvider.add_span_processor¹  s!   € ð 	Ô#×6Ò6°~ÑFÔFÐFÐFÐFrD   c                 óŠ   — | j                              ¦   «          | j        �"t          j        | j        ¦  «         d| _        dS dS )z;Shut down the span processors added to the tracer provider.N)rù  rM   rü  rþ  Ú
unregisterrL   s    rA   rM   zTracerProvider.shutdownÃ  sJ   € àÔ#×,Ò,Ñ.Ô.Ð.ØÔÐ+ÝÔ˜dÔ2Ñ3Ô3Ð3Ø#'ˆDÔ Ð Ð ð ,Ð+rD   rN   rO   c                 ó6   — | j                              |¦  «        S )aÏ  Requests the active span processor to process all spans that have not
        yet been processed.

        By default force flush is called sequentially on all added span
        processors. This means that span processors further back in the list
        have less time to flush their spans.
        To have span processors flush their spans in parallel it is possible to
        initialize the tracer provider with an instance of
        `ConcurrentMultiSpanProcessor` at the cost of using multiple threads.

        Args:
            timeout_millis: The maximum amount of time to wait for spans to be
                processed.

        Returns:
            False if the timeout is exceeded, True otherwise.
        )rù  rR   rQ   s     rA   rR   zTracerProvider.force_flushÊ  s   € ð$ Ô*×6Ò6°~ÑFÔFÐFrD   )NNTNNNrV   )NNNrW   ) rX   rY   rZ   r[   r#   r¯  r!   r_   ra   r~   r%   r9  rÂ  rä  Ú_TracerConfiguratorTrg   r  r  r¼   râ   r  r*   r	  r»   r3   r¿   r  r8   rm   rM   r^   rR   r>   rD   rA   rð  rð    sb  € € € € € Ø3Ð3ð ,0Ø$(Ø!%ð Ø+/Ø)-ð1@ð <@Ø<@ð1@ð 1@ð 1@àÔ! DÑ(ð1@ð ˜T‘/ð1@ð ð	1@ð
  =Ø
&ñ 'à
ñ ð1@ð " DÑ(ð1@ð   $Ñ&ð1@ð $Ô1°DÑ8ð1@ð 3°TÑ9ð1@ð 
ð1@ð 1@ð 1@ð 1@ðfAð Að Að Að9Ø&:ð9ð 9ð 9ð 9ð" ð˜(ð ð ð ñ „Xðð5¨ð 5°dð 5ð 5ð 5ð 5ð
+Ø%9ð
+ð 
+ð 
+ð 
+ð 59Ø!%Ø.2ð9ð 9à#&ð9ð (+¨T¡zð9ð ˜$‘Jð	9ð
 Ô$ tÑ+ð9ð 
ð9ð 9ð 9ð 9ðvG°ð GÀ4ð Gð Gð Gð Gð(ð (ð (ð (ðGð G¨#ð G¸$ð Gð Gð Gð Gð Gð GrD   rð  )xr½   rþ  Úconcurrent.futuresr�   r  Úloggingr‹   rd   r§  rz  rŒ   Úcollections.abcr   r   r   r   r   Údataclassesr   r	   Útimer
   r3   r   r   r   Úwarningsr   Útyping_extensionsr   Úopentelemetryr   r\   r   rÂ  r   r  Úopentelemetry.attributesr   Úopentelemetry.sdkr   Ú'opentelemetry.sdk.environment_variablesr   r   r   r   r   r   r   r   r   r   Ú1opentelemetry.sdk.environment_variables._internalr    Úopentelemetry.sdk.resourcesr!   r"   Úopentelemetry.sdk.tracer#   Ú'opentelemetry.sdk.trace._tracer_metricsr$   Ú$opentelemetry.sdk.trace.id_generatorr%   r&   Úopentelemetry.sdk.utilr'   Ú$opentelemetry.sdk.util._configuratorr(   Ú&opentelemetry.sdk.util.instrumentationr)   r*   Ú5opentelemetry.semconv.attributes.exception_attributesr+   r,   r-   r.   Úopentelemetry.tracer/   r0   Úopentelemetry.trace.statusr1   r2   Úopentelemetry.utilÚopentelemetry.util._decoratorr4   Ú	getLoggerrX   rÖ   rG  rÐ   rH  rI  rE  rF  rV  r8   ra   r~   ÚABCr¯   rÁ   rÚ   r¿   r_   rß   rH   r9  r4  r®  rD  ÚSPAN_ATTRIBUTE_COUNT_LIMITr:   r³  rµ  rº  r   rê  rì  rî  rð  r>   rD   rA   ú<module>r<     s!  ðð
 €
€
€
Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð "Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #à (Ð (Ð (Ð (Ð (Ð (à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø IÐ IÐ IÐ IÐ IÐ IØ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ .Ð .Ð .Ð .Ð .Ð .Ø FÐ FÐ FÐ FÐ FÐ Fðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø $Ð $Ð $Ð $Ð $Ð $Ø AÐ AÐ AÐ AÐ AÐ Aà	ˆÔ	˜8Ñ	$Ô	$€à&)Ð #Ø+.Ð (Ø,/Ð )Ø+.Ð (Ø'*Ð $Ø&)Ð #ð Ð ð:ð :ð :ð :ð :ñ :ô :ð :ð~Fð Fð Fð Fð F Mñ Fô Fð FðRgð gð gð gð g =ñ gô gð gðTð ð ð ð �”ñ ô ð ð,ð ð ð ð ˆIñ ô ð ð@ð ð ð˜Kð °UÔ5Eð È$ð ð ð ð ðC
ð C
ð C
ð C
ð C
ñ C
ô C
ð C
ðLSð Sð Sð Sð Sñ Sô Sð Sðl ˆzØÔ#ØÔØÔØ"Ô(Ø#Ô)Ø"Ô(Ø#Ô)Ø(Ô.ð	ñ 	ô 	€ð (×;Ò;ØØ#Ø,ñô Ð ð|
ð |
ð |
ð |
ð |
ˆ9Œ>˜<ñ |
ô |
ð |
ð~	ð ð ð ð ˆDñ ô ð ð ð$ð $ð $ð $ð $ñ $ô $ñ „ð$ðið ið ið ið iˆYÔñ iô ið iðX  Ð!5Ð 6¸Ð EÔFÐ Ø4°]ÔCÐ ðØ&ðàðð ð ð ðØ&ðàðð ð ð ðGð Gð Gð Gð G�YÔ-ñ Gô Gð Gð Gð GrD   