ó
    Ð]jˆ=  ã                  ó¸  • S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S SKJrJr  S SKrS SKJrJr  S SKrS	S
KJrJr  S	SKJrJrJr  S	SKJr  S	SKJr   " S S\5      r " S S\5      r " S S\	5      r \ " 5       r!S!S jr" S"         S#S jjr#\S$S j5       r$ " S S\%5      r& " S S\%5      r' " S S\(5      r)S%S jr*S%S jr+ " S S \5      r,g)&é    )ÚannotationsN)ÚIterator)Ú	lru_cache)Ú	Formatter)ÚCodeType)ÚAnyÚLiteral)ÚNotRequiredÚ	TypedDicté   )ÚCallNodeFinderÚget_node_source_text)ÚNOOP_SCRUBBERÚBaseScrubberÚMessageValueCleaner)Úwarn_at_user_stacklevel)Úlog_internal_errorc                  ó*   • \ rS rSr% S\S'   S\S'   Srg)ÚLiteralChunké   zLiteral['lit']ÚtÚstrÚv© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   ó    ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/logfire/_internal/formatter.pyr   r      s   ‡ ØÓØ
†Fr"   r   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
ÚArgChunké   zLiteral['arg']r   r   r   zNotRequired[str]Úspecr   Nr   r   r"   r#   r%   r%      s   ‡ ØÓØ
ƒFØ
Ör"   r%   c                  óv   • \ rS rSrSS.         S
S jjr        SS jrSS.         SS jjrS	rg)ÚChunksFormatteré!   N)Úfstring_framec               ót   • U(       a  U R                  X#U5      nU(       a  U$ U R                  UUUS9u  pgXgU4$ )N)ÚkwargsÚscrubber)Ú_fstring_chunksÚ_vformat_chunks)ÚselfÚformat_stringr-   r.   r+   ÚresultÚchunksÚextra_attrss           r#   r4   ÚChunksFormatter.chunks"   sO   € ö Ø×)Ñ)¨&¸MÓJˆFÞØ�à"×2Ñ2ØØØð 3ð 
Ñˆð  MÐ1Ð1r"   c                ó®  • UR                   nUR                  nUc   e[        U5      nUR                  nUc  g U[        R
                  R                  R                  :X  al  [        UR                  5      S:¼  a  UR                  S   nOvUR                   H!  nUR                  S:X  d  M  UR                  n  OG   UR                  S5        g UR                  (       a  UR                  S   nOUR                  S5        g [        U[        R                   5      (       d  g UR"                  n	0 UR$                  EUEn
/ nSn0 n['        USS9nUR(                   HØ  n[        U[        R*                  5      (       a'  UR                  nUR-                  US	S
.5        UU-  nMI  [        U[        R.                  5      (       d   e[1        XõR2                  5      u  nnnUSU-   S-   -  n[5        UXš5      nUUU'   [5        UU	0 U
ESU0E5      nUR7                  UU5      nUR-                  USS
.5        MÚ     UR9                  UR;                  5       5        X½U4$ )Né   r   Úmsg_templatez:Couldn't identify the `msg_template` argument in the call.r   Ú F©Ú
check_keysÚlit©r   r   Ú{Ú}ú@fvalueÚarg)Úf_codeÚf_backÚFormattingCallNodeFinderÚnodeÚlogfireÚLogfireÚlogÚ__code__ÚlenÚargsÚkeywordsrB   ÚvalueÚwarn_inspect_argumentsÚ
isinstanceÚastÚ	JoinedStrÚ	f_globalsÚf_localsr   ÚvaluesÚConstantÚappendÚFormattedValueÚcompile_formatted_valueÚsourceÚevalÚclean_valueÚupdater5   )r1   r-   r.   ÚframeÚcalled_codeÚnode_finderÚ	call_nodeÚarg_nodeÚkeywordÚglobal_varsÚ
local_varsr3   Únew_templater5   Úvalue_cleanerÚ
node_valuerN   rZ   Ú
value_codeÚformatted_codeÚ	formatteds                        r#   r/   ÚChunksFormatter._fstring_chunks=   s?  € ð —l‘lˆØ—‘ˆàÑ Ð Ð ä.¨uÓ5ˆØ×$Ñ$ˆ	ØÑØàœ'Ÿ/™/×-Ñ-×6Ñ6Ó6ô �9—>‘>Ó" aÓ'Ø$Ÿ>™>¨!Ñ,‘ð  )×1Ô1�GØ—{‘{ nÕ4Ø#*§=¡=˜Ùñ  2ð
  ×6Ñ6Ð7sÔtØØ�^�^Ø —~‘~ aÑ(‰Hð ×.Ñ.Ð/kÔlØä˜(¤C§M¡M×2Ñ2ð ð —o‘oˆØ1˜Ÿ™Ð1¨&Ð1ˆ
ð 13ˆð
 ˆà&(ˆÜ+¨HÀÑGˆØ"Ÿ/œ/ˆJÜ˜*¤c§l¡l×3Ñ3à'×-Ñ-�Ø—‘ E°Ñ6Ô7Ø Ñ%’ô " *¬c×.@Ñ.@×AÑAÐAÐAô 6MÈZ×YkÑYkÓ5lÑ2�˜
 Nð   f¡¨sÑ 2Ñ2�ô ˜Z¨ÓA�Ø&+�˜FÑ#ô ! °Ð>^ÀÐ>^ÈYÐX]Ñ>^Ó_�	Ø)×5Ñ5°f¸iÓH�	Ø—‘ I°EÑ:Ö;ñ7 *ð: 	×Ñ˜=×4Ñ4Ó6Ô7Ø LÐ0Ð0r"   r8   )Úrecursion_depthc          
     óÆ  • US:  a  [        S5      e/ nSn[        USS9nU R                  U5       GH8  u  p‰p«U(       a  UR                  USS.5        U	c  M'  U	S	:X  a  [        S
5      eU	R	                  S5      (       a=  U(       a  US   S   S:X  a  US   S==   U	-  ss'   OUR                  U	SS.5        U	SS n	 U R                  X–U5      u  pÍUb   U R                  XË5      nU R                  U
=(       d    S	U[        US-
  S9u  nnS	R                  S U 5       5      n
 U R                  XÊ5      nUR!                  U	U5      nUSS.nU
(       a  U
US'   UR                  U5        GM;     XWR#                  5       4$ ! [         a    [        S5      e[         a\  n[        U5      [        U	5      :X  a  [        SU	 S35      Ue X)   n SnANþ! [         a  n[        SU SU S35      UeSnAff = fSnAf[         a  n[        SU	 SU 35      UeSnAff = f! [         a  n[        SU	 SU 35      UeSnAff = f! [         a  n[        SU	 SU 35      UeSnAff = f)z|Copied from `string.Formatter._vformat` https://github.com/python/cpython/blob/v3.11.4/Lib/string.py#L198-L247 then altered.r   z"Max format spec recursion exceededr   Fr;   r=   r>   Nr:   zDEmpty curly brackets `{}` are not allowed. A field name is required.Ú=éÿÿÿÿr   r   z$Numeric field names are not allowed.zThe field {z} is not defined.zThe fields z and z are not defined.zError getting field {z}: zError converting field {r   )r.   rm   c              3  ó*   #   • U  H	  oS    v •  M     g7f©r   Nr   ©Ú.0Úchunks     r#   Ú	<genexpr>Ú2ChunksFormatter._vformat_chunks.<locals>.<genexpr>Û   s   é € Ð%QÒ>P°U¨C¦jÒ>Pùó   ‚zError formatting field {rB   r'   )ÚKnownFormattingErrorr   ÚparserW   ÚendswithÚ	get_fieldÚ
IndexErrorÚKeyErrorr   ÚreprÚ	ExceptionÚconvert_fieldr0   r   ÚjoinÚformat_fieldr\   r5   )r1   r2   r-   r.   rm   r3   rL   rg   Úliteral_textÚ
field_nameÚformat_specÚ
conversionÚobjÚ	_arg_usedÚexc1Úexc2ÚexcÚformat_spec_chunksÚ_rN   Úds                        r#   r0   ÚChunksFormatter._vformat_chunks˜   sÏ  € ð ˜QÓÜ&Ð'KÓLÐLØ02ˆàˆÜ+¨HÀÑGˆØAEÇÁÈM×AZÑ=ˆL kæØ—‘ L°uÑ=Ô>ð Ó%ð  Ó#Ü.Ð/uÓvÐvð ×&Ñ& s×+Ñ+Þ &¨¡*¨S¡/°UÓ":Ø˜r™
 3›¨:Ñ5œàŸ™¨J¸UÑ&CÔDØ!+¨C¨R �JðhØ%)§^¡^°JÀfÓ%M‘N�Cð& Ñ)ðoØ"×0Ñ0°ÓA˜ð
 )-×(<Ñ(<Ø×% 2 v¼ÐWfÐijÑWjð )=ð )Ñ%Ð" Að !Ÿg™gÑ%QÑ>PÓ%QÓQ�ðkØ ×-Ñ-¨cÓ?�Eð &×1Ñ1°*¸eÓD�Ø$)°Ñ6�ÞØ +�A�f‘IØ—‘˜a× ñ} B[ð@ ×0Ñ0Ó2Ð2Ð2øôQ "ó WÜ.Ð/UÓVÐVÜó oÜ˜4“y¤D¨Ó$4Ó4Ü2°\À*ÀÐM_Ð3`ÓaÐgkÐkðoð %Ñ0�øÜ#ó oä2°[ÀÀÀeÈDÈ6ÐQbÐ3cÓdÐjnÐnûðoþô !ó hÜ.Ð1GÈ
À|ÐSWÐX[ÐW\Ð/]Ó^ÐdgÐgûðhûô %ó oÜ2Ð5NÈzÈlÐZ^Ð_bÐ^cÐ3dÓeÐknÐnûðoûô !ó kÜ.Ð1JÈ:È,ÐVZÐ[^ÐZ_Ð/`ÓaÐgjÐjûðkúsr   Â=E?ÃHÄ$H?Å?HÆ(G4ÇGÇ
G1ÇG,Ç,G1Ç1G4Ç4HÈHÈHÈ
H<È%H7È7H<È?
I É	IÉI r   )
r2   r   r-   údict[str, Any]r.   r   r+   útypes.FrameType | NoneÚreturnz9tuple[list[LiteralChunk | ArgChunk], dict[str, Any], str])r-   r‘   r.   r   r^   ztypes.FrameTyper“   z@tuple[list[LiteralChunk | ArgChunk], dict[str, Any], str] | None)
r2   r   r-   r‘   r.   r   rm   Úintr“   z4tuple[list[LiteralChunk | ArgChunk], dict[str, Any]])r   r   r   r   r4   r/   r0   r!   r   r"   r#   r)   r)   !   sµ   † ð 15ñ2àð2ð ð2ð
 ð2ð .ð2ð 
Cõ2ð6Y1àðY1ð ðY1ð ð	Y1ð
 
JôY1ðB  !ñO3àðO3ð ðO3ð
 ðO3ð ðO3ð 
>÷O3ð O3r"   r)   c                ó&   • [        U UU5      u  p4nU$ ©N)Úlogfire_format_with_magic)r2   r-   r.   r3   Ú_extra_attrsÚ_new_templates         r#   Úlogfire_formatrš   í   s!   € Ü*CØØØó+Ñ'€F˜-ð
 €Mr"   c                óx  •  [         R                  U UUUS9u  pEnSR                  S U 5       5      XV4$ ! [         a:  n[	        [        U5      =(       d    [        UR                  5      5         S nAOCS nAf[         a  n[        [        U5      5         S nAOS nAf[         a    [        5          Of = fU 0 U 4$ )N)r.   r+   r:   c              3  ó*   #   • U  H	  oS    v •  M     g7frr   r   rs   s     r#   rv   Ú,logfire_format_with_magic.<locals>.<genexpr>  s   é € Ð6ªv e˜S–zªvùrx   )Úchunks_formatterr4   r‚   ry   Úwarn_formattingr   Ú	__cause__ÚFStringAwaitErrorÚwarn_fstring_awaitr€   r   )r2   r-   r.   r+   r4   r5   rf   Úes           r#   r—   r—   ö   s®   € ðÜ,<×,CÑ,CØØØØ'ð	 -Dð -
Ñ)ˆ˜\ð �w‰wÑ6©vÓ6Ó6¸ÐQÐQøÜó 4Üœ˜A›×2¤# a§k¡kÓ"2×3Ñ3ûÜó #Üœ3˜q›6×"Ñ"ûÜó ô 	Öðúð ˜"˜mÐ+Ð+s&   ‚25 µ
B4¿0A4Á4B4ÂBÂB4Â3B4c                ó&  • [        U R                  U5      n[        R                  " U R                  5       H-  n[	        U[        R
                  5      (       d  M$  [        U5      e   [        USS5      n[        R                  " [        R                  " [        R                  " [        R                  " S[        R                  " 5       S9U R                  U R                  S9/S95      n[        R                  " U5        [        USS5      nX$U4$ )zýReturns three things that can be expensive to compute.

1. Source code corresponding to the node value (excluding the format spec).
2. A compiled code object which can be evaluated to calculate the value.
3. Another code object which formats the value.
z	<fvalue1>r[   rA   )ÚidÚctx)rN   r‡   r†   )rU   z	<fvalue2>)r   rN   rQ   ÚwalkrP   ÚAwaitr¡   ÚcompileÚ
ExpressionrR   rX   ÚNameÚLoadr‡   r†   Úfix_missing_locations)rF   Ú	ex_sourcerZ   Úsub_noderi   Úexprrj   s          r#   rY   rY     sÕ   € ô " $§*¡*¨iÓ8€Fô —H’H˜TŸZ™ZÖ(ˆÜ�h¤§	¡	×*Ó*Ü# FÓ+Ð+ñ )ô ˜ ¨fÓ5€JÜ�>Š>Ü�Šô ×"Ò"ÜŸ(š( i´S·X²X³ZÑ@Ø#Ÿ™Ø $× 0Ñ 0ñðñ	
ó€Dô$ ×Ò˜dÔ#Ü˜T ;°Ó7€NØ˜~Ð-Ð-r"   c                  ó   • \ rS rSrSrSrg)ry   i=  a"  An error raised when there's something wrong with a format string or the field values.

In other words this should correspond to errors that would be raised when using `str.format`,
and generally indicate a user error, most likely that they weren't trying to pass a template string at all.
r   N©r   r   r   r   Ú__doc__r!   r   r"   r#   ry   ry   =  ó   † ôr"   ry   c                  ó   • \ rS rSrSrSrg)r¡   iE  zÌAn error raised when an await expression is found in an f-string.

This is a specific case that can't be handled by f-string introspection and requires
pre-evaluating the await expression before logging.
r   Nr²   r   r"   r#   r¡   r¡   E  r´   r"   r¡   c                  ó   • \ rS rSrSrg)ÚFormattingFailedWarningiM  r   N)r   r   r   r   r!   r   r"   r#   r·   r·   M  s   † Úr"   r·   c                ó&   • [        SU  3[        S9  g )NaO  
    Ensure you are either:
      (1) passing an f-string directly, with inspect_arguments enabled and working, or
      (2) passing a literal `str.format`-style template, not a preformatted string.
    See https://logfire.pydantic.dev/docs/guides/onboarding-checklist/add-manual-tracing/#messages-and-span-names.
    The problem was: ©Úcategory©r   r·   ©Úmsgs    r#   rŸ   rŸ   Q  s    € Üð ð
 !$˜uð	&ô )ór"   c                ó&   • [        SU  3[        S9  g )Na  
    Cannot evaluate await expression in f-string. Pre-evaluate the expression before logging.
    For example, change:
      logfire.info(f"{await get_value()}")
    To:
      value = await get_value()
      logfire.info(f"{value}")
    The problematic f-string value was: r¹   r»   r¼   s    r#   r¢   r¢   ]  s    € Üð3ð 47°%ð	9ô )ó
r"   c                  ó2   • \ rS rSrSrSS jrS	S jrS rSrg)
rE   ik  zRFinds the call node corresponding to a call like `logfire.span` or `logfire.info`.c              #  ó¼   #   • U R                   R                   H<  n[        U[        R                  5      (       a  UR
                   S h  v•N   M8  Uv •  M>     g  N7fr–   )ÚexÚ
statementsrP   rQ   ÚWithÚitems)r1   Ú	statements     r#   Úheuristic_main_nodesÚ-FormattingCallNodeFinder.heuristic_main_nodesn  sA   é € ØŸ™×+Ô+ˆIÜ˜)¤S§X¡X×.Ñ.à$Ÿ?™?×*Ò*à”ò ,ñ +ùs   ‚AAÁ
AÁAc                óR   • [        UR                  =(       d    UR                  5      $ r–   )ÚboolrL   rM   )r1   rF   s     r#   Úheuristic_call_node_filterÚ3FormattingCallNodeFinder.heuristic_call_node_filterv  s   € ä�D—I‘I×. §¡Ó/Ð/r"   c                ó   • g)NzgFalling back to normal message formatting which may result in loss of information if using an f-string.r   )r1   s    r#   Úwarn_inspect_arguments_middleÚ6FormattingCallNodeFinder.warn_inspect_arguments_middlez  s   € Øxr"   r   N)r“   zIterator[ast.AST])rF   zast.Callr“   rÉ   )	r   r   r   r   r³   rÆ   rÊ   rÍ   r!   r   r"   r#   rE   rE   k  s   † Ù\ô ô0õyr"   rE   )r2   r   r-   r‘   r.   r   r“   r   r–   )
r2   r   r-   r‘   r.   r   r+   r’   r“   ztuple[str, dict[str, Any], str])rF   zast.FormattedValuer®   zexecuting.Sourcer“   ztuple[str, CodeType, CodeType])r½   r   )-Ú
__future__r   rQ   ÚtypesÚcollections.abcr   Ú	functoolsr   Ústringr   r   Útypingr   r	   Ú	executingÚtyping_extensionsr
   r   rG   Ú	ast_utilsr   r   Ú	scrubbingr   r   r   Ú
stack_infor   Úutilsr   r   r%   r)   rž   rš   r—   rY   r€   ry   r¡   ÚUserWarningr·   rŸ   r¢   rE   r   r"   r#   Ú<module>rÜ      sö   ðÝ "ã 
Û Ý $Ý Ý Ý ß ã ß 4ã ç ;ß GÑ GÝ /Ý %ô�9ô ô
ˆyô ôF3�iô F3ñR #Ó$Ð ôð -1ð	,Øð,àð,ð ð,ð *ð	,ð
 %õ,ð@ ó#.ó ð#.ôL˜9ô ô˜	ô ô	˜kô 	ô	ôôy˜~õ yr"   