o
    i                  
   @   sD  d dl Z d dlm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 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"ej&Z'ee
jj(eej)iZ*de+fddZ,e
-de e j.ddde e j.ddde
j/d de0e+e+f fdd Z1d!ej2dee+ fd"d#Z3d$ed%ej4d&e5ej2 d'e0e+ef dej6f
d(d)Z7d$ed%ej8d&e5ej2 d'e0e+ef fd*d+Z9d$ed%ej8d&e5ej2 d'e0e+ef fd,d-Z:d$ed%ej8d&e5ej2 d'e0e+ef fd.d/Z;d4d0d1Z<d4d2d3Z=dS )5    N)Any)Optional)BoundFunctionWrapper)wrap_function_wrapper)config)	SPAN_KIND)ext_service)SpanKind)	SpanTypes)core)ensure_binary)ensure_text)	COMPONENT)schematize_url_operation)SpanDirection)get_argument_value)asbool)parse_version)unwrapreturnc                   C   s   t tddS )N__version__ )getattrhttpx r   r   X/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/httpx/patch.pyget_version   s   r   r   DD_HTTPX_DISTRIBUTED_TRACINGT)defaultDD_HTTPX_SPLIT_BY_DOMAINF)distributed_tracingsplit_by_domaindefault_http_tag_query_stringc                   C   s   ddiS )Nr   z>=0.25r   r   r   r   r   _supported_versions,   s   r#   requestc                 C   sh   t jjr.t| jdrt| jjddS t| jj}| jj	r(|dtt
| jj	 7 }t|ddS td t jS )Nnetlocbackslashreplace)errors   :)r   r   r!   hasattrurlr   r%   r   hostportstrr   )r$   servicer   r   r   _get_service_name0   s   r/   wrappedinstanceargskwargsc                 C   st   t ||dd}tjd|d"}d }z| |i |}|W |d| W  d    S |d| w 1 s3w   Y  d S Nr   r$   z!httpx.client._send_single_request)r$   responser   r   context_with_dataset_itemr0   r1   r2   r3   reqctxrespr   r   r   !_wrapped_sync_send_single_request<   s   	r=   c                    s|   t ||dd}tjd|d%}d }z| |i |I d H }|W |d| W  d    S |d| w 1 s7w   Y  d S r4   r6   r9   r   r   r   "_wrapped_async_send_single_requestL   s   	r>   c                    s   t ||dd}tjddtddtjdtjt|t	|d%}d }z| |i |I d H }|W |
d	| W  d    S |
d	| w 1 sEw   Y  d S 
Nr   r$   zhttpx.requestTzhttp.requesthttp)protocol	direction)
call_trace	span_name	span_typer.   tagsr$   r5   r   r   r7   r   r   OUTBOUNDr
   HTTPr/   HTTP_REQUEST_TAGSr8   r9   r   r   r   _wrapped_async_send\   s(   rK   c                 C   s   t ||dd}tjddtddtjdtjt|t	|d"}d }z| |i |}|W |
d	| W  d    S |
d	| w 1 sAw   Y  d S r?   rG   r9   r   r   r   _wrapped_sync_sendr   s&   rL   c                   C   sR   t tddrd S dt_ttjdt ttjdt ttjdt ttjdt	 d S )N_datadog_patchFTsend_send_single_request)
r   r   rM   _wClientrL   AsyncClientrK   r=   r>   r   r   r   r   patch   s   rS   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 )NrM   FrN   rO   )r   r   rM   _urR   rQ   r   r   r   r   unpatch   s   rU   )r   N)>ostypingr   r   r   wraptr   r   rP   ddtracer   ddtrace.constantsr   $ddtrace.contrib.internal.trace_utilsr   ddtrace.extr	   r
   ddtrace.internalr   ddtrace.internal.compatr   r   ddtrace.internal.constantsr   ddtrace.internal.schemar   -ddtrace.internal.schema.span_attribute_schemar   ddtrace.internal.utilsr   ddtrace.internal.utils.formatsr   ddtrace.internal.utils.versionr   ddtrace.internal.utils.wrappersr   rT   r   HTTPX_VERSIONintegration_nameCLIENTrJ   r-   r   _addgetenv_http_client_tag_query_stringdictr#   Requestr/   rQ   tupleResponser=   rR   r>   rK   rL   rS   rU   r   r   r   r   <module>   s    










