
    b\j                        S r SSKJr  SSKJrJr  SSKJr  / SQrSr	 Sr
 Sr S	r\S
   r SS jrSrSS jrSS jr  S     SS jjr  S     SS jjrSS jrg)ac  Tracking for SDK helper usage via the x-stainless-helper header.

This module is the single source of truth for the helper-telemetry header
keys and the closed tag vocabulary. The append-don't-clobber merge for the
header itself lives in :func:`anthropic._base_client.merge_headers`; here
we only carry the constants and the per-object tagging machinery.
    )annotations)Anycast)Literal)STAINLESS_HELPER_HEADERSTAINLESS_HELPER_METHOD_HEADERSTAINLESS_STREAM_HELPER_HEADERHELPER_METHOD_STREAMStainlessHelperHeaderValuehelper_header
tag_helperget_helper_tagcollect_helpersstainless_helper_header!stainless_helper_header_from_filezx-stainless-helperzx-stainless-helper-methodzx-stainless-stream-helperstream)zbeta.messages.parseBetaToolRunner
compactionzenvironments-work-pollerzenvironments-workerzfallback-refusal-middlewaremcp_contentmcp_messagemcp_resource_to_contentmcp_resource_to_filemcp_toolzmessages.parsezsession-tool-runnerc                    [         U 0$ )zThe ``x-stainless-helper: <value>`` header dict, for passing into a
``merge_headers`` call or as ``extra_headers``/``default_headers``.

Typing keeps the value drawn from the closed vocabulary above.
)r   )values    V/var/www/website/venv/lib/python3.13/site-packages/anthropic/lib/_stainless_helpers.pyr   r   H   s     $U++    _stainless_helperc                h     [         R                  U [        U5        g! [        [        4 a     gf = f)z0Mark an object as created by a named SDK helper.N)object__setattr___HELPER_ATTRAttributeError	TypeError)objnames     r   r   r   T   s0    3d3I& s    11c                $    [        U [        S5      $ )z+Get the helper name from an object, if any.N)getattrr"   )r%   s    r   r   r   \   s    3d++r   Nc                  ^ / mSU4S jjnU (       a  U  H  nU" [        U5      5        M     U(       a  U H  nU" [        U5      5        [        U[        5      (       a-  [        [        [        [
        4   U5      R                  S5      nO[        USS5      n[        U[        5      (       d  Mz  [        [        [           U5       H  nU" [        U5      5        M     M     T$ )z:Collect deduplicated helper names from tools and messages.c                >   > U b  U T;  a  TR                  U 5        g g g )N)append)taghelperss    r   _addcollect_helpers.<locals>._addh   s"    ?s'1NN3  2?r   contentN)r,   
str | NonereturnNone)
r   
isinstancedictr   strr   getr(   listr    )toolsmessagesr.   toolmessageblocksblockr-   s          @r   r   r   a   s    
 G  D%&  G() '4(("4S>7;??	J )T:&$''!$v,7E./ 8   Nr   c                X    [        X5      nU(       d  0 $ [        SR                  U5      0$ )znBuild x-stainless-helper header dict from tools and messages.

Returns an empty dict if no helpers are found.
z, )r   r   join)r9   r:   r-   s      r   r   r      s*     e.G	#TYYw%788r   c                2    [        U 5      nUc  0 $ [        U0$ )z8Build x-stainless-helper header dict from a file object.)r   r   )filer,   s     r   r   r      s!    

C
{	#S))r   )r   r   r2   dict[str, str])r%   r   r&   r   r2   r3   )r%   r    r2   r1   )NN)r9   r   r:   r   r2   z	list[str])r9   r   r:   r   r2   rC   )rB   r    r2   rC   )__doc__
__future__r   typingr   r   typing_extensionsr   __all__r   r   r	   r
   r   r   r"   r   r   r   r   r    r   r   <module>rJ      s    #  % /  "=  F!<  M  % , #,  @ 999 9*r   