o
    wi                     @  s   U d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZmZ d dlmZmZ d dlmZ d dlmZ ed	Zed
ZdZded< dZded< eddG dd dZedZded< 	 dddZd ddZdS )!    )annotations)
ContextVar)	dataclassfield)wraps)CallableFinalTypeVar)UUIDuuid4)	ParamSpec)nameofPRzX-Wandb-Python-Funcz
Final[str]X_WANDB_PYTHON_FUNCzX-Wandb-Python-Call-IdX_WANDB_PYTHON_CALL_IDT)frozenc                   @  s6   e Zd ZU ded< 	 eedZded< 	 ddd	Zd
S )TrackedFuncInfostrfunc)default_factoryr
   call_idreturndict[str, str]c                 C  s   t | jtt| jiS )N)r   r   r   r   r   )self r   D/home/ubuntu/.local/lib/python3.10/site-packages/wandb/_analytics.py
to_headers   s   
zTrackedFuncInfo.to_headersN)r   r   )__name__
__module____qualname____annotations__r   r   r   r   r   r   r   r   r      s   
 r   _current_funczContextVar[TrackedFuncInfo]r   Callable[P, R]r   c                   s0    j  dt  t d fdd	}|S )zA decorator to inject the calling function name into any GraphQL request headers.

    If a tracked function calls another tracked function, only the outermost function in
    the call stack will be tracked.
    .argsP.argskwargsP.kwargsr   r   c               	     sL   t  r
 | i |S ttd}z | i |W t| S t| w )N)r   )tracked_funcr"   setr   reset)r%   r'   tokenr   func_namespacer   r   wrapper0   s   ztracked.<locals>.wrapperN)r%   r&   r'   r(   r   r   )r   r   r   )r   r/   r   r-   r   tracked(   s   r0   TrackedFuncInfo | Nonec                   C  s
   t dS )zEReturns info on the current tracked function, if any, otherwise None.N)r"   getr   r   r   r   r)   ?   s   
r)   N)r   r#   r   r#   )r   r1   )
__future__r   contextvarsr   dataclassesr   r   	functoolsr   typingr   r   r	   uuidr
   r   typing_extensionsr   wandb._strutilsr   r   r   r   r!   r   r   r"   r0   r)   r   r   r   r   <module>   s$    
