§
    xÅj'  ã                  óF  — d dl mZ d dlmZmZmZmZ d dlZd dlm	Z	m
Z
 d dlmZmZmZ d dlmZ d dlmZmZmZ d dlmZmZmZ 	 d dlZd d	lmZ d d
lmZ n# e$ r  ed¦  «        ‚w xY w G d„ de¦  «        Z ed¦  «        Z d&d„Z!d'd„Z"d'd„Z#d(d„Z$d'd„Z%ddœd)d"„Z&d*d%„Z'dS )+é    )Úannotations)ÚAnyÚ	AwaitableÚCallableÚTypeVarN)ÚOPÚSPANDATA)ÚDidNotEnableÚIntegrationÚ_check_minimum_version)ÚStreamedSpan)Úadd_query_sourceÚhas_span_streaming_enabledÚrecord_sql_queries)Úcapture_internal_exceptionsÚhas_data_collection_enabledÚparse_version)Ú
Connection)ÚCursorzaiomysql not installed.c                  óF   — e Zd ZdZde› �ZdZddœdd„Zedd
„¦   «         ZdS )ÚAioMySQLIntegrationÚaiomysqlzauto.db.F)Úrecord_paramsr   Úboolc               ó   — |t           _        d S ©N)r   Ú_record_params)Úselfr   s     úQC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/aiomysql.pyÚ__init__zAioMySQLIntegration.__init__"   s   € Ø-:ÕÔ*Ð*Ð*ó    ÚreturnÚNonec                 ó4  — t          t          j        ¦  «        } t          t          | ¦  «         t          t          j        ¦  «        t          _        t          t          j	        ¦  «        t          _	        t          t          j        ¦  «        t          _        d S r   )r   r   Ú__version__r   r   Ú_wrap_executer   ÚexecuteÚ_wrap_executemanyÚexecutemanyÚ_wrap_connectr   Ú_connect)Úaiomysql_versions    r   Ú
setup_oncezAioMySQLIntegration.setup_once%   sd   € å(­Ô)=Ñ>Ô>ÐÝÕ2Ð4DÑEÔEÐEå&¥v¤~Ñ6Ô6�ŒÝ.­vÔ/AÑBÔB�Ôõ ,­JÔ,?Ñ@Ô@�
ÔÐÐr!   N)r   r   )r"   r#   )	Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚoriginr   r    Ústaticmethodr-   © r!   r   r   r      sr   € € € € € Ø€JØ$˜
Ð$Ð$€FØ€Nà05ð ;ð ;ð ;ð ;ð ;ð ;ð ðAð Að Añ „\ðAð Að Ar!   r   ÚTÚqueryústr | bytes | bytearrayr"   Ústrc                ó¶   — t          | t          t          f¦  «        r|                      dd¬¦  «        } d                     |                      ¦   «         ¦  «        S )Nzutf-8Úreplace)Úerrorsú )Ú
isinstanceÚbytesÚ	bytearrayÚdecodeÚjoinÚsplit)r6   s    r   Ú_normalize_queryrC   8   sH   € Ý�%�%¥Ð+Ñ,Ô,ð 8Ø—’˜W¨Y�Ñ7Ô7ˆØ�8Š8�E—K’K‘M”MÑ"Ô"Ð"r!   ÚfúCallable[..., Awaitable[T]]c                ó   ‡ — dˆ fd„}|S )z+Wrap Cursor.execute to capture SQL queries.Úargsr   Úkwargsr"   r5   c               Ÿ  ó¦  •K  — t          j        ¦   «                              t          ¦  «        € ‰| i |¤Žƒ d {V —†S | d         }t	          |dd¦  «        r ‰| i |¤Žƒ d {V —†S t          | ¦  «        dk    r| d         n|                     dd¦  «        }t          |¦  «        }t          | ¦  «        dk    r| d         n|                     d¦  «        }t          |¦  «        }t          j        ¦   «                              t          ¦  «        }t          j        ¦   «         }d}	t          |j
        ¦  «        r|j
        d	         d
         rd}	n|r|j        nd}	|r|	r|nd }
|
rdnd }t          d ||
|dt          j        ¬¦  «        5 }|rt          ||¦  «          ‰| i |¤Žƒ d {V —†}t          |t           ¦  «        r5t#          ¦   «         5  t%          |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          |t           ¦  «        s5t#          ¦   «         5  t%          |¦  «         d d d ¦  «         n# 1 swxY w Y   |S )Nr   Ú_sentry_skip_next_executeFé   r6   Ú é   rG   Údata_collectionÚdatabase_query_dataTÚpyformat©Úcursorr6   Úparams_listÚ
paramstyler)   Úspan_origin)Ú
sentry_sdkÚ
get_clientÚget_integrationr   ÚgetattrÚlenÚgetrC   Ú_get_connectionr   Úoptionsr   r   r2   Ú_set_db_datar=   r   r   r   )rG   rH   rR   r6   Ú	query_strÚparamsÚconnÚintegrationÚclientÚshould_record_paramsrS   Úparam_styleÚspanÚresrD   s                 €r   Ú_innerz_wrap_execute.<locals>._innerA   s\  øè è € ÝÔ Ñ"Ô"×2Ò2Õ3FÑGÔGÐOØ˜˜DÐ+ FÐ+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+à�a”ˆõ �6Ð6¸Ñ>Ô>ð 	,Ø˜˜DÐ+ FÐ+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+å˜t™9œ9 qš=˜=��Q”�¨f¯jªj¸À"Ñ.EÔ.EˆÝ$ UÑ+Ô+ˆ	Ý ™IœI¨šM˜M��a”�¨v¯zªz¸&Ñ/AÔ/Aˆå˜vÑ&Ô&ˆå Ô+Ñ-Ô-×=Ò=Õ>QÑRÔRˆåÔ&Ñ(Ô(ˆØ$ÐÝ& v¤~Ñ6Ô6ð 	XØŒ~Ð/Ô0Ð1FÔGð ,Ø'+Ð$øàALÐ#W ;Ô#=Ð#=ÐRWÐ à +ÐNÐ0DÐN�f�fÈ$ˆØ$/Ð9�j�j°TˆåØØØ#Ø"ØÝ+Ô2ð
ñ 
ô 
ð 	+ð Øð )Ý˜T 4Ñ(Ô(Ð(Ø˜˜4Ð* 6Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ˆCÝ˜$¥Ñ-Ô-ð +Ý0Ñ2Ô2ð +ð +Ý$ TÑ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+õ ˜$¥Ñ-Ô-ð 	'Ý,Ñ.Ô.ð 'ð 'Ý  Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð ˆ
sI   ÆAG<Ç	G%ÇG<Ç%G)	Ç)G<Ç,G)	Ç-G<Ç<H ÈH È*IÉI
ÉI
©rG   r   rH   r   r"   r5   r4   ©rD   rh   s   ` r   r&   r&   >   s)   ø€ ð4ð 4ð 4ð 4ð 4ð 4ðl €Mr!   c                ó   ‡ — dˆ fd„}|S )z/Wrap Cursor.executemany to capture SQL queries.rG   r   rH   r"   r5   c               Ÿ  óž  •K  — t          j        ¦   «                              t          ¦  «        € ‰| i |¤Žƒ d {V —†S | d         }t	          | ¦  «        dk    r| d         n|                     dd¦  «        }t          |¦  «        }t	          | ¦  «        dk    r| d         n|                     d¦  «        }t          |¦  «        }t          j        ¦   «                              t          ¦  «        }t          j        ¦   «         }d}	t          |j	        ¦  «        r|j	        d         d	         rd
}	n|r|j
        nd}	|r|	r|nd }
|
rdnd }d
|_        	 t          d ||
|d
t          j        ¬¦  «        5 }|rt          ||¦  «          ‰| i |¤Žƒ d {V —†}t          |t           ¦  «        r5t#          ¦   «         5  t%          |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          |t           ¦  «        s5t#          ¦   «         5  t%          |¦  «         d d d ¦  «         n# 1 swxY w Y   |d|_        S # d|_        w xY w)Nr   rK   r6   rL   rM   rG   FrN   rO   TrP   rQ   )rV   rW   rX   r   rZ   r[   rC   r\   r   r]   r   rJ   r   r2   r^   r=   r   r   r   )rG   rH   rR   r6   r_   Úseq_of_paramsra   rb   rc   rd   rS   re   rf   rg   rD   s                 €r   rh   z!_wrap_executemany.<locals>._inner}   sK  øè è € ÝÔ Ñ"Ô"×2Ò2Õ3FÑGÔGÐOØ˜˜DÐ+ FÐ+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+à�a”ˆÝ˜t™9œ9 qš=˜=��Q”�¨f¯jªj¸À"Ñ.EÔ.EˆÝ$ UÑ+Ô+ˆ	Ý#& t¡9¤9¨q¢= =˜˜Qœ˜°f·j²jÀÑ6HÔ6Hˆå˜vÑ&Ô&ˆå Ô+Ñ-Ô-×=Ò=Õ>QÑRÔRˆÝÔ&Ñ(Ô(ˆØ$ÐÝ& v¤~Ñ6Ô6ð 	XØŒ~Ð/Ô0Ð1FÔGð ,Ø'+Ð$øàALÐ#W ;Ô#=Ð#=ÐRWÐ à'2ÐUÐ7KÐU�m�mÐQUˆØ$/Ð9�j�j°Tˆð ,0ˆÔ(ð	5Ý#ØØØ'Ø&Ø Ý/Ô6ðñ ô ð /ð Øð -Ý   tÑ,Ô,Ð,Ø˜A˜tÐ. vÐ.Ð.Ð.Ð.Ð.Ð.Ð.Ð.�Ý˜d¥LÑ1Ô1ð /Ý4Ñ6Ô6ð /ð /Ý(¨Ñ.Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /õ ˜d¥LÑ1Ô1ð +Ý0Ñ2Ô2ð +ð +Ý$ TÑ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð à/4ˆFÔ,Ð,ø¨uˆFÔ,Ð4Ð4Ð4Ð4sy   ÅI Å.AG%Æ2GÇG%ÇG	ÇG%ÇG	ÇG%ÇI Ç%G)Ç)I Ç,G)Ç-&I ÈH/È#I È/H3È3I È6H3È7I É	Iri   r4   rj   s   ` r   r(   r(   z   s)   ø€ ð/5ð /5ð /5ð /5ð /5ð /5ðb €Mr!   rR   r   c                ó$   — t          | dd¦  «        S )z,Get the underlying connection from a cursor.Ú
connectionN)rY   )rR   s    r   r\   r\   ±   s   € å�6˜<¨Ñ.Ô.Ð.r!   c                ó   ‡ — dˆ fd„}|S )z5Wrap Connection._connect to capture connection spans.r   ú'Connection'r"   r5   c              “  óÖ  •K  — t          j        ¦   «         }|                     t          ¦  «        € ‰| ¦  «        ƒ d {V —†S t	          |j        ¦  «        rãt          | d¬¦  «        }t          ¦   «         5  t          j        dd|¬¦  «         d d d ¦  «         n# 1 swxY w Y   t           j	         
                    ¦   «         € ‰| ¦  «        ƒ d {V —†S t          j        t          j        dœ|z  }t           j	                             d|¬¦  «        5   ‰| ¦  «        ƒ d {V —†cd d d ¦  «         S # 1 swxY w Y   t          | ¦  «        }t          j        t          j        dt          j        ¬¦  «        5 }t          || ¦  «         t          ¦   «         5  t          j        dd|¬¦  «         d d d ¦  «         n# 1 swxY w Y    ‰| ¦  «        ƒ d {V —†cd d d ¦  «         S # 1 swxY w Y   d S )	NT©Úuse_streaming_keysÚconnectr6   )ÚmessageÚcategoryÚdata)z	sentry.opzsentry.origin)ÚnameÚ
attributes)Úopry   r2   )rV   rW   rX   r   r   r]   Ú_get_connect_datar   Úadd_breadcrumbÚtracesÚget_current_spanr   ÚDBr2   Ú
start_spanr^   )r   rc   Úbreadcrumb_dataÚspan_attributesÚconnect_datarf   rD   s         €r   rh   z_wrap_connect.<locals>._inner¹   s  øè è € ÝÔ&Ñ(Ô(ˆØ×!Ò!Õ"5Ñ6Ô6Ð>Ø˜˜4™œ�=�=�=�=�=�=Ð å% f¤nÑ5Ô5ð 	%Ý/°ÈÐNÑNÔNˆOå,Ñ.Ô.ð ð ÝÔ)Ø%°¸oðñ ô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ
 Ô ×1Ò1Ñ3Ô3Ð;Ø˜Q˜t™WœW�}�}�}�}�}�}Ð$õ  œUÝ!4Ô!;ð/ð /ð  ñ/ ˆOõ
 Ô"×-Ò-Ø¨?ð .ñ ô ð %ð %ð ˜Q˜t™WœW�}�}�}�}�}�}ð%ð %ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %õ
 )¨Ñ.Ô.ˆåÔ"ÝŒuØÝ&Ô-ð
ñ 
ô 
ð 	!ð Ý˜˜tÑ$Ô$Ð$å,Ñ.Ô.ð ð ÝÔ)Ø%Ø$Ø%ðñ ô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ˜˜4™œ�=�=�=�=�=�=ð	!ð 	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!sZ   Á5BÂBÂ BÄD.Ä.D2Ä5D2Å3GÆF6Æ*GÆ6F:	Æ:GÆ=F:	Æ>GÇG"Ç%G")r   rq   r"   r5   r4   rj   s   ` r   r*   r*   ¶   s)   ø€ ð)!ð )!ð )!ð )!ð )!ð )!ðV €Mr!   Frs   ra   rt   r   údict[str, Any]c               óˆ  — |rt           j        }t           j        }nt           j        }t           j        }|dt           j        di}t          | dd ¦  «        }|�||t           j        <   t          | dd ¦  «        }|�||t           j        <   t          | dd ¦  «        }|�|||<   t          | dd ¦  «        }|�||t           j	        <   |S )NÚmysqlr   ÚhostÚportÚdbÚuser)
r	   ÚDB_SYSTEM_NAMEÚDB_NAMESPACEÚ	DB_SYSTEMÚDB_NAMEÚDB_DRIVER_NAMErY   ÚSERVER_ADDRESSÚSERVER_PORTÚDB_USER)	ra   rt   Ú	db_systemÚdb_namerx   rˆ   r‰   Údatabaser‹   s	            r   r|   r|   ç   sÕ   € Øð #ÝÔ+ˆ	ÝÔ'ˆˆåÔ&ˆ	ÝÔ"ˆð 	�7ÝÔ ð€Dõ
 �4˜ Ñ&Ô&€DØÐØ(,ˆ�XÔ$Ñ%å�4˜ Ñ&Ô&€DØÐØ%)ˆ�XÔ!Ñ"å�t˜T 4Ñ(Ô(€HØÐØ ˆˆW‰å�4˜ Ñ&Ô&€DØÐØ!%ˆ�XÔÑà€Kr!   rf   r#   c                ó*  — t          | t          ¦  «        r | j        }t          j        }t          j        }n| j        }t          j        }t          j        } ||d¦  «          |t          j	        d¦  «         t          |dd¦  «        }|� |t          j        |¦  «         t          |dd¦  «        }|� |t          j        |¦  «         t          |dd¦  «        }|� |||¦  «         t          |dd¦  «        }|� |t          j        |¦  «         dS dS )z6Set database-related span data from connection object.r‡   r   rˆ   Nr‰   rŠ   r‹   )r=   r   Úset_attributer	   rŒ   r�   Úset_datarŽ   r�   r�   rY   r‘   r’   r“   )	rf   ra   Ú	set_valuer”   r•   rˆ   r‰   r–   r‹   s	            r   r^   r^     s)  € å�$�Ñ%Ô%ð 	#ØÔ&ˆ	ÝÔ+ˆ	ÝÔ'ˆˆð ”Mˆ	ÝÔ&ˆ	ÝÔ"ˆà€Iˆi˜Ñ!Ô!Ð!Ø€I�hÔ% zÑ2Ô2Ð2å�4˜ Ñ&Ô&€DØÐØˆ	•(Ô)¨4Ñ0Ô0Ð0å�4˜ Ñ&Ô&€DØÐØˆ	•(Ô&¨Ñ-Ô-Ð-å�t˜T 4Ñ(Ô(€HØÐØˆ	�'˜8Ñ$Ô$Ð$å�4˜ Ñ&Ô&€DØÐØˆ	•(Ô" DÑ)Ô)Ð)Ð)Ð)ð Ðr!   )r6   r7   r"   r8   )rD   rE   r"   rE   )rR   r   r"   r   )ra   r   rt   r   r"   r…   )rf   r   ra   r   r"   r#   )(Ú
__future__r   Útypingr   r   r   r   rV   Úsentry_sdk.constsr   r	   Úsentry_sdk.integrationsr
   r   r   Úsentry_sdk.tracesr   Úsentry_sdk.tracing_utilsr   r   r   Úsentry_sdk.utilsr   r   r   r   Úaiomysql.connectionr   Úaiomysql.cursorsr   ÚImportErrorr   r5   rC   r&   r(   r\   r*   r|   r^   r4   r!   r   ú<module>r¥      s@  ðà "Ð "Ð "Ð "Ð "Ð "à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4à Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ *Ð *Ð *Ð *Ð *Ð *ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð2Ø€O€O€OØ.Ð.Ð.Ð.Ð.Ð.Ø'Ð'Ð'Ð'Ð'Ð'Ð'øØð 2ð 2ð 2Ø
ˆ,Ð0Ñ
1Ô
1Ð1ð2øøøðAð Að Að Að A˜+ñ Aô Að Að0 €GˆC�L„L€ð#ð #ð #ð #ð9ð 9ð 9ð 9ðx4ð 4ð 4ð 4ðn/ð /ð /ð /ð
.ð .ð .ð .ðb @Eð ð ð ð ð ð ð@*ð *ð *ð *ð *ð *s   ÁA ÁA&