o
    ^Û·i‡  ã                   @  sj   d Z ddlmZ ddlmZmZmZ dZddd„Zddd„Z			dd dd„Z
		dd!dd„Zd"dd„ZdS )#z@Tracking for SDK helper usage via the x-stainless-helper header.é    )Úannotations)ÚAnyÚDictÚcastÚ_stainless_helperÚobjr   ÚnameÚstrÚreturnÚNonec              	   C  s.   z
t  | t|¡ W dS  ttfy   Y dS w )z0Mark an object as created by a named SDK helper.N)ÚobjectÚ__setattr__Ú_HELPER_ATTRÚAttributeErrorÚ	TypeError)r   r   © r   úV/home/ubuntu/vllm_env/lib/python3.10/site-packages/anthropic/lib/_stainless_helpers.pyÚ
tag_helper
   s
   ÿr   r   ú
str | Nonec                 C  s   t | tdƒS )z+Get the helper name from an object, if any.N)Úgetattrr   )r   r   r   r   Úget_helper_tag   s   r   NÚtoolsÚmessagesú	list[str]c                 C  sÆ   t ƒ }| r| D ]}t|ƒ}|dur| |¡ q|r_|D ]C}t|ƒ}|dur*| |¡ t|tƒr<ttttf |ƒ 	d¡}nt
|ddƒ}t|tƒr^ttt |ƒD ]}t|ƒ}|dur]| |¡ qNqt|ƒS )z:Collect deduplicated helper names from tools and messages.NÚcontent)Úsetr   ÚaddÚ
isinstanceÚdictr   r   r	   r   Úgetr   Úlistr   )r   r   ÚhelpersÚtoolÚtagÚmessageÚblocksÚblockr   r   r   Úcollect_helpers   s,   
€



€r'   údict[str, str]c                 C  s    t | |ƒ}|s	i S dd |¡iS )zvBuild x-stainless-helper header dict from tools and messages.

    Returns an empty dict if no helpers are found.
    úx-stainless-helperz, )r'   Újoin)r   r   r!   r   r   r   Ústainless_helper_header8   s   
r+   Úfilec                 C  s   t | ƒ}|du r
i S d|iS )z8Build x-stainless-helper header dict from a file object.Nr)   )r   )r,   r#   r   r   r   Ú!stainless_helper_header_from_fileF   s   r-   )r   r   r   r	   r
   r   )r   r   r
   r   )NN)r   r   r   r   r
   r   )r   r   r   r   r
   r(   )r,   r   r
   r(   )Ú__doc__Ú
__future__r   Útypingr   r   r   r   r   r   r'   r+   r-   r   r   r   r   Ú<module>   s    

þ"þ