o
    Á¿i*  ã                   @   sZ   d dl Z d dlmZ dd„ Zdd„ Zdd„ Zd	d
„ ZG dd„ de jƒZdd„ Z	dd„ Z
dS )é    N)Ú
is_wraptedc                 C   sŽ   | j j| j dtf| jj| jdtf| j j| j dtfg}t| dd ƒr,|| jj| jdtfg7 }t| dd ƒrEt| j dd ƒrE|| j j| j dt	fg7 }|S )NÚregister_typeÚadaptÚ_jsonÚ
extensionsÚquote_ident)
r   r   Ú_extensions_register_typeÚ_psycopgr   Ú_extensions_adaptÚgetattrr   r   Ú_extensions_quote_ident)Úpsycopg_moduleÚ_extensions© r   ú_/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/psycopg/extensions.pyÚget_psycopg2_extensions   s"   üøÿÿr   c                 C   óD   ddd„}||i |¤Ž\}}|rt |ƒr|j}|r| ||ƒS | |ƒS )Nc                 S   ó   | |fS ©Nr   ©ÚobjÚscoper   r   r   Ú_unroll_args"   ó   z/_extensions_register_type.<locals>._unroll_argsr   ©r   Ú__wrapped__©ÚfuncÚ_ÚargsÚkwargsr   r   r   r   r   r   r   !   ó
   
r   c                 C   r   )Nc                 S   r   r   r   r   r   r   r   r   0   r   z-_extensions_quote_ident.<locals>._unroll_argsr   r   r   r   r   r   r   /   r!   r   c                 C   s$   | |i |¤Ž}t |dƒrt|ƒS |S )NÚprepare)ÚhasattrÚAdapterWrapper)r   r   r   r    r   r   r   r   r
   =   s   
r
   c                   @   s   e Zd Zdd„ ZdS )r$   c                 O   sN   | j j}|s||i |¤ŽS |d }t|ƒr|j }||g|dd … ¢R i |¤ŽS )Nr   é   )r   r"   r   )Úselfr   r    r   Úconnr   r   r   r"   E   s   zAdapterWrapper.prepareN)Ú__name__Ú
__module__Ú__qualname__r"   r   r   r   r   r$   D   s    r$   c                 C   s>   | D ]\}}}}t ||ƒrtt||ƒƒrqt |||¡ qd S r   )r#   r   r   ÚwraptÚwrap_function_wrapper)r   r   Úmoduler   Úwrapperr   r   r   Ú_patch_extensionsS   s
   ýr/   c                 C   s"   | D ]\}}}}t |||ƒ qd S r   )Úsetattr)r   Úoriginalr-   r   r   r   r   r   Ú_unpatch_extensions\   s   ÿr2   )r+   Úddtrace.internal.compatr   r   r   r   r
   ÚObjectProxyr$   r/   r2   r   r   r   r   Ú<module>   s    	