§
    ÜŽ’jw  ã                  ó¢   — d Z ddlmZ ddlmZmZ ddlmZ g d¢ZdZ		 dZ
	 dZ	 d	Zed
         Z	 d!d„ZdZd"d„Zd#d„Z	 	 d$d%d„Z	 	 d$d&d„Zd'd „ZdS )(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-runnerÚvaluer   Úreturnúdict[str, str]c                ó   — t           | iS )zÔThe ``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   )r   s    úNC:\Projects\DSCons\.venv\Lib\site-packages\anthropic\lib\_stainless_helpers.pyr   r   H   s   € õ $ UÐ+Ð+ó    Ú_stainless_helperÚobjr   ÚnameÚ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     r   r   r   T   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   r   r   \   s   € å�3� dÑ+Ô+Ð+r   NÚtoolsÚmessagesú	list[str]c                óö  ‡— g Šdˆfd„}| r| D ]} |t          |¦  «        ¦  «         Œ|rÎ|D ]Ë} |t          |¦  «        ¦  «         t          |t          ¦  «        r;t          t          t          t
          f         |¦  «                             d¦  «        }nt          |dd¦  «        }t          |t          ¦  «        r;t          t          t                   |¦  «        D ]} |t          |¦  «        ¦  «         ŒŒÌ‰S )	z:Collect deduplicated helper names from tools and messages.Útagr*   r   r#   c                óF   •— | �| ‰vr‰                      | ¦  «         d S d S d S )N)Úappend)r1   Úhelperss    €r   Ú_addzcollect_helpers.<locals>._addh   s7   ø€ Øˆ?˜s¨'Ð1Ð1Ø�NŠN˜3ÑÔÐÐÐð ˆ?Ð1Ð1r   ÚcontentN)r1   r*   r   r#   )
r   Ú
isinstanceÚdictr   Ústrr   Úgetr,   Úlistr%   )r-   r.   r5   ÚtoolÚmessageÚblocksÚblockr4   s          @r   r   r   a   s'  ø€ ð
 €Gð ð  ð  ð  ð  ð  ð ð 'Øð 	'ð 	'ˆDØˆD• Ñ%Ô%Ñ&Ô&Ð&Ð&àð 0Øð 
	0ð 
	0ˆGØˆD• Ñ(Ô(Ñ)Ô)Ð)õ ˜'¥4Ñ(Ô(ð ;Ý"¥4­­S¨¤>°7Ñ;Ô;×?Ò?À	ÑJÔJ��å  ¨)°TÑ:Ô:�Ý˜&¥$Ñ'Ô'ð 0Ý!¥$¥v¤,°Ñ7Ô7ð 0ð 0�EØ�D�¨Ñ.Ô.Ñ/Ô/Ð/Ð/øà€Nr   c                ób   — t          | |¦  «        }|si S t          d                     |¦  «        iS )zvBuild x-stainless-helper header dict from tools and messages.

    Returns an empty dict if no helpers are found.
    z, )r   r   Újoin)r-   r.   r4   s      r   r   r   €   s7   € õ ˜e XÑ.Ô.€GØð Øˆ	Ý# T§Y¢Y¨wÑ%7Ô%7Ð8Ð8r   Úfilec                ó:   — t          | ¦  «        }|€i S t          |iS )z8Build x-stainless-helper header dict from a file object.)r   r   )rB   r1   s     r   r   r   Ž   s$   € å
˜Ñ
Ô
€CØ
€{Øˆ	Ý# SÐ)Ð)r   )r   r   r   r   )r!   r   r"   r   r   r#   )r!   r%   r   r*   )NN)r-   r   r.   r   r   r/   )r-   r   r.   r   r   r   )rB   r%   r   r   )Ú__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ð 9ð*ð *ð *ð *ð *ð *r   