ó
    Ð]j+  ã                  óä   • S SK Jr  S SKrS SKJs  Jr  S SKrS SK	J
r
  S SKJr  S SKJrJr  S SKJrJr  SSKJr  S	rSS
KJr  \R0                  r Sr\SS j5       r " S S\5      r " S S\5      rg)é    )ÚannotationsN)ÚIterator)Úcontextmanager)ÚbaggageÚcontext)ÚSpanÚSpanProcessoré   )Úlogfire_json_dumps)Úget_baggageÚset_baggage)Útruncate_stringiè  c            	   +  óN  #   • [         R                  " 5       nU R                  5        H¬  u  p#[        U[        5      (       d:  [
        R                  " SU S[        U5      R                   S3SS9  [        U5      n[        U5      [        :”  a.  [
        R                  " SU S[         S3SS9  [        U[        S9n[        R                  " X#U5      nM®     [         R                  " U5      n S	v •  [         R                   " U5        g	! [         R                   " U5        f = f7f)
a¦  Context manager that attaches key/value pairs as OpenTelemetry baggage to the current context.

See the [Baggage documentation](https://logfire.pydantic.dev/docs/reference/advanced/baggage/) for more details.

Note: this function should always be used in a `with` statement; if you try to open and close it manually you may
run into surprises because OpenTelemetry Baggage is stored in the same contextvar as the current span.

Args:
    values: The key/value pairs to attach to baggage. These should not be large or sensitive.
        Strings longer than 1000 characters will be truncated with a warning.

Example usage:

```python
from logfire import set_baggage

with set_baggage(my_id='123'):
    # All spans opened inside this block will have baggage '{"my_id": "123"}'
    with set_baggage(my_session='abc'):
        # All spans opened inside this block will have baggage '{"my_id": "123", "my_session": "abc"}'
        ...
```
úBaggage value for key "ú" is of type "z". Converting to string.é   )Ú
stacklevelú" is too long. Truncating to z characters.©Ú
max_lengthN)r   Úget_currentÚitemsÚ
isinstanceÚstrÚwarningsÚwarnÚtypeÚ__name__r   ÚlenÚMAX_BAGGAGE_VALUE_LENGTHr   r   r   ÚattachÚdetach)ÚvaluesÚcurrent_contextÚkeyÚvalueÚtokens        ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/logfire/_internal/baggage.pyr   r   !   sð   é € ô2 ×)Ò)Ó+€OØ—l‘l–n‰
ˆÜ˜%¤×%Ñ%Ü�MŠMØ)¨#¨¨n¼TÀ%»[×=QÑ=QÐ<RÐRjÐkØòô ' uÓ-ˆEÜˆu‹:Ô0Ó0Ü�MŠMØ)¨#¨Ð.KÔLdÐKeÐeqÐrØòô $ EÔ6NÑOˆEÜ!×-Ò-¨c¸/ÓJŠñ %ô �NŠN˜?Ó+€EðÛä�Š�uÕøŒ�Š�uÕüs   ‚C,D%Ã/D
 Ã3D%Ä
D"Ä"D%c                  ó"   • \ rS rSrSSS jjrSrg)ÚNoForceFlushSpanProcessoréP   c                ó   • g)NT© )ÚselfÚtimeout_milliss     r(   Úforce_flushÚ%NoForceFlushSpanProcessor.force_flushS   s   € Øó    r-   N)i0u  )r/   ÚintÚreturnÚbool)r   Ú
__module__Ú__qualname__Ú__firstlineno__r0   Ú__static_attributes__r-   r2   r(   r*   r*   P   s   † ÷ñ r2   r*   c                  ó"   • \ rS rSrSSS jjrSrg)Ú$DirectBaggageAttributesSpanProcessoréW   Nc           	     óð  • UR                   =(       d    0 n0 n[        R                  " U5      R                  5        H¦  u  pV[	        U[
        5      (       d2  [        R                  " SU S[        U5      R                   S35        ML  [        U5      [        :”  a/  [        R                  " SU S[         S35        [        U[        S9nXS;   a  X5   U:X  a  M�  SU-   nXdU'   M¨     UR                  U5        g )Nr   r   z!", skipping setting as attribute.r   z( characters before setting as attribute.r   zbaggage_conflict.)Ú
attributesr   Úget_allr   r   r   r   r   r   r   r   r    r   Úset_attributes)r.   ÚspanÚparent_contextÚexisting_attrsÚattrsÚkÚvs          r(   Úon_startÚ-DirectBaggageAttributesSpanProcessor.on_startX   sé   € ØŸ™×.¨BˆØ "ˆÜ—O’O NÓ3×9Ñ9Ö;‰DˆAÜ˜a¤×%Ñ%ä—’Ø-¨a¨S°¼tÀA»w×?OÑ?OÐ>PÐPqÐrôñ Ü�1‹vÔ0Ó0ä—’Ø-¨a¨SÐ0MÔNfÐMgð  hPð  Qôô $ AÔ2JÑK�ØÓ"Ø!Ñ$¨Ó)ÙØ'¨!Ñ+�Ø�!‹Hñ# <ð$ 	×Ñ˜EÕ"r2   r-   )N)rA   r   rB   zcontext.Context | Noner4   ÚNone)r   r6   r7   r8   rG   r9   r-   r2   r(   r;   r;   W   s   † ÷#ñ #r2   r;   )r#   r   r4   zIterator[None])Ú
__future__r   ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arr   Úcollections.abcr   Ú
contextlibr   Úopentelemetryr   r   Úopentelemetry.sdk.tracer   r	   Újson_encoderr   Ú__all__Úutilsr   r?   r   r    r   r*   r;   r-   r2   r(   Ú<module>rX      sl   ðÝ "ç  „ ƒÝ $Ý %ç *ß 7å ,ð€õ
 #à�o‰o€Ø \ð  Ð ð ó+ó ð+ô\ ô ô#Ð+Dõ #r2   