o
    i                     @   s@  d dl Z d dlZd dl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 d dlmZ d dlmZ edeeddedddee jddded dd defddZejdejdejdejdej diZ!deeef fddZ"dd  Z#d!d" Z$d#d$ Z%d%d& Z&dS )'    N)config)Pin)TracedConnection)_convert_to_string)db)net)
is_wrapted)schematize_database_operation)schematize_service_name)asbool)_DBM_Propagatorpymysqlzpymysql.querymysql)database_providerDD_PYMYSQL_TRACE_FETCH_METHODSF)defaultquery)_default_service_dbapi_span_name_prefix_dbapi_span_operation_nametrace_fetch_methods_dbm_propagatorreturnc                   C   s   t tddS )N__version__ )getattrr    r   r   Z/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/pymysql/patch.pyget_version   s   r   hostportuserr   c                   C   s   ddiS )Nr   z>=0.10r   r   r   r   r   _supported_versions,   s   r"   c                   C   s   t ddt dt_d S )Nr   connectT)wraptwrap_function_wrapper_connectr   _datadog_patchr   r   r   r   patch0   s   
r(   c                   C   s   t tjr
tjjt_dt_d S )NF)r   r   r#   __wrapped__r'   r   r   r   r   unpatch5   s   


r*   c                 C   s   | |i |}t |S )N)
patch_conn)funcinstanceargskwargsconnr   r   r   r&   ;   s   r&   c                    sH    fddt  D }d|tj< t|d}t |tjd}|| |S )Nc                    s0   i | ]\}}t  |d d kr|tt  |qS )r   )r   r   ).0tar0   r   r   
<dictcomp>A   s   0 zpatch_conn.<locals>.<dictcomp>r   )tags)pincfg)	CONN_ATTR_BY_TAGitemsr   SYSTEMr   r   r   r   onto)r0   r6   r7   wrappedr   r4   r   r+   @   s   


r+   )'osr   r$   ddtracer   ddtrace._trace.pinr   ddtrace.contrib.dbapir   $ddtrace.contrib.internal.trace_utilsr   ddtrace.extr   r   ddtrace.internal.compatr   ddtrace.internal.schemar	   r
   ddtrace.internal.utils.formatsr   (ddtrace.propagation._database_monitoringr   _adddictgetenvstrr   TARGET_HOSTTARGET_PORTSERVER_ADDRESSUSERNAMEr9   r"   r(   r*   r&   r+   r   r   r   r   <module>   sH    
	