o
    i                     @   s   d dl Z d dlm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 ededd defddZdeeef fddZG dd dZdd Zdd Zdd Zdd ZdS )    N)wrap_function_wrapper)config)unwrap)LOG_ATTR_ENV)LOG_ATTR_SERVICE)LOG_ATTR_SPAN_ID)LOG_ATTR_TRACE_ID)LOG_ATTR_VALUE_EMPTY)LOG_ATTR_VALUE_ZERO)LOG_ATTR_VERSION)get_argument_valuelogging)tracer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/logging/patch.pyget_version   s   r   c                   C   s   ddiS )Nr   *r   r   r   r   r   _supported_versions   s   r   c                
   @   sX   e Zd ZU eed< eed< eed< eed< eed< dZdededededef
ddZd	S )
DDLogRecordtrace_idspan_idserviceversionenvr   r   r   r   r   c                 C   s"   || _ || _|| _|| _|| _d S Nr   )selfr   r   r   r   r   r   r   r   __init__*   s
   
zDDLogRecord.__init__N)__name__
__module____qualname__int__annotations__str	__slots__r!   r   r   r   r   r   "   s   
 "r   c                 C   s*   | |i |}t jr|jtj  |S r   )r   _logs_injection__dict__updateddtracer   get_log_correlation_contextfuncinstanceargskwargsrecordr   r   r   _w_makeRecord2   s   r4   c              	   C   sz   t js
| |i |S t||dd}tt|ttt|ttt|tt	t|t
t	t|tt	d|_z
| |i |W |`S |`w )Nr   r3   r   )r   r)   r   r   r   r   r
   r   r   r	   r   r   ddr.   r   r   r   _w_StrFormatStyle_format:   s   




r6   c                   C   s6   t tddrdS dt_ttjdt ttjdt dS )z
    Patch ``logging`` module in the Python Standard Library for injection of
    tracer information by wrapping the base factory method ``Logger.makeRecord``
    _datadog_patchFNT
makeRecord_format)r   r   r7   _wLoggerr4   StrFormatStyler6   r   r   r   r   patchX   s
   r=   c                   C   s2   t tddrdt_ttjd ttjd d S d S )Nr7   Fr8   r9   )r   r   r7   _ur;   r<   r   r   r   r   unpatche   s
   r?   )r   wraptr   r:   r,   r   $ddtrace.contrib.internal.trace_utilsr   r>   ddtrace.internal.constantsr   r   r   r   r	   r
   r   ddtrace.internal.utilsr   _adddictr'   r   r   r   r4   r6   r=   r?   r   r   r   r   <module>   s4    