Ë
    A²Xjä  ã                  ó®   — 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y)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                ó   — 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   )Úvalues    úf/var/www/html/content_generation/venv/lib/python3.12/site-packages/anthropic/lib/_stainless_helpers.pyr   r   H   s   € ô $ UÐ+Ð+ó    Ú_stainless_helperc                óf   — 	 t         j                  | t        |«       y# t        t        f$ r Y yw xY w)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   ‚ ž0¯0c                ó$   — 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   Nc                ó�  ‡— g Šdˆfd„}| r| D ]  } |t        |«      «       Œ |r |D ]›  } |t        |«      «       t        |t        «      r-t        t        t        t
        f   |«      j                  d«      }nt        |dd«      }t        |t        «      sŒot        t        t           |«      D ]  } |t        |«      «       Œ Œ� ‰S )z:Collect deduplicated helper names from tools and messages.c                ó8   •— | �| ‰vr‰j                  | «       y y y )N)Úappend)ÚtagÚhelperss    €r   Ú_addzcollect_helpers.<locals>._addh   s"   ø€ Øˆ?˜s¨'Ñ1Ø�N‰N˜3Õð  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¡,°Ö7�EÙœ¨Ó.Õ/ñ 8ð  ð €Nr   c                óP   — t        | |«      }|si S t        dj                  |«      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)r8   r9   r-   s      r   r   r   €   s,   € ô ˜e XÓ.€GÙØˆ	Ü# T§Y¡Y¨wÓ%7Ð8Ð8r   c                ó0   — t        | «      }|€i S t        |iS )z8Build x-stainless-helper header dict from a file object.)r   r   )Úfiler,   s     r   r   r   Ž   s!   € ä
˜Ó
€CØ
€{Øˆ	Ü# SÐ)Ð)r   )r   r   r1   údict[str, str])r%   r   r&   r   r1   r2   )r%   r    r1   r0   )NN)r8   r   r9   r   r1   z	list[str])r8   r   r9   r   r1   rB   )rA   r    r1   rB   )Ú__doc__Ú
__future__r   Útypingr   r   Útyping_extensionsr   Ú__all__r   r   r	   r
   r   r   r"   r   r   r   r   r   © r   r   Ú<module>rI      sÄ   ðñõ #ç Ý %ò€ð /Ð ðð "=Ð Ø Fà!<Ð Ø MàÐ ð %ðñÐ ðó,ð #€óó,ð ØðØðàðð óð@ Øð9Øð9àð9ð ó9ô*r   