o
    iU                     @   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 d dlmZ ddlmZ edde di 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"dd Z#dS )     N)wrap_function_wrapper)config)Pin)_SPAN_MEASURED_KEY)unwrap)	SpanTypes)	COMPONENT)ArgumentError)get_argument_value)tracer   )DEFAULT_TEMPLATE_NAMEjinja2service_nameDD_JINJA2_SERVICE_NAMEreturnc                   C   s   t tddS )N__version__ )getattrr    r   r   Y/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/jinja2/patch.pyget_version   s   r   c                   C   s   ddiS )Nr   z>=2.10r   r   r   r   r   _supported_versions    s   r   c                   C   sh   t tddrd S dt_ttjd tjdtjj ttdt	 ttdt	 ttdt
 ttd	t d S )
N__datadog_patchFTr   )service_configzenvironment.Template.renderzenvironment.Template.generatezenvironment.Environment.compilez&environment.Environment._load_template)r   r   r   r   r   ontoenvironmentEnvironment_w_wrap_render_wrap_compile_wrap_load_templater   r   r   r   patch$   s   r#   c                   C   sJ   t tddsd S dt_ttjd ttjd ttjd ttjd d S )Nr   Frendergeneratecompile_load_template)r   r   r   _uTemplater   r   r   r   r   unpatch3   s   r*   c                 C   s   t |j}|r| s| |i |S t|jpt}tjd|j	t
jd2}|ttjj |td z| |i |W ||_|d| W  d   S ||_|d| w 1 sYw   Y  dS )z1Wrap `Template.render()` or `Template.generate()`zjinja2.render	span_typer   jinja2.template_nameN)r   get_fromr   enabledstrnamer   r   tracer   r   TEMPLATE_set_tag_strr   r   r   integration_name
set_metricr   resourcewrappedinstanceargskwargspintemplate_namespanr   r   r   r    =   s   r    c                 C   s   t |}|r| s| |i |S z	t||dd}W n ty&   t}Y nw tjd|jt	j
d4}z | |i |W |ttjj ||_|d| W  d    S |ttjj ||_|d| w 1 shw   Y  d S )Nr   r1   zjinja2.compiler+   r-   )r   r.   r/   r
   r	   r   r   r2   r   r   r3   r4   r   r   r   r5   r7   r8   r   r   r   r!   P   s&   
r!   c                 C   s   t |}|r| s| |i |S t||dd}tjd|jtjd;}d }z#| |i |}|W ||_	|
d| |rB|
d|j W  d    S ||_	|
d| |r]|
d|j w w 1 saw   Y  d S )Nr   r1   zjinja2.loadr+   r-   zjinja2.template_path)r   r.   r/   r
   r   r2   r   r   r3   r7   r4   filename)r9   r:   r;   r<   r=   r>   r?   templater   r   r   r"   d   s(   
r"   )$osr   wraptr   r   ddtracer   ddtrace._trace.pinr   ddtrace.constantsr   $ddtrace.contrib.internal.trace_utilsr   r(   ddtrace.extr   ddtrace.internal.constantsr   ddtrace.internal.utilsr	   r
   ddtrace.tracer   	constantsr   _addgetenvr0   r   dictr   r#   r*   r    r!   r"   r   r   r   r   <module>   s2    

