o
    iE                     @   s   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 edeeddee jdddd defddZdeeef fddZG dd deZdd Zdd Zdd ZdS )    N)config)Pin)TracedConnection)TracedCursor)unwrap)db)net)schematize_service_name)asbool	snowflakesql DD_SNOWFLAKE_TRACE_FETCH_METHODSF)default)_default_service_dbapi_span_name_prefixtrace_fetch_methodsreturnc                  C   sB   zdd l m}  W n ty   dd l}|jd} Y nw t| jS )Nr   snowflake.connector)snowflake.connector	connectorAttributeErrorsysmodulesgetstr__version__cr    r   \/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/snowflake/patch.pyget_version   s   
r    c                   C   s   ddiS )Nr   z>=2.4.6r   r   r   r   r   _supported_versions)   s   r!   c                       s   e Zd Z fddZ  ZS )_SFTracedCursorc                    s$   t t| | |d| jj d S )Nsfqid)superr"   _set_post_execute_tags_set_tag_str__wrapped__r#   )selfspan	__class__r   r   r%   .   s   z&_SFTracedCursor._set_post_execute_tags)__name__
__module____qualname__r%   __classcell__r   r   r*   r   r"   -   s    r"   c                  C   sn   zdd l m}  W n ty   dd l}|jd} Y nw t| ddr$d S d| _t	| dt
 t	| dt
 d S )Nr   r   _datadog_patchFTConnectconnect)r   r   r   r   r   r   getattrr0   wraptwrap_function_wrapperpatched_connectr   r   r   r   patch3   s   r7   c                  C   sf   zdd l m}  W n ty   dd l}|jd} Y nw t| ddr1d| _t| d t| d d S d S )Nr   r   r0   Fr1   r2   )	r   r   r   r   r   r   r3   r0   r   r   r   r   r   unpatchC   s   
r8   c                 C   s   | |i |}t |tr|S tj|jtj|jtj|jtj	|j
tjdtj|jd|jd|jd|ji	}t|d}t||tjtd}|| |S )Nr   zdb.applicationz	db.schemazdb.warehouse)tags)pincfg
cursor_cls)
isinstancer   r   TARGET_HOSThostTARGET_PORTportSERVER_ADDRESSr   NAMEdatabaseSYSTEMUSERuserapplicationschema	warehouser   r   r   r"   onto)connect_func_argskwargsconnr9   r:   traced_connr   r   r   r6   R   s"   


r6   )osr4   ddtracer   ddtrace._trace.pinr   ddtrace.contrib.dbapir   r   $ddtrace.contrib.internal.trace_utilsr   ddtrace.extr   r   ddtrace.internal.schemar	   ddtrace.internal.utils.formatsr
   _adddictgetenvr   r    r!   r"   r7   r8   r6   r   r   r   r   <module>   s2    
