o
    im                     @   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 ed
eedd defddZdeeef fddZdd Zdd Zdd Zdd Zejj ejdefgZ!dS )    N)config)AIOTracedConnection)
patch_conn)_patch_extensions)_unpatch_extensions)
is_wrapted)schematize_service_name)unwrapaiopgpostgres)_default_servicereturnc                   C   s   t tddS )N__version__ )getattrr
    r   r   X/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/aiopg/patch.pyget_version   s   r   c                   C   s   ddiS )Nr
   z>=0.16.0r   r   r   r   r   _supported_versions      r   c                   C   s2   t tddrdS dt_ttjdt tt dS )zjPatch monkey patches psycopg's connection function
    so that the connection's functions are traced.
    _datadog_patchFNTconnect)	r   r
   r   wraptwrap_function_wrapper
connectionpatched_connectr   _aiopg_extensionsr   r   r   r   patch!   s
   r   c                   C   s.   t tddrdt_ttjd tt d S d S )Nr   Fr   )r   r
   r   _ur   r   r   r   r   r   r   unpatch-   s
   r   c                    s"   | |i |I d H }t |tdS )N)traced_conn_cls)psycopg_patch_connr   )connect_func_argskwargsconnr   r   r   r   4   s   r   c                 C   sF   ddd}||i |\}}|rt |r|jj}|r| ||S | |S )Nc                 S   s   | |fS Nr   )objscoper   r   r   _unroll_args:   r   z/_extensions_register_type.<locals>._unroll_argsr'   )r   __wrapped___conn)funcr#   r$   r%   r*   r(   r)   r   r   r   _extensions_register_type9   s
   
r.   register_type)"aiopg.connectionr
   psycopg2.extensionspsycopg2r   ddtracer   )ddtrace.contrib.internal.aiopg.connectionr   +ddtrace.contrib.internal.psycopg.connectionr   r!   +ddtrace.contrib.internal.psycopg.extensionsr   r   ddtrace.internal.compatr   ddtrace.internal.schemar   ddtrace.internal.utils.wrappersr	   r   _adddictstrr   r   r   r   r   r.   
extensionsr/   r   r   r   r   r   <module>   s2   