o
    i                     @   sz   U d dl Z d dlZd dlmZ d dlmZ d dlmZ ej	ej
eef  Ze jdddZe je ed< G dd	 d	eZdS )
    N)Context)DefaultContextProvider)Spandatadog_civisibility_contextvar)default_DD_CI_CONTEXTVARc                       sL   e Zd ZdZ fddZdd Zdeddf fd	d
ZdefddZ  Z	S )CIContextProviderzContext provider that retrieves contexts from a context variable.

    It is suitable for synchronous programming and for asynchronous executors
    that support contextvars.
    c                    s   t t|   td  d S )N)superr   __init__r   set)self	__class__ Z/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/ci_visibility/context.pyr
      s   zCIContextProvider.__init__c                 C   s   t  }|duS )zDReturns whether there is an active context in the current execution.N)r   getr   ctxr   r   r   _has_active_context   s   z%CIContextProvider._has_active_contextr   returnNc                    s   t | tt| | dS )z8Makes the given context active in the current execution.N)r   r   r	   r   activater   r   r   r   r   $   s   
zCIContextProvider.activatec                 C   s    t  }t|tr| |S |S )z=Returns the active span or context for the current execution.)r   r   
isinstancer   _update_active)r   itemr   r   r   active)   s   

zCIContextProvider.active)
__name__
__module____qualname____doc__r
   r   ContextTypeValuer   r   __classcell__r   r   r   r   r      s    r   )contextvarstypingtddtrace._trace.contextr   ddtrace._trace.providerr   ddtrace._trace.spanr   OptionalUnionr   
ContextVarr   __annotations__r   r   r   r   r   <module>   s   
 