
    i                    b    d Z ddlmZ ddlmZmZmZ dZddZddZ		 	 dddZ
	 	 dddZ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                z    	 t                               | t          |           dS # t          t          f$ r Y dS w xY w)z0Mark an object as created by a named SDK helper.N)object__setattr___HELPER_ATTRAttributeError	TypeError)r   r	   s     ]/root/projects/qq-shell/venv/lib/python3.11/site-packages/anthropic/lib/_stainless_helpers.py
tag_helperr   
   sL    3d33333I&   s   !% ::r   
str | Nonec                .    t          | t          d          S )z+Get the helper name from an object, if any.N)getattrr   )r   s    r   get_helper_tagr      s    3d+++    Ntoolsmessages	list[str]c                n   t                      }| r+| D ](}t          |          }||                    |           )|r|D ]}t          |          }||                    |           t          |t                    r;t          t          t          t          f         |          	                    d          }nt          |dd          }t          |t                    rIt          t          t                   |          D ](}t          |          }||                    |           )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blocks           r   collect_helpersr+      s1   
 G ! 	! 	!D &&CC    ) 	) 	)G ))CC    '4(( ;"4S>7;;??	JJ )T::&$'' )!$v,77 ) )E(//CC(((==r   dict[str, str]c                X    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%   s      r   stainless_helper_headerr0   8   s7     eX..G 	 $))G"4"455r   filec                0    t          |           }|i S d|iS )z8Build x-stainless-helper header dict from a file object.Nr.   )r   )r1   r'   s     r   !stainless_helper_header_from_filer3   F   s$    


C
{	 #&&r   )r   r   r	   r
   r   r   )r   r   r   r   )NN)r   r   r   r   r   r   )r   r   r   r   r   r,   )r1   r   r   r,   )__doc__
__future__r   typingr   r   r   r   r   r   r+   r0   r3    r   r   <module>r8      s    F F " " " " " " " " " " " " " " " ""   , , , ,     D 6 6 6 6 6' ' ' ' ' 'r   