ó
    Ð]jC  ã                  óä  • S SK Jr  S SKrS SKJr  S SKJr  SrSS jrSr	\R                  " S\	 S	3\R                  \R                  -  S
9r\R                  " S\	 S	3\R                  \R                  -  S
9r\R                  " S\	 S	3\R                  \R                  -  S
9r\R                  " S\	 S3\R                  S
9rSS jrSSS.             SS jjrSS jr\S-  S-
  rSS jrg)é    )ÚannotationsN)ÚMapping)ÚAnyéP   c                ó¸  • U R                  S5      n[        U[        5      (       d  gUb  X:w  a  gUR                  5       n[        U[        5      (       a{  U R                  S5      nU(       a>  [        U[        5      (       a)  UR	                  U5      (       a  US[        U5      * S-
   nOUnXS;  a  g[        R                  " SU5      (       d  g[        U5      $ )z“Try to construct a useful span message from OTel db statement.

Returns: A new string to use as span message or None to keep the original message.
zdb.statementNzdb.nameé   z\S+)	ÚgetÚ
isinstanceÚstrÚstripÚendswithÚlenÚreÚ	fullmatchÚsummarize_query)Ú
attributesÚmessageÚ	span_nameÚdb_statementÚdb_nameÚ	operations         Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/logfire/_internal/db_statement_summary.pyÚmessage_from_db_statementr   
   s¿   € ð
 —>‘> .Ó1€LÜ�l¤C×(Ñ(ààÑ˜wÓ3ð à×%Ñ%Ó'€LÜ�'œ3×ÑØ—.‘. Ó+ˆÞ”z '¬3×/Ñ/°G×4DÑ4DÀW×4MÑ4MØÐ 3¤3 w£< -°!Ñ"3Ð4‰IàˆIØÓ(àÜ�|Š|˜F I×.Ñ.àä˜<Ó(Ð(ó    z
[\w."'`-]+zSELECT (.+?) FROM (Ú)©ÚflagszWITH (.+?) SELECT (.+?) FROM (z SELECT (.+?) FROM (\(.+?\)) AS (zINSERT INTO (z) (\(.+?\)) VALUES (\(.+?\))c           	     óf  • U R                  5       n [        U 5      [        ::  a  U $ [        R                  " SSU [        R
                  S9n [        R                  " SSU 5      R                  5       n [        U 5      [        ::  a  U $ [        R                  U 5      =n(       a,  UR                  5       u  p#n[        X$UR                  5       XS9$ [        R                  U 5      =n(       a(  [        UR                  5       UR                  5       U S.6$ [        R                  U 5      =n(       a,  UR                  5       u  pRn[        X$UR                  5       XS9$ [        R                  U 5      =n(       a2  UR                  5       u  pGnS	U S[        US
5       S[        US
5       3$ [        U 5      $ )zÍSummarize a database statement, specifically SQL queries.

Args:
    db_statement: The database statement to summarize.

Returns: A new string to use as span message or None to keep the original message.

z^[ \t]*--.*Ú r   z\s{2,}Ú )Ú	match_endr   Ú	sub_query)r!   r   )r!   r   ÚcteszINSERT INTO é   z VALUES )r   r   ÚMAX_QUERY_MESSAGE_LENGTHr   ÚsubÚ	MULTILINEÚSELECT_SUBQUERY_REÚmatchÚgroupsÚselectÚendÚ	SELECT_REÚSELECT_CTE_REÚ	INSERT_REÚtruncateÚfallback)	r   Úselect_matchÚexprÚsubqueryÚtabler#   Úinsert_matchÚcolumnsÚvaluess	            r   r   r   2   s…  € ð  ×%Ñ%Ó'€LÜ
ˆ<ÓÔ4Ó4ØÐô —6’6˜.¨"¨lÄ"Ç,Á,ÑO€Lô —6’6˜) S¨,Ó7×=Ñ=Ó?€LÜ
ˆ<ÓÔ4Ó4ØÐä)×/Ñ/°Ó=Ð=€|Õ=Ø ,× 3Ñ 3Ó 5Ñˆ˜Ü�d¨\×-=Ñ-=Ó-?ÈlÑoÐoÜ"Ÿ™¨Ó6Ð	6ˆÕ	6Ü�|×*Ñ*Ó,¸×8HÑ8HÓ8JÐYeÒfÐfÜ&×,Ñ,¨\Ó:Ð	:ˆÕ	:Ø(×/Ñ/Ó1Ñˆ�EÜ�d¨\×-=Ñ-=Ó-?ÈlÑfÐfÜ"Ÿ™¨Ó6Ð	6ˆÕ	6Ø!-×!4Ñ!4Ó!6Ñˆ˜Ø˜e˜W A¤h¨w¸Ó&;Ð%<¸HÄXÈfÐVXÓEYÐDZÐ[Ð[ä˜Ó%Ð%r   )r#   r"   c          	     ó:  • [        U S5      n U(       a   SU  S[        US5       S[        US5       3nOSU  S[        US5       3nU(       ab  [        R                  " S[         S3U[        R                  S	9n[        U5      S
:X  a  S[        US   S5       SU 3nOS[        U5       SU 3n[        R                  " S[         S3X2S  [        R                  S	9n[        U5      S
:X  a  U S[        US   S5       S3nOU(       a  U S[        U5       S3n[        R                  " SX2S  [        R                  S	9(       a  U S3n[        R                  " SX2S  [        R                  S	9=n	(       a  U SU	R                  S
5       3n[        U[        5      $ )Né   zSELECT z FROM r$   z AS é   Ú(z) ASr   r   zWITH r   é
   u
    AS (â€¦) u	   WITH â€¦[z CTEs] zJOIN (r   z JOIN u    ON â€¦u    â€¦[z JOINs]ÚWHEREu
    WHERE â€¦zLIMIT (\d+)z LIMIT )	r0   r   ÚfindallÚTABLE_REÚIr   ÚsearchÚgroupr%   )
r3   r5   r!   r   r#   r"   ÚsummaryÚcte_asÚjoinsÚlimits
             r   r+   r+   W   s�  € ô �D˜"Ó€DæØ˜D˜6 ¬°¸BÓ(?Ð'@ÀÄXÈeÐUWÓEXÐDYÐZ‰ð ˜D˜6 ¬°¸Ó(;Ð'<Ð=ˆæÜ—’˜q¤ 
¨$Ð/°¼R¿T¹TÑBˆÜˆv‹;˜!ÓØœh v¨a¡y°"Ó5Ð6°jÀÀ	ÐJ‰Gà!¤# f£+ ¨g°g°YÐ?ˆGä�JŠJ˜&¤ 
¨!Ð,¨l¸:Ð.FÌbÏdÉdÑS€EÜ
ˆ5ƒz�QƒØ�I˜V¤H¨U°1©X°rÓ$:Ð#;¸7ÐC‰Þ	Ø�I˜U¤3 u£: ,¨gÐ6ˆä	‡y‚y�˜, zÐ2¼"¿$¹$×?Ø�I˜ZÐ(ˆä—	’	˜.¨,°zÐ*BÌ"Ï$É$ÑOÐO€uÕOØ�I˜W U§[¡[°£^Ð$4Ð5ˆä�GÔ5Ó6Ð6r   c                óH   • [        U 5      U::  a  U $ US-  nU S U  SX* S   3$ )Né   u   â€¦)r   )ÚsÚlengthÚhalf_lengths      r   r0   r0   x   s<   € Ü
ˆ1ƒv�ÓØˆà ‘kˆØ�L�[�/Ð" # a¨¨Ð&6Ð%7Ð8Ð8r   rI   c                ó.   • U S [           SU [         * S   3$ )Nu    â€¦ )ÚFALLBACK_HALF)r   s    r   r1   r1   ƒ   s%   € Ø˜>œMÐ*Ð+¨5°¼}¸n¸oÐ1NÐ0OÐPÐPr   )r   zMapping[str, Any]r   ú
str | Noner   r   ÚreturnrO   )r   r   rP   rO   )r3   r   r5   r   r!   Úintr   r   r#   rO   r"   rO   rP   r   )rJ   r   rK   rQ   rP   r   )r   r   )Ú
__future__r   r   Úcollections.abcr   Útypingr   r%   r   r@   ÚcompilerA   ÚDOTALLr-   r.   r(   r/   r   r+   r0   rN   r1   © r   r   Ú<module>rX      s1  ðÝ "ã 	Ý #Ý àÐ ô)ðB €Ø�JŠJÐ-¨h¨Z°qÐ9ÀÇÁÈÏ	É	ÑAQÑR€	Ø—
’
Ð<¸X¸JÀaÐHÐPR×PTÑPTÐWY×W`ÑW`ÑP`Ña€Ø—Z’ZÐ#CÀHÀ:ÈQÐ OÐWY×W[ÑW[Ð^`×^gÑ^gÑWgÑhÐ Ø�JŠJ˜-¨ zÐ1MÐNÐVX×VZÑVZÑ[€	ô"&ðL UYÐrvñ7Ø
ð7Øð7Ø),ð7Ø<?ð7ØGQð7Øeoð7àõ7ôB9ð )¨AÑ-°Ñ1€õQr   