o
    ip                     @   sH  d dl mZ d dlm  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eedeedddeedd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#d d! Z$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)unwrap)azure_servicebus)schematize_service_name)_get_config)asbool   )create_context)dispatch_message_modifierr   'DD_AZURE_SERVICEBUS_DISTRIBUTED_TRACINGT)default-DD_TRACE_AZURE_SERVICEBUS_BATCH_LINKS_ENABLED)_default_servicedistributed_tracingbatch_linksreturnc                   C   s   t tddS )N__version__ )getattrr    r   r   c/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/azure_servicebus/patch.pyget_version   s   r   c                   C   s   ddiS )Nazure.servicebusz>=7.14.0r   r   r   r   r   _supported_versions   s   r   c                  C      t tfD ]} t|  qd S N)r   azure_servicebus_aio_patchazure_servicebus_moduler   r   r   patch#      
r"   c                 C   s   t | ddrdS d| _| jdkr+t | j tddt tddt tddt	 dS t | j t | j
 td	d
t td	dt td	dt td	dt dS )z6
    Patch `azure.servicebus` modules for tracing
    _datadog_patchFNTzazure.servicebus.aioz%ServiceBusSender.create_message_batchzServiceBusSender.send_messagesz"ServiceBusSender.schedule_messagesr   z"ServiceBusMessageBatch.add_message)r   r$   __name__r   ontoServiceBusSender_w#_patched_create_message_batch_async_patched_send_messages_async _patched_schedule_messages_asyncServiceBusMessageBatch_patched_add_message_patched_create_message_batch_patched_send_messages_patched_schedule_messagesr    r   r   r   r   (   s   
r   c                 C   sN   t |}|r| rtjjs| |i |S | |i |}|j|_|j|_	|S r   
r   get_fromenabledr   r   r   entity_name_dd_entity_namefully_qualified_namespace_dd_fully_qualified_namespacewrappedinstanceargskwargspinbatchr   r   r   r.   ?   s   
r.   c                    s\   t |}|r| rtjjs| |i |I d H S | |i |I d H }|j|_|j|_	|S r   r1   r8   r   r   r   r)   L   s   
r)   c           	   	   C   s   t |}|r| rtjjs| |i |S |j}|j}tj	 dtj
 dtj }td|||}t|||tj||d | |i |W  d    S 1 sMw   Y  d S )N.z'azure.servicebus.patched_producer_batchmessage)r   r2   r3   r   r   r   r5   r7   azure_servicebusxCLOUDSERVICECREATEr   r   	r9   r:   r;   r<   r=   resource_namer6   operation_namectxr   r   r   r-   Y   s   
$r-   c           	   	   C      t |}|r| s| |i |S |j}|j}tj dtj dtj }t	d|||}t
|||tj||d | |i |W  d    S 1 sIw   Y  d S Nr?   z&azure.servicebus.patched_producer_sendr@   r   r2   r3   r4   r6   rA   rB   rC   SENDr   r   rE   r   r   r   r/   i      
$r/   c           	   	         t |}|r| s| |i |I d H S |j}|j}tj dtj dtj }t	d|||}t
|||tj||d | |i |I d H W  d    S 1 sPw   Y  d S rJ   rK   rE   r   r   r   r*   y      
$r*   c           	   	   C   rI   Nr?   z*azure.servicebus.patched_producer_schedulemessagesrK   rE   r   r   r   r0      rM   r0   c           	   	      rN   rP   rK   rE   r   r   r   r+      rO   r+   c                  C   r   r   )r   r   _unpatchr    r   r   r   unpatch   r#   rS   c                 C   sX   t | ddsd S d| _t| jd t| jd t| jd | jdkr*t| jd d S d S )Nr$   Fcreate_message_batchsend_messagesschedule_messagesr   add_message)r   r$   _ur'   r%   r,   r    r   r   r   rR      s   
rR   )+azure.servicebus
servicebusr   azure.servicebus.aioaior   wraptr   r(   ddtracer   ddtrace._trace.pinr   $ddtrace.contrib.internal.trace_utilsr   rX   ddtrace.extrA   ddtrace.internal.schemar   !ddtrace.internal.settings._configr   ddtrace.internal.utils.formatsr	   utilsr   r   _adddictstrr   r   r"   r   r.   r)   r-   r/   r*   r0   r+   rS   rR   r   r   r   r   <module>   sB    
